aboutsummaryrefslogtreecommitdiff
path: root/src/js/builtins/Module.ts
diff options
context:
space:
mode:
authorGravatar Dylan Conway <dylan.conway567@gmail.com> 2023-10-17 14:10:25 -0700
committerGravatar Dylan Conway <dylan.conway567@gmail.com> 2023-10-17 14:10:25 -0700
commit7458b969c5d9971e89d187b687e1924e78da427e (patch)
treeee3dbf95c728cf407bf49a27826b541e9264a8bd /src/js/builtins/Module.ts
parentd4a2c29131ec154f5e4db897d4deedab2002cbc4 (diff)
parente91436e5248d947b50f90b4a7402690be8a41f39 (diff)
downloadbun-7458b969c5d9971e89d187b687e1924e78da427e.tar.gz
bun-7458b969c5d9971e89d187b687e1924e78da427e.tar.zst
bun-7458b969c5d9971e89d187b687e1924e78da427e.zip
Merge branch 'main' into postinstall_3
Diffstat (limited to 'src/js/builtins/Module.ts')
-rw-r--r--src/js/builtins/Module.ts19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/js/builtins/Module.ts b/src/js/builtins/Module.ts
index aa08bc728..b074d3488 100644
--- a/src/js/builtins/Module.ts
+++ b/src/js/builtins/Module.ts
@@ -1,21 +1,14 @@
-interface CommonJSModuleRecord {
- $require(id: string, mod: any): any;
- children: CommonJSModuleRecord[];
- exports: any;
- id: string;
- loaded: boolean;
- parent: undefined;
- path: string;
- paths: string[];
- require: typeof require;
-}
-
$getter;
export function main() {
return $requireMap.$get(Bun.main);
}
export function require(this: CommonJSModuleRecord, id: string) {
+ return $overridableRequire.$call(this, id);
+}
+
+// overridableRequire can be overridden by setting `Module.prototype.require`
+export function overridableRequire(this: CommonJSModuleRecord, id: string) {
const existing = $requireMap.$get(id) || $requireMap.$get((id = $resolveSync(id, this.path, false)));
if (existing) {
// Scenario where this is necessary:
@@ -45,7 +38,7 @@ export function require(this: CommonJSModuleRecord, id: string) {
// To handle import/export cycles, we need to create a module object and put
// it into the map before we import it.
- const mod = $createCommonJSModule(id, {}, false);
+ const mod = $createCommonJSModule(id, {}, false, this);
$requireMap.$set(id, mod);
// This is where we load the module. We will see if Module._load and