UNPKG

@jsenv/core

Version:

Tool to develop, test and build js projects

29 lines (27 loc) 928 B
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, }); }, };