astro-ghostcms/.pnpm-store/v3/files/bc/54d390085a9079cc9f734caafb6...

1 line
22 KiB
Plaintext
Raw Normal View History

2024-02-14 14:10:47 +00:00
{"version":3,"sources":["../src/index.ts","../src/mappings.ts","../src/path.ts"],"sourcesContent":["import _debug from 'debug'\nimport * as fs from 'fs'\nimport globRex from 'globrex'\nimport { resolve } from 'path'\nimport type { TSConfckParseOptions, TSConfckParseResult } from 'tsconfck'\nimport type { CompilerOptions } from 'typescript'\nimport { inspect } from 'util'\nimport { normalizePath, Plugin, searchForWorkspaceRoot } from 'vite'\nimport { resolvePathMappings } from './mappings'\nimport { basename, dirname, isAbsolute, join, relative } from './path'\nimport { PluginOptions } from './types'\n\nconst debug = _debug('vite-tsconfig-paths')\n\nconst noMatch = [undefined, false] as [undefined, false]\n\ntype ViteResolve = (id: string, importer: string) => Promise<string | undefined>\n\ntype Resolver = (\n viteResolve: ViteResolve,\n id: string,\n importer: string\n) => Promise<[resolved: string | undefined, matched: boolean]>\n\nexport type { PluginOptions }\n\nexport default (opts: PluginOptions = {}): Plugin => {\n let resolversByDir: Record<string, Resolver[]>\n\n return {\n name: 'vite-tsconfig-paths',\n enforce: 'pre',\n async configResolved(config) {\n let projectRoot = config.root\n let workspaceRoot!: string\n\n let { root } = opts\n if (root) {\n root = resolve(projectRoot, root)\n } else {\n workspaceRoot = searchForWorkspaceRoot(projectRoot)\n }\n\n debug('options.root ==', root)\n debug('project root ==', projectRoot)\n debug('workspace root ==', workspaceRoot)\n\n // The \"root\" option overrides both of these.\n if (root) {\n projectRoot = root\n workspaceRoot = root\n }\n\n const tsconfck = await import('tsconfck')\n\n const projects = opts.projects\n ? opts.projects.map((file) => {\n if (!file.endsWith('.json')) {\n file = join(file, 'tsconfig.json')\n }\n return resolve(projectRoot, file)\n })\n : await tsconfck.findAll(workspaceRoot, {\n configNames: opts.configNames || ['tsconfig.json', 'jsconfig.json'],\n skip(dir) {\n return dir == 'node_modules' || dir == '.git'\n },\n })\n\n debug('projects:', projects)\n\n let hasTypeScriptDep = false\n if (opts.parseNative) {\n try {\n const pkgJson = fs.readFileSync(\n join(workspaceRoot, 'package.json'),\n 'utf8'\n )\n const pkg = JSON.parse(pkgJson)\n const deps = { ...pkg.dependencies, ...pkg.devDependencies }\n hasTypeScriptDep = 'typescript' in deps\n } catch (e: any) {\n if (e.code != 'ENOENT') {\n throw e\n }\n }\n }\n\n let firstError: any\n\n const parseOptions: TSConfckParseOptions = {\n cache: new tsconfck.TSConfckCache(),\n }\n\n const parsedProjects = new Set(\n await Promise.all(\n projects.map((tsconfigFile) => {\n if (tsconfigFile === null) {\n debug('tsconfig file not found:', tsconfigFile)\n return null\n }\n return (\n hasTypeScriptDep\n ? tsconfck.parseNative(tsconfigFile, parseOptions)\n : tsconfck.parse(tsconfigFile, parseOptions)\n ).catch((error) => {\n if (opts.ignoreConfigErrors) {\n debug('tsconfig file caused a parsing error:', tsconfigFile)\n } else {\n config.logger.error(\n '[tsconfig-paths] An error occurred while parsing \"' +\n tsconfigFile +\n '\". See below for details.' +\n (firstError\n ? ''\n : ' To disable this message, set the `ignoreConfigErrors` option to true.'),\n { error }\n )\n if (config.logger.hasErrorLogged(error)) {\n console.error(error)\n