{"version":3,"file":"resolve.mjs","sources":["../../src/utils/resolve.ts"],"sourcesContent":["import resolver from 'resolve';\nimport { resolve as resolveExports, legacy as resolveFields } from 'resolve.exports';\nimport { arrayFmt } from './array-fmt';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nconst baseDir = path.dirname(fileURLToPath(import.meta.url));\nexport const packageFilterBuilder = (path = '.', opts = {}) => {\n    const conditions = opts.conditions ?? ['style', 'import', 'require'];\n    const fields = opts.fields ?? ['style', 'module', 'main'];\n    return pkg => {\n        // Check `exports` fields\n        try {\n            const resolvedExport = resolveExports(pkg, path, { conditions, unsafe: true });\n            if (typeof resolvedExport === 'string') {\n                pkg.main = resolvedExport;\n                return pkg;\n            }\n        }\n        catch {\n            /* noop */\n        }\n        // Check independent fields\n        try {\n            const resolvedField = resolveFields(pkg, { fields, browser: false });\n            if (typeof resolvedField === 'string') {\n                pkg.main = resolvedField;\n                return pkg;\n            }\n        }\n        catch {\n            /* noop */\n        }\n        return pkg;\n    };\n};\nconst defaultOpts = {\n    caller: 'Resolver',\n    basedirs: [baseDir],\n    extensions: ['.mjs', '.js', '.cjs', '.json'],\n    preserveSymlinks: true,\n    packageFilter: packageFilterBuilder(),\n};\nconst resolverSync = (id, options = {}) => {\n    try {\n        return resolver.sync(id, {\n            ...options,\n            pathFilter: (pkg, _path, relativePath) => {\n                const result = resolveExports(pkg, relativePath);\n                if (result)\n                    return result[0];\n                return '';\n            },\n        });\n    }\n    catch {\n        return;\n    }\n};\nexport function resolveSync(ids, userOpts) {\n    const options = { ...defaultOpts, ...userOpts };\n    for (const basedir of options.basedirs) {\n        const opts = { ...options, basedir, basedirs: undefined, caller: undefined };\n        for (const id of ids) {\n            const resolved = resolverSync(id, opts);\n            if (resolved)\n                return resolved;\n        }\n    }\n    throw new Error(`${options.caller} could not resolve ${arrayFmt(ids)}`);\n}\n"],"names":["baseDir","path","dirname","fileURLToPath","url","packageFilterBuilder","opts","conditions","fields","pkg","resolvedExport","resolveExports","unsafe","main","resolvedField","resolveFields","browser","defaultOpts","caller","basedirs","extensions","preserveSymlinks","packageFilter","resolverSync","id","options","resolver","sync","pathFilter","_path","relativePath","result","resolveSync","ids","userOpts","basedir","undefined","resolved","Error","arrayFmt"],"mappings":"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"}