diff options
-rw-r--r-- | src/defines.zig | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/defines.zig b/src/defines.zig index 88665aa06..a0e3bc8ea 100644 --- a/src/defines.zig +++ b/src/defines.zig @@ -184,6 +184,11 @@ pub const DotDefine = struct { var nan_val = js_ast.E.Number{ .value = std.math.nan_f64 }; var inf_val = js_ast.E.Number{ .value = std.math.inf_f64 }; +const __dirname_str: string = std.fs.path.sep_str ++ "__dirname_is_not_implemented"; +const __filename_str: string = "__filename_is_not_implemented.js"; +var __dirname = js_ast.E.String{ .utf8 = __dirname_str }; +var __filename = js_ast.E.String{ .utf8 = __filename_str }; + pub const Define = struct { identifiers: std.StringHashMap(IdentifierDefine), dots: std.StringHashMap([]DotDefine), @@ -194,7 +199,7 @@ pub const Define = struct { define.allocator = allocator; define.identifiers = std.StringHashMap(IdentifierDefine).init(allocator); define.dots = std.StringHashMap([]DotDefine).init(allocator); - try define.identifiers.ensureCapacity(641); + try define.identifiers.ensureCapacity(641 + 2); try define.dots.ensureCapacity(64); var val = js_ast.Expr.Data{ .e_undefined = .{} }; @@ -233,6 +238,24 @@ pub const Define = struct { } } + // Node.js backwards compatibility hack + define.identifiers.putAssumeCapacity( + "__dirname", + DefineData{ + .value = js_ast.Expr.Data{ + .e_string = &__dirname, + }, + }, + ); + define.identifiers.putAssumeCapacity( + "__filename", + DefineData{ + .value = js_ast.Expr.Data{ + .e_string = &__filename, + }, + }, + ); + // Step 2. Swap in certain literal values because those can be constant folded define.identifiers.putAssumeCapacity("undefined", value_define); define.identifiers.putAssumeCapacity("NaN", DefineData{ |