aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/javascript.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-08-11 22:13:46 -0700
committerGravatar GitHub <noreply@github.com> 2023-08-11 22:13:46 -0700
commitca26780b276d32f761af37f113ca24aeeb41e92f (patch)
treec6127569c4ad0b74e6216f63f663ae44d058d9f3 /src/bun.js/javascript.zig
parent117cee5ca5c36f78ae75a0dee3178620bba73968 (diff)
downloadbun-ca26780b276d32f761af37f113ca24aeeb41e92f.tar.gz
bun-ca26780b276d32f761af37f113ca24aeeb41e92f.tar.zst
bun-ca26780b276d32f761af37f113ca24aeeb41e92f.zip
Deprecate loading `node_modules.bun` (#4131)
* Deprecate loading `node_modules.bun` * realpath * regenerate schema * More * more * Update cli.zig --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src/bun.js/javascript.zig')
-rw-r--r--src/bun.js/javascript.zig145
1 files changed, 37 insertions, 108 deletions
diff --git a/src/bun.js/javascript.zig b/src/bun.js/javascript.zig
index 741affa6a..e7ed3e0ab 100644
--- a/src/bun.js/javascript.zig
+++ b/src/bun.js/javascript.zig
@@ -21,7 +21,6 @@ const IdentityContext = @import("../identity_context.zig").IdentityContext;
const Fs = @import("../fs.zig");
const Resolver = @import("../resolver/resolver.zig");
const ast = @import("../import_record.zig");
-const NodeModuleBundle = @import("../node_module_bundle.zig").NodeModuleBundle;
const MacroEntryPoint = bun.bundler.MacroEntryPoint;
const ParseResult = bun.bundler.ParseResult;
const logger = @import("root").bun.logger;
@@ -383,7 +382,6 @@ pub const VirtualMachine = struct {
global: *JSGlobalObject,
allocator: std.mem.Allocator,
has_loaded_constructors: bool = false,
- node_modules: ?*NodeModuleBundle = null,
bundler: Bundler,
bun_dev_watcher: ?*http.Watcher = null,
bun_watcher: ?*JSC.Watcher = null,
@@ -398,7 +396,6 @@ pub const VirtualMachine = struct {
entry_point: ServerEntryPoint = undefined,
origin: URL = URL{},
node_fs: ?*Node.NodeFS = null,
- has_loaded_node_modules: bool = false,
timer: Bun.Timer = Bun.Timer{},
uws_event_loop: ?*uws.Loop = null,
pending_unref_counter: i32 = 0,
@@ -833,18 +830,17 @@ pub const VirtualMachine = struct {
}
const RuntimeTranspilerStore = JSC.RuntimeTranspilerStore;
pub fn initWithModuleGraph(
- allocator: std.mem.Allocator,
- log: *logger.Log,
- graph: *bun.StandaloneModuleGraph,
+ opts: Options,
) !*VirtualMachine {
+ const allocator = opts.allocator;
VMHolder.vm = try allocator.create(VirtualMachine);
var console = try allocator.create(ZigConsoleClient);
console.* = ZigConsoleClient.init(Output.errorWriter(), Output.writer());
+ var log = opts.log.?;
const bundler = try Bundler.init(
allocator,
log,
- std.mem.zeroes(Api.TransformOptions),
- null,
+ opts.args,
null,
);
var vm = VMHolder.vm.?;
@@ -857,7 +853,6 @@ pub const VirtualMachine = struct {
.event_listeners = EventListenerMixin.Map.init(allocator),
.bundler = bundler,
.console = console,
- .node_modules = bundler.options.node_modules_bundle,
.log = log,
.flush_list = std.ArrayList(string).init(allocator),
.blobs = null,
@@ -871,7 +866,7 @@ pub const VirtualMachine = struct {
.ref_strings = JSC.RefString.Map.init(allocator),
.ref_strings_mutex = Lock.init(),
.file_blobs = JSC.WebCore.Blob.Store.Map.init(allocator),
- .standalone_module_graph = graph,
+ .standalone_module_graph = opts.graph.?,
.parser_arena = @import("root").bun.ArenaAllocator.init(allocator),
};
vm.source_mappings = .{ .map = &vm.saved_source_map_table };
@@ -892,7 +887,7 @@ pub const VirtualMachine = struct {
.onDependencyError = JSC.ModuleLoader.AsyncModule.Queue.onDependencyError,
};
- vm.bundler.resolver.standalone_module_graph = graph;
+ vm.bundler.resolver.standalone_module_graph = opts.graph.?;
// Avoid reading from tsconfig.json & package.json when we're in standalone mode
vm.bundler.configureLinkerWithAutoJSX(false);
@@ -925,17 +920,20 @@ pub const VirtualMachine = struct {
return vm;
}
- pub fn init(
+ pub const Options = struct {
allocator: std.mem.Allocator,
- _args: Api.TransformOptions,
- existing_bundle: ?*NodeModuleBundle,
- _log: ?*logger.Log,
- env_loader: ?*DotEnv.Loader,
- store_fd: bool,
- smol: bool,
- ) !*VirtualMachine {
+ args: Api.TransformOptions = std.mem.zeroes(Api.TransformOptions),
+ log: ?*logger.Log = null,
+ env_loader: ?*DotEnv.Loader = null,
+ store_fd: bool = false,
+ smol: bool = false,
+ graph: ?*bun.StandaloneModuleGraph = null,
+ };
+
+ pub fn init(opts: Options) !*VirtualMachine {
+ const allocator = opts.allocator;
var log: *logger.Log = undefined;
- if (_log) |__log| {
+ if (opts.log) |__log| {
log = __log;
} else {
log = try allocator.create(logger.Log);
@@ -948,9 +946,8 @@ pub const VirtualMachine = struct {
const bundler = try Bundler.init(
allocator,
log,
- try Config.configureTransformOptionsForBunVM(allocator, _args),
- existing_bundle,
- env_loader,
+ try Config.configureTransformOptionsForBunVM(allocator, opts.args),
+ opts.env_loader,
);
var vm = VMHolder.vm.?;
@@ -962,10 +959,9 @@ pub const VirtualMachine = struct {
.event_listeners = EventListenerMixin.Map.init(allocator),
.bundler = bundler,
.console = console,
- .node_modules = bundler.options.node_modules_bundle,
.log = log,
.flush_list = std.ArrayList(string).init(allocator),
- .blobs = if (_args.serve orelse false) try Blob.Group.init(allocator) else null,
+ .blobs = if (opts.args.serve orelse false) try Blob.Group.init(allocator) else null,
.origin = bundler.options.origin,
.saved_source_map_table = SavedSourceMap.HashTable.init(allocator),
.source_mappings = undefined,
@@ -987,7 +983,7 @@ pub const VirtualMachine = struct {
vm.event_loop = &vm.regular_event_loop;
vm.bundler.macro_context = null;
- vm.bundler.resolver.store_fd = store_fd;
+ vm.bundler.resolver.store_fd = opts.store_fd;
vm.bundler.resolver.prefer_module_field = false;
vm.bundler.resolver.onWakePackageManager = .{
@@ -1001,7 +997,7 @@ pub const VirtualMachine = struct {
vm.bundler.macro_context = js_ast.Macro.MacroContext.init(&vm.bundler);
- if (_args.serve orelse false) {
+ if (opts.args.serve orelse false) {
vm.bundler.linker.onImportCSS = Bun.onImportCSS;
}
@@ -1014,7 +1010,7 @@ pub const VirtualMachine = struct {
@as(i32, @intCast(global_classes.len)),
vm.console,
-1,
- smol,
+ opts.smol,
null,
);
vm.regular_event_loop.global = vm.global;
@@ -1031,15 +1027,12 @@ pub const VirtualMachine = struct {
}
pub fn initWorker(
- allocator: std.mem.Allocator,
- _args: Api.TransformOptions,
- _log: ?*logger.Log,
- env_loader: ?*DotEnv.Loader,
- store_fd: bool,
worker: *WebWorker,
+ opts: Options,
) anyerror!*VirtualMachine {
var log: *logger.Log = undefined;
- if (_log) |__log| {
+ const allocator = opts.allocator;
+ if (opts.log) |__log| {
log = __log;
} else {
log = try allocator.create(logger.Log);
@@ -1052,9 +1045,8 @@ pub const VirtualMachine = struct {
const bundler = try Bundler.init(
allocator,
log,
- try Config.configureTransformOptionsForBunVM(allocator, _args),
- null,
- env_loader,
+ try Config.configureTransformOptionsForBunVM(allocator, opts.args),
+ opts.env_loader,
);
var vm = VMHolder.vm.?;
@@ -1066,10 +1058,9 @@ pub const VirtualMachine = struct {
.event_listeners = EventListenerMixin.Map.init(allocator),
.bundler = bundler,
.console = console,
- .node_modules = bundler.options.node_modules_bundle,
.log = log,
.flush_list = std.ArrayList(string).init(allocator),
- .blobs = if (_args.serve orelse false) try Blob.Group.init(allocator) else null,
+ .blobs = if (opts.args.serve orelse false) try Blob.Group.init(allocator) else null,
.origin = bundler.options.origin,
.saved_source_map_table = SavedSourceMap.HashTable.init(allocator),
.source_mappings = undefined,
@@ -1093,7 +1084,7 @@ pub const VirtualMachine = struct {
vm.event_loop = &vm.regular_event_loop;
vm.hot_reload = worker.parent.hot_reload;
vm.bundler.macro_context = null;
- vm.bundler.resolver.store_fd = store_fd;
+ vm.bundler.resolver.store_fd = opts.store_fd;
vm.bundler.resolver.prefer_module_field = false;
vm.bundler.resolver.onWakePackageManager = .{
.context = &vm.modules,
@@ -1106,7 +1097,7 @@ pub const VirtualMachine = struct {
vm.bundler.macro_context = js_ast.Macro.MacroContext.init(&vm.bundler);
- if (_args.serve orelse false) {
+ if (opts.args.serve orelse false) {
vm.bundler.linker.onImportCSS = Bun.onImportCSS;
}
@@ -1286,7 +1277,6 @@ pub const VirtualMachine = struct {
source: string,
is_esm: bool,
comptime is_a_file_path: bool,
- comptime realpath: bool,
) !void {
std.debug.assert(VirtualMachine.isLoaded());
// macOS threadlocal vars are very slow
@@ -1294,12 +1284,9 @@ pub const VirtualMachine = struct {
// so we can copy it here
var jsc_vm = VirtualMachine.get();
- if (jsc_vm.node_modules == null and strings.eqlComptime(std.fs.path.basename(specifier), Runtime.Runtime.Imports.alt_name)) {
+ if (strings.eqlComptime(std.fs.path.basename(specifier), Runtime.Runtime.Imports.alt_name)) {
ret.path = Runtime.Runtime.Imports.Name;
return;
- } else if (jsc_vm.node_modules != null and strings.eqlComptime(specifier, bun_file_import_path)) {
- ret.path = bun_file_import_path;
- return;
} else if (strings.eqlComptime(specifier, main_file_name)) {
ret.result = null;
ret.path = jsc_vm.entry_point.source.path.text;
@@ -1383,49 +1370,6 @@ pub const VirtualMachine = struct {
ret.query_string = query_string;
const result_path = result.pathConst() orelse return error.ModuleNotFound;
jsc_vm.resolved_count += 1;
- if (comptime !realpath) {
- if (jsc_vm.node_modules != null and !strings.eqlComptime(result_path.namespace, "node") and result.isLikelyNodeModule()) {
- const node_modules_bundle = jsc_vm.node_modules.?;
-
- node_module_checker: {
- const package_json = result.package_json orelse brk: {
- if (jsc_vm.bundler.resolver.packageJSONForResolvedNodeModule(&result)) |pkg| {
- break :brk pkg;
- } else {
- break :node_module_checker;
- }
- };
-
- if (node_modules_bundle.getPackageIDByName(package_json.name)) |possible_pkg_ids| {
- const pkg_id: u32 = brk: {
- for (possible_pkg_ids) |pkg_id| {
- const pkg = node_modules_bundle.bundle.packages[pkg_id];
- if (pkg.hash == package_json.hash) {
- break :brk pkg_id;
- }
- }
- break :node_module_checker;
- };
-
- const package = &node_modules_bundle.bundle.packages[pkg_id];
-
- if (Environment.isDebug) {
- std.debug.assert(strings.eql(node_modules_bundle.str(package.name), package_json.name));
- }
-
- const package_relative_path = jsc_vm.bundler.fs.relative(
- package_json.source.path.name.dirWithTrailingSlash(),
- result_path.text,
- );
-
- if (node_modules_bundle.findModuleIDInPackage(package, package_relative_path) == null) break :node_module_checker;
-
- ret.path = bun_file_import_path;
- return;
- }
- }
- }
- }
ret.path = result_path.text;
}
@@ -1452,7 +1396,7 @@ pub const VirtualMachine = struct {
query_string: *ZigString,
is_esm: bool,
) void {
- resolveMaybeNeedsTrailingSlash(res, global, specifier, source, query_string, is_esm, false, true);
+ resolveMaybeNeedsTrailingSlash(res, global, specifier, source, query_string, is_esm, false);
}
pub fn resolveFilePathForAPI(
@@ -1463,7 +1407,7 @@ pub const VirtualMachine = struct {
query_string: *ZigString,
is_esm: bool,
) void {
- resolveMaybeNeedsTrailingSlash(res, global, specifier, source, query_string, is_esm, true, true);
+ resolveMaybeNeedsTrailingSlash(res, global, specifier, source, query_string, is_esm, true);
}
pub fn resolve(
@@ -1474,7 +1418,7 @@ pub const VirtualMachine = struct {
query_string: *ZigString,
is_esm: bool,
) void {
- resolveMaybeNeedsTrailingSlash(res, global, specifier, source, query_string, is_esm, true, false);
+ resolveMaybeNeedsTrailingSlash(res, global, specifier, source, query_string, is_esm, true);
}
fn normalizeSource(source: []const u8) []const u8 {
@@ -1493,7 +1437,6 @@ pub const VirtualMachine = struct {
query_string: ?*ZigString,
is_esm: bool,
comptime is_a_file_path: bool,
- comptime realpath: bool,
) void {
var result = ResolveFunctionResult{ .path = "", .result = null };
var jsc_vm = VirtualMachine.get();
@@ -1527,7 +1470,6 @@ pub const VirtualMachine = struct {
query_string,
is_esm,
is_a_file_path,
- realpath,
);
return;
}
@@ -1547,7 +1489,7 @@ pub const VirtualMachine = struct {
jsc_vm.bundler.linker.log = old_log;
jsc_vm.bundler.resolver.log = old_log;
}
- _resolve(&result, global, specifier_utf8.slice(), normalizeSource(source_utf8.slice()), is_esm, is_a_file_path, realpath) catch |err_| {
+ _resolve(&result, global, specifier_utf8.slice(), normalizeSource(source_utf8.slice()), is_esm, is_a_file_path) catch |err_| {
var err = err_;
const msg: logger.Msg = brk: {
var msgs: []logger.Msg = log.msgs.items;
@@ -1808,19 +1750,6 @@ pub const VirtualMachine = struct {
var promise: *JSInternalPromise = undefined;
if (!this.bundler.options.disable_transpilation) {
-
- // We first import the node_modules bundle. This prevents any potential TDZ issues.
- // The contents of the node_modules bundle are lazy, so hopefully this should be pretty quick.
- if (this.node_modules != null and !this.has_loaded_node_modules) {
- this.has_loaded_node_modules = true;
- promise = JSModuleLoader.loadAndEvaluateModule(this.global, &String.static(bun_file_import_path));
- this.waitForPromise(JSC.AnyPromise{
- .Internal = promise,
- });
- if (promise.status(this.global.vm()) == .Rejected)
- return promise;
- }
-
{
this.is_in_preload = true;
defer this.is_in_preload = false;