aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-05-11 17:42:54 -0400
committerGravatar GitHub <noreply@github.com> 2023-05-11 14:42:54 -0700
commit6a163cf933542506354dc836bd92693bcae5939b (patch)
tree2eaeee9cddeb930792b96de6ed040a9877ebc318 /src
parent02cad591f8c56f801fb9ccc480bf9547484144c2 (diff)
downloadbun-6a163cf933542506354dc836bd92693bcae5939b.tar.gz
bun-6a163cf933542506354dc836bd92693bcae5939b.tar.zst
bun-6a163cf933542506354dc836bd92693bcae5939b.zip
bundler tests and improve `Bun.build` return type (#2833)
* importstar_ts * tests * run acorn test suite * bench tweaks * test * bun.build tests very incomplete * remove dataurl and base64 loaders from tests since they dont work yet * tests * stuff * stuff * add errors and array of blobs * work so far * docs * requested changes * fix overwrite docs * remove this file
Diffstat (limited to 'src')
-rw-r--r--src/bun.js/api/JSBundler.zig12
-rw-r--r--src/bun.js/api/JSTranspiler.zig2
-rw-r--r--src/bun.js/base.zig8
-rw-r--r--src/bun.js/bindings/exports.zig14
-rw-r--r--src/bun.js/javascript.zig135
-rw-r--r--src/bun.js/test/pretty_format.zig12
-rw-r--r--src/bundler/bundle_v2.zig30
-rw-r--r--src/cli.zig4
-rw-r--r--src/cli/build_command.zig2
-rw-r--r--src/js_ast.zig2
-rw-r--r--src/linker.zig4
-rw-r--r--src/logger.zig27
-rw-r--r--src/runtime/errors.ts16
13 files changed, 160 insertions, 108 deletions
diff --git a/src/bun.js/api/JSBundler.zig b/src/bun.js/api/JSBundler.zig
index 80f776fca..16a540212 100644
--- a/src/bun.js/api/JSBundler.zig
+++ b/src/bun.js/api/JSBundler.zig
@@ -179,24 +179,36 @@ pub const JSBundler = struct {
if (naming.isString()) {
if (try config.getOptional(globalThis, "naming", ZigString.Slice)) |slice| {
defer slice.deinit();
+ if (!strings.hasPrefixComptime(slice.slice(), "./")) {
+ this.names.owned_entry_point.appendSliceExact("./") catch unreachable;
+ }
this.names.owned_entry_point.appendSliceExact(slice.slice()) catch unreachable;
this.names.entry_point.data = this.names.owned_entry_point.list.items;
}
} else if (naming.isObject()) {
if (try naming.getOptional(globalThis, "entry", ZigString.Slice)) |slice| {
defer slice.deinit();
+ if (!strings.hasPrefixComptime(slice.slice(), "./")) {
+ this.names.owned_entry_point.appendSliceExact("./") catch unreachable;
+ }
this.names.owned_entry_point.appendSliceExact(slice.slice()) catch unreachable;
this.names.entry_point.data = this.names.owned_entry_point.list.items;
}
if (try naming.getOptional(globalThis, "chunk", ZigString.Slice)) |slice| {
defer slice.deinit();
+ if (!strings.hasPrefixComptime(slice.slice(), "./")) {
+ this.names.owned_chunk.appendSliceExact("./") catch unreachable;
+ }
this.names.owned_chunk.appendSliceExact(slice.slice()) catch unreachable;
this.names.chunk.data = this.names.owned_chunk.list.items;
}
if (try naming.getOptional(globalThis, "asset", ZigString.Slice)) |slice| {
defer slice.deinit();
+ if (!strings.hasPrefixComptime(slice.slice(), "./")) {
+ this.names.owned_asset.appendSliceExact("./") catch unreachable;
+ }
this.names.owned_asset.appendSliceExact(slice.slice()) catch unreachable;
this.names.asset.data = this.names.owned_asset.list.items;
}
diff --git a/src/bun.js/api/JSTranspiler.zig b/src/bun.js/api/JSTranspiler.zig
index 2ac6948d1..a6d23dbd0 100644
--- a/src/bun.js/api/JSTranspiler.zig
+++ b/src/bun.js/api/JSTranspiler.zig
@@ -200,7 +200,7 @@ pub const TransformTask = struct {
const error_value: JSValue = brk: {
if (this.err) |err| {
if (!this.log.hasAny()) {
- break :brk JSC.JSValue.fromRef(JSC.BuildError.create(
+ break :brk JSC.JSValue.fromRef(JSC.BuildMessage.create(
this.global,
bun.default_allocator,
logger.Msg{
diff --git a/src/bun.js/base.zig b/src/bun.js/base.zig
index 9ebc7f594..aab880453 100644
--- a/src/bun.js/base.zig
+++ b/src/bun.js/base.zig
@@ -11,8 +11,8 @@ const stringZ = bun.stringZ;
const default_allocator = bun.default_allocator;
const C = bun.C;
const JavaScript = @import("./javascript.zig");
-const ResolveError = JavaScript.ResolveError;
-const BuildError = JavaScript.BuildError;
+const ResolveMessage = JavaScript.ResolveMessage;
+const BuildMessage = JavaScript.BuildMessage;
const JSC = @import("root").bun.JSC;
const WebCore = @import("./webcore.zig");
const Test = @import("./test/jest.zig");
@@ -2200,7 +2200,7 @@ const MD5_SHA1 = JSC.API.Bun.Crypto.MD5_SHA1;
const FFI = JSC.FFI;
pub const JSPrivateDataPtr = TaggedPointerUnion(.{
AttributeIterator,
- BuildError,
+ BuildMessage,
Comment,
DebugServer,
DebugSSLServer,
@@ -2215,7 +2215,7 @@ pub const JSPrivateDataPtr = TaggedPointerUnion(.{
LazyPropertiesObject,
ModuleNamespace,
- ResolveError,
+ ResolveMessage,
Router,
Server,
diff --git a/src/bun.js/bindings/exports.zig b/src/bun.js/bindings/exports.zig
index 66b63f6ca..6ed97f4b9 100644
--- a/src/bun.js/bindings/exports.zig
+++ b/src/bun.js/bindings/exports.zig
@@ -2163,14 +2163,14 @@ pub const ZigConsoleClient = struct {
if (CAPI.JSObjectGetPrivate(value.asRef())) |private_data_ptr| {
const priv_data = JSPrivateDataPtr.from(private_data_ptr);
switch (priv_data.tag()) {
- .BuildError => {
- const build_error = priv_data.as(JS.BuildError);
- build_error.msg.writeFormat(writer_, enable_ansi_colors) catch {};
+ .BuildMessage => {
+ const build_log = priv_data.as(JS.BuildMessage);
+ build_log.msg.writeFormat(writer_, enable_ansi_colors) catch {};
return;
},
- .ResolveError => {
- const resolve_error = priv_data.as(JS.ResolveError);
- resolve_error.msg.writeFormat(writer_, enable_ansi_colors) catch {};
+ .ResolveMessage => {
+ const resolve_log = priv_data.as(JS.ResolveMessage);
+ resolve_log.msg.writeFormat(writer_, enable_ansi_colors) catch {};
return;
},
else => {},
@@ -3108,7 +3108,7 @@ pub const ZigConsoleClient = struct {
// const resolve = ModuleLoader.resolve(global, input, module) catch |err| {
// return ErrorableJSValue.errFmt(
// err,
-// "ResolveError: {s} while resolving \"{s}\"\nfrom \"{s}\"",
+// "ResolveMessage: {s} while resolving \"{s}\"\nfrom \"{s}\"",
// .{
// @errorName(err),
// input,
diff --git a/src/bun.js/javascript.zig b/src/bun.js/javascript.zig
index 67f016ad2..8bf13314b 100644
--- a/src/bun.js/javascript.zig
+++ b/src/bun.js/javascript.zig
@@ -95,8 +95,8 @@ pub const GlobalClasses = [_]type{
Bun.Class,
WebCore.Crypto.Class,
EventListenerMixin.addEventListener(VirtualMachine),
- BuildError.Class,
- ResolveError.Class,
+ BuildMessage.Class,
+ ResolveMessage.Class,
// Fetch.Class,
js_ast.Macro.JSNode.BunJSXCallbackFunction,
@@ -1219,7 +1219,7 @@ pub const VirtualMachine = struct {
}
}
- const printed = ResolveError.fmt(
+ const printed = ResolveMessage.fmt(
jsc_vm.allocator,
specifier.slice(),
source.slice(),
@@ -1239,7 +1239,7 @@ pub const VirtualMachine = struct {
};
{
- res.* = ErrorableZigString.err(err, @ptrCast(*anyopaque, ResolveError.create(global, VirtualMachine.get().allocator, msg, source.slice())));
+ res.* = ErrorableZigString.err(err, @ptrCast(*anyopaque, ResolveMessage.create(global, VirtualMachine.get().allocator, msg, source.slice())));
}
return;
@@ -1349,7 +1349,7 @@ pub const VirtualMachine = struct {
};
};
{
- ret.* = ErrorableResolvedSource.err(err, @ptrCast(*anyopaque, BuildError.create(globalThis, globalThis.allocator(), msg)));
+ ret.* = ErrorableResolvedSource.err(err, @ptrCast(*anyopaque, BuildMessage.create(globalThis, globalThis.allocator(), msg)));
}
return;
},
@@ -1357,8 +1357,8 @@ pub const VirtualMachine = struct {
1 => {
const msg = log.msgs.items[0];
ret.* = ErrorableResolvedSource.err(err, switch (msg.metadata) {
- .build => BuildError.create(globalThis, globalThis.allocator(), msg).?,
- .resolve => ResolveError.create(
+ .build => BuildMessage.create(globalThis, globalThis.allocator(), msg).?,
+ .resolve => ResolveMessage.create(
globalThis,
globalThis.allocator(),
msg,
@@ -1374,8 +1374,8 @@ pub const VirtualMachine = struct {
for (log.msgs.items, 0..) |msg, i| {
errors[i] = switch (msg.metadata) {
- .build => BuildError.create(globalThis, globalThis.allocator(), msg).?,
- .resolve => ResolveError.create(
+ .build => BuildMessage.create(globalThis, globalThis.allocator(), msg).?,
+ .resolve => ResolveMessage.create(
globalThis,
globalThis.allocator(),
msg,
@@ -1638,8 +1638,8 @@ pub const VirtualMachine = struct {
// When the Error-like object is one of our own, it's best to rely on the object directly instead of serializing it to a ZigException.
// This is for:
- // - BuildError
- // - ResolveError
+ // - BuildMessage
+ // - ResolveMessage
// If there were multiple errors, it could be contained in an AggregateError.
// In that case, this function becomes recursive.
// In all other cases, we will convert it to a ZigException.
@@ -1737,9 +1737,9 @@ pub const VirtualMachine = struct {
const private_data_ptr = JSPrivateDataPtr.from(value);
switch (private_data_ptr.tag()) {
- .BuildError => {
+ .BuildMessage => {
defer Output.flush();
- var build_error = private_data_ptr.as(BuildError);
+ var build_error = private_data_ptr.as(BuildMessage);
if (!build_error.logged) {
build_error.msg.writeFormat(writer, allow_ansi_color) catch {};
writer.writeAll("\n") catch {};
@@ -1753,9 +1753,9 @@ pub const VirtualMachine = struct {
}
return true;
},
- .ResolveError => {
+ .ResolveMessage => {
defer Output.flush();
- var resolve_error = private_data_ptr.as(ResolveError);
+ var resolve_error = private_data_ptr.as(ResolveMessage);
if (!resolve_error.logged) {
resolve_error.msg.writeFormat(writer, allow_ansi_color) catch {};
resolve_error.logged = true;
@@ -2350,7 +2350,7 @@ pub const EventListenerMixin = struct {
}
};
-pub const ResolveError = struct {
+pub const ResolveMessage = struct {
msg: logger.Msg,
allocator: std.mem.Allocator,
referrer: ?Fs.Path = null,
@@ -2375,8 +2375,8 @@ pub const ResolveError = struct {
}
}
- pub fn toStringFn(this: *ResolveError, ctx: js.JSContextRef) js.JSValueRef {
- var text = std.fmt.allocPrint(default_allocator, "ResolveError: {s}", .{this.msg.data.text}) catch return null;
+ pub fn toStringFn(this: *ResolveMessage, ctx: js.JSContextRef) js.JSValueRef {
+ var text = std.fmt.allocPrint(default_allocator, "ResolveMessage: {s}", .{this.msg.data.text}) catch return null;
var str = ZigString.init(text);
str.setOutputEncoding();
if (str.isUTF8()) {
@@ -2390,7 +2390,7 @@ pub const ResolveError = struct {
pub fn toString(
// this
- this: *ResolveError,
+ this: *ResolveMessage,
ctx: js.JSContextRef,
// function
_: js.JSObjectRef,
@@ -2406,8 +2406,8 @@ pub const ResolveError = struct {
switch (kind) {
js.JSType.kJSTypeString => {
if (js.JSObjectGetPrivate(obj)) |priv| {
- if (JSPrivateDataPtr.from(priv).is(ResolveError)) {
- var this = JSPrivateDataPtr.from(priv).as(ResolveError);
+ if (JSPrivateDataPtr.from(priv).is(ResolveMessage)) {
+ var this = JSPrivateDataPtr.from(priv).as(ResolveMessage);
return this.toStringFn(ctx);
}
}
@@ -2419,9 +2419,9 @@ pub const ResolveError = struct {
}
pub const Class = NewClass(
- ResolveError,
+ ResolveMessage,
.{
- .name = "ResolveError",
+ .name = "ResolveMessage",
.read_only = true,
},
.{
@@ -2457,6 +2457,10 @@ pub const ResolveError = struct {
.get = getPosition,
.ro = true,
},
+ .level = .{
+ .get = getLevel,
+ .ro = true,
+ },
},
);
@@ -2466,8 +2470,8 @@ pub const ResolveError = struct {
msg: logger.Msg,
referrer: string,
) js.JSObjectRef {
- var resolve_error = allocator.create(ResolveError) catch unreachable;
- resolve_error.* = ResolveError{
+ var resolve_error = allocator.create(ResolveMessage) catch unreachable;
+ resolve_error.* = ResolveMessage{
.msg = msg.clone(allocator) catch unreachable,
.allocator = allocator,
.referrer = Fs.Path.init(referrer),
@@ -2478,27 +2482,27 @@ pub const ResolveError = struct {
}
pub fn getCode(
- _: *ResolveError,
+ _: *ResolveMessage,
ctx: js.JSContextRef,
_: js.JSObjectRef,
_: js.JSStringRef,
_: js.ExceptionRef,
) js.JSValueRef {
- return ZigString.static(comptime @as(string, @tagName(JSC.Node.ErrorCode.ERR_MODULE_NOT_FOUND))).toValue(ctx).asObjectRef();
+ return ZigString.static(comptime @as(string, @tagName(JSC.Node.ErrorCode.ERR_MODULE_NOT_FOUND))).toValueGC(ctx).asObjectRef();
}
pub fn getPosition(
- this: *ResolveError,
+ this: *ResolveMessage,
ctx: js.JSContextRef,
_: js.JSObjectRef,
_: js.JSStringRef,
_: js.ExceptionRef,
) js.JSValueRef {
- return BuildError.generatePositionObject(this.msg, ctx);
+ return BuildMessage.generatePositionObject(this.msg, ctx);
}
pub fn getMessage(
- this: *ResolveError,
+ this: *ResolveMessage,
ctx: js.JSContextRef,
_: js.JSObjectRef,
_: js.JSStringRef,
@@ -2508,7 +2512,7 @@ pub const ResolveError = struct {
}
pub fn getSpecifier(
- this: *ResolveError,
+ this: *ResolveMessage,
ctx: js.JSContextRef,
_: js.JSObjectRef,
_: js.JSStringRef,
@@ -2518,17 +2522,17 @@ pub const ResolveError = struct {
}
pub fn getImportKind(
- this: *ResolveError,
+ this: *ResolveMessage,
ctx: js.JSContextRef,
_: js.JSObjectRef,
_: js.JSStringRef,
_: js.ExceptionRef,
) js.JSValueRef {
- return ZigString.init(@tagName(this.msg.metadata.resolve.import_kind)).toValue(ctx.ptr()).asRef();
+ return ZigString.init(this.msg.metadata.resolve.import_kind.label()).toValueGC(ctx.ptr()).asRef();
}
pub fn getReferrer(
- this: *ResolveError,
+ this: *ResolveMessage,
ctx: js.JSContextRef,
_: js.JSObjectRef,
_: js.JSStringRef,
@@ -2542,31 +2546,41 @@ pub const ResolveError = struct {
}
pub fn getName(
- _: *ResolveError,
+ _: *ResolveMessage,
+ ctx: js.JSContextRef,
+ _: js.JSObjectRef,
+ _: js.JSStringRef,
+ _: js.ExceptionRef,
+ ) js.JSValueRef {
+ return ZigString.static("ResolveMessage").toValueGC(ctx.ptr()).asRef();
+ }
+
+ pub fn getLevel(
+ this: *ResolveMessage,
ctx: js.JSContextRef,
_: js.JSObjectRef,
_: js.JSStringRef,
_: js.ExceptionRef,
) js.JSValueRef {
- return ZigString.static("ResolveError").toValue(ctx.ptr()).asRef();
+ return ZigString.init(this.msg.kind.string()).toValueGC(ctx.ptr()).asRef();
}
- pub fn finalize(this: *ResolveError) void {
+ pub fn finalize(this: *ResolveMessage) void {
this.msg.deinit(bun.default_allocator);
}
};
-pub const BuildError = struct {
+pub const BuildMessage = struct {
msg: logger.Msg,
// resolve_result: Resolver.Result,
allocator: std.mem.Allocator,
logged: bool = false,
pub const Class = NewClass(
- BuildError,
- .{ .name = "BuildError", .read_only = true, .ts = .{
+ BuildMessage,
+ .{ .name = "BuildMessage", .read_only = true, .ts = .{
.class = .{
- .name = "BuildError",
+ .name = "BuildMessage",
},
} },
.{
@@ -2587,11 +2601,15 @@ pub const BuildError = struct {
.get = getPosition,
.ro = true,
},
+ .level = .{
+ .get = getLevel,
+ .ro = true,
+ },
},
);
- pub fn toStringFn(this: *BuildError, ctx: js.JSContextRef) js.JSValueRef {
- var text = std.fmt.allocPrint(default_allocator, "BuildError: {s}", .{this.msg.data.text}) catch return null;
+ pub fn toStringFn(this: *BuildMessage, ctx: js.JSContextRef) js.JSValueRef {
+ var text = std.fmt.allocPrint(default_allocator, "BuildMessage: {s}", .{this.msg.data.text}) catch return null;
var str = ZigString.init(text);
str.setOutputEncoding();
if (str.isUTF8()) {
@@ -2605,7 +2623,7 @@ pub const BuildError = struct {
pub fn toString(
// this
- this: *BuildError,
+ this: *BuildMessage,
ctx: js.JSContextRef,
// function
_: js.JSObjectRef,
@@ -2621,8 +2639,8 @@ pub const BuildError = struct {
switch (kind) {
js.JSType.kJSTypeString => {
if (js.JSObjectGetPrivate(obj)) |priv| {
- if (JSPrivateDataPtr.from(priv).is(BuildError)) {
- var this = JSPrivateDataPtr.from(priv).as(BuildError);
+ if (JSPrivateDataPtr.from(priv).is(BuildMessage)) {
+ var this = JSPrivateDataPtr.from(priv).as(BuildMessage);
return this.toStringFn(ctx);
}
}
@@ -2639,8 +2657,8 @@ pub const BuildError = struct {
msg: logger.Msg,
// resolve_result: *const Resolver.Result,
) js.JSObjectRef {
- var build_error = allocator.create(BuildError) catch unreachable;
- build_error.* = BuildError{
+ var build_error = allocator.create(BuildMessage) catch unreachable;
+ build_error.* = BuildMessage{
.msg = msg.clone(allocator) catch unreachable,
// .resolve_result = resolve_result.*,
.allocator = allocator,
@@ -2652,7 +2670,7 @@ pub const BuildError = struct {
}
pub fn getPosition(
- this: *BuildError,
+ this: *BuildMessage,
ctx: js.JSContextRef,
_: js.JSObjectRef,
_: js.JSStringRef,
@@ -2707,24 +2725,33 @@ pub const BuildError = struct {
}
pub fn getMessage(
- this: *BuildError,
+ this: *BuildMessage,
ctx: js.JSContextRef,
_: js.JSObjectRef,
_: js.JSStringRef,
_: js.ExceptionRef,
) js.JSValueRef {
- return ZigString.init(this.msg.data.text).toValue(ctx.ptr()).asRef();
+ return ZigString.init(this.msg.data.text).toValueGC(ctx.ptr()).asRef();
}
- const BuildErrorName = "BuildError";
pub fn getName(
- _: *BuildError,
+ _: *BuildMessage,
+ ctx: js.JSContextRef,
+ _: js.JSObjectRef,
+ _: js.JSStringRef,
+ _: js.ExceptionRef,
+ ) js.JSValueRef {
+ return ZigString.static("BuildMessage").toValueGC(ctx.ptr()).asRef();
+ }
+
+ pub fn getLevel(
+ this: *BuildMessage,
ctx: js.JSContextRef,
_: js.JSObjectRef,
_: js.JSStringRef,
_: js.ExceptionRef,
) js.JSValueRef {
- return ZigString.init(BuildErrorName).toValue(ctx.ptr()).asRef();
+ return ZigString.init(this.msg.kind.string()).toValueGC(ctx.ptr()).asRef();
}
};
diff --git a/src/bun.js/test/pretty_format.zig b/src/bun.js/test/pretty_format.zig
index acd591089..2f48570c4 100644
--- a/src/bun.js/test/pretty_format.zig
+++ b/src/bun.js/test/pretty_format.zig
@@ -1265,14 +1265,14 @@ pub const JestPrettyFormat = struct {
if (CAPI.JSObjectGetPrivate(value.asRef())) |private_data_ptr| {
const priv_data = JSPrivateDataPtr.from(private_data_ptr);
switch (priv_data.tag()) {
- .BuildError => {
- const build_error = priv_data.as(JS.BuildError);
- build_error.msg.writeFormat(writer_, enable_ansi_colors) catch {};
+ .BuildMessage => {
+ const build_log = priv_data.as(JS.BuildMessage);
+ build_log.msg.writeFormat(writer_, enable_ansi_colors) catch {};
return;
},
- .ResolveError => {
- const resolve_error = priv_data.as(JS.ResolveError);
- resolve_error.msg.writeFormat(writer_, enable_ansi_colors) catch {};
+ .ResolveMessage => {
+ const resolve_log = priv_data.as(JS.ResolveMessage);
+ resolve_log.msg.writeFormat(writer_, enable_ansi_colors) catch {};
return;
},
else => {},
diff --git a/src/bundler/bundle_v2.zig b/src/bundler/bundle_v2.zig
index 883152c71..3a61408e0 100644
--- a/src/bundler/bundle_v2.zig
+++ b/src/bundler/bundle_v2.zig
@@ -1201,32 +1201,28 @@ pub const BundleV2 = struct {
switch (this.result) {
.pending => unreachable,
.err => {
+ root_obj.put(globalThis, JSC.ZigString.static("outputs"), JSC.JSValue.createEmptyArray(globalThis, 0));
root_obj.put(
globalThis,
- JSC.ZigString.static("outputs"),
- JSC.JSMap.create(
- globalThis,
- ),
+ JSC.ZigString.static("success"),
+ JSC.JSValue.jsBoolean(false),
);
-
root_obj.put(
globalThis,
JSC.ZigString.static("logs"),
- this.log.toJS(globalThis, bun.default_allocator, "Errors while building"),
+ this.log.toJSArray(globalThis, bun.default_allocator),
);
},
.value => |*build| {
var output_files: []options.OutputFile = build.output_files.items;
- const output_files_js = JSC.JSMap.create(globalThis);
+ const output_files_js = JSC.JSValue.createEmptyArray(globalThis, output_files.len);
if (output_files_js == .zero) {
@panic("Unexpected pending JavaScript exception in JSBundleCompletionTask.onComplete. This is a bug in Bun.");
}
- var outputs = JSC.JSMap.fromJS(output_files_js) orelse @panic("Unexpected pending JavaScript exception in JSBundleCompletionTask.onComplete. This is a bug in Bun.");
-
defer build.output_files.deinit();
var to_assign_on_sourcemap: JSC.JSValue = .zero;
- for (output_files) |*output_file| {
+ for (output_files, 0..) |*output_file, i| {
defer bun.default_allocator.free(output_file.input.text);
defer bun.default_allocator.free(output_file.path);
const result = output_file.toJS(
@@ -1268,23 +1264,19 @@ pub const BundleV2 = struct {
to_assign_on_sourcemap = result;
}
- outputs.set(
- globalThis,
- JSC.ZigString.fromUTF8(output_file.input.text).toValueGC(globalThis),
- result,
- );
+ output_files_js.putIndex(globalThis, @intCast(u32, i), result);
}
+ root_obj.put(globalThis, JSC.ZigString.static("outputs"), output_files_js);
root_obj.put(
globalThis,
- JSC.ZigString.static("outputs"),
- output_files_js,
+ JSC.ZigString.static("success"),
+ JSC.JSValue.jsBoolean(true),
);
-
root_obj.put(
globalThis,
JSC.ZigString.static("logs"),
- this.log.toJS(globalThis, bun.default_allocator, "Errors while building"),
+ this.log.toJSArray(globalThis, bun.default_allocator),
);
},
}
diff --git a/src/cli.zig b/src/cli.zig
index 171593246..ff4c847c6 100644
--- a/src/cli.zig
+++ b/src/cli.zig
@@ -204,7 +204,7 @@ pub const Arguments = struct {
clap.parseParam("--chunk-naming <STR> Customize chunk filenames. Defaults to \"[name]-[hash].[ext]\"") catch unreachable,
clap.parseParam("--asset-naming <STR> Customize asset filenames. Defaults to \"[name]-[hash].[ext]\"") catch unreachable,
clap.parseParam("--server-components Enable React Server Components (experimental)") catch unreachable,
- clap.parseParam("--transform Single file transform, do not bundle") catch unreachable,
+ clap.parseParam("--transpile Transpile file only, do not bundle") catch unreachable,
};
// TODO: update test completions
@@ -477,7 +477,7 @@ pub const Arguments = struct {
ctx.bundler_options.minify_identifiers = minify_flag or args.flag("--minify-identifiers");
if (cmd == .BuildCommand) {
- ctx.bundler_options.transform_only = args.flag("--transform");
+ ctx.bundler_options.transform_only = args.flag("--transpile");
if (args.option("--outdir")) |outdir| {
if (outdir.len > 0) {
diff --git a/src/cli/build_command.zig b/src/cli/build_command.zig
index f0cf14475..e6c9b6d55 100644
--- a/src/cli/build_command.zig
+++ b/src/cli/build_command.zig
@@ -180,7 +180,7 @@ pub const BuildCommand = struct {
}
if (ctx.bundler_options.outfile.len == 0 and output_files.len == 1 and ctx.bundler_options.outdir.len == 0) {
- // if --transform is passed, it won't have an output dir
+ // if --transpile is passed, it won't have an output dir
if (output_files[0].value == .buffer)
try writer.writeAll(output_files[0].value.buffer.bytes);
break :dump;
diff --git a/src/js_ast.zig b/src/js_ast.zig
index 275d1509c..1f5d771a6 100644
--- a/src/js_ast.zig
+++ b/src/js_ast.zig
@@ -9699,7 +9699,7 @@ pub const Macro = struct {
node.updateSymbolsMap(Visitor, this.visitor);
return _entry.value_ptr.*;
},
- .ResolveError, .BuildError => {
+ .ResolveMessage, .BuildMessage => {
this.macro.vm.runErrorHandler(value, null);
return error.MacroFailed;
},
diff --git a/src/linker.zig b/src/linker.zig
index 8ca36dada..6e99dbb5b 100644
--- a/src/linker.zig
+++ b/src/linker.zig
@@ -41,7 +41,7 @@ const Runtime = @import("./runtime.zig").Runtime;
const URL = @import("url.zig").URL;
const JSC = @import("root").bun.JSC;
const PluginRunner = bun.bundler.PluginRunner;
-pub const CSSResolveError = error{ResolveError};
+pub const CSSResolveError = error{ResolveMessage};
pub const OnImportCallback = *const fn (resolve_result: *const Resolver.Result, import_record: *ImportRecord, origin: URL) void;
@@ -795,7 +795,7 @@ pub const Linker = struct {
else => {},
}
- if (had_resolve_errors) return error.ResolveError;
+ if (had_resolve_errors) return error.ResolveMessage;
result.ast.externals = try externals.toOwnedSlice();
// if (result.ast.needs_runtime and (result.ast.runtime_import_record_id == null or import_records.items.len == 0)) {
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;
diff --git a/src/runtime/errors.ts b/src/runtime/errors.ts
index e2973db91..c5968e422 100644
--- a/src/runtime/errors.ts
+++ b/src/runtime/errors.ts
@@ -1,6 +1,6 @@
// @ts-nocheck
-var __BuildError;
-var __ResolveError;
+var __BuildLog;
+var __ResolveLog;
var __ImportKind;
{
enum ImportKind {
@@ -37,13 +37,13 @@ var __ImportKind;
importKind: ImportKind;
}
- class BuildError extends Error {
+ class BuildMessage extends Error {
constructor(data: BuildErrorImplementation) {
super(data.message);
this.name = data.name;
this.data = data;
}
- data: BuildErrorImplementation;
+ data: BuildLogImplementation;
get position() {
return this.data.position;
@@ -54,7 +54,7 @@ var __ImportKind;
}
}
- class ResolveError extends BuildError {
+ class ResolveMessage extends BuildMessage {
constructor(data: ResolveErrorImplementation) {
super(data);
this.name = data.name;
@@ -71,9 +71,9 @@ var __ImportKind;
}
}
- __ResolveError = ResolveError;
- __BuildError = BuildError;
+ __ResolveLog = ResolveMessage;
+ __BuildLog = BuildMessage;
__ImportKind = ImportKind;
}
-export { __ResolveError as ResolveError, __BuildError as BuildError, __ImportKind as ImportKind };
+export { __ResolveLog as ResolveMessage, __BuildLog as BuildMessage, __ImportKind as ImportKind };