aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/bindings.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/bindings.zig')
-rw-r--r--src/bun.js/bindings/bindings.zig81
1 files changed, 80 insertions, 1 deletions
diff --git a/src/bun.js/bindings/bindings.zig b/src/bun.js/bindings/bindings.zig
index 1ac1fc5ca..51f9c9fde 100644
--- a/src/bun.js/bindings/bindings.zig
+++ b/src/bun.js/bindings/bindings.zig
@@ -760,7 +760,32 @@ pub const ZigString = extern struct {
return shim.cppFn("toErrorInstance", .{ this, global });
}
- pub const Extern = [_][]const u8{ "toAtomicValue", "toValue", "toExternalValue", "to16BitValue", "toValueGC", "toErrorInstance", "toExternalU16", "toExternalValueWithCallback", "external" };
+ pub fn toTypeErrorInstance(this: *const ZigString, global: *JSGlobalObject) JSValue {
+ return shim.cppFn("toTypeErrorInstance", .{ this, global });
+ }
+
+ pub fn toSyntaxErrorInstance(this: *const ZigString, global: *JSGlobalObject) JSValue {
+ return shim.cppFn("toSyntaxErrorInstance", .{ this, global });
+ }
+
+ pub fn toRangeErrorInstance(this: *const ZigString, global: *JSGlobalObject) JSValue {
+ return shim.cppFn("toRangeErrorInstance", .{ this, global });
+ }
+
+ pub const Extern = [_][]const u8{
+ "toAtomicValue",
+ "toValue",
+ "toExternalValue",
+ "to16BitValue",
+ "toValueGC",
+ "toErrorInstance",
+ "toExternalU16",
+ "toExternalValueWithCallback",
+ "external",
+ "toTypeErrorInstance",
+ "toSyntaxErrorInstance",
+ "toRangeErrorInstance",
+ };
};
pub const DOMURL = opaque {
@@ -2411,6 +2436,60 @@ pub const JSGlobalObject = extern struct {
}
}
+ pub fn createErrorInstanceWithCode(this: *JSGlobalObject, code: JSC.Node.ErrorCode, comptime fmt: string, args: anytype) JSValue {
+ var err = this.createErrorInstance(fmt, args);
+ err.put(this, ZigString.static("code"), ZigString.init(@tagName(code)).toValue(this));
+ return err;
+ }
+
+ pub fn createTypeErrorInstance(this: *JSGlobalObject, comptime fmt: string, args: anytype) JSValue {
+ if (comptime std.meta.fieldNames(@TypeOf(args)).len > 0) {
+ var stack_fallback = std.heap.stackFallback(1024 * 4, this.allocator());
+ var buf = bun.MutableString.init2048(stack_fallback.get()) catch unreachable;
+ defer buf.deinit();
+ var writer = buf.writer();
+ writer.print(fmt, args) catch return ZigString.static(fmt).toErrorInstance(this);
+ var str = ZigString.fromUTF8(buf.toOwnedSliceLeaky());
+ return str.toTypeErrorInstance(this);
+ } else {
+ return ZigString.static(fmt).toTypeErrorInstance(this);
+ }
+ }
+
+ pub fn createSyntaxErrorInstance(this: *JSGlobalObject, comptime fmt: string, args: anytype) JSValue {
+ if (comptime std.meta.fieldNames(@TypeOf(args)).len > 0) {
+ var stack_fallback = std.heap.stackFallback(1024 * 4, this.allocator());
+ var buf = bun.MutableString.init2048(stack_fallback.get()) catch unreachable;
+ defer buf.deinit();
+ var writer = buf.writer();
+ writer.print(fmt, args) catch return ZigString.static(fmt).toErrorInstance(this);
+ var str = ZigString.fromUTF8(buf.toOwnedSliceLeaky());
+ return str.toSyntaxErrorInstance(this);
+ } else {
+ return ZigString.static(fmt).toSyntaxErrorInstance(this);
+ }
+ }
+
+ pub fn createRangeErrorInstance(this: *JSGlobalObject, comptime fmt: string, args: anytype) JSValue {
+ if (comptime std.meta.fieldNames(@TypeOf(args)).len > 0) {
+ var stack_fallback = std.heap.stackFallback(1024 * 4, this.allocator());
+ var buf = bun.MutableString.init2048(stack_fallback.get()) catch unreachable;
+ defer buf.deinit();
+ var writer = buf.writer();
+ writer.print(fmt, args) catch return ZigString.static(fmt).toErrorInstance(this);
+ var str = ZigString.fromUTF8(buf.toOwnedSliceLeaky());
+ return str.toRangeErrorInstance(this);
+ } else {
+ return ZigString.static(fmt).toRangeErrorInstance(this);
+ }
+ }
+
+ pub fn createRangeErrorInstanceWithCode(this: *JSGlobalObject, code: JSC.Node.ErrorCode, comptime fmt: string, args: anytype) JSValue {
+ var err = this.createRangeErrorInstance(fmt, args);
+ err.put(this, ZigString.static("code"), ZigString.init(@tagName(code)).toValue(this));
+ return err;
+ }
+
pub fn createRangeError(this: *JSGlobalObject, comptime fmt: string, args: anytype) JSValue {
const err = createErrorInstance(this, fmt, args);
err.put(this, ZigString.static("code"), ZigString.static(@tagName(JSC.Node.ErrorCode.ERR_OUT_OF_RANGE)).toValue(this));