mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 07:14:47 -05:00
Revert "fix(urlpattern): fallback to empty string for undefined group values" (#25961)
This commit is contained in:
parent
18beb13f0e
commit
1837aed79b
3 changed files with 7 additions and 48 deletions
|
@ -31,6 +31,7 @@ import * as webidl from "ext:deno_webidl/00_webidl.js";
|
|||
import { createFilteredInspectProxy } from "ext:deno_console/01_console.js";
|
||||
|
||||
const _components = Symbol("components");
|
||||
const urlPatternSettings = { groupStringFallback: false };
|
||||
|
||||
/**
|
||||
* @typedef Components
|
||||
|
@ -349,7 +350,11 @@ class URLPattern {
|
|||
const groups = res.groups;
|
||||
for (let i = 0; i < groupList.length; ++i) {
|
||||
// TODO(lucacasonato): this is vulnerable to override mistake
|
||||
groups[groupList[i]] = match[i + 1] ?? ""; // TODO(@crowlKats): remove fallback for 2.0
|
||||
if (urlPatternSettings.groupStringFallback) {
|
||||
groups[groupList[i]] = match[i + 1] ?? "";
|
||||
} else {
|
||||
groups[groupList[i]] = match[i + 1];
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -422,4 +427,4 @@ webidl.converters.URLPatternOptions = webidl
|
|||
},
|
||||
]);
|
||||
|
||||
export { URLPattern };
|
||||
export { URLPattern, urlPatternSettings };
|
||||
|
|
|
@ -63,9 +63,3 @@ Deno.test(function urlPatternWithPrototypePollution() {
|
|||
RegExp.prototype.exec = originalExec;
|
||||
}
|
||||
});
|
||||
|
||||
Deno.test(function urlPatternEmptyFallback() {
|
||||
const p = new URLPattern({ pathname: "/foo/bar{/:qaz}?" });
|
||||
const match = p.exec("https://example.com/foo/bar");
|
||||
assertEquals(match!.pathname.groups.qaz, "");
|
||||
});
|
||||
|
|
|
@ -12297,18 +12297,8 @@
|
|||
"Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}"
|
||||
],
|
||||
"urlpattern.any.html": [
|
||||
"Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
|
||||
"Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
|
||||
"Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]",
|
||||
"Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined",
|
||||
"Pattern: [] Inputs: []",
|
||||
"Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]",
|
||||
"Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]",
|
||||
"Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]",
|
||||
|
@ -12317,18 +12307,8 @@
|
|||
"Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/3\"}]"
|
||||
],
|
||||
"urlpattern.any.worker.html": [
|
||||
"Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
|
||||
"Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
|
||||
"Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]",
|
||||
"Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined",
|
||||
"Pattern: [] Inputs: []",
|
||||
"Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]",
|
||||
"Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]",
|
||||
"Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]",
|
||||
|
@ -12337,18 +12317,8 @@
|
|||
"Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/3\"}]"
|
||||
],
|
||||
"urlpattern.https.any.html": [
|
||||
"Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
|
||||
"Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
|
||||
"Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]",
|
||||
"Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined",
|
||||
"Pattern: [] Inputs: []",
|
||||
"Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]",
|
||||
"Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]",
|
||||
"Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]",
|
||||
|
@ -12357,18 +12327,8 @@
|
|||
"Pattern: [{\"pathname\":\"/([\\\\d&&[0-1]])\"}] Inputs: [{\"pathname\":\"/3\"}]"
|
||||
],
|
||||
"urlpattern.https.any.worker.html": [
|
||||
"Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/:bar*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/(.*)?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/*?\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/(.*)*\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/**\"}] Inputs: [{\"pathname\":\"/foo\"}]",
|
||||
"Pattern: [\"https://(sub.)?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
|
||||
"Pattern: [\"https://(sub(?:.))?example.com/foo\"] Inputs: [\"https://example.com/foo\"]",
|
||||
"Pattern: [\"data\\\\:text/javascript,let x = 100/:tens?5;\"] Inputs: [\"data:text/javascript,let x = 100/5;\"]",
|
||||
"Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined",
|
||||
"Pattern: [] Inputs: []",
|
||||
"Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]",
|
||||
"Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]",
|
||||
"Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]",
|
||||
"Pattern: [{\"pathname\":\"/([[a-z]--a])\"}] Inputs: [{\"pathname\":\"/a\"}]",
|
||||
|
|
Loading…
Reference in a new issue