Skip to content

Commit 86e4c1a

Browse files
committedNov 24, 2023
Api: Implement URLPattern
1 parent 8f07340 commit 86e4c1a

File tree

8 files changed

+731
-3
lines changed

8 files changed

+731
-3
lines changed
 

‎Cargo.lock

+55
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎jstz_api/Cargo.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ serde = "1.0.188"
1919
serde_json = "1.0.107"
2020
tezos-smart-rollup = "0.2.1"
2121
url = "2.4.1"
22+
urlpattern = "0.2.0"
2223

2324
[dev-dependencies]
2425
anyhow = "1.0.75"
2526
expect-test = "1.4.1"
2627
jstz_wpt = { version = "0.1.0", path = "../jstz_wpt" }
27-
tokio = { version = "1.34.0", features = ["full"] }
28+
tokio = { version = "1.34.0", features = ["full"] }

‎jstz_api/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ mod kv;
44
pub mod http;
55
mod text_encoder;
66
pub mod url;
7+
pub mod urlpattern;
78
pub use console::ConsoleApi;
89
pub use kv::Kv;
910
pub use kv::KvApi;

‎jstz_api/src/urlpattern.rs

+616
Large diffs are not rendered by default.

‎jstz_cli/src/repl.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
use anyhow::Result;
22
use boa_engine::{js_string, JsResult, JsValue, Source};
3-
use jstz_api::{http::HttpApi, url::UrlApi, ConsoleApi, KvApi, TextEncoderApi};
3+
use jstz_api::{
4+
http::HttpApi, url::UrlApi, urlpattern::UrlPatternApi, ConsoleApi, KvApi,
5+
TextEncoderApi,
6+
};
47
use jstz_core::host::HostRuntime;
58
use jstz_core::{
69
host_defined,
@@ -46,6 +49,7 @@ pub fn exec(self_address: Option<String>, cfg: &Config) -> Result<()> {
4649
);
4750
realm_clone.register_api(TextEncoderApi, rt.context());
4851
realm_clone.register_api(UrlApi, rt.context());
52+
realm_clone.register_api(UrlPatternApi, rt.context());
4953
realm_clone.register_api(HttpApi, rt.context());
5054
realm_clone.register_api(
5155
LedgerApi {

‎jstz_core/src/value.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ impl_into_js_from_into!(
6868
u32,
6969
u64,
7070
u8,
71-
usize
71+
usize,
72+
bool
7273
);
7374

7475
impl IntoJs for String {

‎jstz_proto/src/executor/contract.rs

+1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ fn on_success(
7979
fn register_web_apis(realm: &Realm, context: &mut Context<'_>) {
8080
realm.register_api(jstz_api::ConsoleApi, context);
8181
realm.register_api(jstz_api::url::UrlApi, context);
82+
realm.register_api(jstz_api::urlpattern::UrlPatternApi, context);
8283
realm.register_api(jstz_api::http::HttpApi, context);
8384
realm.register_api(jstz_api::TextEncoderApi, context);
8485
}

‎packages/jstz-types/index.d.ts

+49
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,55 @@ declare var URL: {
4040
canParse(url: string, base?: string): boolean;
4141
};
4242

43+
declare interface URLPatternInit {
44+
protocol?: string;
45+
username?: string;
46+
password?: string;
47+
hostname?: string;
48+
port?: string;
49+
pathname?: string;
50+
search?: string;
51+
hash?: string;
52+
baseURL?: string;
53+
}
54+
55+
declare type URLPatternInput = string | URLPatternInit;
56+
57+
declare interface URLPatternComponentResult {
58+
input: string;
59+
groups: Record<string, string | undefined>;
60+
}
61+
62+
declare interface URLPatternResult {
63+
inputs: URLPatternInit[];
64+
protocol: URLPatternComponentResult;
65+
username: URLPatternComponentResult;
66+
password: URLPatternComponentResult;
67+
hostname: URLPatternComponentResult;
68+
port: URLPatternComponentResult;
69+
pathname: URLPatternComponentResult;
70+
search: URLPatternComponentResult;
71+
hash: URLPatternComponentResult;
72+
}
73+
74+
declare interface URLPattern {
75+
test(input?: URLPatternInput, baseURL?: string): boolean;
76+
exec(input?: URLPatternInput, baseURL?: string): URLPatternResult | null;
77+
readonly hash: string;
78+
readonly hostname: string;
79+
readonly password: string;
80+
readonly pathname: string;
81+
readonly port: string;
82+
readonly protocol: string;
83+
readonly search: string;
84+
readonly username: string;
85+
}
86+
87+
declare var URLPattern: {
88+
readonly prototype: URLPattern;
89+
new (input?: URLPatternInput, baseURL?: string): URLPattern;
90+
};
91+
4392
declare type BufferSource = ArrayBufferView | ArrayBuffer;
4493

4594
declare type BodyInit = string | BufferSource;

0 commit comments

Comments
 (0)
Please sign in to comment.