mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
Single-file standalone Bun executables (#2879)
* Add LIEF * Compile LIEF * Implement support for embedding files on macOS * proof of concept * Add zstd * Implement runtime support * Move some code around * Update .gitmodules * Upgrade zig https://github.com/ziglang/zig/pull/15278 * leftover * leftover * delete dead code * Fix extname * Revert "Upgrade zig" This reverts commitdd968f30bf. * Revert "leftover" This reverts commit7664de7686. * Revert "leftover" This reverts commit498005be06. * various fixes * it works! * leftover * Make `zig build` a little faster * give up on code signing support * Support Linux & macOS * Finish removing LIEF * few more * Add zstd to list of deps * make it pretty --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
This commit is contained in:
@@ -35,10 +35,84 @@ pub const SourceMapState = struct {
|
||||
};
|
||||
|
||||
sources: [][]const u8 = &[_][]u8{},
|
||||
sources_content: [][]SourceContent,
|
||||
sources_content: []string,
|
||||
mapping: Mapping.List = .{},
|
||||
allocator: std.mem.Allocator,
|
||||
|
||||
pub fn parse(
|
||||
allocator: std.mem.Allocator,
|
||||
json_source: *const Logger.Source,
|
||||
log: *Logger.Log,
|
||||
) !SourceMap {
|
||||
var json = try bun.JSON.ParseJSONUTF8(json_source, log, allocator);
|
||||
var mappings = bun.sourcemap.Mapping.List{};
|
||||
|
||||
if (json.get("version")) |version| {
|
||||
if (version.data != .e_number or version.data.e_number.value != 3.0) {
|
||||
return error.@"Unsupported sourcemap version";
|
||||
}
|
||||
}
|
||||
|
||||
if (json.get("mappings")) |mappings_str| {
|
||||
if (mappings_str.data != .e_string) {
|
||||
return error.@"Invalid sourcemap mappings";
|
||||
}
|
||||
|
||||
var parsed = bun.sourcemap.Mapping.parse(allocator, try mappings_str.data.e_string.toUTF8(allocator), null, std.math.maxInt(i32));
|
||||
if (parsed == .fail) {
|
||||
try log.addMsg(bun.logger.Msg{
|
||||
.data = parsed.fail.toData("sourcemap.json"),
|
||||
.kind = .err,
|
||||
});
|
||||
return error.@"Failed to parse sourcemap mappings";
|
||||
}
|
||||
|
||||
mappings = parsed.success;
|
||||
}
|
||||
|
||||
var sources = std.ArrayList(bun.string).init(allocator);
|
||||
var sources_content = std.ArrayList(string).init(allocator);
|
||||
|
||||
if (json.get("sourcesContent")) |mappings_str| {
|
||||
if (mappings_str.data != .e_array) {
|
||||
return error.@"Invalid sourcemap sources";
|
||||
}
|
||||
|
||||
try sources_content.ensureTotalCapacityPrecise(mappings_str.data.e_array.items.len);
|
||||
for (mappings_str.data.e_array.items.slice()) |source| {
|
||||
if (source.data != .e_string) {
|
||||
return error.@"Invalid sourcemap source";
|
||||
}
|
||||
|
||||
try source.data.e_string.toUTF8(allocator);
|
||||
sources_content.appendAssumeCapacity(source.data.e_string.slice());
|
||||
}
|
||||
}
|
||||
|
||||
if (json.get("sources")) |mappings_str| {
|
||||
if (mappings_str.data != .e_array) {
|
||||
return error.@"Invalid sourcemap sources";
|
||||
}
|
||||
|
||||
try sources.ensureTotalCapacityPrecise(mappings_str.data.e_array.items.len);
|
||||
for (mappings_str.data.e_array.items.slice()) |source| {
|
||||
if (source.data != .e_string) {
|
||||
return error.@"Invalid sourcemap source";
|
||||
}
|
||||
|
||||
try source.data.e_string.toUTF8(allocator);
|
||||
sources.appendAssumeCapacity(source.data.e_string.slice());
|
||||
}
|
||||
}
|
||||
|
||||
return SourceMap{
|
||||
.mapping = mappings,
|
||||
.allocator = allocator,
|
||||
.sources_content = sources_content.items,
|
||||
.sources = sources.items,
|
||||
};
|
||||
}
|
||||
|
||||
pub const Mapping = struct {
|
||||
generated: LineColumnOffset,
|
||||
original: LineColumnOffset,
|
||||
|
||||
Reference in New Issue
Block a user