diff options
Diffstat (limited to 'src/bun.js/bindings/bindings.zig')
-rw-r--r-- | src/bun.js/bindings/bindings.zig | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/bun.js/bindings/bindings.zig b/src/bun.js/bindings/bindings.zig index 1d5517dac..edd1be1a9 100644 --- a/src/bun.js/bindings/bindings.zig +++ b/src/bun.js/bindings/bindings.zig @@ -5384,6 +5384,89 @@ pub fn untrackFunction( return private.Bun__untrackFFIFunction(globalObject, value); } +pub const URL = opaque { + extern fn URL__fromJS(JSValue, *JSC.JSGlobalObject) ?*URL; + extern fn URL__fromString(*bun.String) ?*URL; + extern fn URL__protocol(*URL) String; + extern fn URL__href(*URL) String; + extern fn URL__username(*URL) String; + extern fn URL__password(*URL) String; + extern fn URL__search(*URL) String; + extern fn URL__host(*URL) String; + extern fn URL__hostname(*URL) String; + extern fn URL__port(*URL) String; + extern fn URL__deinit(*URL) void; + extern fn URL__pathname(*URL) String; + extern fn URL__getHrefFromJS(JSValue, *JSC.JSGlobalObject) String; + extern fn URL__getHref(*String) String; + pub fn hrefFromString(str: bun.String) String { + JSC.markBinding(@src()); + var input = str; + return URL__getHref(&input); + } + + /// This percent-encodes the URL, punycode-encodes the hostname, and returns the result + /// If it fails, the tag is marked Dead + pub fn hrefFromJS(value: JSValue, globalObject: *JSC.JSGlobalObject) String { + JSC.markBinding(@src()); + return URL__getHrefFromJS(value, globalObject); + } + + pub fn fromJS(value: JSValue, globalObject: *JSC.JSGlobalObject) ?*URL { + JSC.markBinding(@src()); + return URL__fromJS(value, globalObject); + } + + pub fn fromUTF8(input: []const u8) ?*URL { + return fromString(String.fromUTF8(input)); + } + pub fn fromString(str: bun.String) ?*URL { + JSC.markBinding(@src()); + var input = str; + return URL__fromString(&input); + } + pub fn protocol(url: *URL) String { + JSC.markBinding(@src()); + return URL__protocol(url); + } + pub fn href(url: *URL) String { + JSC.markBinding(@src()); + return URL__href(url); + } + pub fn username(url: *URL) String { + JSC.markBinding(@src()); + return URL__username(url); + } + pub fn password(url: *URL) String { + JSC.markBinding(@src()); + return URL__password(url); + } + pub fn search(url: *URL) String { + JSC.markBinding(@src()); + return URL__search(url); + } + pub fn host(url: *URL) String { + JSC.markBinding(@src()); + return URL__host(url); + } + pub fn hostname(url: *URL) String { + JSC.markBinding(@src()); + return URL__hostname(url); + } + pub fn port(url: *URL) String { + JSC.markBinding(@src()); + return URL__port(url); + } + pub fn deinit(url: *URL) void { + JSC.markBinding(@src()); + return URL__deinit(url); + } + pub fn pathname(url: *URL) String { + JSC.markBinding(@src()); + return URL__pathname(url); + } +}; + pub const URLSearchParams = opaque { extern fn URLSearchParams__create(globalObject: *JSGlobalObject, *const ZigString) JSValue; pub fn create(globalObject: *JSGlobalObject, init: ZigString) JSValue { |