UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

36 lines (35 loc) 2.04 kB
import { CSS_PRELOAD_JS_POSTFIX, isNative, LOADER_JS_POSTFIX, LOADER_JS_POSTFIX_REGEX, PRELOAD_JS_POSTFIX } from "../constants.mjs"; import { getURL } from "../getURL.mjs"; import { removeSearch } from "./removeSearch.mjs"; function encodeReservedFilenameChars(path) { return path.replaceAll("=", "=3d").replace(/[<>:"|?*]/g, char => `=${char.charCodeAt(0).toString(16).padStart(2, "0")}`); } function decodeReservedFilenameChars(path) { return path.replace(/=([0-9a-f]{2})/g, (_match, hexCode) => String.fromCharCode(Number.parseInt(hexCode, 16))); } function cleanUrl(path) { return encodeReservedFilenameChars(removeSearch(path).replace(/\/$/, "") // remove trailing slash before encoding ).replaceAll("_", "__").replaceAll("/", "_"); } const isClient = typeof window !== "undefined"; const clientSideURL = isClient ? getURL() : ""; function getPreloadPath(currentPath) { return `${clientSideURL}/assets/${cleanUrl(currentPath.slice(1))}${PRELOAD_JS_POSTFIX}`; } function getPreloadCSSPath(currentPath) { return `${clientSideURL}/assets/${cleanUrl(currentPath.slice(1))}${CSS_PRELOAD_JS_POSTFIX}`; } function getLoaderPath(currentPath, includeUrl = isNative, cacheBust) { const baseURL = includeUrl ? getURL() : ""; const devPath = process.env.NODE_ENV === "development" ? "/_one" : ""; const currentPathUrl = new URL(currentPath, "http://example.com"); const cleanedUrl = cleanUrl(currentPathUrl.pathname.slice(1)); const cacheBustSegment = cacheBust ? `_refetch_${cacheBust}_` : ""; return `${baseURL}${devPath}/assets/${cleanedUrl}${cacheBustSegment}${LOADER_JS_POSTFIX}`; } function getPathFromLoaderPath(loaderPath) { return decodeReservedFilenameChars(loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replace(/_refetch_\d+_?/, "").replace(/__|_/g, match => match === "__" ? "_" : "/")); } export { decodeReservedFilenameChars, encodeReservedFilenameChars, getLoaderPath, getPathFromLoaderPath, getPreloadCSSPath, getPreloadPath }; //# sourceMappingURL=cleanUrl.mjs.map