summaryrefslogtreecommitdiff
path: root/ext/url
diff options
context:
space:
mode:
authorLeo Kettmeir <crowlkats@toaxl.com>2024-10-14 14:15:31 -0700
committerGitHub <noreply@github.com>2024-10-14 14:15:31 -0700
commit48cbf85add1a9a5c3e583c68c80d16420e606502 (patch)
tree4bc58cfa365dd100af46b5c60b356a5a3bbcac27 /ext/url
parentcb385d9e4acbd81235c3784d7e56b49c3fa41dd3 (diff)
refactor(ext/url): use concrete error types (#26172)
Diffstat (limited to 'ext/url')
-rw-r--r--ext/url/Cargo.toml1
-rw-r--r--ext/url/lib.rs2
-rw-r--r--ext/url/urlpattern.rs28
3 files changed, 17 insertions, 14 deletions
diff --git a/ext/url/Cargo.toml b/ext/url/Cargo.toml
index 13aca9953..ca4fa444d 100644
--- a/ext/url/Cargo.toml
+++ b/ext/url/Cargo.toml
@@ -15,6 +15,7 @@ path = "lib.rs"
[dependencies]
deno_core.workspace = true
+thiserror.workspace = true
urlpattern = "0.3.0"
[dev-dependencies]
diff --git a/ext/url/lib.rs b/ext/url/lib.rs
index 6869d656b..f8946532a 100644
--- a/ext/url/lib.rs
+++ b/ext/url/lib.rs
@@ -15,6 +15,8 @@ use std::path::PathBuf;
use crate::urlpattern::op_urlpattern_parse;
use crate::urlpattern::op_urlpattern_process_match_input;
+pub use urlpattern::UrlPatternError;
+
deno_core::extension!(
deno_url,
deps = [deno_webidl],
diff --git a/ext/url/urlpattern.rs b/ext/url/urlpattern.rs
index b6d9a1382..7d4e8ee71 100644
--- a/ext/url/urlpattern.rs
+++ b/ext/url/urlpattern.rs
@@ -1,7 +1,5 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-use deno_core::error::type_error;
-use deno_core::error::AnyError;
use deno_core::op2;
use urlpattern::quirks;
@@ -9,21 +7,23 @@ use urlpattern::quirks::MatchInput;
use urlpattern::quirks::StringOrInit;
use urlpattern::quirks::UrlPattern;
+#[derive(Debug, thiserror::Error)]
+#[error(transparent)]
+pub struct UrlPatternError(urlpattern::Error);
+
#[op2]
#[serde]
pub fn op_urlpattern_parse(
#[serde] input: StringOrInit,
#[string] base_url: Option<String>,
#[serde] options: urlpattern::UrlPatternOptions,
-) -> Result<UrlPattern, AnyError> {
- let init = urlpattern::quirks::process_construct_pattern_input(
- input,
- base_url.as_deref(),
- )
- .map_err(|e| type_error(e.to_string()))?;
+) -> Result<UrlPattern, UrlPatternError> {
+ let init =
+ quirks::process_construct_pattern_input(input, base_url.as_deref())
+ .map_err(UrlPatternError)?;
- let pattern = urlpattern::quirks::parse_pattern(init, options)
- .map_err(|e| type_error(e.to_string()))?;
+ let pattern =
+ quirks::parse_pattern(init, options).map_err(UrlPatternError)?;
Ok(pattern)
}
@@ -33,14 +33,14 @@ pub fn op_urlpattern_parse(
pub fn op_urlpattern_process_match_input(
#[serde] input: StringOrInit,
#[string] base_url: Option<String>,
-) -> Result<Option<(MatchInput, quirks::Inputs)>, AnyError> {
- let res = urlpattern::quirks::process_match_input(input, base_url.as_deref())
- .map_err(|e| type_error(e.to_string()))?;
+) -> Result<Option<(MatchInput, quirks::Inputs)>, UrlPatternError> {
+ let res = quirks::process_match_input(input, base_url.as_deref())
+ .map_err(UrlPatternError)?;
let (input, inputs) = match res {
Some((input, inputs)) => (input, inputs),
None => return Ok(None),
};
- Ok(urlpattern::quirks::parse_match_input(input).map(|input| (input, inputs)))
+ Ok(quirks::parse_match_input(input).map(|input| (input, inputs)))
}