comptime.ts
Version:
<div align="center"> <img src="https://raw.githubusercontent.com/feathers-studio/comptime.ts/master/docs/comptime.ts.svg" alt="Hyperactive"> </div>
28 lines • 1.33 kB
JavaScript
import { createRequire } from "node:module";
import { fileURLToPath } from "node:url";
import { platform } from "node:os";
import path from "node:path";
const isWin = platform() === "win32";
const protocol = /^[a-zA-Z][a-zA-Z\d+\-.]+:/;
// Windows wants file:// for absolute paths, otherwise it assumes drive letter is a protocol
export const formatPath = (path) => (isWin && !protocol.test(path) ? "file://" : "") + path.replaceAll("\\", "\\\\");
export function getModuleResolver(userResolver) {
const require = createRequire(fileURLToPath(import.meta.url));
return (specifier, importer) => {
// 1. User-provided resolver (e.g. from Vite plugin context)
if (userResolver) {
return userResolver(specifier, importer);
}
// 2. Bun native resolution
if (typeof Bun !== "undefined" && Bun.resolveSync) {
const importerDir = path.dirname(importer);
return Bun.resolveSync(specifier, importerDir);
}
// 3. Fallback to Node CJS resolution
const importerDir = path.dirname(importer);
return require.resolve(specifier, { paths: [importerDir] });
// we would use import.meta.resolve, but it needs --experimental-import-meta-resolve
// to accept a parent parameter
};
}
//# sourceMappingURL=resolve.js.map