Files
DelLevin-Home a4a326401e 1
2026-03-10 22:06:32 +08:00

67 lines
1.6 KiB
JavaScript

// ESM entry point for module-alias
// Provides programmatic API with auto-registered hooks
import { registerHooks } from 'node:module'
import { addAlias as _addAlias, addAliases as _addAliases, addPath as _addPath, reset as _reset, resolveAlias } from './esm-loader.mjs'
let hooksRegistered = false
function ensureHooks() {
if (hooksRegistered) return
const [major, minor] = process.versions.node.split('.').map(Number)
const hasRegisterHooks = major > 22 || (major === 22 && minor >= 15)
if (!hasRegisterHooks) {
console.warn('[module-alias] Programmatic ESM usage requires Node 22.15+. For older versions, use module-alias/register with _moduleAliases in package.json.')
return
}
registerHooks({
resolve(specifier, context, nextResolve) {
const resolved = resolveAlias(specifier, context.parentURL)
if (resolved) {
return nextResolve(resolved, context)
}
return nextResolve(specifier, context)
}
})
hooksRegistered = true
}
export function addAlias(alias, target) {
ensureHooks()
_addAlias(alias, target)
}
export function addAliases(aliases) {
ensureHooks()
_addAliases(aliases)
}
export function addPath(path) {
ensureHooks()
_addPath(path)
}
export function reset() {
_reset()
hooksRegistered = false
}
// Default export for compatibility with: import moduleAlias from 'module-alias'
import { init } from './esm-loader.mjs'
function moduleAlias(options) {
ensureHooks()
init(options)
}
moduleAlias.addAlias = addAlias
moduleAlias.addAliases = addAliases
moduleAlias.addPath = addPath
moduleAlias.reset = reset
export default moduleAlias