@hairy/lnv
Version:
_description_
56 lines (53 loc) • 1.77 kB
JavaScript
import {createRequire as __createRequire} from 'module';var require=__createRequire(import.meta.url);
// src/internal/resolve.ts
import fs from "node:fs";
import path from "node:path";
import consola from "consola";
import { resolvePath, resolvePathSync } from "mlly";
import { resolveGlobal } from "resolve-global";
async function resolveImport(module, ensure = false) {
try {
return await resolvePath(module, { url: import.meta.url });
} catch (error) {
consola.log(error);
}
try {
return resolveGlobal(module);
} catch {
}
if (ensure)
throw new Error(`Failed to resolve package ${module}`);
else
consola.warn(`Failed to resolve package ${module}`);
}
function resolveImportSync(module, ensure = false) {
try {
return resolvePathSync(module, { url: import.meta.url });
} catch (error) {
consola.log(error);
}
try {
return resolveGlobal(module);
} catch {
}
if (ensure)
throw new Error(`Failed to resolve package ${module}`);
else
consola.warn(`Failed to resolve package ${module}`);
}
async function resolveImportBin(module, bin, ensure = false) {
const root = path.dirname(await resolveImport(`${module}/package.json`, ensure));
const json = JSON.parse(fs.readFileSync(path.join(root, "package.json"), "utf-8"));
return path.join(root, bin ? json.bin[bin] : Object.values(json.bin)[0]);
}
function resolveImportBinSync(module, bin, ensure = false) {
const root = path.dirname(resolveImportSync(`${module}/package.json`, ensure));
const json = JSON.parse(fs.readFileSync(path.join(root, "package.json"), "utf-8"));
return path.join(root, bin ? json.bin[bin] : Object.values(json.bin)[0]);
}
export {
resolveImport,
resolveImportSync,
resolveImportBin,
resolveImportBinSync
};