diff options
author | 2023-07-30 05:59:54 -0700 | |
---|---|---|
committer | 2023-07-30 05:59:54 -0700 | |
commit | b0d3ea5a43d2462fafbe11f306d0eecd463e256b (patch) | |
tree | e266ebf16b792772df25abf8bba41cda380f0b07 /src | |
parent | a9dc5d51e3de0f1dc5d20a12243fd4dbe536bff4 (diff) | |
download | bun-b0d3ea5a43d2462fafbe11f306d0eecd463e256b.tar.gz bun-b0d3ea5a43d2462fafbe11f306d0eecd463e256b.tar.zst bun-b0d3ea5a43d2462fafbe11f306d0eecd463e256b.zip |
Fix issue with file loader (#3889)
* Fix issue with file loader
* Update jest-extended.test.js
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/bun.js/module_loader.zig | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/bun.js/module_loader.zig b/src/bun.js/module_loader.zig index c3aeaa9ce..ca6071d0d 100644 --- a/src/bun.js/module_loader.zig +++ b/src/bun.js/module_loader.zig @@ -1665,6 +1665,12 @@ pub const ModuleLoader = struct { out.* = ZigString.fromUTF8(name); } + defer { + if (is_main) { + jsc_vm.has_loaded = true; + } + } + if (jsc_vm.isWatcherEnabled()) { var resolved_source = jsc_vm.refCountedResolvedSource(printer.ctx.written, input_specifier, path.text, null, false); @@ -2058,7 +2064,10 @@ pub const ModuleLoader = struct { &display_specifier, ); const path = Fs.Path.init(specifier); - const loader: options.Loader = jsc_vm.bundler.options.loaders.get(path.name.ext) orelse options.Loader.js; + + // Deliberately optional. + // The concurrent one only handles javascript-like loaders right now. + const loader: ?options.Loader = jsc_vm.bundler.options.loaders.get(path.name.ext); // We only run the transpiler concurrently when we can. // Today, that's: @@ -2067,7 +2076,8 @@ pub const ModuleLoader = struct { // Import Expressions (import('foo')) // if (comptime bun.FeatureFlags.concurrent_transpiler) { - if (allow_promise and loader.isJavaScriptLike() and + const concurrent_loader = loader orelse .file; + if (allow_promise and (jsc_vm.has_loaded or jsc_vm.is_in_preload) and concurrent_loader.isJavaScriptLike() and // Plugins make this complicated, // TODO: allow running concurrently when no onLoad handlers match a plugin. jsc_vm.plugin_runner == null and jsc_vm.transpiler_store.enabled) @@ -2083,6 +2093,15 @@ pub const ModuleLoader = struct { } } + const synchronous_loader = loader orelse + // Unknown extensions are to be treated as file loader + if (jsc_vm.has_loaded or jsc_vm.is_in_preload) + options.Loader.file + else + // Unless it's potentially the main module + // This is important so that "bun run ./foo-i-have-no-extension" works + options.Loader.js; + var promise: ?*JSC.JSInternalPromise = null; ret.* = ErrorableResolvedSource.ok( ModuleLoader.transpileSourceCode( @@ -2092,7 +2111,7 @@ pub const ModuleLoader = struct { referrer_slice.slice(), specifier_ptr.*, path, - loader, + synchronous_loader, &log, null, ret, |