generated from dellevin/template
67 lines
1.6 KiB
JavaScript
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
|