@jsenv/core
Version:
Tool to develop, test and build js projects
29 lines (27 loc) • 928 B
JavaScript
import { ensureWindowsDriveLetter } from "@jsenv/filesystem";
import { moveUrl, urlIsOrIsInsideOf } from "@jsenv/urls";
export const WEB_URL_CONVERTER = {
asWebUrl: (fileUrl, webServer) => {
if (urlIsOrIsInsideOf(fileUrl, webServer.rootDirectoryUrl)) {
return moveUrl({
url: fileUrl,
from: webServer.rootDirectoryUrl,
to: `${webServer.origin}/`,
});
}
const fsRootUrl = ensureWindowsDriveLetter("file:///", fileUrl);
return `${webServer.origin}/@fs/${fileUrl.slice(fsRootUrl.length)}`;
},
asFileUrl: (webUrl, webServer) => {
const { pathname, search } = new URL(webUrl);
if (pathname.startsWith("/@fs/")) {
const fsRootRelativeUrl = pathname.slice("/@fs/".length);
return `file:///${fsRootRelativeUrl}${search}`;
}
return moveUrl({
url: webUrl,
from: `${webServer.origin}/`,
to: webServer.rootDirectoryUrl,
});
},
};