aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/api')
-rw-r--r--src/bun.js/api/ffi.zig6
-rw-r--r--src/bun.js/api/transpiler.zig26
2 files changed, 20 insertions, 12 deletions
diff --git a/src/bun.js/api/ffi.zig b/src/bun.js/api/ffi.zig
index afe442096..59d682d3b 100644
--- a/src/bun.js/api/ffi.zig
+++ b/src/bun.js/api/ffi.zig
@@ -561,7 +561,7 @@ pub const FFI = struct {
var symbols_iter = JSC.JSPropertyIterator(.{
.skip_empty_name = true,
- .name_encoding = .utf8,
+
.include_value = true,
}).init(global.ref(), object.asObjectRef());
defer symbols_iter.deinit();
@@ -572,14 +572,14 @@ pub const FFI = struct {
const value = symbols_iter.value;
if (value.isEmptyOrUndefinedOrNull()) {
- return JSC.toTypeError(JSC.Node.ErrorCode.ERR_INVALID_ARG_VALUE, "Expected an object for key \"{s}\"", .{prop}, global.ref());
+ return JSC.toTypeError(JSC.Node.ErrorCode.ERR_INVALID_ARG_VALUE, "Expected an object for key \"{any}\"", .{prop}, global.ref());
}
var function: Function = .{};
if (try generateSymbolForFunction(global, allocator, value, &function)) |val| {
return val;
}
- function.base_name = try allocator.dupeZ(u8, prop);
+ function.base_name = try prop.toOwnedSliceZ(allocator);
symbols.putAssumeCapacity(std.mem.span(function.base_name.?), function);
}
diff --git a/src/bun.js/api/transpiler.zig b/src/bun.js/api/transpiler.zig
index a21f40e2e..8d6d2c141 100644
--- a/src/bun.js/api/transpiler.zig
+++ b/src/bun.js/api/transpiler.zig
@@ -364,8 +364,8 @@ fn transformOptionsFromJSC(ctx: JSC.C.JSContextRef, temp_allocator: std.mem.Allo
}
var define_iter = JSC.JSPropertyIterator(.{
- .skip_empty_name = false,
- .name_encoding = .utf8,
+ .skip_empty_name = true,
+
.include_value = true,
}).init(globalThis.ref(), define.asObjectRef());
defer define_iter.deinit();
@@ -385,7 +385,7 @@ fn transformOptionsFromJSC(ctx: JSC.C.JSContextRef, temp_allocator: std.mem.Allo
return transpiler;
}
- names[define_iter.i] = allocator.dupe(u8, prop) catch unreachable;
+ names[define_iter.i] = prop.toOwnedSlice(allocator) catch unreachable;
var val = JSC.ZigString.init("");
property_value.toZigString(&val, globalThis);
if (val.len == 0) {
@@ -500,6 +500,10 @@ fn transformOptionsFromJSC(ctx: JSC.C.JSContextRef, temp_allocator: std.mem.Allo
}
transpiler.runtime.allow_runtime = false;
+ transpiler.runtime.dynamic_require = switch (transpiler.transform.platform orelse .browser) {
+ .bun, .bun_macro => true,
+ else => false,
+ };
if (object.getIfPropertyExists(globalThis, "macro")) |macros| {
macros: {
@@ -639,28 +643,32 @@ fn transformOptionsFromJSC(ctx: JSC.C.JSContextRef, temp_allocator: std.mem.Allo
var iter = JSC.JSPropertyIterator(.{
.skip_empty_name = true,
- .name_encoding = .utf8,
.include_value = true,
- .override_writing_cstring = true,
- }).initCStringBuffer(globalThis.ref(), replace.asObjectRef(), bun.default_allocator);
+ }).init(globalThis, replace.asObjectRef());
if (iter.len > 0) {
- errdefer iter.deinit(bun.default_allocator);
+ errdefer iter.deinit();
try replacements.ensureUnusedCapacity(bun.default_allocator, iter.len);
// We cannot set the exception before `try` because it could be
// a double free with the `errdefer`.
defer if (exception.* != null) {
- iter.deinit(bun.default_allocator);
+ iter.deinit();
+ for (replacements.keys()) |key| {
+ bun.default_allocator.free(bun.constStrToU8(key));
+ }
replacements.clearAndFree(bun.default_allocator);
};
- while (iter.next()) |key| {
+ while (iter.next()) |key_| {
const value = iter.value;
if (value.isEmpty()) continue;
+ var key = try key_.toOwnedSlice(bun.default_allocator);
+
if (!JSLexer.isIdentifier(key)) {
JSC.throwInvalidArguments("\"{s}\" is not a valid ECMAScript identifier", .{key}, ctx, exception);
+ bun.default_allocator.free(key);
return transpiler;
}