diff options
author | 2023-09-25 16:09:09 -0700 | |
---|---|---|
committer | 2023-09-25 16:09:09 -0700 | |
commit | 6cde1d3b8914f7761dd8ef44cc592161a9e07516 (patch) | |
tree | f396b57ccc0b0ebe2e4a4b8bc7258bb957296aa6 | |
parent | 6d842e7dcb80ab75ae52a4cb95d6c94c09266ee0 (diff) | |
download | bun-6cde1d3b8914f7761dd8ef44cc592161a9e07516.tar.gz bun-6cde1d3b8914f7761dd8ef44cc592161a9e07516.tar.zst bun-6cde1d3b8914f7761dd8ef44cc592161a9e07516.zip |
Add Module._extensions (#5998)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
-rw-r--r-- | src/bun.js/modules/NodeModuleModule.h | 9 | ||||
-rw-r--r-- | test/js/node/module/node-module-module.test.js | 7 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/bun.js/modules/NodeModuleModule.h b/src/bun.js/modules/NodeModuleModule.h index b3c34eb5e..6d8654024 100644 --- a/src/bun.js/modules/NodeModuleModule.h +++ b/src/bun.js/modules/NodeModuleModule.h @@ -330,13 +330,18 @@ DEFINE_NATIVE_MODULE(NodeModule) { exportNames.append(name); exportValues.append(value); }; - exportNames.reserveCapacity(15); - exportValues.ensureCapacity(15); + exportNames.reserveCapacity(16); + exportValues.ensureCapacity(16); exportNames.append(vm.propertyNames->defaultKeyword); exportValues.append(defaultObject); put(Identifier::fromString(vm, "Module"_s), defaultObject); + // Module._extensions === require.extensions + put(Identifier::fromString(vm, "_extensions"_s), + globalObject->requireFunctionUnbound()->get( + globalObject, Identifier::fromString(vm, "extensions"_s))); + defaultObject->putDirectCustomAccessor( vm, JSC::Identifier::fromString(vm, "_resolveFilename"_s), JSC::CustomGetterSetter::create(vm, get_resolveFilename, diff --git a/test/js/node/module/node-module-module.test.js b/test/js/node/module/node-module-module.test.js index 1363636ac..26fbb6fab 100644 --- a/test/js/node/module/node-module-module.test.js +++ b/test/js/node/module/node-module-module.test.js @@ -87,3 +87,10 @@ test("Module.prototype._compile", () => { expect(fn).toBe("/file/path/goes/here.js"); expect(dn).toBe("/file/path/goes"); }); + +test("Module._extensions", () => { + expect(".js" in Module._extensions).toBeTrue(); + expect(".json" in Module._extensions).toBeTrue(); + expect(".node" in Module._extensions).toBeTrue(); + expect(require.extensions).toBe(Module._extensions); +}); |