diff --git a/.npmignore b/.npmignore
new file mode 100644
index 0000000..c3fc82e
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1,3 @@
+npm-debug.*
+node_modules/
+coverage/
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..be2b397
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,26 @@
+Copyright (c) 2016, Daniel Wirtz  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+* Neither the name of its author, nor the names of its contributors
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..8acb1d5
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,12 @@
+name: "@protobufjs/inquire"
+description:
+    "Import (require) a module only if the module is available and hides the require call from bundlers"
+third_party {
+  url {
+    type: GIT
+    value: "https://github.com/protobufjs/protobuf.js/tree/master/lib/inquire"
+  }
+  version: 56b1e64979dae757b67a21d326e16acee39f2267
+  last_upgrade_date { year: 2023 month: 03 day: 27 }
+  license_type: NOTICE
+}
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..3eabd86
--- /dev/null
+++ b/README.md
@@ -0,0 +1,13 @@
+@protobufjs/inquire
+===================
+[![npm](https://img.shields.io/npm/v/@protobufjs/inquire.svg)](https://www.npmjs.com/package/@protobufjs/inquire)
+
+Requires a module only if available and hides the require call from bundlers.
+
+API
+---
+
+* **inquire(moduleName: `string`): `?Object`**<br />
+  Requires a module only if available.
+
+**License:** [BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause)
diff --git a/index.d.ts b/index.d.ts
new file mode 100644
index 0000000..1f5a865
--- /dev/null
+++ b/index.d.ts
@@ -0,0 +1,9 @@
+export = inquire;
+
+/**
+ * Requires a module only if available.
+ * @memberof util
+ * @param {string} moduleName Module to require
+ * @returns {?Object} Required module if available and not empty, otherwise `null`
+ */
+declare function inquire(moduleName: string): Object;
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..bae28e7
--- /dev/null
+++ b/index.js
@@ -0,0 +1,40 @@
+"use strict";
+module.exports = inquire;
+
+/**
+ * Requires a module only if available.
+ * @memberof util
+ * @param {string} moduleName Module to require
+ * @returns {?Object} Required module if available and not empty, otherwise `null`
+ */
+function inquire(moduleName) {
+    try {
+    	if (typeof self !== 'undefined' && self.trustedTypes && self.trustedTypes.createPolicy) {
+    		const escapeScriptPolicy = trustedTypes.createPolicy("myEscapePolicy", {
+    			createScript: (string) => "require " + string,
+    		});
+    		safeScript = escapeScriptPolicy.createScript(moduleName);
+    		var mod = eval(safeScript);
+    	} else {
+    		var mod = eval("quire".replace(/^/,"re"))(moduleName); // eslint-disable-line no-eval
+    	}
+        if (mod && (mod.length || Object.keys(mod).length))
+            return mod;
+    } catch (e) {} // eslint-disable-line no-empty
+    return null;
+}
+
+/*
+// maybe worth a shot to prevent renaming issues:
+// see: https://github.com/webpack/webpack/blob/master/lib/dependencies/CommonJsRequireDependencyParserPlugin.js
+// triggers on:
+// - expression require.cache
+// - expression require (???)
+// - call require
+// - call require:commonjs:item
+// - call require:commonjs:context
+
+Object.defineProperty(Function.prototype, "__self", { get: function() { return this; } });
+var r = require.__self;
+delete Function.prototype.__self;
+*/
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..1315279
--- /dev/null
+++ b/package.json
@@ -0,0 +1,17 @@
+{
+  "name": "@protobufjs/inquire",
+  "description": "Requires a module only if available and hides the require call from bundlers.",
+  "version": "1.1.0",
+  "author": "Daniel Wirtz <dcode+protobufjs@dcode.io>",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/dcodeIO/protobuf.js.git"
+  },
+  "license": "BSD-3-Clause",
+  "main": "index.js",
+  "types": "index.d.ts",
+  "devDependencies": {
+    "istanbul": "^0.4.5",
+    "tape": "^4.6.3"
+  }
+}
diff --git a/tests/data/array.js b/tests/data/array.js
new file mode 100644
index 0000000..0847b28
--- /dev/null
+++ b/tests/data/array.js
@@ -0,0 +1 @@
+module.exports = [1];
diff --git a/tests/data/emptyArray.js b/tests/data/emptyArray.js
new file mode 100644
index 0000000..e0a30c5
--- /dev/null
+++ b/tests/data/emptyArray.js
@@ -0,0 +1 @@
+module.exports = [];
diff --git a/tests/data/emptyObject.js b/tests/data/emptyObject.js
new file mode 100644
index 0000000..f053ebf
--- /dev/null
+++ b/tests/data/emptyObject.js
@@ -0,0 +1 @@
+module.exports = {};
diff --git a/tests/data/object.js b/tests/data/object.js
new file mode 100644
index 0000000..3b75bca
--- /dev/null
+++ b/tests/data/object.js
@@ -0,0 +1 @@
+module.exports = { a: 1 };
diff --git a/tests/index.js b/tests/index.js
new file mode 100644
index 0000000..4a555ca
--- /dev/null
+++ b/tests/index.js
@@ -0,0 +1,20 @@
+var tape = require("tape");
+
+var inquire = require("..");
+
+tape.test("inquire", function(test) {
+
+    test.equal(inquire("buffer").Buffer, Buffer, "should be able to require \"buffer\"");
+
+    test.equal(inquire("%invalid"), null, "should not be able to require \"%invalid\"");
+
+    test.equal(inquire("./tests/data/emptyObject"), null, "should return null when requiring a module exporting an empty object");
+
+    test.equal(inquire("./tests/data/emptyArray"), null, "should return null when requiring a module exporting an empty array");
+
+    test.same(inquire("./tests/data/object"), { a: 1 }, "should return the object if a non-empty object");
+
+    test.same(inquire("./tests/data/array"), [ 1 ], "should return the module if a non-empty array");
+
+    test.end();
+});
