2023-06-22 12:28:56 +00:00
|
|
|
// This must be in global scope because `document.currentScript`
|
|
|
|
// works only while the script is initially being processed.
|
2023-06-24 11:59:42 +00:00
|
|
|
export let currentScriptURL: URL | null = null;
|
|
|
|
export let isExtension = false;
|
|
|
|
|
2023-06-22 12:28:56 +00:00
|
|
|
try {
|
|
|
|
if (
|
|
|
|
document.currentScript !== undefined &&
|
|
|
|
document.currentScript !== null &&
|
|
|
|
"src" in document.currentScript &&
|
|
|
|
document.currentScript.src !== ""
|
|
|
|
) {
|
|
|
|
let src = document.currentScript.src;
|
|
|
|
|
|
|
|
// CDNs allow omitting the filename. If it's omitted, append a slash to
|
|
|
|
// prevent the last component from being dropped.
|
|
|
|
if (!src.endsWith(".js") && !src.endsWith("/")) {
|
|
|
|
src += "/";
|
|
|
|
}
|
|
|
|
|
2023-06-24 11:59:42 +00:00
|
|
|
currentScriptURL = new URL(".", src);
|
|
|
|
isExtension = currentScriptURL.protocol.includes("extension");
|
2023-06-22 12:28:56 +00:00
|
|
|
}
|
2024-07-07 16:32:17 +00:00
|
|
|
} catch (_e) {
|
2023-06-22 12:28:56 +00:00
|
|
|
console.warn("Unable to get currentScript URL");
|
|
|
|
}
|