mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-14 06:50:01 -04:00
tryCanParseURL
This commit is contained in:
parent
77d492fffb
commit
1999996b2a
1 changed files with 8 additions and 9 deletions
|
@ -1,12 +1,10 @@
|
||||||
import { rewriteJs } from "./js";
|
import { rewriteJs } from "./js";
|
||||||
|
|
||||||
function canParseUrl(url: string, origin?: URL) {
|
function tryCanParseURL(url: string, origin?: string | URL): URL | null {
|
||||||
try {
|
try {
|
||||||
new URL(url, origin);
|
return new URL(url, origin);
|
||||||
|
|
||||||
return true;
|
|
||||||
} catch {
|
} catch {
|
||||||
return false;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +34,7 @@ export function encodeUrl(url: string | URL, origin?: URL) {
|
||||||
return "javascript:" + rewriteJs(url.slice("javascript:".length), origin);
|
return "javascript:" + rewriteJs(url.slice("javascript:".length), origin);
|
||||||
} else if (/^(#|mailto|about|data|blob)/.test(url)) {
|
} else if (/^(#|mailto|about|data|blob)/.test(url)) {
|
||||||
return url;
|
return url;
|
||||||
} else if (canParseUrl(url, origin)) {
|
} else if (tryCanParseURL(url, origin)) {
|
||||||
return (
|
return (
|
||||||
location.origin +
|
location.origin +
|
||||||
self.$scramjet.config.prefix +
|
self.$scramjet.config.prefix +
|
||||||
|
@ -52,15 +50,16 @@ export function decodeUrl(url: string | URL) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
canParseUrl(url) &&
|
tryCanParseURL(url)?.pathname.startsWith(
|
||||||
new URL(url).pathname.startsWith(self.$scramjet.config.prefix + "worker")
|
self.$scramjet.config.prefix + "worker"
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
return new URL(new URL(url).searchParams.get("origin")).href;
|
return new URL(new URL(url).searchParams.get("origin")).href;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (/^(#|about|data|mailto|javascript)/.test(url)) {
|
if (/^(#|about|data|mailto|javascript)/.test(url)) {
|
||||||
return url;
|
return url;
|
||||||
} else if (canParseUrl(url)) {
|
} else if (tryCanParseURL(url)) {
|
||||||
return self.$scramjet.codec.decode(
|
return self.$scramjet.codec.decode(
|
||||||
url.slice((location.origin + self.$scramjet.config.prefix).length)
|
url.slice((location.origin + self.$scramjet.config.prefix).length)
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue