aboutsummaryrefslogtreecommitdiff
path: root/src/resolver/resolver.zig
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/resolver/resolver.zig18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/resolver/resolver.zig b/src/resolver/resolver.zig
index d3d8856cb..cd907ea2c 100644
--- a/src/resolver/resolver.zig
+++ b/src/resolver/resolver.zig
@@ -575,7 +575,7 @@ pub const Resolver = struct {
defer {
if (FeatureFlags.tracing) {
- if (timer) |time| {
+ if (timer) |*time| {
// technically, this should be an atomic op
r.elapsed += time.read();
}
@@ -672,6 +672,13 @@ pub const Resolver = struct {
return result;
}
+ const ModuleTypeMap = _global.ComptimeStringMap(options.ModuleType, .{
+ .{ ".mjs", options.ModuleType.esm },
+ .{ ".mts", options.ModuleType.esm },
+ .{ ".cjs", options.ModuleType.cjs },
+ .{ ".cts", options.ModuleType.cjs },
+ });
+
pub fn finalizeResult(r: *ThisResolver, result: *Result, kind: ast.ImportKind) !void {
if (result.is_external) return;
@@ -693,12 +700,7 @@ pub const Resolver = struct {
// If you use cjs or cts, then you're using cjs
// This should win out over the module type from package.json
if (!kind.isFromCSS() and module_type == .unknown and path.name.ext.len == 4) {
- const FourLetterMatcher = strings.ExactSizeMatcher(4);
- module_type = switch (FourLetterMatcher.match(path.name.ext)) {
- FourLetterMatcher.case(".mjs"), FourLetterMatcher.case(".mts") => .esm,
- FourLetterMatcher.case(".cjs"), FourLetterMatcher.case(".cts") => .cjs,
- else => .unknown,
- };
+ module_type = ModuleTypeMap.getWithLength(path.name.ext, 4) orelse .unknown;
}
if (dir.getEntries()) |entries| {
@@ -720,7 +722,7 @@ pub const Resolver = struct {
if (query.entry.cache.fd == 0) {
buf[out.len] = 0;
const span = buf[0..out.len :0];
- var file = try std.fs.openFileAbsoluteZ(span, .{ .read = true });
+ var file = try std.fs.openFileAbsoluteZ(span, .{ .mode = .read_only });
if (comptime !FeatureFlags.store_file_descriptors) {
out = try std.os.getFdPath(query.entry.cache.fd, &buf);