aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/bindings.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/bindings.zig')
-rw-r--r--src/bun.js/bindings/bindings.zig83
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 {