diff options
Diffstat (limited to 'src/logger.zig')
-rw-r--r-- | src/logger.zig | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/logger.zig b/src/logger.zig index 1481eb9b7..42c033c25 100644 --- a/src/logger.zig +++ b/src/logger.zig @@ -432,6 +432,13 @@ pub const Msg = struct { }; } + pub fn toJS(this: Msg, globalObject: *bun.JSC.JSGlobalObject, allocator: std.mem.Allocator) JSC.JSValue { + return switch (this.metadata) { + .build => JSC.BuildMessage.create(globalObject, allocator, this).?.value(), + .resolve => JSC.ResolveMessage.create(globalObject, allocator, this, "").?.value(), + }; + } + pub fn count(this: *const Msg, builder: *StringBuilder) void { this.data.count(builder); if (this.notes) |notes| { @@ -709,16 +716,16 @@ pub const Log = struct { 0 => return JSC.JSValue.jsUndefined(), 1 => { const msg = msgs[0]; - return JSC.JSValue.fromRef(JSC.BuildError.create(global, allocator, msg)); + return JSC.JSValue.fromRef(JSC.BuildMessage.create(global, allocator, msg)); }, else => { for (msgs[0..count], 0..) |msg, i| { switch (msg.metadata) { .build => { - errors_stack[i] = JSC.BuildError.create(global, allocator, msg).?; + errors_stack[i] = JSC.BuildMessage.create(global, allocator, msg).?; }, .resolve => { - errors_stack[i] = JSC.ResolveError.create(global, allocator, msg, "").?; + errors_stack[i] = JSC.ResolveMessage.create(global, allocator, msg, "").?; }, } } @@ -729,6 +736,20 @@ pub const Log = struct { } } + pub fn toJSArray(this: Log, global: *JSC.JSGlobalObject, allocator: std.mem.Allocator) JSC.JSValue { + const msgs: []const Msg = this.msgs.items; + var errors_stack: [256]*anyopaque = undefined; + + const count = @intCast(u16, @min(msgs.len, errors_stack.len)); + var arr = JSC.JSValue.createEmptyArray(global, count); + + for (msgs[0..count], 0..) |msg, i| { + arr.putIndex(global, @intCast(u32, i), msg.toJS(global, allocator)); + } + + return arr; + } + pub fn cloneTo(self: *Log, other: *Log) !void { var notes_count: usize = 0; |