mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-12-16 16:28:58 +00:00
Implement ImportMeta callback
The first time `import.meta` is called within a module, this callback is called and we can populate it with whatever fields we want. For WebAPI, the important field is `url`: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta Depends on: https://github.com/lightpanda-io/zig-v8-fork/pull/80
This commit is contained in:
19
src/url.zig
19
src/url.zig
@@ -111,7 +111,7 @@ pub const URL = struct {
|
||||
return src;
|
||||
}
|
||||
|
||||
var normalized_src = if (std.mem.startsWith(u8, src, "/")) src[1..] else src;
|
||||
var normalized_src = src;
|
||||
while (std.mem.startsWith(u8, normalized_src, "./")) {
|
||||
normalized_src = normalized_src[2..];
|
||||
}
|
||||
@@ -131,6 +131,13 @@ pub const URL = struct {
|
||||
}
|
||||
};
|
||||
|
||||
if (normalized_src[0] == '/') {
|
||||
if (std.mem.indexOfScalarPos(u8, base, protocol_end, '/')) |pos| {
|
||||
return std.fmt.allocPrint(allocator, "{s}{s}", .{ base[0..pos], normalized_src });
|
||||
}
|
||||
// not sure what to do here...error? Just let it fallthrough for now.
|
||||
}
|
||||
|
||||
if (std.mem.lastIndexOfScalar(u8, base[protocol_end..], '/')) |index| {
|
||||
const last_slash_pos = index + protocol_end;
|
||||
if (last_slash_pos == base.len - 1) {
|
||||
@@ -257,6 +264,16 @@ test "URL: Stitching Base & Src URLs (No Ending Slash)" {
|
||||
try testing.expectString("https://lightpanda.io/something.js", result);
|
||||
}
|
||||
|
||||
test "URL: Stitching Base with absolute src" {
|
||||
const allocator = testing.allocator;
|
||||
|
||||
const base = "https://lightpanda.io/hello";
|
||||
const src = "/abc/something.js";
|
||||
const result = try URL.stitch(allocator, src, base, .{});
|
||||
defer allocator.free(result);
|
||||
try testing.expectString("https://lightpanda.io/abc/something.js", result);
|
||||
}
|
||||
|
||||
test "URL: Stiching Base & Src URLs (Both Local)" {
|
||||
const allocator = testing.allocator;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user