{"version":3,"file":"index.cjs","sources":["../src/utils/has-property.ts","../src/utils/object.ts","../src/utils/error.ts","../src/utils/file-name.ts","../src/utils/to-array.ts","../src/utils/file-path.ts","../src/utils/runtime.ts","../src/utils/typescript.ts","../src/locator/utils.ts","../src/locator/async.ts","../src/locator/sync.ts","../src/loader/built-in/conf/module.ts","../src/loader/built-in/module/utils.ts","../src/loader/built-in/module/module.ts","../src/loader/built-in/json/module.ts","../src/loader/built-in/yaml/module.ts","../src/loader/constants.ts","../src/loader/module.ts","../src/loader/singleton.ts","../src/loader/helpers.ts"],"sourcesContent":["export function hasOwnProperty<X extends Record<string, any>, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n    return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function hasStringProperty<X extends Record<string, any>, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, string> {\n    return hasOwnProperty(obj, prop) && typeof obj[prop] === 'string';\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isObject(item: unknown) : item is Record<string, any> {\n    return (\n        !!item &&\n        typeof item === 'object' &&\n        !Array.isArray(item)\n    );\n}\n\nexport function isSafeObjectKey(key: string) : boolean {\n    return key !== '__proto__' &&\n        key !== 'prototype' &&\n        key !== 'constructor';\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty } from './has-property';\nimport { isObject } from './object';\n\nexport function handleException(e: unknown) : void {\n    if (e instanceof Error) {\n        throw e;\n    }\n\n    const error = new Error('Can not process thrown exception.');\n\n    if (isObject(e)) {\n        if (\n            hasOwnProperty(e, 'message') &&\n            typeof e.message === 'string'\n        ) {\n            error.message = e.message;\n        }\n\n        if (\n            hasOwnProperty(e, 'stack') &&\n            typeof e.stack === 'string'\n        ) {\n            error.stack = e.stack;\n        }\n    }\n\n    throw error;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\n\nexport function getFileNameExtension(\n    input: string,\n    allowed?: string[],\n) : string | undefined {\n    const extension = path.extname(input);\n    if (extension === '' || extension === '.') {\n        return undefined;\n    }\n\n    if (\n        typeof allowed === 'undefined' ||\n        allowed.indexOf(extension) !== -1\n    ) {\n        return extension;\n    }\n\n    return undefined;\n}\n\nexport function removeFileNameExtension(\n    input: string,\n    extensions?: string[],\n) {\n    const extension = getFileNameExtension(input, extensions);\n    if (extension) {\n        return input.substring(0, input.length - extension.length);\n    }\n\n    return input;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function toArray(input: string | string[]) : string[] {\n    return Array.isArray(input) ? input : [input];\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nimport path from 'node:path';\n\nexport function isFilePath(input: string) {\n    const extension = path.extname(input);\n    return extension && extension !== '';\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isJestRuntimeEnvironment() : boolean {\n    return process.env &&\n        process.env.JEST_WORKER_ID !== undefined;\n}\n\nexport function isTsNodeRuntimeEnvironment(): boolean {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    return !!process[Symbol.for('ts-node.register.instance')];\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from './object';\n\nexport function isTypeScriptError(input: unknown) : input is Error {\n    if (!isObject(input)) {\n        return false;\n    }\n\n    if (typeof input.diagnosticCodes !== 'undefined') {\n        return true;\n    }\n\n    return typeof input.message === 'string' &&\n        /TS\\d+/.test(input.message);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport { isObject, toArray } from '../utils';\nimport type { LocatorInfo, LocatorOptions, LocatorOptionsInput } from './types';\n\nexport function buildLocatorPatterns(pattern: string | string[]) : string[] {\n    return Array.isArray(pattern) ?\n        pattern :\n        [pattern];\n}\n\nexport function buildLocatorOptions(options: LocatorOptionsInput = {}) : LocatorOptions {\n    const paths = options.path ?\n        toArray(options.path) :\n        [];\n\n    const ignore = options.ignore ?\n        toArray(options.ignore) :\n        [];\n\n    if (paths.length === 0) {\n        paths.push(process.cwd());\n    }\n\n    let onlyFiles : boolean;\n    let onlyDirectories : boolean;\n\n    if (options.onlyDirectories === options.onlyFiles) {\n        onlyDirectories = false;\n        onlyFiles = !options.onlyDirectories;\n    } else if (typeof options.onlyFiles === 'undefined') {\n        onlyDirectories = options.onlyDirectories ?? false;\n        onlyFiles = !options.onlyDirectories;\n    } else {\n        onlyFiles = options.onlyFiles ?? true;\n        onlyDirectories = !options.onlyFiles;\n    }\n\n    return {\n        path: paths,\n        ignore,\n        onlyDirectories,\n        onlyFiles,\n    };\n}\n\nexport function pathToLocatorInfo(\n    input: string,\n    skipResolve?: boolean,\n) : LocatorInfo {\n    if (\n        !skipResolve &&\n        !path.isAbsolute(input)\n    ) {\n        input = path.resolve(process.cwd(), input);\n    }\n\n    const info = path.parse(input);\n\n    return {\n        path: info.dir.split('/').join(path.sep),\n        name: info.name,\n        extension: info.ext ?\n            info.ext :\n            undefined,\n    };\n}\n\nexport function isLocatorInfo(\n    input: unknown,\n) : input is LocatorInfo {\n    return isObject(input) &&\n        typeof input.path === 'string' &&\n        typeof input.name === 'string' &&\n        typeof input.extension === 'string';\n}\n\nexport function buildFilePath(input: LocatorInfo | string) {\n    if (typeof input === 'string') {\n        return input;\n    }\n\n    if (input.extension) {\n        return path.join(input.path, input.name) + input.extension;\n    }\n\n    return path.join(input.path, input.name);\n}\n\nexport function buildFilePathWithoutExtension(input: LocatorInfo | string) {\n    let info: LocatorInfo;\n\n    if (typeof input === 'string') {\n        info = pathToLocatorInfo(input);\n    } else {\n        info = input;\n    }\n\n    return path.join(info.path, info.name);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport fg from 'fast-glob';\nimport type { LocatorInfo, LocatorOptionsInput } from './types';\nimport { buildLocatorOptions, buildLocatorPatterns, pathToLocatorInfo } from './utils';\n\nexport async function locateMany(\n    pattern: string | string[],\n    options?: LocatorOptionsInput,\n) : Promise<LocatorInfo[]> {\n    const patterns = buildLocatorPatterns(pattern);\n    const opts = buildLocatorOptions(options);\n\n    const items : LocatorInfo[] = [];\n\n    for (let i = 0; i < patterns.length; i++) {\n        for (let j = 0; j < opts.path.length; j++) {\n            const files = await fg(patterns[i], {\n                absolute: true,\n                cwd: opts.path[j],\n                ignore: opts.ignore,\n                onlyFiles: opts.onlyFiles,\n                onlyDirectories: opts.onlyDirectories,\n            });\n\n            for (let k = 0; k < files.length; k++) {\n                items.push(pathToLocatorInfo(files[k], true));\n            }\n        }\n    }\n\n    return items;\n}\n\nexport async function locate(\n    pattern: string | string[],\n    options?: LocatorOptionsInput,\n) : Promise<LocatorInfo | undefined> {\n    const patterns = buildLocatorPatterns(pattern);\n    const opts = buildLocatorOptions(options);\n\n    for (let i = 0; i < patterns.length; i++) {\n        for (let j = 0; j < opts.path.length; j++) {\n            const files = await fg(patterns[i], {\n                absolute: true,\n                cwd: opts.path[j],\n                ignore: opts.ignore,\n                onlyFiles: opts.onlyFiles,\n                onlyDirectories: opts.onlyDirectories,\n            });\n\n            const element = files.shift();\n            if (element) {\n                return pathToLocatorInfo(element, true);\n            }\n        }\n    }\n\n    return undefined;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport fg from 'fast-glob';\nimport type { LocatorInfo, LocatorOptionsInput } from './types';\nimport { buildLocatorOptions, buildLocatorPatterns, pathToLocatorInfo } from './utils';\n\nexport function locateManySync(\n    pattern: string | string[],\n    options?: LocatorOptionsInput,\n) : LocatorInfo[] {\n    const patterns = buildLocatorPatterns(pattern);\n    const opts = buildLocatorOptions(options);\n\n    const items : LocatorInfo[] = [];\n\n    for (let i = 0; i < patterns.length; i++) {\n        for (let j = 0; j < opts.path.length; j++) {\n            const files = fg.sync(patterns[i], {\n                absolute: true,\n                cwd: opts.path[j],\n                ignore: opts.ignore,\n                onlyFiles: opts.onlyFiles,\n                onlyDirectories: opts.onlyDirectories,\n            });\n\n            for (let k = 0; k < files.length; k++) {\n                items.push(pathToLocatorInfo(files[k], true));\n            }\n        }\n    }\n\n    return items;\n}\n\nexport function locateSync(\n    pattern: string | string[],\n    options?: LocatorOptionsInput,\n) : LocatorInfo | undefined {\n    const patterns = buildLocatorPatterns(pattern);\n    const opts = buildLocatorOptions(options);\n\n    for (let i = 0; i < patterns.length; i++) {\n        for (let j = 0; j < opts.path.length; j++) {\n            const files = fg.sync(patterns[i] as string, {\n                absolute: true,\n                cwd: opts.path[j],\n                ignore: opts.ignore,\n                onlyFiles: opts.onlyFiles,\n                onlyDirectories: opts.onlyDirectories,\n            });\n\n            const element = files.shift();\n            if (element) {\n                return pathToLocatorInfo(element, true);\n            }\n        }\n    }\n\n    return undefined;\n}\n","/*\n * Copyright (c) 2022-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n// Based on https://github.com/unjs/rc9 (MIT)\n\nimport { destr } from 'destr';\nimport flat from 'flat';\nimport fs from 'node:fs';\nimport { buildFilePath } from '../../../locator';\nimport { handleException, isSafeObjectKey } from '../../../utils';\nimport type { Loader } from '../../type';\n\nexport class ConfLoader implements Loader {\n    async execute(input: string) {\n        const filePath = buildFilePath(input);\n\n        try {\n            const file = await fs.promises.readFile(filePath, { encoding: 'utf-8' });\n\n            return this.parse(file);\n        } catch (e) {\n            return handleException(e);\n        }\n    }\n\n    executeSync(input: string) {\n        const filePath = buildFilePath(input);\n\n        try {\n            const file = fs.readFileSync(filePath, { encoding: 'utf-8' });\n\n            return this.parse(file);\n        } catch (e) {\n            return handleException(e);\n        }\n    }\n\n    parse(contents: string): Record<string, any> {\n        const config: Record<string, any> = {};\n\n        const lines = contents.split(/\\n|\\r|\\r\\n/);\n\n        for (let i = 0; i < lines.length; i++) {\n            const match = lines[i].match(/^\\s*([^\\s=]+)\\s*=\\s*(.*)?\\s*$/);\n            if (!match) {\n                continue;\n            }\n\n            // Key\n            const key = match[1];\n\n            if (!key || !isSafeObjectKey(key)) {\n                continue;\n            }\n\n            const value = destr(match[2].trim() /* val */);\n\n            if (key.endsWith('[]')) {\n                const arrKey = key.slice(0, Math.max(0, key.length - 2));\n                config[arrKey] = (config[arrKey] || []).concat(value);\n                continue;\n            }\n\n            config[key] = value;\n        }\n\n        return flat.unflatten(config, { overwrite: true });\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty, isObject } from '../../../utils';\nimport type { LoaderFilterFn, ModuleExport } from './type';\n\ntype ESModule = { [key: string]: any, __esModule: boolean };\nexport function isESModule(input: unknown) : input is ESModule {\n    return isObject(input) &&\n        // eslint-disable-next-line no-underscore-dangle\n        typeof input.__esModule !== 'undefined';\n}\n\n// https://2ality.com/2017/01/babel-esm-spec-mode.html\nexport function toModuleRecord(\n    data: unknown,\n) {\n    if (isESModule(data)) {\n        // @see https://github.com/testing-library/user-event/issues/813\n        // @see https://stackoverflow.com/questions/62717394/export-default-class-exports-double-nested-default\n        if (\n            isESModule(data.default) &&\n            data.default.default\n        ) {\n            return {\n                ...data,\n                default: data.default.default,\n            };\n        }\n\n        return data;\n    }\n\n    const output = Object.create(null, {\n        __esModule: {\n            value: true,\n        },\n        [Symbol.toStringTag]: {\n            value: 'Module',\n        },\n    });\n\n    if (isObject(data)) {\n        // eslint-disable-next-line no-restricted-syntax\n        for (const key in data) {\n            if (hasOwnProperty(output, key)) {\n                continue;\n            }\n\n            let descriptor = Object.getOwnPropertyDescriptor(data, key);\n            if (\n                !descriptor ||\n                ('get' in descriptor || descriptor.writable || descriptor.configurable)\n            ) {\n                descriptor = {\n                    enumerable: true,\n                    get() {\n                        return data[key];\n                    },\n                };\n            }\n\n            Object.defineProperty(output, key, descriptor);\n        }\n    }\n\n    if (!hasOwnProperty(output, 'default')) {\n        Object.defineProperty(output, 'default', {\n            value: data,\n            enumerable: true,\n        });\n    }\n\n    return Object.freeze(output);\n}\n\nexport function getModuleExport(\n    data: Record<string, any>,\n    filterFn: LoaderFilterFn,\n): ModuleExport | undefined {\n    const keys = Object.keys(data);\n    for (let i = 0; i < keys.length; i++) {\n        if (filterFn(keys[i] as string, data[keys[i] as string])) {\n            return {\n                key: keys[i] as string,\n                value: data[keys[i] as string],\n            };\n        }\n    }\n\n    return undefined;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BaseError } from 'ebec';\nimport { createJiti } from 'jiti';\nimport { pathToFileURL } from 'node:url';\nimport type { LocatorInfo } from '../../../locator';\nimport {\n    buildFilePath,\n    isLocatorInfo,\n} from '../../../locator';\nimport {\n    handleException,\n    hasStringProperty,\n    isFilePath, isJestRuntimeEnvironment,\n    isObject,\n    isTsNodeRuntimeEnvironment,\n    isTypeScriptError,\n} from '../../../utils';\nimport type { Loader } from '../../type';\nimport type { ModuleLoadOptions } from './type';\nimport { toModuleRecord } from './utils';\n\ntype Jiti = ReturnType<typeof createJiti>;\n\nexport class ModuleLoader implements Loader {\n    protected instance : Jiti;\n\n    constructor() {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        this.instance = createJiti(undefined, {\n            extensions: ['.js', '.mjs', '.mts', '.cjs', '.cts', '.ts'],\n        });\n    }\n\n    async execute(input: string) {\n        let output : any;\n\n        try {\n            output = await this.load(input);\n        } catch (e) {\n            if (\n                e instanceof SyntaxError ||\n                e instanceof ReferenceError ||\n                isTypeScriptError(e)\n            ) {\n                throw e;\n            }\n\n            // jiti + ts-node\n            // issue: https://github.com/nuxt/bridge/issues/228\n            if (isTsNodeRuntimeEnvironment()) {\n                output = this.loadSync(input);\n            } else {\n                output = this.instance(input);\n            }\n        }\n\n        return toModuleRecord(output);\n    }\n\n    executeSync(input: string) {\n        let output : any;\n\n        try {\n            output = this.loadSync(input);\n        } catch (e) {\n            if (\n                e instanceof SyntaxError ||\n                e instanceof ReferenceError ||\n                isTypeScriptError(e)\n            ) {\n                throw e;\n            }\n\n            output = this.instance(input);\n        }\n\n        return toModuleRecord(output);\n    }\n\n    // ---------------------------------------------------------------------------\n\n    async load(\n        data: LocatorInfo | string,\n        options: ModuleLoadOptions = {},\n    ) : Promise<unknown> {\n        const id = this.build(data, options);\n\n        try {\n            // segmentation fault\n            // issue: https://github.com/nodejs/node/issues/35889\n            if (isJestRuntimeEnvironment()) {\n                // eslint-disable-next-line global-require,import/no-dynamic-require\n                return require(id);\n            }\n\n            return await import(id);\n        } catch (e) {\n            /* istanbul ignore next */\n            if (\n                isObject(e) &&\n                hasStringProperty(e, 'code')\n            ) {\n                if (\n                    !options.withFilePrefix &&\n                    (\n                        e.code === 'ERR_UNSUPPORTED_ESM_URL_SCHEME' ||\n                        e.code === 'UNSUPPORTED_ESM_URL_SCHEME'\n                    )\n                ) {\n                    return this.load(data, {\n                        ...options,\n                        withFilePrefix: true,\n                    });\n                }\n\n                throw new BaseError({\n                    code: e.code,\n                    message: hasStringProperty(e, 'message') ? e.message : undefined,\n                    stack: hasStringProperty(e, 'stack') ? e.stack : undefined,\n                });\n            }\n\n            /* istanbul ignore next */\n            return handleException(e);\n        }\n    }\n\n    loadSync(\n        data: LocatorInfo | string,\n        options: ModuleLoadOptions = {},\n    ) : unknown {\n        const id = this.build(data, options);\n\n        try {\n            // eslint-disable-next-line global-require,import/no-dynamic-require\n            return require(id);\n        } catch (e) {\n            /* istanbul ignore next */\n            if (\n                isObject(e) &&\n                hasStringProperty(e, 'code')\n            ) {\n                throw new BaseError({\n                    code: e.code,\n                    message: hasStringProperty(e, 'message') ? e.message : undefined,\n                    stack: hasStringProperty(e, 'stack') ? e.stack : undefined,\n                });\n            }\n\n            return handleException(e);\n        }\n    }\n\n    private build(\n        data: LocatorInfo | string,\n        options: ModuleLoadOptions = {},\n    ) : string {\n        if (isLocatorInfo(data) || isFilePath(data)) {\n            if (typeof data !== 'string') {\n                data = buildFilePath(data);\n            }\n\n            if (options.withFilePrefix) {\n                data = pathToFileURL(data).href;\n            }\n        }\n\n        return data;\n    }\n}\n","/*\n * Copyright (c) 2022-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport fs from 'node:fs';\nimport { buildFilePath } from '../../../locator';\nimport { handleException } from '../../../utils';\nimport type { Loader } from '../../type';\n\nexport class JSONLoader implements Loader {\n    async execute(input: string) {\n        const filePath = buildFilePath(input);\n\n        try {\n            const file = await fs.promises.readFile(filePath, { encoding: 'utf-8' });\n            return JSON.parse(file);\n        } catch (e) {\n            return handleException(e);\n        }\n    }\n\n    executeSync(input: string) {\n        const filePath = buildFilePath(input);\n\n        try {\n            const file = fs.readFileSync(filePath, { encoding: 'utf-8' });\n            return JSON.parse(file);\n        } catch (e) {\n            return handleException(e);\n        }\n    }\n}\n","/*\n * Copyright (c) 2022-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { parse } from 'yaml';\nimport fs from 'node:fs';\nimport { buildFilePath } from '../../../locator';\nimport { handleException } from '../../../utils';\nimport type { Loader } from '../../type';\n\nexport class YAMLLoader implements Loader {\n    async execute(input: string) {\n        const filePath = buildFilePath(input);\n\n        try {\n            const file = await fs.promises.readFile(filePath, { encoding: 'utf-8' });\n            return parse(file);\n        } catch (e) {\n            return handleException(e);\n        }\n    }\n\n    executeSync(input: string) {\n        const filePath = buildFilePath(input);\n\n        try {\n            const file = fs.readFileSync(filePath, { encoding: 'utf-8' });\n            return parse(file);\n        } catch (e) {\n            return handleException(e);\n        }\n    }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum LoaderId {\n    MODULE = 'module',\n    JSON = 'json',\n    CONF = 'conf',\n    YAML = 'yaml',\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport { buildFilePath, pathToLocatorInfo } from '../locator';\nimport { isFilePath } from '../utils';\nimport { ConfLoader, JSONLoader, ModuleLoader } from './built-in';\nimport { YAMLLoader } from './built-in/yaml';\nimport { LoaderId } from './constants';\nimport type { Loader, Rule } from './type';\n\nexport class LoaderManager implements Loader {\n    protected loaders : Record<string, Loader>;\n\n    protected rules : Rule[];\n\n    constructor() {\n        this.loaders = {};\n        this.rules = [\n            {\n                test: ['.js', '.mjs', '.mts', '.cjs', '.cts', '.ts'],\n                loader: LoaderId.MODULE,\n            },\n            {\n                test: ['.conf'], loader: LoaderId.CONF,\n            },\n            {\n                test: ['.json'], loader: LoaderId.JSON,\n            },\n            {\n                test: ['.yml', '.yaml'], loader: LoaderId.YAML,\n            },\n        ];\n    }\n\n    register(rule: Rule) : void;\n\n    register(test: string[] | RegExp, loader: Loader) : void;\n\n    register(test: any, loader?: Loader) : void {\n        if (typeof loader !== 'undefined') {\n            this.rules.push({ test, loader });\n            return;\n        }\n\n        this.rules.push(test);\n    }\n\n    async execute(input: string) : Promise<any> {\n        const id = this.findLoader(input);\n        if (!id) {\n            const info = pathToLocatorInfo(input);\n            throw new Error(`No loader registered for extension: \"${info.extension}\"`);\n        }\n\n        const loader = this.resolve(id);\n        return loader.execute(input);\n    }\n\n    executeSync(input: string) : any {\n        const id = this.findLoader(input);\n        if (!id) {\n            const info = pathToLocatorInfo(input);\n            throw new Error(`No loader registered for extension: ${info.extension || 'unknown'}`);\n        }\n\n        const loader = this.resolve(id);\n        return loader.executeSync(input);\n    }\n\n    findLoader(input: string) : Loader | string | undefined {\n        if (!isFilePath(input)) {\n            return LoaderId.MODULE;\n        }\n\n        const info = pathToLocatorInfo(input);\n        for (let i = 0; i < this.rules.length; i++) {\n            const { test } = this.rules[i] as Rule;\n            if (Array.isArray(test)) {\n                if (\n                    info.extension &&\n                    test.indexOf(info.extension) !== -1\n                ) {\n                    return this.rules[i].loader;\n                }\n            } else if (test.test(buildFilePath(info))) {\n                return this.rules[i].loader;\n            }\n        }\n\n        return undefined;\n    }\n\n    /**\n     * Resolve loader by id.\n     *\n     * @param id\n     */\n    resolve(id: string | Loader) : Loader {\n        if (typeof id !== 'string') {\n            return id;\n        }\n\n        if (Object.prototype.hasOwnProperty.call(this.loaders, id)) {\n            return this.loaders[id] as Loader;\n        }\n\n        let loader : Loader | undefined;\n\n        // built-in\n        switch (id) {\n            case LoaderId.CONF: {\n                loader = new ConfLoader();\n                break;\n            }\n            case LoaderId.MODULE: {\n                loader = new ModuleLoader();\n                break;\n            }\n            case LoaderId.JSON: {\n                loader = new JSONLoader();\n                break;\n            }\n            case LoaderId.YAML: {\n                loader = new YAMLLoader();\n                break;\n            }\n            /* istanbul ignore next */\n            default: {\n                const pluginPath = this.normalizePath(id);\n                const moduleLoader = this.resolve(LoaderId.MODULE);\n                loader = moduleLoader.executeSync(pluginPath);\n\n                break;\n            }\n        }\n\n        if (typeof loader !== 'undefined') {\n            this.loaders[id] = loader;\n\n            return loader;\n        }\n\n        throw new Error(`The loader ${id} could not be resolved.`);\n    }\n\n    /* istanbul ignore next */\n    normalizePath(input: string) {\n        if (path.isAbsolute(input) || input.startsWith('./')) {\n            return input;\n        }\n\n        if (input.startsWith('module:')) {\n            return input.substring(0, 'module:'.length);\n        }\n\n        if (!input.startsWith('@')) {\n            return `@locter/${input}`;\n        }\n\n        return input;\n    }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { LoaderManager } from './module';\n\nlet instance : LoaderManager;\nexport function useLoader() {\n    if (typeof instance !== 'undefined') {\n        return instance;\n    }\n\n    instance = new LoaderManager();\n\n    return instance;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { buildFilePath } from '../locator';\nimport type { LocatorInfo } from '../locator';\nimport { useLoader } from './singleton';\nimport type { Loader, Rule } from './type';\n\nexport function registerLoader(rule: Rule) : void;\nexport function registerLoader(test: string[] | RegExp, loader: Loader) : void;\nexport function registerLoader(test: any, loader?: Loader) : void {\n    const manager = useLoader();\n    if (typeof loader !== 'undefined') {\n        manager.register(test, loader);\n\n        return;\n    }\n\n    manager.register(test);\n}\n\nexport async function load(input: LocatorInfo | string) : Promise<any> {\n    const manager = useLoader();\n    if (typeof input === 'string') {\n        return manager.execute(input);\n    }\n\n    return manager.execute(buildFilePath(input));\n}\n\nexport function loadSync(input: LocatorInfo | string) : any {\n    const manager = useLoader();\n    if (typeof input === 'string') {\n        return manager.executeSync(input);\n    }\n\n    return manager.executeSync(buildFilePath(input));\n}\n"],"names":["hasOwnProperty","obj","prop","Object","prototype","call","hasStringProperty","isObject","item","Array","isArray","isSafeObjectKey","key","handleException","e","Error","error","message","stack","getFileNameExtension","input","allowed","extension","path","extname","undefined","indexOf","removeFileNameExtension","extensions","substring","length","toArray","isFilePath","isJestRuntimeEnvironment","process","env","JEST_WORKER_ID","isTsNodeRuntimeEnvironment","Symbol","for","isTypeScriptError","diagnosticCodes","test","buildLocatorPatterns","pattern","buildLocatorOptions","options","paths","ignore","push","cwd","onlyFiles","onlyDirectories","pathToLocatorInfo","skipResolve","isAbsolute","resolve","info","parse","dir","split","join","sep","name","ext","isLocatorInfo","buildFilePath","buildFilePathWithoutExtension","locateMany","patterns","opts","items","i","j","files","fg","absolute","k","locate","element","shift","locateManySync","sync","locateSync","ConfLoader","execute","filePath","file","fs","promises","readFile","encoding","executeSync","readFileSync","contents","config","lines","match","value","destr","trim","endsWith","arrKey","slice","Math","max","concat","flat","unflatten","overwrite","isESModule","__esModule","toModuleRecord","data","default","output","create","toStringTag","descriptor","getOwnPropertyDescriptor","writable","configurable","enumerable","get","defineProperty","freeze","getModuleExport","filterFn","keys","ModuleLoader","load","SyntaxError","ReferenceError","loadSync","instance","id","build","require","withFilePrefix","code","BaseError","pathToFileURL","href","createJiti","JSONLoader","JSON","YAMLLoader","LoaderId","LoaderManager","register","loader","rules","findLoader","MODULE","loaders","CONF","YAML","pluginPath","normalizePath","moduleLoader","startsWith","useLoader","registerLoader","manager"],"mappings":"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"}