aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-08-12 01:58:35 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-08-12 01:58:35 -0700
commitbae23210f4d6421e6549a1dcc94e7dc52bf280be (patch)
treee49174519fc7d3257e43fe07c39dd2963f3be567 /src
parent6cda74994b6e205229f086b0bc3db546af32de85 (diff)
downloadbun-bae23210f4d6421e6549a1dcc94e7dc52bf280be.tar.gz
bun-bae23210f4d6421e6549a1dcc94e7dc52bf280be.tar.zst
bun-bae23210f4d6421e6549a1dcc94e7dc52bf280be.zip
Fix __dirname and __pathname
Former-commit-id: 58c1c3b1a5ff24e040d995559baf3162f7e11ab7
Diffstat (limited to 'src')
-rw-r--r--src/defines.zig25
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{