astro-ghostcms/.pnpm-store/v3/files/9a/26232455c1cdb83c042bfdce324...

32 lines
816 B
Plaintext
Raw Normal View History

2024-02-14 14:10:47 +00:00
const parseUrl = (url, defaultLocale, localeCodes, base) => {
if (!url || !defaultLocale || localeCodes.length === 0 || localeCodes.some((key) => !key) || !base) {
throw new Error("parseUrl: some parameters are empty");
}
if (url.indexOf(base) !== 0) {
return void 0;
}
let s = url.replace(base, "");
if (!s || s === "/") {
return { locale: defaultLocale, path: "/" };
}
if (!s.startsWith("/")) {
s = "/" + s;
}
const a = s.split("/");
const locale = a[1];
if (localeCodes.some((key) => key === locale)) {
let path = a.slice(2).join("/");
if (path === "//") {
path = "/";
}
if (path !== "/" && !path.startsWith("/")) {
path = "/" + path;
}
return { locale, path };
}
return { locale: defaultLocale, path: s };
};
export {
parseUrl
};