aboutsummaryrefslogtreecommitdiff
path: root/src/options.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-21 01:04:55 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-21 01:04:55 -0700
commitb98f90fc6ec3b4a68cd2135d631f74e50a79dceb (patch)
tree001a4940432f2ccf0bac8f8969b26786130b825f /src/options.zig
parent281b81066431824d6902a915a41721ae413bcfd7 (diff)
downloadbun-b98f90fc6ec3b4a68cd2135d631f74e50a79dceb.tar.gz
bun-b98f90fc6ec3b4a68cd2135d631f74e50a79dceb.tar.zst
bun-b98f90fc6ec3b4a68cd2135d631f74e50a79dceb.zip
`Bun.build()` partial implementation
Diffstat (limited to 'src/options.zig')
-rw-r--r--src/options.zig51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/options.zig b/src/options.zig
index 48b580746..59b814894 100644
--- a/src/options.zig
+++ b/src/options.zig
@@ -661,6 +661,16 @@ pub const Loader = enum {
dataurl,
text,
+ pub fn toMimeType(this: Loader) bun.HTTP.MimeType {
+ return switch (this) {
+ .jsx, .js, .ts, .tsx => bun.HTTP.MimeType.javascript,
+ .css => bun.HTTP.MimeType.css,
+ .toml, .json => bun.HTTP.MimeType.json,
+ .wasm => bun.HTTP.MimeType.wasm,
+ else => bun.HTTP.MimeType.other,
+ };
+ }
+
pub const HashTable = bun.StringArrayHashMap(Loader);
pub fn canHaveSourceMap(this: Loader) bool {
@@ -1948,6 +1958,27 @@ pub const OutputFile = struct {
close_handle_on_complete: bool = false,
autowatch: bool = true,
+ pub fn toJS(this: FileOperation, globalObject: *JSC.JSGlobalObject, loader: Loader) JSC.JSValue {
+ var file_blob = JSC.WebCore.Blob.Store.initFile(
+ if (this.fd != 0) JSC.Node.PathOrFileDescriptor{
+ .fd = this.fd,
+ } else JSC.Node.PathOrFileDescriptor{
+ .path = JSC.Node.PathLike{ .string = bun.PathString.init(globalObject.allocator().dupe(u8, this.pathname) catch unreachable) },
+ },
+ loader.toMimeType(),
+ globalObject.allocator(),
+ ) catch |err| {
+ Output.panic("error: Unable to create file blob: \"{s}\"", .{@errorName(err)});
+ };
+
+ var blob = globalObject.allocator().create(JSC.WebCore.Blob) catch unreachable;
+ blob.* = JSC.WebCore.Blob.initWithStore(file_blob, globalObject);
+ blob.allocator = globalObject.allocator();
+ blob.content_type = loader.toMimeType().value;
+
+ return blob.toJS(globalObject);
+ }
+
pub fn fromFile(fd: FileDescriptorType, pathname: string) FileOperation {
return .{
.pathname = pathname,
@@ -2035,6 +2066,26 @@ pub const OutputFile = struct {
try bun.copyFile(fd_in, fd_out);
}
+
+ pub fn toJS(
+ this: *OutputFile,
+ globalObject: *JSC.JSGlobalObject,
+ ) bun.JSC.JSValue {
+ return switch (this.value) {
+ .pending => @panic("Unexpected pending output file"),
+ .noop => JSC.JSValue.undefined,
+ .move => this.value.move.toJS(globalObject, this.loader),
+ .copy => this.value.copy.toJS(globalObject, this.loader),
+ .buffer => |buffer| brk: {
+ var blob = globalObject.allocator().create(JSC.WebCore.Blob) catch unreachable;
+ blob.* = JSC.WebCore.Blob.init(@constCast(buffer), bun.default_allocator, globalObject);
+ blob.store.?.mime_type = this.loader.toMimeType();
+ blob.content_type = blob.store.?.mime_type.value;
+ blob.allocator = globalObject.allocator();
+ break :brk blob.toJS(globalObject);
+ },
+ };
+ }
};
pub const TransformResult = struct {