site-panzai/node_modules/unimport/dist/chunks/detect-oxc.mjs

40 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

2026-11-13 13:57:04 +01:00
import { pathToFileURL } from 'node:url';
import { isPackageExists, resolveModule, importModule } from 'local-pkg';
import { c as createEstreeDetector } from '../shared/unimport.DyX9I00Q.mjs';
import 'estree-walker';
import '../shared/unimport.B4o9Mg_h.mjs';
import 'node:path';
import 'node:process';
import 'pathe';
import 'scule';
import 'magic-string';
import 'mlly';
import 'strip-literal';
let detectorPromise;
async function loadDetector() {
const paths = [import.meta.url];
let parseSync;
if (isPackageExists("rolldown", { paths })) {
const resolved = resolveModule("rolldown/utils", { paths });
const url = resolved ? pathToFileURL(resolved).href : "rolldown/utils";
parseSync = (await importModule(url)).parseSync;
} else if (isPackageExists("oxc-parser", { paths })) {
const resolved = resolveModule("oxc-parser", { paths });
const url = resolved ? pathToFileURL(resolved).href : "oxc-parser";
parseSync = (await importModule(url)).parseSync;
} else {
throw new Error(
"[unimport] the `oxc` parser requires either `rolldown` or `oxc-parser` to be installed."
);
}
return createEstreeDetector((code, id) => parseSync(id ? id.replace(/\?.*$/, "") : "", code, { sourceType: "module" }).program);
}
async function detectImportsOxc(code, ctx, options, id) {
detectorPromise ??= loadDetector();
const detector = await detectorPromise;
return detector(code, ctx, options, id);
}
export { detectImportsOxc };