aboutsummaryrefslogtreecommitdiff
path: root/src/linker.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/linker.zig')
-rw-r--r--src/linker.zig554
1 files changed, 277 insertions, 277 deletions
diff --git a/src/linker.zig b/src/linker.zig
index 4fe291d5d..e4cf171c0 100644
--- a/src/linker.zig
+++ b/src/linker.zig
@@ -219,7 +219,7 @@ pub const Linker = struct {
var record_i: u32 = 0;
const record_count = @as(u32, @truncate(import_records.items.len));
- outer: while (record_i < record_count) : (record_i += 1) {
+ while (record_i < record_count) : (record_i += 1) {
var import_record = &import_records.items[record_i];
if (import_record.is_unused or
(is_bun and is_deferred and !result.isPendingImport(record_i))) continue;
@@ -332,282 +332,282 @@ pub const Linker = struct {
}
}
- var resolved_import_: anyerror!Resolver.Result = brk: {
- switch (import_record.tag) {
- else => {},
- // for fast refresh, attempt to read the version directly from the bundle instead of resolving it
- .react_refresh => {
- if (linker.options.jsx.use_embedded_refresh_runtime) {
- import_record.path = Fs.Path.initWithNamespace(try origin.joinAlloc(linker.allocator, "", "", linker.options.jsx.refresh_runtime, "", ""), "bun");
- continue :outer;
- }
-
- if (linker.tagged_resolutions.react_refresh != null) {
- break :brk linker.tagged_resolutions.react_refresh.?;
- }
- },
- }
-
- if (comptime is_bun) {
- switch (linker.resolver.resolveAndAutoInstall(
- source_dir,
- import_record.path.text,
- import_record.kind,
- linker.options.global_cache,
- )) {
- .success => |_resolved_import| {
- switch (import_record.tag) {
- else => {},
- .react_refresh => {
- linker.tagged_resolutions.react_refresh = _resolved_import;
- linker.tagged_resolutions.react_refresh.?.path_pair.primary = linker.tagged_resolutions.react_refresh.?.path().?.dupeAlloc(bun.default_allocator) catch unreachable;
- },
- }
-
- break :brk _resolved_import;
- },
- .failure => |err| {
- break :brk err;
- },
- .pending => |pending1| {
- var pending = pending1;
- if (!linker.resolver.opts.global_cache.canInstall()) {
- break :brk error.InstallationPending;
- }
-
- pending.import_record_id = record_i;
- try result.pending_imports.append(linker.allocator, pending);
- continue;
- },
- .not_found => break :brk error.ModuleNotFound,
- // else => unreachable,
- }
- } else {
- if (linker.resolver.resolve(source_dir, import_record.path.text, import_record.kind)) |_resolved_import| {
- switch (import_record.tag) {
- else => {},
- .react_refresh => {
- linker.tagged_resolutions.react_refresh = _resolved_import;
- linker.tagged_resolutions.react_refresh.?.path_pair.primary = linker.tagged_resolutions.react_refresh.?.path().?.dupeAlloc(bun.default_allocator) catch unreachable;
- },
- }
-
- break :brk _resolved_import;
- } else |err| {
- break :brk err;
- }
- }
- };
-
- if (resolved_import_) |*resolved_import| {
- if (resolved_import.is_external or resolved_import.is_standalone_module) {
- if (resolved_import.is_external)
- externals.append(record_index) catch unreachable;
- continue;
- }
-
- const path = resolved_import.pathConst() orelse {
- import_record.path.is_disabled = true;
- continue;
- };
-
- const loader = linker.options.loader(path.name.ext);
-
- linker.processImportRecord(
- loader,
-
- // Include trailing slash
- source_dir,
- resolved_import,
- import_record,
- origin,
- import_path_format,
- ) catch continue;
-
- // If we're importing a CommonJS module as ESM
- // We need to do the following transform:
- // import React from 'react';
- // =>
- // import {_require} from 'RUNTIME_IMPORTS';
- // import * as react_module from 'react';
- // var React = _require(react_module).default;
- // UNLESS it's a namespace import
- // If it's a namespace import, assume it's safe.
- // We can do this in the printer instead of creating a bunch of AST nodes here.
- // But we need to at least tell the printer that this needs to happen.
- if (loader != .napi and resolved_import.shouldAssumeCommonJS(import_record.kind) and !is_bun) {
- import_record.do_commonjs_transform_in_printer = true;
- import_record.module_id = @as(u32, @truncate(bun.hash(path.pretty)));
- }
- } else |err| {
- switch (err) {
- error.VersionSpecifierNotAllowedHere => {
- var subpath_buf: [512]u8 = undefined;
-
- if (ESModule.Package.parse(import_record.path.text, &subpath_buf)) |pkg| {
- linker.log.addResolveError(
- &result.source,
- import_record.range,
- linker.allocator,
- "Unexpected version \"{s}\" in import specifier \"{s}\". When a package.json is present, please use one of the \"dependencies\" fields in package.json for setting dependency versions",
- .{ pkg.version, import_record.path.text },
- import_record.kind,
- err,
- ) catch {};
- } else {
- linker.log.addResolveError(
- &result.source,
- import_record.range,
- linker.allocator,
- "Unexpected version in import specifier \"{s}\". When a package.json is present, please use one of the \"dependencies\" fields in package.json to specify the version",
- .{import_record.path.text},
- import_record.kind,
- err,
- ) catch {};
- }
- had_resolve_errors = true;
- continue;
- },
-
- error.NoMatchingVersion => {
- if (import_record.handles_import_errors) {
- import_record.path.is_disabled = true;
- continue;
- }
-
- had_resolve_errors = true;
-
- var package_name = import_record.path.text;
- var subpath_buf: [512]u8 = undefined;
- if (ESModule.Package.parse(import_record.path.text, &subpath_buf)) |pkg| {
- package_name = pkg.name;
- if (pkg.version.len > 0) {
- linker.log.addResolveError(
- &result.source,
- import_record.range,
- linker.allocator,
- "Version \"{s}\" not found for package \"{s}\" (while resolving \"{s}\")",
- .{ pkg.version, package_name, import_record.path.text },
- import_record.kind,
- err,
- ) catch {};
- } else {
- linker.log.addResolveError(
- &result.source,
- import_record.range,
- linker.allocator,
- "No matching version found for package \"{s}\" (while resolving \"{s}\")",
- .{ package_name, import_record.path.text },
- import_record.kind,
- err,
- ) catch {};
- }
- } else {
- linker.log.addResolveError(
- &result.source,
- import_record.range,
- linker.allocator,
- "Package version not found: \"{s}\"",
- .{import_record.path.text},
- import_record.kind,
- err,
- ) catch {};
- }
- continue;
- },
-
- error.DistTagNotFound => {
- if (import_record.handles_import_errors) {
- import_record.path.is_disabled = true;
- continue;
- }
-
- had_resolve_errors = true;
-
- var package_name = import_record.path.text;
- var subpath_buf: [512]u8 = undefined;
- if (ESModule.Package.parse(import_record.path.text, &subpath_buf)) |pkg| {
- package_name = pkg.name;
- linker.log.addResolveError(
- &result.source,
- import_record.range,
- linker.allocator,
- "Version \"{s}\" not found for package \"{s}\" (while resolving \"{s}\")",
- .{ pkg.version, package_name, import_record.path.text },
- import_record.kind,
- err,
- ) catch {};
- } else {
- linker.log.addResolveError(
- &result.source,
- import_record.range,
- linker.allocator,
- "Package tag not found: \"{s}\"",
- .{import_record.path.text},
- import_record.kind,
- err,
- ) catch {};
- }
-
- continue;
- },
-
- error.PackageManifestHTTP404 => {
- if (import_record.handles_import_errors) {
- import_record.path.is_disabled = true;
- continue;
- }
-
- had_resolve_errors = true;
-
- var package_name = import_record.path.text;
- var subpath_buf: [512]u8 = undefined;
- if (ESModule.Package.parse(import_record.path.text, &subpath_buf)) |pkg| {
- package_name = pkg.name;
- linker.log.addResolveError(
- &result.source,
- import_record.range,
- linker.allocator,
- "Package not found: \"{s}\" (while resolving \"{s}\")",
- .{ package_name, import_record.path.text },
- import_record.kind,
- err,
- ) catch {};
- } else {
- linker.log.addResolveError(
- &result.source,
- import_record.range,
- linker.allocator,
- "Package not found: \"{s}\"",
- .{package_name},
- import_record.kind,
- err,
- ) catch {};
- }
- continue;
- },
- error.ModuleNotFound => {
- had_resolve_errors = try whenModuleNotFound(linker, import_record, result, is_bun);
- },
- else => {
- had_resolve_errors = true;
-
- try linker.log.addResolveError(
- &result.source,
- import_record.range,
- linker.allocator,
- "{s} resolving \"{s}\"",
- .{
- @errorName(err),
- import_record.path.text,
- },
- import_record.kind,
- err,
- );
- continue;
- },
- }
- }
+ // var resolved_import_: anyerror!Resolver.Result = brk: {
+ // switch (import_record.tag) {
+ // else => {},
+ // // for fast refresh, attempt to read the version directly from the bundle instead of resolving it
+ // .react_refresh => {
+ // if (linker.options.jsx.use_embedded_refresh_runtime) {
+ // import_record.path = Fs.Path.initWithNamespace(try origin.joinAlloc(linker.allocator, "", "", linker.options.jsx.refresh_runtime, "", ""), "bun");
+ // continue :outer;
+ // }
+
+ // if (linker.tagged_resolutions.react_refresh != null) {
+ // break :brk linker.tagged_resolutions.react_refresh.?;
+ // }
+ // },
+ // }
+
+ // if (comptime is_bun) {
+ // switch (linker.resolver.resolveAndAutoInstall(
+ // source_dir,
+ // import_record.path.text,
+ // import_record.kind,
+ // linker.options.global_cache,
+ // )) {
+ // .success => |_resolved_import| {
+ // switch (import_record.tag) {
+ // else => {},
+ // .react_refresh => {
+ // linker.tagged_resolutions.react_refresh = _resolved_import;
+ // linker.tagged_resolutions.react_refresh.?.path_pair.primary = linker.tagged_resolutions.react_refresh.?.path().?.dupeAlloc(bun.default_allocator) catch unreachable;
+ // },
+ // }
+
+ // break :brk _resolved_import;
+ // },
+ // .failure => |err| {
+ // break :brk err;
+ // },
+ // .pending => |pending1| {
+ // var pending = pending1;
+ // if (!linker.resolver.opts.global_cache.canInstall()) {
+ // break :brk error.InstallationPending;
+ // }
+
+ // pending.import_record_id = record_i;
+ // try result.pending_imports.append(linker.allocator, pending);
+ // continue;
+ // },
+ // .not_found => break :brk error.ModuleNotFound,
+ // // else => unreachable,
+ // }
+ // } else {
+ // if (linker.resolver.resolve(source_dir, import_record.path.text, import_record.kind)) |_resolved_import| {
+ // switch (import_record.tag) {
+ // else => {},
+ // .react_refresh => {
+ // linker.tagged_resolutions.react_refresh = _resolved_import;
+ // linker.tagged_resolutions.react_refresh.?.path_pair.primary = linker.tagged_resolutions.react_refresh.?.path().?.dupeAlloc(bun.default_allocator) catch unreachable;
+ // },
+ // }
+
+ // break :brk _resolved_import;
+ // } else |err| {
+ // break :brk err;
+ // }
+ // }
+ // };
+
+ // if (resolved_import_) |*resolved_import| {
+ // if (resolved_import.is_external or resolved_import.is_standalone_module) {
+ // if (resolved_import.is_external)
+ // externals.append(record_index) catch unreachable;
+ // continue;
+ // }
+
+ // const path = resolved_import.pathConst() orelse {
+ // import_record.path.is_disabled = true;
+ // continue;
+ // };
+
+ // const loader = linker.options.loader(path.name.ext);
+
+ // linker.processImportRecord(
+ // loader,
+
+ // // Include trailing slash
+ // source_dir,
+ // resolved_import,
+ // import_record,
+ // origin,
+ // import_path_format,
+ // ) catch continue;
+
+ // // If we're importing a CommonJS module as ESM
+ // // We need to do the following transform:
+ // // import React from 'react';
+ // // =>
+ // // import {_require} from 'RUNTIME_IMPORTS';
+ // // import * as react_module from 'react';
+ // // var React = _require(react_module).default;
+ // // UNLESS it's a namespace import
+ // // If it's a namespace import, assume it's safe.
+ // // We can do this in the printer instead of creating a bunch of AST nodes here.
+ // // But we need to at least tell the printer that this needs to happen.
+ // if (loader != .napi and resolved_import.shouldAssumeCommonJS(import_record.kind) and !is_bun) {
+ // import_record.do_commonjs_transform_in_printer = true;
+ // import_record.module_id = @as(u32, @truncate(bun.hash(path.pretty)));
+ // }
+ // } else |err| {
+ // switch (err) {
+ // error.VersionSpecifierNotAllowedHere => {
+ // var subpath_buf: [512]u8 = undefined;
+
+ // if (ESModule.Package.parse(import_record.path.text, &subpath_buf)) |pkg| {
+ // linker.log.addResolveError(
+ // &result.source,
+ // import_record.range,
+ // linker.allocator,
+ // "Unexpected version \"{s}\" in import specifier \"{s}\". When a package.json is present, please use one of the \"dependencies\" fields in package.json for setting dependency versions",
+ // .{ pkg.version, import_record.path.text },
+ // import_record.kind,
+ // err,
+ // ) catch {};
+ // } else {
+ // linker.log.addResolveError(
+ // &result.source,
+ // import_record.range,
+ // linker.allocator,
+ // "Unexpected version in import specifier \"{s}\". When a package.json is present, please use one of the \"dependencies\" fields in package.json to specify the version",
+ // .{import_record.path.text},
+ // import_record.kind,
+ // err,
+ // ) catch {};
+ // }
+ // had_resolve_errors = true;
+ // continue;
+ // },
+
+ // error.NoMatchingVersion => {
+ // if (import_record.handles_import_errors) {
+ // import_record.path.is_disabled = true;
+ // continue;
+ // }
+
+ // had_resolve_errors = true;
+
+ // var package_name = import_record.path.text;
+ // var subpath_buf: [512]u8 = undefined;
+ // if (ESModule.Package.parse(import_record.path.text, &subpath_buf)) |pkg| {
+ // package_name = pkg.name;
+ // if (pkg.version.len > 0) {
+ // linker.log.addResolveError(
+ // &result.source,
+ // import_record.range,
+ // linker.allocator,
+ // "Version \"{s}\" not found for package \"{s}\" (while resolving \"{s}\")",
+ // .{ pkg.version, package_name, import_record.path.text },
+ // import_record.kind,
+ // err,
+ // ) catch {};
+ // } else {
+ // linker.log.addResolveError(
+ // &result.source,
+ // import_record.range,
+ // linker.allocator,
+ // "No matching version found for package \"{s}\" (while resolving \"{s}\")",
+ // .{ package_name, import_record.path.text },
+ // import_record.kind,
+ // err,
+ // ) catch {};
+ // }
+ // } else {
+ // linker.log.addResolveError(
+ // &result.source,
+ // import_record.range,
+ // linker.allocator,
+ // "Package version not found: \"{s}\"",
+ // .{import_record.path.text},
+ // import_record.kind,
+ // err,
+ // ) catch {};
+ // }
+ // continue;
+ // },
+
+ // error.DistTagNotFound => {
+ // if (import_record.handles_import_errors) {
+ // import_record.path.is_disabled = true;
+ // continue;
+ // }
+
+ // had_resolve_errors = true;
+
+ // var package_name = import_record.path.text;
+ // var subpath_buf: [512]u8 = undefined;
+ // if (ESModule.Package.parse(import_record.path.text, &subpath_buf)) |pkg| {
+ // package_name = pkg.name;
+ // linker.log.addResolveError(
+ // &result.source,
+ // import_record.range,
+ // linker.allocator,
+ // "Version \"{s}\" not found for package \"{s}\" (while resolving \"{s}\")",
+ // .{ pkg.version, package_name, import_record.path.text },
+ // import_record.kind,
+ // err,
+ // ) catch {};
+ // } else {
+ // linker.log.addResolveError(
+ // &result.source,
+ // import_record.range,
+ // linker.allocator,
+ // "Package tag not found: \"{s}\"",
+ // .{import_record.path.text},
+ // import_record.kind,
+ // err,
+ // ) catch {};
+ // }
+
+ // continue;
+ // },
+
+ // error.PackageManifestHTTP404 => {
+ // if (import_record.handles_import_errors) {
+ // import_record.path.is_disabled = true;
+ // continue;
+ // }
+
+ // had_resolve_errors = true;
+
+ // var package_name = import_record.path.text;
+ // var subpath_buf: [512]u8 = undefined;
+ // if (ESModule.Package.parse(import_record.path.text, &subpath_buf)) |pkg| {
+ // package_name = pkg.name;
+ // linker.log.addResolveError(
+ // &result.source,
+ // import_record.range,
+ // linker.allocator,
+ // "Package not found: \"{s}\" (while resolving \"{s}\")",
+ // .{ package_name, import_record.path.text },
+ // import_record.kind,
+ // err,
+ // ) catch {};
+ // } else {
+ // linker.log.addResolveError(
+ // &result.source,
+ // import_record.range,
+ // linker.allocator,
+ // "Package not found: \"{s}\"",
+ // .{package_name},
+ // import_record.kind,
+ // err,
+ // ) catch {};
+ // }
+ // continue;
+ // },
+ // error.ModuleNotFound => {
+ // had_resolve_errors = try whenModuleNotFound(linker, import_record, result, is_bun);
+ // },
+ // else => {
+ // had_resolve_errors = true;
+
+ // try linker.log.addResolveError(
+ // &result.source,
+ // import_record.range,
+ // linker.allocator,
+ // "{s} resolving \"{s}\"",
+ // .{
+ // @errorName(err),
+ // import_record.path.text,
+ // },
+ // import_record.kind,
+ // err,
+ // );
+ // continue;
+ // },
+ // }
+ // }
}
},