aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-27 23:01:09 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-27 23:01:09 -0800
commit51d0c3b79f63e5ca1965cb5280c58fc0a9bc4f73 (patch)
tree368a6a2d25989269bef1bbc38c7b357d17ef8e9a
parent7672ee95af943d8480be92d49cd0f37b29dc7da3 (diff)
downloadbun-51d0c3b79f63e5ca1965cb5280c58fc0a9bc4f73.tar.gz
bun-51d0c3b79f63e5ca1965cb5280c58fc0a9bc4f73.tar.zst
bun-51d0c3b79f63e5ca1965cb5280c58fc0a9bc4f73.zip
Fix `console.log(process.env)`
-rw-r--r--src/bun.js/api/bun.zig41
-rw-r--r--src/bun.js/bindings/bindings.zig6
2 files changed, 27 insertions, 20 deletions
diff --git a/src/bun.js/api/bun.zig b/src/bun.js/api/bun.zig
index 7bd5ebb88..1c60a7faf 100644
--- a/src/bun.js/api/bun.zig
+++ b/src/bun.js/api/bun.zig
@@ -3289,7 +3289,6 @@ pub const EnvironmentVariables = struct {
void,
.{
.name = "DotEnv",
- .read_only = true,
},
.{
.getProperty = .{
@@ -3304,11 +3303,6 @@ pub const EnvironmentVariables = struct {
.getPropertyNames = .{
.rfn = getPropertyNames,
},
- .toJSON = .{
- .rfn = toJSON,
- .name = "toJSON",
- .enumerable = false,
- },
},
.{},
);
@@ -3345,8 +3339,21 @@ pub const EnvironmentVariables = struct {
var name_slice = propertyName.toZigString().toSlice(ctx.allocator());
defer name_slice.deinit();
var name = name_slice.slice();
+ if (strings.eqlComptime(name, "toJSON")) {
+ var existing = ctx.ptr().getCachedObject(ZigString.static("Bun.env.toJSON"));
+ if (existing.isEmpty()) {
+ return ctx.ptr().putCachedObject(
+ ZigString.static("Bun.env.toJSON"),
+ // TODO: stage2 change this to a ptr
+ JSC.NewFunction(ctx, ZigString.static("toJSON"), 0, toJSON, false),
+ ).asObjectRef();
+ }
+
+ return existing.asObjectRef();
+ }
+
if (VirtualMachine.vm.bundler.env.map.get(name)) |value| {
- return ZigString.init(value).withEncoding().toValueGC(ctx).asObjectRef();
+ return ZigString.initUTF8(value).toValueGC(ctx).asObjectRef();
}
if (Output.enable_ansi_colors) {
@@ -3360,14 +3367,10 @@ pub const EnvironmentVariables = struct {
}
pub fn toJSON(
- _: void,
- ctx: js.JSContextRef,
- _: js.JSObjectRef,
- _: js.JSObjectRef,
- _: []const js.JSValueRef,
- _: js.ExceptionRef,
- ) js.JSValueRef {
- var map = VirtualMachine.vm.bundler.env.map.map;
+ globalThis: *JSC.JSGlobalObject,
+ _: *JSC.CallFrame,
+ ) callconv(.C) JSC.JSValue {
+ var map = globalThis.bunVM().bundler.env.map.map;
var keys = map.keys();
var values = map.values();
const StackFallback = std.heap.StackFallbackAllocator(32 * 2 * @sizeOf(ZigString));
@@ -3382,13 +3385,11 @@ pub const EnvironmentVariables = struct {
var value_strings = key_strings_[keys.len..];
for (keys) |key, i| {
- key_strings[i] = ZigString.init(key);
- key_strings[i].detectEncoding();
- value_strings[i] = ZigString.init(values[i]);
- value_strings[i].detectEncoding();
+ key_strings[i] = ZigString.initUTF8(key);
+ value_strings[i] = ZigString.initUTF8(values[i]);
}
- var result = JSValue.fromEntries(ctx.ptr(), key_strings.ptr, value_strings.ptr, keys.len, false).asObjectRef();
+ var result = JSValue.fromEntries(globalThis, key_strings.ptr, value_strings.ptr, keys.len, false);
allocator.free(key_strings_);
return result;
// }
diff --git a/src/bun.js/bindings/bindings.zig b/src/bun.js/bindings/bindings.zig
index 22855ef01..d28b71b66 100644
--- a/src/bun.js/bindings/bindings.zig
+++ b/src/bun.js/bindings/bindings.zig
@@ -333,6 +333,12 @@ pub const ZigString = extern struct {
return ZigString{ .ptr = slice_.ptr, .len = slice_.len };
}
+ pub fn initUTF8(slice_: []const u8) ZigString {
+ var out = init(slice_);
+ out.markUTF8();
+ return out;
+ }
+
pub fn static(comptime slice_: []const u8) *const ZigString {
const Holder = struct {
pub const value = ZigString{ .ptr = slice_.ptr, .len = slice_.len };