vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
37 lines (36 loc) • 1.24 kB
JavaScript
export { isVirtualFileId };
export { getVirtualFileId };
export { resolveVirtualFileId };
export { removeVirtualIdTag };
import pc from '@brillout/picocolors';
import { assert, assertUsage } from './utils.js';
const idBase = 'virtual:vike:';
// https://vitejs.dev/guide/api-plugin.html#virtual-modules-convention
const virtualIdTag = '\0';
function isVirtualFileId(id) {
if (id.startsWith(idBase))
return true;
if (id.startsWith(virtualIdTag + idBase))
return true;
// https://github.com/vikejs/vike/issues/1985
assertUsage(!id.includes(idBase), `Encountered a module ID ${pc.cyan(id)} that is unexpected. Are you using a tool that modifies the ID of modules? For example, the baseUrl setting in tsconfig.json cannot be used.`);
return false;
}
function getVirtualFileId(id) {
return removeVirtualIdTag(id);
}
function resolveVirtualFileId(id) {
assert(isVirtualFileId(id));
if (!id.startsWith(virtualIdTag)) {
id = virtualIdTag + id;
}
assert(id.startsWith(virtualIdTag));
return id;
}
function removeVirtualIdTag(id) {
if (id.startsWith(virtualIdTag)) {
id = id.slice(virtualIdTag.length);
}
assert(!id.startsWith(virtualIdTag));
return id;
}