@visulima/package 1.6.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ ## @visulima/package [1.7.0](https://github.com/visulima/visulima/compare/@visulima/package@1.6.2...@visulima/package@1.7.0) (2024-04-06)
2
+
3
+
4
+ ### Features
5
+
6
+ * **package:** added new implicitBaseUrlSymbol export ([#388](https://github.com/visulima/visulima/issues/388)) ([6a14166](https://github.com/visulima/visulima/commit/6a14166508ce34ac4f5e6ab202d3a881f9ed4860))
7
+
8
+ ## @visulima/package [1.6.2](https://github.com/visulima/visulima/compare/@visulima/package@1.6.1...@visulima/package@1.6.2) (2024-04-05)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * updated type-fest and dev deps ([d7f648d](https://github.com/visulima/visulima/commit/d7f648debdb10eeeb4b8942c45b2e6f6ead560e2))
14
+
15
+
16
+
17
+ ### Dependencies
18
+
19
+ * **@visulima/fs:** upgraded to 2.0.5
20
+
1
21
  ## @visulima/package [1.6.1](https://github.com/visulima/visulima/compare/@visulima/package@1.6.0...@visulima/package@1.6.1) (2024-04-02)
2
22
 
3
23
 
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var fs = require('@visulima/fs');
4
+ var error = require('@visulima/fs/error');
5
+ var utils = require('@visulima/fs/utils');
6
+ var pathe = require('pathe');
7
+ var fs$1 = require('fs');
8
+ var jsoncParser = require('jsonc-parser');
9
+ var A = require('module');
10
+ var path = require('path');
11
+ var resolvePkgMaps = require('resolve-pkg-maps');
12
+
13
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
+
15
+ var A__default = /*#__PURE__*/_interopDefault(A);
16
+
17
+ var _=s=>jsoncParser.parse(fs.readFileSync(s)),L=()=>{let{findPnpApi:s}=A__default.default;return s?.(process.cwd())},v=(s,o,l,n)=>{let t=`resolveFromPackageJsonPath:${s}:${o}:${l}`;if(n?.has(t))return n.get(t);let i=_(s);if(!i)return;let e=o||"tsconfig.json";if(!l&&i.exports)try{let[a]=resolvePkgMaps.resolveExports(i.exports,o,["require","types"]);e=a;}catch{return !1}else !o&&i.tsconfig&&(e=i.tsconfig);return e=path.join(s,"..",e),n?.set(t,e),e},P="package.json",T="tsconfig.json",G=(s,o,l)=>{let n=s;if(s===".."&&(n=path.join(n,T)),s.startsWith(".")&&(n=path.resolve(o,n)),path.isAbsolute(n)){if(fs$1.existsSync(n)){if(fs$1.statSync(n).isFile())return n}else if(!n.endsWith(".json")){let c=`${n}.json`;if(fs$1.existsSync(c))return c}return}let[t,...i]=s.split("/"),e=t.startsWith("@")?`${t}/${i.shift()}`:t,a=i.join("/"),r=L();if(r){let{resolveRequest:c}=r;try{if(e===s){let p=c(path.join(e,P),o);if(p){let h=v(p,a,!1,l);if(h&&fs$1.existsSync(h))return h}}else {let p;try{p=c(s,o,{extensions:[".json"]});}catch{p=c(path.join(s,T),o);}if(p)return p}}catch{}}let f=fs.findUpSync(c=>{let p=path.join(c,"node_modules",e);if(fs$1.existsSync(p))return path.join("node_modules",e)},{cwd:o,type:"directory"});if(!f||!fs$1.statSync(f).isDirectory())return;let g=path.join(f,P);if(fs$1.existsSync(g)){let c=v(g,a,!1,l);if(c===!1)return;if(c&&fs$1.existsSync(c)&&fs$1.statSync(c).isFile())return c}let d=path.join(f,a),C=d.endsWith(".json");if(!C){let c=`${d}.json`;if(fs$1.existsSync(c))return c}if(fs$1.existsSync(d)){if(fs$1.statSync(d).isDirectory()){let c=path.join(d,P);if(fs$1.existsSync(c)){let h=v(c,"",!0,l);if(h&&fs$1.existsSync(h))return h}let p=path.join(d,T);if(fs$1.existsSync(p))return p}else if(C)return d}},j=G;var Z=s=>jsoncParser.parse(fs.readFileSync(s)),O=s=>pathe.toNamespacedPath(/^\.{1,2}(?:\/.*)?$/.test(s)?s:`./${s}`),q=(s,o,l,n)=>{let t=j(s,o);if(!t)throw new error.NotFoundError(`No such file or directory, for '${s}' found.`);if(l.has(t))throw new Error(`Circularity detected while resolving configuration: ${t}`);l.add(t);let i=pathe.dirname(t),e=k(t,n,l);delete e.references;let{compilerOptions:a}=e;if(a){let r=["baseUrl","outDir"];for(let f of r){let g=a[f];g&&(a[f]=pathe.relative(o,pathe.join(i,g)).replaceAll("\\","/")||"./");}}return e.files&&(e.files=e.files.map(r=>pathe.relative(o,pathe.join(i,r)))),e.include&&(e.include=e.include.map(r=>pathe.relative(o,pathe.join(i,r)))),e.exclude&&(e.exclude=e.exclude.map(r=>pathe.relative(o,pathe.join(i,r)))),e},k=(s,o,l=new Set)=>{let n;try{n=fs$1.realpathSync(s);}catch{throw new Error(`Cannot resolve tsconfig at path: ${s}`)}let t=Z(n)||{};if(typeof t!="object")throw new SyntaxError(`Failed to parse tsconfig at: ${s}`);let i=pathe.dirname(n);if(t.compilerOptions){let{compilerOptions:e}=t;e.paths&&!e.baseUrl&&(e[U]=i);}if(t.extends){let e=Array.isArray(t.extends)?t.extends:[t.extends];delete t.extends;for(let a of e.reverse()){let r=q(a,i,new Set(l),o),f={...r,...t,compilerOptions:{...r.compilerOptions,...t.compilerOptions}};r.watchOptions&&(f.watchOptions={...r.watchOptions,...t.watchOptions}),t=f;}}if(t.compilerOptions){let{compilerOptions:e}=t,a=["baseUrl","rootDir"];for(let f of a){let g=e[f];if(g){let d=pathe.resolve(i,g),C=pathe.relative(i,d);e[f]=O(C);}}let{outDir:r}=e;r&&(Array.isArray(t.exclude)||(t.exclude=[]),t.exclude.includes(r)||t.exclude.push(r),e.outDir=O(r)),o?.tscCompatible&&e.module==="node16"&&(e.allowSyntheticDefaultImports=e.allowSyntheticDefaultImports??!0,e.esModuleInterop=e.esModuleInterop??!0,e.moduleDetection=e.moduleDetection??"force",e.moduleResolution=e.moduleResolution??"node16",e.target=e.target??"es2022",e.useDefineForClassFields=e.useDefineForClassFields??!0),o?.tscCompatible&&e.strict&&(e.noImplicitAny=e.noImplicitAny??!0,e.noImplicitThis=e.noImplicitThis??!0,e.strictNullChecks=e.strictNullChecks??!0,e.strictFunctionTypes=e.strictFunctionTypes??!0,e.strictBindCallApply=e.strictBindCallApply??!0,e.strictPropertyInitialization=e.strictPropertyInitialization??!0,e.alwaysStrict=e.alwaysStrict??!0,e.useUnknownInCatchVariables=e.useUnknownInCatchVariables??!0),o?.tscCompatible&&e.isolatedModules&&(e.preserveConstEnums=e.preserveConstEnums??!0),o?.tscCompatible&&e.esModuleInterop&&(e.allowSyntheticDefaultImports=e.allowSyntheticDefaultImports??!0),o?.tscCompatible&&e.target==="esnext"&&(e.useDefineForClassFields=e.useDefineForClassFields??!0);}else t.compilerOptions={};if(t.files&&(t.files=t.files.map(e=>O(e))),t.include&&(t.include=t.include.map(e=>pathe.normalize(e))),t.watchOptions){let{watchOptions:e}=t;e.excludeDirectories&&(e.excludeDirectories=e.excludeDirectories.map(a=>pathe.resolve(i,a)));}return t},U=Symbol("implicitBaseUrl"),S=(s,o)=>k(s,o);var D=new Map,oe=async(s,o={})=>{let l=o.configFileName??"tsconfig.json",n=await fs.findUp(l,{...s&&{cwd:s},type:"file"});if(n||(n=await fs.findUp("jsconfig.json",{...s&&{cwd:s},type:"file"})),!n)throw new error.NotFoundError(`No such file or directory, for ${l} or jsconfig.json found.`);let t=o.cache&&typeof o.cache!="boolean"?o.cache:D;if(o.cache&&t.has(n))return t.get(n);let i={config:S(n),path:n};return o.cache&&t.set(n,i),i},je=oe,ne=(s,o={})=>{let l=o.configFileName??"tsconfig.json",n=fs.findUpSync(l,{...s&&{cwd:s},type:"file"});if(n||(n=fs.findUpSync("jsconfig.json",{...s&&{cwd:s},type:"file"})),!n)throw new error.NotFoundError(`No such file or directory, for ${l} or jsconfig.json found.`);let t=o.cache&&typeof o.cache!="boolean"?o.cache:D;if(o.cache&&t.has(n))return t.get(n);let i={config:S(n),path:n};return o.cache&&t.set(n,i),i},Fe=ne,ie=async(s,o={})=>{let{cwd:l,...n}=o,t=utils.toPath(o.cwd??process.cwd());await fs.writeJson(pathe.join(t,"tsconfig.json"),s,n);},be=ie;
18
+
19
+ exports.a = U;
20
+ exports.b = S;
21
+ exports.c = oe;
22
+ exports.d = je;
23
+ exports.e = ne;
24
+ exports.f = Fe;
25
+ exports.g = ie;
26
+ exports.h = be;
27
+ //# sourceMappingURL=out.js.map
28
+ //# sourceMappingURL=chunk-3I7BDTA7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tsconfig.ts","../src/read-tsconfig.ts","../src/utils/resolve-extends-path.ts"],"names":["findUp","findUpSync","writeJson","NotFoundError","toPath","join","realpathSync","readFileSync","parse","dirname","normalize","relative","resolve","toNamespacedPath","existsSync","statSync","Module","isAbsolute","resolveExports","readJsonc","jsonPath","getPnpApi","findPnpApi","resolveFromPackageJsonPath","packageJsonPath","subpath","ignoreExports","cache","cacheKey","packageJson","resolvedPath","resolvedExport","PACKAGE_JSON","TS_CONFIG_JSON","resolveExtendsPath","requestedPath","directoryPath","filePath","orgOrName","remaining","packageName","pnpApi","resolveWithPnp","resolved","packagePath","directory","path","fullPackagePath","jsonExtension","fullPackagePathWithJson","fullPackageJsonPath","tsconfigPath","resolve_extends_path_default","normalizePath","resolveExtends","extendsPath","fromDirectoryPath","circularExtendsTracker","options","resolvedExtendsPath","extendsDirectoryPath","extendsConfig","internalParseTsConfig","compilerOptions","resolvePaths","property","unresolvedPath","file","realTsconfigPath","config","implicitBaseUrlSymbol","extendsPathList","merged","normalizedPaths","resolvedBaseUrl","relativeBaseUrl","outDir","element","watchOptions","excludePath","readTsConfig","TsConfigFileCache","findTsConfig","cwd","configFileName","output","findTSConfig","findTsConfigSync","findTSConfigSync","writeTsConfig","data","writeOptions","writeTSConfig"],"mappings":"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","sourcesContent":["import type { WriteJsonOptions } from \"@visulima/fs\";\nimport { findUp, findUpSync, writeJson } from \"@visulima/fs\";\nimport { NotFoundError } from \"@visulima/fs/error\";\nimport { toPath } from \"@visulima/fs/utils\";\nimport { join } from \"pathe\";\nimport type { TsConfigJson } from \"type-fest\";\n\nimport { readTsConfig } from \"./read-tsconfig\";\nimport type { TsConfigJsonResolved } from \"./types\";\n\ntype Options = {\n cache?: Map<string, TsConfigJsonResolved> | boolean;\n configFileName?: string;\n};\n\nconst TsConfigFileCache = new Map<string, TsConfigResult>();\n\nexport type TsConfigResult = {\n config: TsConfigJsonResolved;\n path: string;\n};\n\n/**\n * An asynchronous function that retrieves the TSConfig by searching for the \"tsconfig.json\" first,\n * second attempt is to look for the \"jsconfig.json\" file from a given current working directory.\n *\n * @param cwd - Optional. The current working directory from which to search for the \"tsconfig.json\" file.\n * The type of `cwd` is `string`.\n * @returns A `Promise` that resolves to the TSConfig result object.\n * The return type of the function is `Promise<TsConfigResult>`.\n * @throws An `Error` when the \"tsconfig.json\" file is not found.\n */\nexport const findTsConfig = async (cwd?: URL | string, options: Options = {}): Promise<TsConfigResult> => {\n const configFileName = options.configFileName ?? \"tsconfig.json\";\n\n let filePath = await findUp(configFileName, {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n\n if (!filePath) {\n filePath = await findUp(\"jsconfig.json\", {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n }\n\n if (!filePath) {\n throw new NotFoundError(`No such file or directory, for ${configFileName} or jsconfig.json found.`);\n }\n\n const cache = options.cache && typeof options.cache !== \"boolean\" ? options.cache : TsConfigFileCache;\n\n if (options.cache && cache.has(filePath)) {\n return cache.get(filePath) as TsConfigResult;\n }\n\n const output = {\n config: readTsConfig(filePath),\n path: filePath,\n };\n\n if (options.cache) {\n cache.set(filePath, output);\n }\n\n return output;\n};\n\n// @deprecate Please use `findTsConfig` instead.\nexport const findTSConfig = findTsConfig;\n\nexport const findTsConfigSync = (cwd?: URL | string, options: Options = {}): TsConfigResult => {\n const configFileName = options.configFileName ?? \"tsconfig.json\";\n\n let filePath = findUpSync(configFileName, {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n\n if (!filePath) {\n filePath = findUpSync(\"jsconfig.json\", {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n }\n\n if (!filePath) {\n throw new NotFoundError(`No such file or directory, for ${configFileName} or jsconfig.json found.`);\n }\n\n const cache = options.cache && typeof options.cache !== \"boolean\" ? options.cache : TsConfigFileCache;\n\n if (options.cache && cache.has(filePath)) {\n return cache.get(filePath) as TsConfigResult;\n }\n\n const output = {\n config: readTsConfig(filePath),\n path: filePath,\n };\n\n if (options.cache) {\n cache.set(filePath, output);\n }\n\n return output;\n};\n\n// @deprecate Please use `findTsConfigSync` instead.\nexport const findTSConfigSync = findTsConfigSync;\n\n/**\n * An asynchronous function that writes the provided TypeScript configuration object to a tsconfig.json file.\n *\n * @param tsConfig - The TypeScript configuration object to write. The type of `tsConfig` is `TsConfigJson`.\n * @param options - Optional. The write options and the current working directory. The type of `options` is an\n * intersection type of `WriteOptions` and a Record type with an optional `cwd` key of type `string`.\n * @returns A `Promise` that resolves when the tsconfig.json file has been written.\n * The return type of function is `Promise<void>`.\n */\nexport const writeTsConfig = async (data: TsConfigJson, options: WriteJsonOptions & { cwd?: URL | string } = {}): Promise<void> => {\n const { cwd, ...writeOptions } = options;\n\n const directory = toPath(options.cwd ?? process.cwd());\n\n await writeJson(join(directory, \"tsconfig.json\"), data, writeOptions);\n};\n\n// @deprecate Please use `writeTsconfig` instead.\nexport const writeTSConfig = writeTsConfig;\n// eslint-disable-next-line import/no-unused-modules\nexport { implicitBaseUrlSymbol } from \"./read-tsconfig\";\n","/**\n * A modified version of `readTsconfig` from `https://github.com/privatenumber/get-tsconfig/blob/develop/src/parse-tsconfig/index.ts`\n *\n * MIT License\n * Copyright (c) Hiroki Osame <hiroki.osame@gmail.com>\n */\nimport { realpathSync } from \"node:fs\";\n\nimport { readFileSync } from \"@visulima/fs\";\nimport { NotFoundError } from \"@visulima/fs/error\";\nimport { parse } from \"jsonc-parser\";\nimport { dirname, join, normalize, relative, resolve, toNamespacedPath } from \"pathe\";\nimport type { TsConfigJson } from \"type-fest\";\n\nimport type { TsConfigJsonResolved } from \"./types\";\nimport resolveExtendsPath from \"./utils/resolve-extends-path\";\n\ntype Options = {\n tscCompatible?: boolean;\n};\n\nconst readJsonc = (jsonPath: string) => parse(readFileSync(jsonPath) as string) as unknown;\n// eslint-disable-next-line security/detect-unsafe-regex\nconst normalizePath = (path: string): string => toNamespacedPath(/^\\.{1,2}(?:\\/.*)?$/.test(path) ? path : `./${path}`);\n\nconst resolveExtends = (extendsPath: string, fromDirectoryPath: string, circularExtendsTracker: Set<string>, options?: Options) => {\n const resolvedExtendsPath = resolveExtendsPath(extendsPath, fromDirectoryPath);\n\n if (!resolvedExtendsPath) {\n throw new NotFoundError(`No such file or directory, for '${extendsPath}' found.`);\n }\n\n if (circularExtendsTracker.has(resolvedExtendsPath)) {\n throw new Error(`Circularity detected while resolving configuration: ${resolvedExtendsPath}`);\n }\n\n circularExtendsTracker.add(resolvedExtendsPath);\n\n const extendsDirectoryPath = dirname(resolvedExtendsPath);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const extendsConfig = internalParseTsConfig(resolvedExtendsPath, options, circularExtendsTracker);\n\n delete extendsConfig.references;\n\n const { compilerOptions } = extendsConfig;\n\n if (compilerOptions) {\n const resolvePaths = [\"baseUrl\", \"outDir\"] as const;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of resolvePaths) {\n // eslint-disable-next-line security/detect-object-injection\n const unresolvedPath = compilerOptions[property];\n\n if (unresolvedPath) {\n // eslint-disable-next-line security/detect-object-injection\n compilerOptions[property] = relative(fromDirectoryPath, join(extendsDirectoryPath, unresolvedPath)).replaceAll(\"\\\\\", \"/\") || \"./\";\n }\n }\n }\n\n if (extendsConfig.files) {\n extendsConfig.files = extendsConfig.files.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n if (extendsConfig.include) {\n extendsConfig.include = extendsConfig.include.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n if (extendsConfig.exclude) {\n extendsConfig.exclude = extendsConfig.exclude.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n return extendsConfig;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst internalParseTsConfig = (tsconfigPath: string, options?: Options, circularExtendsTracker = new Set<string>()): TsConfigJsonResolved => {\n let realTsconfigPath: string;\n\n try {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n realTsconfigPath = realpathSync(tsconfigPath) as string;\n } catch {\n throw new Error(`Cannot resolve tsconfig at path: ${tsconfigPath}`);\n }\n\n /**\n * Decided not to cache the TsConfigJsonResolved object because it's\n * mutable.\n *\n * Note how `resolveExtends` can call `readTsconfig` rescursively\n * and actually mutates the object. It can also be mutated in\n * user-land.\n *\n * By only caching fs results, we can avoid serving mutated objects\n */\n let config: TsConfigJson = readJsonc(realTsconfigPath) || {};\n\n if (typeof config !== \"object\") {\n throw new SyntaxError(`Failed to parse tsconfig at: ${tsconfigPath}`);\n }\n\n const directoryPath = dirname(realTsconfigPath);\n\n if (config.compilerOptions) {\n const { compilerOptions } = config;\n if (compilerOptions.paths && !compilerOptions.baseUrl) {\n type WithImplicitBaseUrl = TsConfigJson.CompilerOptions & {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n [implicitBaseUrlSymbol]: string;\n };\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-use-before-define\n (compilerOptions as WithImplicitBaseUrl)[implicitBaseUrlSymbol] = directoryPath;\n }\n }\n\n if (config.extends) {\n const extendsPathList = Array.isArray(config.extends) ? config.extends : [config.extends];\n\n delete config.extends;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax,etc/no-assign-mutated-array\n for (const extendsPath of extendsPathList.reverse()) {\n const extendsConfig = resolveExtends(extendsPath, directoryPath, new Set(circularExtendsTracker), options);\n const merged = {\n ...extendsConfig,\n ...config,\n\n compilerOptions: {\n ...extendsConfig.compilerOptions,\n ...config.compilerOptions,\n },\n };\n\n if (extendsConfig.watchOptions) {\n merged.watchOptions = {\n ...extendsConfig.watchOptions,\n ...config.watchOptions,\n };\n }\n\n config = merged;\n }\n }\n\n if (config.compilerOptions) {\n const { compilerOptions } = config;\n const normalizedPaths = [\"baseUrl\", \"rootDir\"] as const;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of normalizedPaths) {\n // eslint-disable-next-line security/detect-object-injection\n const unresolvedPath = compilerOptions[property];\n\n if (unresolvedPath) {\n const resolvedBaseUrl = resolve(directoryPath, unresolvedPath);\n const relativeBaseUrl = relative(directoryPath, resolvedBaseUrl);\n\n // eslint-disable-next-line security/detect-object-injection\n compilerOptions[property] = normalizePath(relativeBaseUrl);\n }\n }\n\n const { outDir } = compilerOptions;\n\n if (outDir) {\n if (!Array.isArray(config.exclude)) {\n config.exclude = [];\n }\n\n if (!config.exclude.includes(outDir)) {\n config.exclude.push(outDir);\n }\n\n compilerOptions.outDir = normalizePath(outDir);\n }\n\n if (options?.tscCompatible && compilerOptions.module === \"node16\") {\n compilerOptions.allowSyntheticDefaultImports = compilerOptions.allowSyntheticDefaultImports ?? true;\n compilerOptions.esModuleInterop = compilerOptions.esModuleInterop ?? true;\n compilerOptions.moduleDetection = compilerOptions.moduleDetection ?? \"force\";\n compilerOptions.moduleResolution = compilerOptions.moduleResolution ?? \"node16\";\n compilerOptions.target = compilerOptions.target ?? \"es2022\";\n compilerOptions.useDefineForClassFields = compilerOptions.useDefineForClassFields ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.strict) {\n compilerOptions.noImplicitAny = compilerOptions.noImplicitAny ?? true;\n compilerOptions.noImplicitThis = compilerOptions.noImplicitThis ?? true;\n compilerOptions.strictNullChecks = compilerOptions.strictNullChecks ?? true;\n compilerOptions.strictFunctionTypes = compilerOptions.strictFunctionTypes ?? true;\n compilerOptions.strictBindCallApply = compilerOptions.strictBindCallApply ?? true;\n compilerOptions.strictPropertyInitialization = compilerOptions.strictPropertyInitialization ?? true;\n compilerOptions.alwaysStrict = compilerOptions.alwaysStrict ?? true;\n compilerOptions.useUnknownInCatchVariables = compilerOptions.useUnknownInCatchVariables ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.isolatedModules) {\n compilerOptions.preserveConstEnums = compilerOptions.preserveConstEnums ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.esModuleInterop) {\n compilerOptions.allowSyntheticDefaultImports = compilerOptions.allowSyntheticDefaultImports ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.target === \"esnext\") {\n compilerOptions.useDefineForClassFields = compilerOptions.useDefineForClassFields ?? true;\n }\n } else {\n config.compilerOptions = {};\n }\n\n if (config.files) {\n config.files = config.files.map((element) => normalizePath(element));\n }\n\n if (config.include) {\n config.include = config.include.map((element) => normalize(element));\n }\n\n if (config.watchOptions) {\n const { watchOptions } = config;\n\n if (watchOptions.excludeDirectories) {\n watchOptions.excludeDirectories = watchOptions.excludeDirectories.map((excludePath) => resolve(directoryPath, excludePath));\n }\n }\n\n return config;\n};\n\nexport const implicitBaseUrlSymbol = Symbol(\"implicitBaseUrl\");\nexport const readTsConfig = (tsconfigPath: string, options?: Options): TsConfigJsonResolved => internalParseTsConfig(tsconfigPath, options);\n","/**\n * A modified version of `resolveExtendsPath` from `https://github.com/privatenumber/get-tsconfig/blob/develop/src/parse-tsconfig/resolve-extends-path.ts`\n *\n * MIT License\n * Copyright (c) Hiroki Osame <hiroki.osame@gmail.com>\n */\nimport { existsSync, statSync } from \"node:fs\";\nimport Module from \"node:module\";\nimport { isAbsolute, join, resolve } from \"node:path\";\n\nimport { findUpSync, readFileSync } from \"@visulima/fs\";\nimport { parse } from \"jsonc-parser\";\nimport type { PathConditions } from \"resolve-pkg-maps\";\nimport { resolveExports } from \"resolve-pkg-maps\";\nimport type { PackageJson } from \"type-fest\";\n\nimport type { Cache } from \"../types\";\n\nconst readJsonc = (jsonPath: string) => parse(readFileSync(jsonPath) as string) as unknown;\n\nconst getPnpApi = () => {\n const { findPnpApi } = Module;\n\n // https://yarnpkg.com/advanced/pnpapi/#requirepnpapi\n return findPnpApi?.(process.cwd());\n};\n\nconst resolveFromPackageJsonPath = (packageJsonPath: string, subpath: string, ignoreExports?: boolean, cache?: Cache<string>) => {\n const cacheKey = `resolveFromPackageJsonPath:${packageJsonPath}:${subpath}:${ignoreExports}`;\n\n if (cache?.has(cacheKey)) {\n return cache.get(cacheKey);\n }\n\n const packageJson = readJsonc(packageJsonPath);\n\n if (!packageJson) {\n return undefined;\n }\n\n let resolvedPath = subpath || \"tsconfig.json\";\n\n if (!ignoreExports && (packageJson as PackageJson).exports) {\n try {\n const [resolvedExport] = resolveExports((packageJson as PackageJson).exports as PathConditions, subpath, [\"require\", \"types\"]);\n\n resolvedPath = resolvedExport as string;\n } catch {\n // Block\n return false;\n }\n } else if (!subpath && (packageJson as PackageJson).tsconfig) {\n resolvedPath = (packageJson as PackageJson).tsconfig as string;\n }\n\n resolvedPath = join(packageJsonPath, \"..\", resolvedPath);\n\n cache?.set(cacheKey, resolvedPath);\n\n return resolvedPath;\n};\n\nconst PACKAGE_JSON = \"package.json\";\nconst TS_CONFIG_JSON = \"tsconfig.json\";\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst resolveExtendsPath = (requestedPath: string, directoryPath: string, cache?: Cache<string>): string | undefined => {\n let filePath = requestedPath;\n\n if (requestedPath === \"..\") {\n filePath = join(filePath, TS_CONFIG_JSON);\n }\n\n if (requestedPath.startsWith(\".\")) {\n filePath = resolve(directoryPath, filePath);\n }\n\n if (isAbsolute(filePath)) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(filePath)) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (statSync(filePath).isFile()) {\n return filePath;\n }\n } else if (!filePath.endsWith(\".json\")) {\n const jsonPath = `${filePath}.json`;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(jsonPath)) {\n return jsonPath;\n }\n }\n\n return undefined;\n }\n\n const [orgOrName, ...remaining] = requestedPath.split(\"/\");\n const packageName = ((orgOrName as string).startsWith(\"@\") ? `${orgOrName}/${remaining.shift()}` : orgOrName) as string;\n const subpath = remaining.join(\"/\");\n\n const pnpApi = getPnpApi();\n\n if (pnpApi) {\n const { resolveRequest: resolveWithPnp } = pnpApi;\n\n try {\n if (packageName === requestedPath) {\n const packageJsonPath = resolveWithPnp(join(packageName, PACKAGE_JSON), directoryPath);\n\n if (packageJsonPath) {\n const resolvedPath = resolveFromPackageJsonPath(packageJsonPath, subpath, false, cache);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n } else {\n let resolved: string | null;\n\n try {\n resolved = resolveWithPnp(requestedPath, directoryPath, { extensions: [\".json\"] });\n } catch {\n resolved = resolveWithPnp(join(requestedPath, TS_CONFIG_JSON), directoryPath);\n }\n\n if (resolved) {\n return resolved;\n }\n }\n } catch {\n /* empty */\n }\n }\n\n const packagePath = findUpSync(\n (directory) => {\n const path = join(directory, \"node_modules\", packageName);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(path)) {\n return join(\"node_modules\", packageName);\n }\n\n return undefined;\n },\n {\n cwd: directoryPath,\n type: \"directory\",\n },\n );\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!packagePath || !statSync(packagePath).isDirectory()) {\n return undefined;\n }\n\n const packageJsonPath = join(packagePath, PACKAGE_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(packageJsonPath)) {\n const resolvedPath = resolveFromPackageJsonPath(packageJsonPath, subpath, false, cache);\n\n // Blocked\n if (resolvedPath === false) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath) && statSync(resolvedPath).isFile()) {\n return resolvedPath;\n }\n }\n\n const fullPackagePath = join(packagePath, subpath);\n const jsonExtension = fullPackagePath.endsWith(\".json\");\n\n if (!jsonExtension) {\n const fullPackagePathWithJson = `${fullPackagePath}.json`;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(fullPackagePathWithJson)) {\n return fullPackagePathWithJson;\n }\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!existsSync(fullPackagePath)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (statSync(fullPackagePath).isDirectory()) {\n const fullPackageJsonPath = join(fullPackagePath, PACKAGE_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(fullPackageJsonPath)) {\n const resolvedPath = resolveFromPackageJsonPath(fullPackageJsonPath, \"\", true, cache);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n\n const tsconfigPath = join(fullPackagePath, TS_CONFIG_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(tsconfigPath)) {\n return tsconfigPath;\n }\n } else if (jsonExtension) {\n return fullPackagePath;\n }\n\n return undefined;\n};\n\nexport default resolveExtendsPath;\n"]}
@@ -0,0 +1,15 @@
1
+ import { findUp, findUpSync, writeJson, readFileSync } from '@visulima/fs';
2
+ import { NotFoundError } from '@visulima/fs/error';
3
+ import { toPath } from '@visulima/fs/utils';
4
+ import { join, dirname, resolve, relative, normalize, toNamespacedPath } from 'pathe';
5
+ import { realpathSync, existsSync, statSync } from 'node:fs';
6
+ import { parse } from 'jsonc-parser';
7
+ import $ from 'node:module';
8
+ import { join as join$1, resolve as resolve$1, isAbsolute } from 'node:path';
9
+ import { resolveExports } from 'resolve-pkg-maps';
10
+
11
+ var L=s=>parse(readFileSync(s)),G=()=>{let{findPnpApi:s}=$;return s?.(process.cwd())},v=(s,o,l,n)=>{let t=`resolveFromPackageJsonPath:${s}:${o}:${l}`;if(n?.has(t))return n.get(t);let i=L(s);if(!i)return;let e=o||"tsconfig.json";if(!l&&i.exports)try{let[a]=resolveExports(i.exports,o,["require","types"]);e=a;}catch{return !1}else !o&&i.tsconfig&&(e=i.tsconfig);return e=join$1(s,"..",e),n?.set(t,e),e},P="package.json",T="tsconfig.json",K=(s,o,l)=>{let n=s;if(s===".."&&(n=join$1(n,T)),s.startsWith(".")&&(n=resolve$1(o,n)),isAbsolute(n)){if(existsSync(n)){if(statSync(n).isFile())return n}else if(!n.endsWith(".json")){let c=`${n}.json`;if(existsSync(c))return c}return}let[t,...i]=s.split("/"),e=t.startsWith("@")?`${t}/${i.shift()}`:t,a=i.join("/"),r=G();if(r){let{resolveRequest:c}=r;try{if(e===s){let p=c(join$1(e,P),o);if(p){let h=v(p,a,!1,l);if(h&&existsSync(h))return h}}else {let p;try{p=c(s,o,{extensions:[".json"]});}catch{p=c(join$1(s,T),o);}if(p)return p}}catch{}}let f=findUpSync(c=>{let p=join$1(c,"node_modules",e);if(existsSync(p))return join$1("node_modules",e)},{cwd:o,type:"directory"});if(!f||!statSync(f).isDirectory())return;let g=join$1(f,P);if(existsSync(g)){let c=v(g,a,!1,l);if(c===!1)return;if(c&&existsSync(c)&&statSync(c).isFile())return c}let d=join$1(f,a),C=d.endsWith(".json");if(!C){let c=`${d}.json`;if(existsSync(c))return c}if(existsSync(d)){if(statSync(d).isDirectory()){let c=join$1(d,P);if(existsSync(c)){let h=v(c,"",!0,l);if(h&&existsSync(h))return h}let p=join$1(d,T);if(existsSync(p))return p}else if(C)return d}},F=K;var q=s=>parse(readFileSync(s)),O=s=>toNamespacedPath(/^\.{1,2}(?:\/.*)?$/.test(s)?s:`./${s}`),ee=(s,o,l,n)=>{let t=F(s,o);if(!t)throw new NotFoundError(`No such file or directory, for '${s}' found.`);if(l.has(t))throw new Error(`Circularity detected while resolving configuration: ${t}`);l.add(t);let i=dirname(t),e=U(t,n,l);delete e.references;let{compilerOptions:a}=e;if(a){let r=["baseUrl","outDir"];for(let f of r){let g=a[f];g&&(a[f]=relative(o,join(i,g)).replaceAll("\\","/")||"./");}}return e.files&&(e.files=e.files.map(r=>relative(o,join(i,r)))),e.include&&(e.include=e.include.map(r=>relative(o,join(i,r)))),e.exclude&&(e.exclude=e.exclude.map(r=>relative(o,join(i,r)))),e},U=(s,o,l=new Set)=>{let n;try{n=realpathSync(s);}catch{throw new Error(`Cannot resolve tsconfig at path: ${s}`)}let t=q(n)||{};if(typeof t!="object")throw new SyntaxError(`Failed to parse tsconfig at: ${s}`);let i=dirname(n);if(t.compilerOptions){let{compilerOptions:e}=t;e.paths&&!e.baseUrl&&(e[I]=i);}if(t.extends){let e=Array.isArray(t.extends)?t.extends:[t.extends];delete t.extends;for(let a of e.reverse()){let r=ee(a,i,new Set(l),o),f={...r,...t,compilerOptions:{...r.compilerOptions,...t.compilerOptions}};r.watchOptions&&(f.watchOptions={...r.watchOptions,...t.watchOptions}),t=f;}}if(t.compilerOptions){let{compilerOptions:e}=t,a=["baseUrl","rootDir"];for(let f of a){let g=e[f];if(g){let d=resolve(i,g),C=relative(i,d);e[f]=O(C);}}let{outDir:r}=e;r&&(Array.isArray(t.exclude)||(t.exclude=[]),t.exclude.includes(r)||t.exclude.push(r),e.outDir=O(r)),o?.tscCompatible&&e.module==="node16"&&(e.allowSyntheticDefaultImports=e.allowSyntheticDefaultImports??!0,e.esModuleInterop=e.esModuleInterop??!0,e.moduleDetection=e.moduleDetection??"force",e.moduleResolution=e.moduleResolution??"node16",e.target=e.target??"es2022",e.useDefineForClassFields=e.useDefineForClassFields??!0),o?.tscCompatible&&e.strict&&(e.noImplicitAny=e.noImplicitAny??!0,e.noImplicitThis=e.noImplicitThis??!0,e.strictNullChecks=e.strictNullChecks??!0,e.strictFunctionTypes=e.strictFunctionTypes??!0,e.strictBindCallApply=e.strictBindCallApply??!0,e.strictPropertyInitialization=e.strictPropertyInitialization??!0,e.alwaysStrict=e.alwaysStrict??!0,e.useUnknownInCatchVariables=e.useUnknownInCatchVariables??!0),o?.tscCompatible&&e.isolatedModules&&(e.preserveConstEnums=e.preserveConstEnums??!0),o?.tscCompatible&&e.esModuleInterop&&(e.allowSyntheticDefaultImports=e.allowSyntheticDefaultImports??!0),o?.tscCompatible&&e.target==="esnext"&&(e.useDefineForClassFields=e.useDefineForClassFields??!0);}else t.compilerOptions={};if(t.files&&(t.files=t.files.map(e=>O(e))),t.include&&(t.include=t.include.map(e=>normalize(e))),t.watchOptions){let{watchOptions:e}=t;e.excludeDirectories&&(e.excludeDirectories=e.excludeDirectories.map(a=>resolve(i,a)));}return t},I=Symbol("implicitBaseUrl"),S=(s,o)=>U(s,o);var A=new Map,ne=async(s,o={})=>{let l=o.configFileName??"tsconfig.json",n=await findUp(l,{...s&&{cwd:s},type:"file"});if(n||(n=await findUp("jsconfig.json",{...s&&{cwd:s},type:"file"})),!n)throw new NotFoundError(`No such file or directory, for ${l} or jsconfig.json found.`);let t=o.cache&&typeof o.cache!="boolean"?o.cache:A;if(o.cache&&t.has(n))return t.get(n);let i={config:S(n),path:n};return o.cache&&t.set(n,i),i},Fe=ne,ie=(s,o={})=>{let l=o.configFileName??"tsconfig.json",n=findUpSync(l,{...s&&{cwd:s},type:"file"});if(n||(n=findUpSync("jsconfig.json",{...s&&{cwd:s},type:"file"})),!n)throw new NotFoundError(`No such file or directory, for ${l} or jsconfig.json found.`);let t=o.cache&&typeof o.cache!="boolean"?o.cache:A;if(o.cache&&t.has(n))return t.get(n);let i={config:S(n),path:n};return o.cache&&t.set(n,i),i},be=ie,re=async(s,o={})=>{let{cwd:l,...n}=o,t=toPath(o.cwd??process.cwd());await writeJson(join(t,"tsconfig.json"),s,n);},ke=re;
12
+
13
+ export { I as a, S as b, ne as c, Fe as d, ie as e, be as f, re as g, ke as h };
14
+ //# sourceMappingURL=out.js.map
15
+ //# sourceMappingURL=chunk-YUFKVE42.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tsconfig.ts","../src/read-tsconfig.ts","../src/utils/resolve-extends-path.ts"],"names":["findUp","findUpSync","writeJson","NotFoundError","toPath","join","realpathSync","readFileSync","parse","dirname","normalize","relative","resolve","toNamespacedPath","existsSync","statSync","Module","isAbsolute","resolveExports","readJsonc","jsonPath","getPnpApi","findPnpApi","resolveFromPackageJsonPath","packageJsonPath","subpath","ignoreExports","cache","cacheKey","packageJson","resolvedPath","resolvedExport","PACKAGE_JSON","TS_CONFIG_JSON","resolveExtendsPath","requestedPath","directoryPath","filePath","orgOrName","remaining","packageName","pnpApi","resolveWithPnp","resolved","packagePath","directory","path","fullPackagePath","jsonExtension","fullPackagePathWithJson","fullPackageJsonPath","tsconfigPath","resolve_extends_path_default","normalizePath","resolveExtends","extendsPath","fromDirectoryPath","circularExtendsTracker","options","resolvedExtendsPath","extendsDirectoryPath","extendsConfig","internalParseTsConfig","compilerOptions","resolvePaths","property","unresolvedPath","file","realTsconfigPath","config","implicitBaseUrlSymbol","extendsPathList","merged","normalizedPaths","resolvedBaseUrl","relativeBaseUrl","outDir","element","watchOptions","excludePath","readTsConfig","TsConfigFileCache","findTsConfig","cwd","configFileName","output","findTSConfig","findTsConfigSync","findTSConfigSync","writeTsConfig","data","writeOptions","writeTSConfig"],"mappings":"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","sourcesContent":["import type { WriteJsonOptions } from \"@visulima/fs\";\nimport { findUp, findUpSync, writeJson } from \"@visulima/fs\";\nimport { NotFoundError } from \"@visulima/fs/error\";\nimport { toPath } from \"@visulima/fs/utils\";\nimport { join } from \"pathe\";\nimport type { TsConfigJson } from \"type-fest\";\n\nimport { readTsConfig } from \"./read-tsconfig\";\nimport type { TsConfigJsonResolved } from \"./types\";\n\ntype Options = {\n cache?: Map<string, TsConfigJsonResolved> | boolean;\n configFileName?: string;\n};\n\nconst TsConfigFileCache = new Map<string, TsConfigResult>();\n\nexport type TsConfigResult = {\n config: TsConfigJsonResolved;\n path: string;\n};\n\n/**\n * An asynchronous function that retrieves the TSConfig by searching for the \"tsconfig.json\" first,\n * second attempt is to look for the \"jsconfig.json\" file from a given current working directory.\n *\n * @param cwd - Optional. The current working directory from which to search for the \"tsconfig.json\" file.\n * The type of `cwd` is `string`.\n * @returns A `Promise` that resolves to the TSConfig result object.\n * The return type of the function is `Promise<TsConfigResult>`.\n * @throws An `Error` when the \"tsconfig.json\" file is not found.\n */\nexport const findTsConfig = async (cwd?: URL | string, options: Options = {}): Promise<TsConfigResult> => {\n const configFileName = options.configFileName ?? \"tsconfig.json\";\n\n let filePath = await findUp(configFileName, {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n\n if (!filePath) {\n filePath = await findUp(\"jsconfig.json\", {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n }\n\n if (!filePath) {\n throw new NotFoundError(`No such file or directory, for ${configFileName} or jsconfig.json found.`);\n }\n\n const cache = options.cache && typeof options.cache !== \"boolean\" ? options.cache : TsConfigFileCache;\n\n if (options.cache && cache.has(filePath)) {\n return cache.get(filePath) as TsConfigResult;\n }\n\n const output = {\n config: readTsConfig(filePath),\n path: filePath,\n };\n\n if (options.cache) {\n cache.set(filePath, output);\n }\n\n return output;\n};\n\n// @deprecate Please use `findTsConfig` instead.\nexport const findTSConfig = findTsConfig;\n\nexport const findTsConfigSync = (cwd?: URL | string, options: Options = {}): TsConfigResult => {\n const configFileName = options.configFileName ?? \"tsconfig.json\";\n\n let filePath = findUpSync(configFileName, {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n\n if (!filePath) {\n filePath = findUpSync(\"jsconfig.json\", {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n }\n\n if (!filePath) {\n throw new NotFoundError(`No such file or directory, for ${configFileName} or jsconfig.json found.`);\n }\n\n const cache = options.cache && typeof options.cache !== \"boolean\" ? options.cache : TsConfigFileCache;\n\n if (options.cache && cache.has(filePath)) {\n return cache.get(filePath) as TsConfigResult;\n }\n\n const output = {\n config: readTsConfig(filePath),\n path: filePath,\n };\n\n if (options.cache) {\n cache.set(filePath, output);\n }\n\n return output;\n};\n\n// @deprecate Please use `findTsConfigSync` instead.\nexport const findTSConfigSync = findTsConfigSync;\n\n/**\n * An asynchronous function that writes the provided TypeScript configuration object to a tsconfig.json file.\n *\n * @param tsConfig - The TypeScript configuration object to write. The type of `tsConfig` is `TsConfigJson`.\n * @param options - Optional. The write options and the current working directory. The type of `options` is an\n * intersection type of `WriteOptions` and a Record type with an optional `cwd` key of type `string`.\n * @returns A `Promise` that resolves when the tsconfig.json file has been written.\n * The return type of function is `Promise<void>`.\n */\nexport const writeTsConfig = async (data: TsConfigJson, options: WriteJsonOptions & { cwd?: URL | string } = {}): Promise<void> => {\n const { cwd, ...writeOptions } = options;\n\n const directory = toPath(options.cwd ?? process.cwd());\n\n await writeJson(join(directory, \"tsconfig.json\"), data, writeOptions);\n};\n\n// @deprecate Please use `writeTsconfig` instead.\nexport const writeTSConfig = writeTsConfig;\n// eslint-disable-next-line import/no-unused-modules\nexport { implicitBaseUrlSymbol } from \"./read-tsconfig\";\n","/**\n * A modified version of `readTsconfig` from `https://github.com/privatenumber/get-tsconfig/blob/develop/src/parse-tsconfig/index.ts`\n *\n * MIT License\n * Copyright (c) Hiroki Osame <hiroki.osame@gmail.com>\n */\nimport { realpathSync } from \"node:fs\";\n\nimport { readFileSync } from \"@visulima/fs\";\nimport { NotFoundError } from \"@visulima/fs/error\";\nimport { parse } from \"jsonc-parser\";\nimport { dirname, join, normalize, relative, resolve, toNamespacedPath } from \"pathe\";\nimport type { TsConfigJson } from \"type-fest\";\n\nimport type { TsConfigJsonResolved } from \"./types\";\nimport resolveExtendsPath from \"./utils/resolve-extends-path\";\n\ntype Options = {\n tscCompatible?: boolean;\n};\n\nconst readJsonc = (jsonPath: string) => parse(readFileSync(jsonPath) as string) as unknown;\n// eslint-disable-next-line security/detect-unsafe-regex\nconst normalizePath = (path: string): string => toNamespacedPath(/^\\.{1,2}(?:\\/.*)?$/.test(path) ? path : `./${path}`);\n\nconst resolveExtends = (extendsPath: string, fromDirectoryPath: string, circularExtendsTracker: Set<string>, options?: Options) => {\n const resolvedExtendsPath = resolveExtendsPath(extendsPath, fromDirectoryPath);\n\n if (!resolvedExtendsPath) {\n throw new NotFoundError(`No such file or directory, for '${extendsPath}' found.`);\n }\n\n if (circularExtendsTracker.has(resolvedExtendsPath)) {\n throw new Error(`Circularity detected while resolving configuration: ${resolvedExtendsPath}`);\n }\n\n circularExtendsTracker.add(resolvedExtendsPath);\n\n const extendsDirectoryPath = dirname(resolvedExtendsPath);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const extendsConfig = internalParseTsConfig(resolvedExtendsPath, options, circularExtendsTracker);\n\n delete extendsConfig.references;\n\n const { compilerOptions } = extendsConfig;\n\n if (compilerOptions) {\n const resolvePaths = [\"baseUrl\", \"outDir\"] as const;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of resolvePaths) {\n // eslint-disable-next-line security/detect-object-injection\n const unresolvedPath = compilerOptions[property];\n\n if (unresolvedPath) {\n // eslint-disable-next-line security/detect-object-injection\n compilerOptions[property] = relative(fromDirectoryPath, join(extendsDirectoryPath, unresolvedPath)).replaceAll(\"\\\\\", \"/\") || \"./\";\n }\n }\n }\n\n if (extendsConfig.files) {\n extendsConfig.files = extendsConfig.files.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n if (extendsConfig.include) {\n extendsConfig.include = extendsConfig.include.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n if (extendsConfig.exclude) {\n extendsConfig.exclude = extendsConfig.exclude.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n return extendsConfig;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst internalParseTsConfig = (tsconfigPath: string, options?: Options, circularExtendsTracker = new Set<string>()): TsConfigJsonResolved => {\n let realTsconfigPath: string;\n\n try {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n realTsconfigPath = realpathSync(tsconfigPath) as string;\n } catch {\n throw new Error(`Cannot resolve tsconfig at path: ${tsconfigPath}`);\n }\n\n /**\n * Decided not to cache the TsConfigJsonResolved object because it's\n * mutable.\n *\n * Note how `resolveExtends` can call `readTsconfig` rescursively\n * and actually mutates the object. It can also be mutated in\n * user-land.\n *\n * By only caching fs results, we can avoid serving mutated objects\n */\n let config: TsConfigJson = readJsonc(realTsconfigPath) || {};\n\n if (typeof config !== \"object\") {\n throw new SyntaxError(`Failed to parse tsconfig at: ${tsconfigPath}`);\n }\n\n const directoryPath = dirname(realTsconfigPath);\n\n if (config.compilerOptions) {\n const { compilerOptions } = config;\n if (compilerOptions.paths && !compilerOptions.baseUrl) {\n type WithImplicitBaseUrl = TsConfigJson.CompilerOptions & {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n [implicitBaseUrlSymbol]: string;\n };\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-use-before-define\n (compilerOptions as WithImplicitBaseUrl)[implicitBaseUrlSymbol] = directoryPath;\n }\n }\n\n if (config.extends) {\n const extendsPathList = Array.isArray(config.extends) ? config.extends : [config.extends];\n\n delete config.extends;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax,etc/no-assign-mutated-array\n for (const extendsPath of extendsPathList.reverse()) {\n const extendsConfig = resolveExtends(extendsPath, directoryPath, new Set(circularExtendsTracker), options);\n const merged = {\n ...extendsConfig,\n ...config,\n\n compilerOptions: {\n ...extendsConfig.compilerOptions,\n ...config.compilerOptions,\n },\n };\n\n if (extendsConfig.watchOptions) {\n merged.watchOptions = {\n ...extendsConfig.watchOptions,\n ...config.watchOptions,\n };\n }\n\n config = merged;\n }\n }\n\n if (config.compilerOptions) {\n const { compilerOptions } = config;\n const normalizedPaths = [\"baseUrl\", \"rootDir\"] as const;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of normalizedPaths) {\n // eslint-disable-next-line security/detect-object-injection\n const unresolvedPath = compilerOptions[property];\n\n if (unresolvedPath) {\n const resolvedBaseUrl = resolve(directoryPath, unresolvedPath);\n const relativeBaseUrl = relative(directoryPath, resolvedBaseUrl);\n\n // eslint-disable-next-line security/detect-object-injection\n compilerOptions[property] = normalizePath(relativeBaseUrl);\n }\n }\n\n const { outDir } = compilerOptions;\n\n if (outDir) {\n if (!Array.isArray(config.exclude)) {\n config.exclude = [];\n }\n\n if (!config.exclude.includes(outDir)) {\n config.exclude.push(outDir);\n }\n\n compilerOptions.outDir = normalizePath(outDir);\n }\n\n if (options?.tscCompatible && compilerOptions.module === \"node16\") {\n compilerOptions.allowSyntheticDefaultImports = compilerOptions.allowSyntheticDefaultImports ?? true;\n compilerOptions.esModuleInterop = compilerOptions.esModuleInterop ?? true;\n compilerOptions.moduleDetection = compilerOptions.moduleDetection ?? \"force\";\n compilerOptions.moduleResolution = compilerOptions.moduleResolution ?? \"node16\";\n compilerOptions.target = compilerOptions.target ?? \"es2022\";\n compilerOptions.useDefineForClassFields = compilerOptions.useDefineForClassFields ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.strict) {\n compilerOptions.noImplicitAny = compilerOptions.noImplicitAny ?? true;\n compilerOptions.noImplicitThis = compilerOptions.noImplicitThis ?? true;\n compilerOptions.strictNullChecks = compilerOptions.strictNullChecks ?? true;\n compilerOptions.strictFunctionTypes = compilerOptions.strictFunctionTypes ?? true;\n compilerOptions.strictBindCallApply = compilerOptions.strictBindCallApply ?? true;\n compilerOptions.strictPropertyInitialization = compilerOptions.strictPropertyInitialization ?? true;\n compilerOptions.alwaysStrict = compilerOptions.alwaysStrict ?? true;\n compilerOptions.useUnknownInCatchVariables = compilerOptions.useUnknownInCatchVariables ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.isolatedModules) {\n compilerOptions.preserveConstEnums = compilerOptions.preserveConstEnums ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.esModuleInterop) {\n compilerOptions.allowSyntheticDefaultImports = compilerOptions.allowSyntheticDefaultImports ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.target === \"esnext\") {\n compilerOptions.useDefineForClassFields = compilerOptions.useDefineForClassFields ?? true;\n }\n } else {\n config.compilerOptions = {};\n }\n\n if (config.files) {\n config.files = config.files.map((element) => normalizePath(element));\n }\n\n if (config.include) {\n config.include = config.include.map((element) => normalize(element));\n }\n\n if (config.watchOptions) {\n const { watchOptions } = config;\n\n if (watchOptions.excludeDirectories) {\n watchOptions.excludeDirectories = watchOptions.excludeDirectories.map((excludePath) => resolve(directoryPath, excludePath));\n }\n }\n\n return config;\n};\n\nexport const implicitBaseUrlSymbol = Symbol(\"implicitBaseUrl\");\nexport const readTsConfig = (tsconfigPath: string, options?: Options): TsConfigJsonResolved => internalParseTsConfig(tsconfigPath, options);\n","/**\n * A modified version of `resolveExtendsPath` from `https://github.com/privatenumber/get-tsconfig/blob/develop/src/parse-tsconfig/resolve-extends-path.ts`\n *\n * MIT License\n * Copyright (c) Hiroki Osame <hiroki.osame@gmail.com>\n */\nimport { existsSync, statSync } from \"node:fs\";\nimport Module from \"node:module\";\nimport { isAbsolute, join, resolve } from \"node:path\";\n\nimport { findUpSync, readFileSync } from \"@visulima/fs\";\nimport { parse } from \"jsonc-parser\";\nimport type { PathConditions } from \"resolve-pkg-maps\";\nimport { resolveExports } from \"resolve-pkg-maps\";\nimport type { PackageJson } from \"type-fest\";\n\nimport type { Cache } from \"../types\";\n\nconst readJsonc = (jsonPath: string) => parse(readFileSync(jsonPath) as string) as unknown;\n\nconst getPnpApi = () => {\n const { findPnpApi } = Module;\n\n // https://yarnpkg.com/advanced/pnpapi/#requirepnpapi\n return findPnpApi?.(process.cwd());\n};\n\nconst resolveFromPackageJsonPath = (packageJsonPath: string, subpath: string, ignoreExports?: boolean, cache?: Cache<string>) => {\n const cacheKey = `resolveFromPackageJsonPath:${packageJsonPath}:${subpath}:${ignoreExports}`;\n\n if (cache?.has(cacheKey)) {\n return cache.get(cacheKey);\n }\n\n const packageJson = readJsonc(packageJsonPath);\n\n if (!packageJson) {\n return undefined;\n }\n\n let resolvedPath = subpath || \"tsconfig.json\";\n\n if (!ignoreExports && (packageJson as PackageJson).exports) {\n try {\n const [resolvedExport] = resolveExports((packageJson as PackageJson).exports as PathConditions, subpath, [\"require\", \"types\"]);\n\n resolvedPath = resolvedExport as string;\n } catch {\n // Block\n return false;\n }\n } else if (!subpath && (packageJson as PackageJson).tsconfig) {\n resolvedPath = (packageJson as PackageJson).tsconfig as string;\n }\n\n resolvedPath = join(packageJsonPath, \"..\", resolvedPath);\n\n cache?.set(cacheKey, resolvedPath);\n\n return resolvedPath;\n};\n\nconst PACKAGE_JSON = \"package.json\";\nconst TS_CONFIG_JSON = \"tsconfig.json\";\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst resolveExtendsPath = (requestedPath: string, directoryPath: string, cache?: Cache<string>): string | undefined => {\n let filePath = requestedPath;\n\n if (requestedPath === \"..\") {\n filePath = join(filePath, TS_CONFIG_JSON);\n }\n\n if (requestedPath.startsWith(\".\")) {\n filePath = resolve(directoryPath, filePath);\n }\n\n if (isAbsolute(filePath)) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(filePath)) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (statSync(filePath).isFile()) {\n return filePath;\n }\n } else if (!filePath.endsWith(\".json\")) {\n const jsonPath = `${filePath}.json`;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(jsonPath)) {\n return jsonPath;\n }\n }\n\n return undefined;\n }\n\n const [orgOrName, ...remaining] = requestedPath.split(\"/\");\n const packageName = ((orgOrName as string).startsWith(\"@\") ? `${orgOrName}/${remaining.shift()}` : orgOrName) as string;\n const subpath = remaining.join(\"/\");\n\n const pnpApi = getPnpApi();\n\n if (pnpApi) {\n const { resolveRequest: resolveWithPnp } = pnpApi;\n\n try {\n if (packageName === requestedPath) {\n const packageJsonPath = resolveWithPnp(join(packageName, PACKAGE_JSON), directoryPath);\n\n if (packageJsonPath) {\n const resolvedPath = resolveFromPackageJsonPath(packageJsonPath, subpath, false, cache);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n } else {\n let resolved: string | null;\n\n try {\n resolved = resolveWithPnp(requestedPath, directoryPath, { extensions: [\".json\"] });\n } catch {\n resolved = resolveWithPnp(join(requestedPath, TS_CONFIG_JSON), directoryPath);\n }\n\n if (resolved) {\n return resolved;\n }\n }\n } catch {\n /* empty */\n }\n }\n\n const packagePath = findUpSync(\n (directory) => {\n const path = join(directory, \"node_modules\", packageName);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(path)) {\n return join(\"node_modules\", packageName);\n }\n\n return undefined;\n },\n {\n cwd: directoryPath,\n type: \"directory\",\n },\n );\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!packagePath || !statSync(packagePath).isDirectory()) {\n return undefined;\n }\n\n const packageJsonPath = join(packagePath, PACKAGE_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(packageJsonPath)) {\n const resolvedPath = resolveFromPackageJsonPath(packageJsonPath, subpath, false, cache);\n\n // Blocked\n if (resolvedPath === false) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath) && statSync(resolvedPath).isFile()) {\n return resolvedPath;\n }\n }\n\n const fullPackagePath = join(packagePath, subpath);\n const jsonExtension = fullPackagePath.endsWith(\".json\");\n\n if (!jsonExtension) {\n const fullPackagePathWithJson = `${fullPackagePath}.json`;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(fullPackagePathWithJson)) {\n return fullPackagePathWithJson;\n }\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!existsSync(fullPackagePath)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (statSync(fullPackagePath).isDirectory()) {\n const fullPackageJsonPath = join(fullPackagePath, PACKAGE_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(fullPackageJsonPath)) {\n const resolvedPath = resolveFromPackageJsonPath(fullPackageJsonPath, \"\", true, cache);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n\n const tsconfigPath = join(fullPackagePath, TS_CONFIG_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(tsconfigPath)) {\n return tsconfigPath;\n }\n } else if (jsonExtension) {\n return fullPackagePath;\n }\n\n return undefined;\n};\n\nexport default resolveExtendsPath;\n"]}
package/dist/index.cjs CHANGED
@@ -5,13 +5,13 @@ var chunkWOLHGXXJ_cjs = require('./chunk-WOLHGXXJ.cjs');
5
5
  var chunk5YG33J5B_cjs = require('./chunk-5YG33J5B.cjs');
6
6
  var chunkKSXRMTAQ_cjs = require('./chunk-KSXRMTAQ.cjs');
7
7
  var chunk6KT7465D_cjs = require('./chunk-6KT7465D.cjs');
8
- var chunkOVKFHJQE_cjs = require('./chunk-OVKFHJQE.cjs');
8
+ var chunk3I7BDTA7_cjs = require('./chunk-3I7BDTA7.cjs');
9
9
  var fs = require('fs');
10
10
  var process = require('process');
11
11
  var fs$1 = require('@visulima/fs');
12
12
  var pathe = require('pathe');
13
13
 
14
- var d=(r,e)=>(e?.create&&fs$1.ensureDirSync(r),r),F=async(r,e)=>{if(process.env.CACHE_DIR&&!["0","1","false","true"].includes(process.env.CACHE_DIR))return d(pathe.join(process.env.CACHE_DIR,r),e);let s=await chunk5YG33J5B_cjs.a(e?.cwd??process.cwd());if(!s)return;let o=pathe.join(s,"node_modules"),t=pathe.join(o,".cache"),i=pathe.join(t,r);if(!(fs.existsSync(i)&&!await fs$1.isAccessible(i,fs$1.W_OK))&&!(fs.existsSync(t)&&!await fs$1.isAccessible(t,fs$1.W_OK))&&!(fs.existsSync(o)&&!await fs$1.isAccessible(o,fs$1.W_OK)))return d(i,e)},L=(r,e)=>{if(process.env.CACHE_DIR&&!["0","1","false","true"].includes(process.env.CACHE_DIR))return d(pathe.join(process.env.CACHE_DIR,r),e);let s=chunk5YG33J5B_cjs.b(e?.cwd??process.cwd());if(!s)return;let o=pathe.join(s,"node_modules"),t=pathe.join(o,".cache"),i=pathe.join(t,r);if(!(fs.existsSync(i)&&!fs$1.isAccessibleSync(i,fs$1.W_OK))&&!(fs.existsSync(t)&&!fs$1.isAccessibleSync(t,fs$1.W_OK))&&!(fs.existsSync(o)&&!fs$1.isAccessibleSync(o,fs$1.W_OK)))return d(i,e)};
14
+ var d=(r,e)=>(e?.create&&fs$1.ensureDirSync(r),r),L=async(r,e)=>{if(process.env.CACHE_DIR&&!["0","1","false","true"].includes(process.env.CACHE_DIR))return d(pathe.join(process.env.CACHE_DIR,r),e);let s=await chunk5YG33J5B_cjs.a(e?.cwd??process.cwd());if(!s)return;let o=pathe.join(s,"node_modules"),t=pathe.join(o,".cache"),i=pathe.join(t,r);if(!(fs.existsSync(i)&&!await fs$1.isAccessible(i,fs$1.W_OK))&&!(fs.existsSync(t)&&!await fs$1.isAccessible(t,fs$1.W_OK))&&!(fs.existsSync(o)&&!await fs$1.isAccessible(o,fs$1.W_OK)))return d(i,e)},j=(r,e)=>{if(process.env.CACHE_DIR&&!["0","1","false","true"].includes(process.env.CACHE_DIR))return d(pathe.join(process.env.CACHE_DIR,r),e);let s=chunk5YG33J5B_cjs.b(e?.cwd??process.cwd());if(!s)return;let o=pathe.join(s,"node_modules"),t=pathe.join(o,".cache"),i=pathe.join(t,r);if(!(fs.existsSync(i)&&!fs$1.isAccessibleSync(i,fs$1.W_OK))&&!(fs.existsSync(t)&&!fs$1.isAccessibleSync(t,fs$1.W_OK))&&!(fs.existsSync(o)&&!fs$1.isAccessibleSync(o,fs$1.W_OK)))return d(i,e)};
15
15
 
16
16
  Object.defineProperty(exports, 'PackageNotFoundError', {
17
17
  enumerable: true,
@@ -75,29 +75,33 @@ Object.defineProperty(exports, 'writePackageJsonSync', {
75
75
  });
76
76
  Object.defineProperty(exports, 'findTSConfig', {
77
77
  enumerable: true,
78
- get: function () { return chunkOVKFHJQE_cjs.c; }
78
+ get: function () { return chunk3I7BDTA7_cjs.d; }
79
79
  });
80
80
  Object.defineProperty(exports, 'findTSConfigSync', {
81
81
  enumerable: true,
82
- get: function () { return chunkOVKFHJQE_cjs.e; }
82
+ get: function () { return chunk3I7BDTA7_cjs.f; }
83
83
  });
84
84
  Object.defineProperty(exports, 'findTsConfig', {
85
85
  enumerable: true,
86
- get: function () { return chunkOVKFHJQE_cjs.b; }
86
+ get: function () { return chunk3I7BDTA7_cjs.c; }
87
87
  });
88
88
  Object.defineProperty(exports, 'findTsConfigSync', {
89
89
  enumerable: true,
90
- get: function () { return chunkOVKFHJQE_cjs.d; }
90
+ get: function () { return chunk3I7BDTA7_cjs.e; }
91
+ });
92
+ Object.defineProperty(exports, 'implicitBaseUrlSymbol', {
93
+ enumerable: true,
94
+ get: function () { return chunk3I7BDTA7_cjs.a; }
91
95
  });
92
96
  Object.defineProperty(exports, 'readTsConfig', {
93
97
  enumerable: true,
94
- get: function () { return chunkOVKFHJQE_cjs.a; }
98
+ get: function () { return chunk3I7BDTA7_cjs.b; }
95
99
  });
96
100
  Object.defineProperty(exports, 'writeTSConfig', {
97
101
  enumerable: true,
98
- get: function () { return chunkOVKFHJQE_cjs.g; }
102
+ get: function () { return chunk3I7BDTA7_cjs.h; }
99
103
  });
100
- exports.findCacheDirectory = F;
101
- exports.findCacheDirectorySync = L;
104
+ exports.findCacheDirectory = L;
105
+ exports.findCacheDirectorySync = j;
102
106
  //# sourceMappingURL=out.js.map
103
107
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/find-cache-dir.ts"],"names":["existsSync","cwd","env","ensureDirSync","isAccessible","isAccessibleSync","W_OK","join","useDirectory","directory","options","findCacheDirectory","name","rootDirectory","findPackageRoot","nodeModulesDirectory","cacheDirectory","cacheNameDirectory","findCacheDirectorySync","findPackageRootSync"],"mappings":"+VACA,OAAS,cAAAA,MAAkB,KAC3B,OAAS,OAAAC,EAAK,OAAAC,MAAW,UAEzB,OAAS,iBAAAC,EAAe,gBAAAC,EAAc,oBAAAC,EAAkB,QAAAC,MAAY,eACpE,OAAS,QAAAC,MAAY,QASrB,IAAMC,EAAe,CAACC,EAAmBC,KACjCA,GAAS,QACTP,EAAcM,CAAS,EAGpBA,GAGEE,EAAqB,MAAOC,EAAcF,IAAmD,CACtG,GAAIR,EAAI,WAAa,CAAC,CAAC,IAAK,IAAK,QAAS,MAAM,EAAE,SAASA,EAAI,SAAS,EACpE,OAAOM,EAAaD,EAAKL,EAAI,UAAWU,CAAI,EAAGF,CAAO,EAG1D,IAAMG,EAAgB,MAAMC,EAAgBJ,GAAS,KAAOT,EAAI,CAAC,EAEjE,GAAI,CAACY,EACD,OAGJ,IAAME,EAAuBR,EAAKM,EAAe,cAAc,EACzDG,EAAiBT,EAAKQ,EAAsB,QAAQ,EACpDE,EAAqBV,EAAKS,EAAgBJ,CAAI,EAMpD,GAAI,EAAAZ,EAAWiB,CAAkB,GAAK,CAAE,MAAMb,EAAaa,EAAoBX,CAAI,IAK/E,EAAAN,EAAWgB,CAAc,GAAK,CAAE,MAAMZ,EAAaY,EAAgBV,CAAI,IAKvE,EAAAN,EAAWe,CAAoB,GAAK,CAAE,MAAMX,EAAaW,EAAsBT,CAAI,GAIvF,OAAOE,EAAaS,EAAoBP,CAAO,CACnD,EAEaQ,EAAyB,CAACN,EAAcF,IAA0C,CAC3F,GAAIR,EAAI,WAAa,CAAC,CAAC,IAAK,IAAK,QAAS,MAAM,EAAE,SAASA,EAAI,SAAS,EACpE,OAAOM,EAAaD,EAAKL,EAAI,UAAWU,CAAI,EAAGF,CAAO,EAG1D,IAAMG,EAAgBM,EAAoBT,GAAS,KAAOT,EAAI,CAAC,EAE/D,GAAI,CAACY,EACD,OAGJ,IAAME,EAAuBR,EAAKM,EAAe,cAAc,EACzDG,EAAiBT,EAAKQ,EAAsB,QAAQ,EACpDE,EAAqBV,EAAKS,EAAgBJ,CAAI,EAMpD,GAAI,EAAAZ,EAAWiB,CAAkB,GAAK,CAACZ,EAAiBY,EAAoBX,CAAI,IAK5E,EAAAN,EAAWgB,CAAc,GAAK,CAACX,EAAiBW,EAAgBV,CAAI,IAKpE,EAAAN,EAAWe,CAAoB,GAAK,CAACV,EAAiBU,EAAsBT,CAAI,GAIpF,OAAOE,EAAaS,EAAoBP,CAAO,CACnD","sourcesContent":["// eslint-disable-next-line unicorn/prevent-abbreviations\nimport { existsSync } from \"node:fs\";\nimport { cwd, env } from \"node:process\";\n\nimport { ensureDirSync, isAccessible, isAccessibleSync, W_OK } from \"@visulima/fs\";\nimport { join } from \"pathe\";\n\nimport { findPackageRoot, findPackageRootSync } from \"./package\";\n\ntype Options = {\n create?: boolean;\n cwd?: URL | string;\n};\n\nconst useDirectory = (directory: string, options?: Options): string => {\n if (options?.create) {\n ensureDirSync(directory);\n }\n\n return directory;\n};\n\nexport const findCacheDirectory = async (name: string, options?: Options): Promise<string | undefined> => {\n if (env.CACHE_DIR && ![\"0\", \"1\", \"false\", \"true\"].includes(env.CACHE_DIR)) {\n return useDirectory(join(env.CACHE_DIR, name), options);\n }\n\n const rootDirectory = await findPackageRoot(options?.cwd ?? cwd());\n\n if (!rootDirectory) {\n return undefined;\n }\n\n const nodeModulesDirectory = join(rootDirectory, \"node_modules\");\n const cacheDirectory = join(nodeModulesDirectory, \".cache\");\n const cacheNameDirectory = join(cacheDirectory, name);\n\n // If node_modules/.cache/${name} exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise, if node_modules/.cache exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise: If node_modules is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheNameDirectory) && !(await isAccessible(cacheNameDirectory, W_OK))) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheDirectory) && !(await isAccessible(cacheDirectory, W_OK))) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(nodeModulesDirectory) && !(await isAccessible(nodeModulesDirectory, W_OK))) {\n return undefined;\n }\n\n return useDirectory(cacheNameDirectory, options);\n};\n\nexport const findCacheDirectorySync = (name: string, options?: Options): string | undefined => {\n if (env.CACHE_DIR && ![\"0\", \"1\", \"false\", \"true\"].includes(env.CACHE_DIR)) {\n return useDirectory(join(env.CACHE_DIR, name), options);\n }\n\n const rootDirectory = findPackageRootSync(options?.cwd ?? cwd());\n\n if (!rootDirectory) {\n return undefined;\n }\n\n const nodeModulesDirectory = join(rootDirectory, \"node_modules\");\n const cacheDirectory = join(nodeModulesDirectory, \".cache\");\n const cacheNameDirectory = join(cacheDirectory, name);\n\n // If node_modules/.cache/${name} exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise, if node_modules/.cache exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise: If node_modules is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheNameDirectory) && !isAccessibleSync(cacheNameDirectory, W_OK)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheDirectory) && !isAccessibleSync(cacheDirectory, W_OK)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(nodeModulesDirectory) && !isAccessibleSync(nodeModulesDirectory, W_OK)) {\n return undefined;\n }\n\n return useDirectory(cacheNameDirectory, options);\n};\n"]}
1
+ {"version":3,"sources":["../src/find-cache-dir.ts"],"names":["existsSync","cwd","env","ensureDirSync","isAccessible","isAccessibleSync","W_OK","join","useDirectory","directory","options","findCacheDirectory","name","rootDirectory","findPackageRoot","nodeModulesDirectory","cacheDirectory","cacheNameDirectory","findCacheDirectorySync","findPackageRootSync"],"mappings":"sWACA,OAAS,cAAAA,MAAkB,KAC3B,OAAS,OAAAC,EAAK,OAAAC,MAAW,UAEzB,OAAS,iBAAAC,EAAe,gBAAAC,EAAc,oBAAAC,EAAkB,QAAAC,MAAY,eACpE,OAAS,QAAAC,MAAY,QASrB,IAAMC,EAAe,CAACC,EAAmBC,KACjCA,GAAS,QACTP,EAAcM,CAAS,EAGpBA,GAGEE,EAAqB,MAAOC,EAAcF,IAAmD,CACtG,GAAIR,EAAI,WAAa,CAAC,CAAC,IAAK,IAAK,QAAS,MAAM,EAAE,SAASA,EAAI,SAAS,EACpE,OAAOM,EAAaD,EAAKL,EAAI,UAAWU,CAAI,EAAGF,CAAO,EAG1D,IAAMG,EAAgB,MAAMC,EAAgBJ,GAAS,KAAOT,EAAI,CAAC,EAEjE,GAAI,CAACY,EACD,OAGJ,IAAME,EAAuBR,EAAKM,EAAe,cAAc,EACzDG,EAAiBT,EAAKQ,EAAsB,QAAQ,EACpDE,EAAqBV,EAAKS,EAAgBJ,CAAI,EAMpD,GAAI,EAAAZ,EAAWiB,CAAkB,GAAK,CAAE,MAAMb,EAAaa,EAAoBX,CAAI,IAK/E,EAAAN,EAAWgB,CAAc,GAAK,CAAE,MAAMZ,EAAaY,EAAgBV,CAAI,IAKvE,EAAAN,EAAWe,CAAoB,GAAK,CAAE,MAAMX,EAAaW,EAAsBT,CAAI,GAIvF,OAAOE,EAAaS,EAAoBP,CAAO,CACnD,EAEaQ,EAAyB,CAACN,EAAcF,IAA0C,CAC3F,GAAIR,EAAI,WAAa,CAAC,CAAC,IAAK,IAAK,QAAS,MAAM,EAAE,SAASA,EAAI,SAAS,EACpE,OAAOM,EAAaD,EAAKL,EAAI,UAAWU,CAAI,EAAGF,CAAO,EAG1D,IAAMG,EAAgBM,EAAoBT,GAAS,KAAOT,EAAI,CAAC,EAE/D,GAAI,CAACY,EACD,OAGJ,IAAME,EAAuBR,EAAKM,EAAe,cAAc,EACzDG,EAAiBT,EAAKQ,EAAsB,QAAQ,EACpDE,EAAqBV,EAAKS,EAAgBJ,CAAI,EAMpD,GAAI,EAAAZ,EAAWiB,CAAkB,GAAK,CAACZ,EAAiBY,EAAoBX,CAAI,IAK5E,EAAAN,EAAWgB,CAAc,GAAK,CAACX,EAAiBW,EAAgBV,CAAI,IAKpE,EAAAN,EAAWe,CAAoB,GAAK,CAACV,EAAiBU,EAAsBT,CAAI,GAIpF,OAAOE,EAAaS,EAAoBP,CAAO,CACnD","sourcesContent":["// eslint-disable-next-line unicorn/prevent-abbreviations\nimport { existsSync } from \"node:fs\";\nimport { cwd, env } from \"node:process\";\n\nimport { ensureDirSync, isAccessible, isAccessibleSync, W_OK } from \"@visulima/fs\";\nimport { join } from \"pathe\";\n\nimport { findPackageRoot, findPackageRootSync } from \"./package\";\n\ntype Options = {\n create?: boolean;\n cwd?: URL | string;\n};\n\nconst useDirectory = (directory: string, options?: Options): string => {\n if (options?.create) {\n ensureDirSync(directory);\n }\n\n return directory;\n};\n\nexport const findCacheDirectory = async (name: string, options?: Options): Promise<string | undefined> => {\n if (env.CACHE_DIR && ![\"0\", \"1\", \"false\", \"true\"].includes(env.CACHE_DIR)) {\n return useDirectory(join(env.CACHE_DIR, name), options);\n }\n\n const rootDirectory = await findPackageRoot(options?.cwd ?? cwd());\n\n if (!rootDirectory) {\n return undefined;\n }\n\n const nodeModulesDirectory = join(rootDirectory, \"node_modules\");\n const cacheDirectory = join(nodeModulesDirectory, \".cache\");\n const cacheNameDirectory = join(cacheDirectory, name);\n\n // If node_modules/.cache/${name} exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise, if node_modules/.cache exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise: If node_modules is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheNameDirectory) && !(await isAccessible(cacheNameDirectory, W_OK))) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheDirectory) && !(await isAccessible(cacheDirectory, W_OK))) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(nodeModulesDirectory) && !(await isAccessible(nodeModulesDirectory, W_OK))) {\n return undefined;\n }\n\n return useDirectory(cacheNameDirectory, options);\n};\n\nexport const findCacheDirectorySync = (name: string, options?: Options): string | undefined => {\n if (env.CACHE_DIR && ![\"0\", \"1\", \"false\", \"true\"].includes(env.CACHE_DIR)) {\n return useDirectory(join(env.CACHE_DIR, name), options);\n }\n\n const rootDirectory = findPackageRootSync(options?.cwd ?? cwd());\n\n if (!rootDirectory) {\n return undefined;\n }\n\n const nodeModulesDirectory = join(rootDirectory, \"node_modules\");\n const cacheDirectory = join(nodeModulesDirectory, \".cache\");\n const cacheNameDirectory = join(cacheDirectory, name);\n\n // If node_modules/.cache/${name} exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise, if node_modules/.cache exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise: If node_modules is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheNameDirectory) && !isAccessibleSync(cacheNameDirectory, W_OK)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheDirectory) && !isAccessibleSync(cacheDirectory, W_OK)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(nodeModulesDirectory) && !isAccessibleSync(nodeModulesDirectory, W_OK)) {\n return undefined;\n }\n\n return useDirectory(cacheNameDirectory, options);\n};\n"]}
package/dist/index.d.cts CHANGED
@@ -3,23 +3,17 @@ export { RootMonorepo, Strategy, findMonorepoRoot } from './monorepo.cjs';
3
3
  export { findPackageRoot, findPackageRootSync } from './package.cjs';
4
4
  export { NormalizedReadResult, findPackageJson, findPackageJsonSync, parsePackageJson, writePackageJson, writePackageJsonSync } from './package-json.cjs';
5
5
  export { PackageManager, PackageManagerResult, findLockFile, findLockFileSync, findPackageManager, findPackageManagerSync, getPackageManagerVersion, identifyInitiatingPackageManager } from './package-manager.cjs';
6
- import { T as TsConfigJsonResolved } from './types-hoigZ9HA.cjs';
7
- export { N as NormalizedPackageJson, P as PackageJson } from './types-hoigZ9HA.cjs';
8
- export { TsConfigResult, findTSConfig, findTSConfigSync, findTsConfig, findTsConfigSync, writeTSConfig } from './tsconfig.cjs';
6
+ export { T as TsConfigResult, f as findTSConfig, b as findTSConfigSync, a as findTsConfig, c as findTsConfigSync, i as implicitBaseUrlSymbol, r as readTsConfig, w as writeTSConfig } from './tsconfig-d4zwQgCH.cjs';
7
+ export { N as NormalizedPackageJson, P as PackageJson, T as TsConfigJsonResolved } from './types-hoigZ9HA.cjs';
9
8
  export { TsConfigJson } from 'type-fest';
10
9
  import '@visulima/fs';
11
10
  import 'normalize-package-data';
12
11
 
13
- type Options$1 = {
12
+ type Options = {
14
13
  create?: boolean;
15
14
  cwd?: URL | string;
16
15
  };
17
- declare const findCacheDirectory: (name: string, options?: Options$1) => Promise<string | undefined>;
18
- declare const findCacheDirectorySync: (name: string, options?: Options$1) => string | undefined;
19
-
20
- type Options = {
21
- tscCompatible?: boolean;
22
- };
23
- declare const readTsConfig: (tsconfigPath: string, options?: Options) => TsConfigJsonResolved;
16
+ declare const findCacheDirectory: (name: string, options?: Options) => Promise<string | undefined>;
17
+ declare const findCacheDirectorySync: (name: string, options?: Options) => string | undefined;
24
18
 
25
- export { TsConfigJsonResolved, findCacheDirectory, findCacheDirectorySync, readTsConfig };
19
+ export { findCacheDirectory, findCacheDirectorySync };
package/dist/index.d.ts CHANGED
@@ -3,23 +3,17 @@ export { RootMonorepo, Strategy, findMonorepoRoot } from './monorepo.js';
3
3
  export { findPackageRoot, findPackageRootSync } from './package.js';
4
4
  export { NormalizedReadResult, findPackageJson, findPackageJsonSync, parsePackageJson, writePackageJson, writePackageJsonSync } from './package-json.js';
5
5
  export { PackageManager, PackageManagerResult, findLockFile, findLockFileSync, findPackageManager, findPackageManagerSync, getPackageManagerVersion, identifyInitiatingPackageManager } from './package-manager.js';
6
- import { T as TsConfigJsonResolved } from './types-hoigZ9HA.js';
7
- export { N as NormalizedPackageJson, P as PackageJson } from './types-hoigZ9HA.js';
8
- export { TsConfigResult, findTSConfig, findTSConfigSync, findTsConfig, findTsConfigSync, writeTSConfig } from './tsconfig.js';
6
+ export { T as TsConfigResult, f as findTSConfig, b as findTSConfigSync, a as findTsConfig, c as findTsConfigSync, i as implicitBaseUrlSymbol, r as readTsConfig, w as writeTSConfig } from './tsconfig-G-HInwrt.js';
7
+ export { N as NormalizedPackageJson, P as PackageJson, T as TsConfigJsonResolved } from './types-hoigZ9HA.js';
9
8
  export { TsConfigJson } from 'type-fest';
10
9
  import '@visulima/fs';
11
10
  import 'normalize-package-data';
12
11
 
13
- type Options$1 = {
12
+ type Options = {
14
13
  create?: boolean;
15
14
  cwd?: URL | string;
16
15
  };
17
- declare const findCacheDirectory: (name: string, options?: Options$1) => Promise<string | undefined>;
18
- declare const findCacheDirectorySync: (name: string, options?: Options$1) => string | undefined;
19
-
20
- type Options = {
21
- tscCompatible?: boolean;
22
- };
23
- declare const readTsConfig: (tsconfigPath: string, options?: Options) => TsConfigJsonResolved;
16
+ declare const findCacheDirectory: (name: string, options?: Options) => Promise<string | undefined>;
17
+ declare const findCacheDirectorySync: (name: string, options?: Options) => string | undefined;
24
18
 
25
- export { TsConfigJsonResolved, findCacheDirectory, findCacheDirectorySync, readTsConfig };
19
+ export { findCacheDirectory, findCacheDirectorySync };
package/dist/index.js CHANGED
@@ -4,14 +4,14 @@ import { a, b } from './chunk-I3QTPGJY.js';
4
4
  export { a as findPackageRoot, b as findPackageRootSync } from './chunk-I3QTPGJY.js';
5
5
  export { a as findLockFile, b as findLockFileSync, c as findPackageManager, d as findPackageManagerSync, e as getPackageManagerVersion, f as identifyInitiatingPackageManager } from './chunk-44SW4DFI.js';
6
6
  export { a as findPackageJson, b as findPackageJsonSync, e as parsePackageJson, c as writePackageJson, d as writePackageJsonSync } from './chunk-U4YVB3GU.js';
7
- export { c as findTSConfig, e as findTSConfigSync, b as findTsConfig, d as findTsConfigSync, a as readTsConfig, g as writeTSConfig } from './chunk-CMEGXNWH.js';
7
+ export { d as findTSConfig, f as findTSConfigSync, c as findTsConfig, e as findTsConfigSync, a as implicitBaseUrlSymbol, b as readTsConfig, h as writeTSConfig } from './chunk-YUFKVE42.js';
8
8
  import { existsSync } from 'node:fs';
9
9
  import { env, cwd } from 'node:process';
10
10
  import { isAccessible, W_OK, isAccessibleSync, ensureDirSync } from '@visulima/fs';
11
11
  import { join } from 'pathe';
12
12
 
13
- var d=(r,e)=>(e?.create&&ensureDirSync(r),r),L=async(r,e)=>{if(env.CACHE_DIR&&!["0","1","false","true"].includes(env.CACHE_DIR))return d(join(env.CACHE_DIR,r),e);let s=await a(e?.cwd??cwd());if(!s)return;let o=join(s,"node_modules"),t=join(o,".cache"),i=join(t,r);if(!(existsSync(i)&&!await isAccessible(i,W_OK))&&!(existsSync(t)&&!await isAccessible(t,W_OK))&&!(existsSync(o)&&!await isAccessible(o,W_OK)))return d(i,e)},j=(r,e)=>{if(env.CACHE_DIR&&!["0","1","false","true"].includes(env.CACHE_DIR))return d(join(env.CACHE_DIR,r),e);let s=b(e?.cwd??cwd());if(!s)return;let o=join(s,"node_modules"),t=join(o,".cache"),i=join(t,r);if(!(existsSync(i)&&!isAccessibleSync(i,W_OK))&&!(existsSync(t)&&!isAccessibleSync(t,W_OK))&&!(existsSync(o)&&!isAccessibleSync(o,W_OK)))return d(i,e)};
13
+ var d=(r,e)=>(e?.create&&ensureDirSync(r),r),j=async(r,e)=>{if(env.CACHE_DIR&&!["0","1","false","true"].includes(env.CACHE_DIR))return d(join(env.CACHE_DIR,r),e);let s=await a(e?.cwd??cwd());if(!s)return;let o=join(s,"node_modules"),t=join(o,".cache"),i=join(t,r);if(!(existsSync(i)&&!await isAccessible(i,W_OK))&&!(existsSync(t)&&!await isAccessible(t,W_OK))&&!(existsSync(o)&&!await isAccessible(o,W_OK)))return d(i,e)},v=(r,e)=>{if(env.CACHE_DIR&&!["0","1","false","true"].includes(env.CACHE_DIR))return d(join(env.CACHE_DIR,r),e);let s=b(e?.cwd??cwd());if(!s)return;let o=join(s,"node_modules"),t=join(o,".cache"),i=join(t,r);if(!(existsSync(i)&&!isAccessibleSync(i,W_OK))&&!(existsSync(t)&&!isAccessibleSync(t,W_OK))&&!(existsSync(o)&&!isAccessibleSync(o,W_OK)))return d(i,e)};
14
14
 
15
- export { L as findCacheDirectory, j as findCacheDirectorySync };
15
+ export { j as findCacheDirectory, v as findCacheDirectorySync };
16
16
  //# sourceMappingURL=out.js.map
17
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/find-cache-dir.ts"],"names":["existsSync","cwd","env","ensureDirSync","isAccessible","isAccessibleSync","W_OK","join","useDirectory","directory","options","findCacheDirectory","name","rootDirectory","findPackageRoot","nodeModulesDirectory","cacheDirectory","cacheNameDirectory","findCacheDirectorySync","findPackageRootSync"],"mappings":"yVACA,OAAS,cAAAA,MAAkB,UAC3B,OAAS,OAAAC,EAAK,OAAAC,MAAW,eAEzB,OAAS,iBAAAC,EAAe,gBAAAC,EAAc,oBAAAC,EAAkB,QAAAC,MAAY,eACpE,OAAS,QAAAC,MAAY,QASrB,IAAMC,EAAe,CAACC,EAAmBC,KACjCA,GAAS,QACTP,EAAcM,CAAS,EAGpBA,GAGEE,EAAqB,MAAOC,EAAcF,IAAmD,CACtG,GAAIR,EAAI,WAAa,CAAC,CAAC,IAAK,IAAK,QAAS,MAAM,EAAE,SAASA,EAAI,SAAS,EACpE,OAAOM,EAAaD,EAAKL,EAAI,UAAWU,CAAI,EAAGF,CAAO,EAG1D,IAAMG,EAAgB,MAAMC,EAAgBJ,GAAS,KAAOT,EAAI,CAAC,EAEjE,GAAI,CAACY,EACD,OAGJ,IAAME,EAAuBR,EAAKM,EAAe,cAAc,EACzDG,EAAiBT,EAAKQ,EAAsB,QAAQ,EACpDE,EAAqBV,EAAKS,EAAgBJ,CAAI,EAMpD,GAAI,EAAAZ,EAAWiB,CAAkB,GAAK,CAAE,MAAMb,EAAaa,EAAoBX,CAAI,IAK/E,EAAAN,EAAWgB,CAAc,GAAK,CAAE,MAAMZ,EAAaY,EAAgBV,CAAI,IAKvE,EAAAN,EAAWe,CAAoB,GAAK,CAAE,MAAMX,EAAaW,EAAsBT,CAAI,GAIvF,OAAOE,EAAaS,EAAoBP,CAAO,CACnD,EAEaQ,EAAyB,CAACN,EAAcF,IAA0C,CAC3F,GAAIR,EAAI,WAAa,CAAC,CAAC,IAAK,IAAK,QAAS,MAAM,EAAE,SAASA,EAAI,SAAS,EACpE,OAAOM,EAAaD,EAAKL,EAAI,UAAWU,CAAI,EAAGF,CAAO,EAG1D,IAAMG,EAAgBM,EAAoBT,GAAS,KAAOT,EAAI,CAAC,EAE/D,GAAI,CAACY,EACD,OAGJ,IAAME,EAAuBR,EAAKM,EAAe,cAAc,EACzDG,EAAiBT,EAAKQ,EAAsB,QAAQ,EACpDE,EAAqBV,EAAKS,EAAgBJ,CAAI,EAMpD,GAAI,EAAAZ,EAAWiB,CAAkB,GAAK,CAACZ,EAAiBY,EAAoBX,CAAI,IAK5E,EAAAN,EAAWgB,CAAc,GAAK,CAACX,EAAiBW,EAAgBV,CAAI,IAKpE,EAAAN,EAAWe,CAAoB,GAAK,CAACV,EAAiBU,EAAsBT,CAAI,GAIpF,OAAOE,EAAaS,EAAoBP,CAAO,CACnD","sourcesContent":["// eslint-disable-next-line unicorn/prevent-abbreviations\nimport { existsSync } from \"node:fs\";\nimport { cwd, env } from \"node:process\";\n\nimport { ensureDirSync, isAccessible, isAccessibleSync, W_OK } from \"@visulima/fs\";\nimport { join } from \"pathe\";\n\nimport { findPackageRoot, findPackageRootSync } from \"./package\";\n\ntype Options = {\n create?: boolean;\n cwd?: URL | string;\n};\n\nconst useDirectory = (directory: string, options?: Options): string => {\n if (options?.create) {\n ensureDirSync(directory);\n }\n\n return directory;\n};\n\nexport const findCacheDirectory = async (name: string, options?: Options): Promise<string | undefined> => {\n if (env.CACHE_DIR && ![\"0\", \"1\", \"false\", \"true\"].includes(env.CACHE_DIR)) {\n return useDirectory(join(env.CACHE_DIR, name), options);\n }\n\n const rootDirectory = await findPackageRoot(options?.cwd ?? cwd());\n\n if (!rootDirectory) {\n return undefined;\n }\n\n const nodeModulesDirectory = join(rootDirectory, \"node_modules\");\n const cacheDirectory = join(nodeModulesDirectory, \".cache\");\n const cacheNameDirectory = join(cacheDirectory, name);\n\n // If node_modules/.cache/${name} exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise, if node_modules/.cache exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise: If node_modules is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheNameDirectory) && !(await isAccessible(cacheNameDirectory, W_OK))) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheDirectory) && !(await isAccessible(cacheDirectory, W_OK))) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(nodeModulesDirectory) && !(await isAccessible(nodeModulesDirectory, W_OK))) {\n return undefined;\n }\n\n return useDirectory(cacheNameDirectory, options);\n};\n\nexport const findCacheDirectorySync = (name: string, options?: Options): string | undefined => {\n if (env.CACHE_DIR && ![\"0\", \"1\", \"false\", \"true\"].includes(env.CACHE_DIR)) {\n return useDirectory(join(env.CACHE_DIR, name), options);\n }\n\n const rootDirectory = findPackageRootSync(options?.cwd ?? cwd());\n\n if (!rootDirectory) {\n return undefined;\n }\n\n const nodeModulesDirectory = join(rootDirectory, \"node_modules\");\n const cacheDirectory = join(nodeModulesDirectory, \".cache\");\n const cacheNameDirectory = join(cacheDirectory, name);\n\n // If node_modules/.cache/${name} exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise, if node_modules/.cache exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise: If node_modules is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheNameDirectory) && !isAccessibleSync(cacheNameDirectory, W_OK)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheDirectory) && !isAccessibleSync(cacheDirectory, W_OK)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(nodeModulesDirectory) && !isAccessibleSync(nodeModulesDirectory, W_OK)) {\n return undefined;\n }\n\n return useDirectory(cacheNameDirectory, options);\n};\n"]}
1
+ {"version":3,"sources":["../src/find-cache-dir.ts"],"names":["existsSync","cwd","env","ensureDirSync","isAccessible","isAccessibleSync","W_OK","join","useDirectory","directory","options","findCacheDirectory","name","rootDirectory","findPackageRoot","nodeModulesDirectory","cacheDirectory","cacheNameDirectory","findCacheDirectorySync","findPackageRootSync"],"mappings":"gWACA,OAAS,cAAAA,MAAkB,UAC3B,OAAS,OAAAC,EAAK,OAAAC,MAAW,eAEzB,OAAS,iBAAAC,EAAe,gBAAAC,EAAc,oBAAAC,EAAkB,QAAAC,MAAY,eACpE,OAAS,QAAAC,MAAY,QASrB,IAAMC,EAAe,CAACC,EAAmBC,KACjCA,GAAS,QACTP,EAAcM,CAAS,EAGpBA,GAGEE,EAAqB,MAAOC,EAAcF,IAAmD,CACtG,GAAIR,EAAI,WAAa,CAAC,CAAC,IAAK,IAAK,QAAS,MAAM,EAAE,SAASA,EAAI,SAAS,EACpE,OAAOM,EAAaD,EAAKL,EAAI,UAAWU,CAAI,EAAGF,CAAO,EAG1D,IAAMG,EAAgB,MAAMC,EAAgBJ,GAAS,KAAOT,EAAI,CAAC,EAEjE,GAAI,CAACY,EACD,OAGJ,IAAME,EAAuBR,EAAKM,EAAe,cAAc,EACzDG,EAAiBT,EAAKQ,EAAsB,QAAQ,EACpDE,EAAqBV,EAAKS,EAAgBJ,CAAI,EAMpD,GAAI,EAAAZ,EAAWiB,CAAkB,GAAK,CAAE,MAAMb,EAAaa,EAAoBX,CAAI,IAK/E,EAAAN,EAAWgB,CAAc,GAAK,CAAE,MAAMZ,EAAaY,EAAgBV,CAAI,IAKvE,EAAAN,EAAWe,CAAoB,GAAK,CAAE,MAAMX,EAAaW,EAAsBT,CAAI,GAIvF,OAAOE,EAAaS,EAAoBP,CAAO,CACnD,EAEaQ,EAAyB,CAACN,EAAcF,IAA0C,CAC3F,GAAIR,EAAI,WAAa,CAAC,CAAC,IAAK,IAAK,QAAS,MAAM,EAAE,SAASA,EAAI,SAAS,EACpE,OAAOM,EAAaD,EAAKL,EAAI,UAAWU,CAAI,EAAGF,CAAO,EAG1D,IAAMG,EAAgBM,EAAoBT,GAAS,KAAOT,EAAI,CAAC,EAE/D,GAAI,CAACY,EACD,OAGJ,IAAME,EAAuBR,EAAKM,EAAe,cAAc,EACzDG,EAAiBT,EAAKQ,EAAsB,QAAQ,EACpDE,EAAqBV,EAAKS,EAAgBJ,CAAI,EAMpD,GAAI,EAAAZ,EAAWiB,CAAkB,GAAK,CAACZ,EAAiBY,EAAoBX,CAAI,IAK5E,EAAAN,EAAWgB,CAAc,GAAK,CAACX,EAAiBW,EAAgBV,CAAI,IAKpE,EAAAN,EAAWe,CAAoB,GAAK,CAACV,EAAiBU,EAAsBT,CAAI,GAIpF,OAAOE,EAAaS,EAAoBP,CAAO,CACnD","sourcesContent":["// eslint-disable-next-line unicorn/prevent-abbreviations\nimport { existsSync } from \"node:fs\";\nimport { cwd, env } from \"node:process\";\n\nimport { ensureDirSync, isAccessible, isAccessibleSync, W_OK } from \"@visulima/fs\";\nimport { join } from \"pathe\";\n\nimport { findPackageRoot, findPackageRootSync } from \"./package\";\n\ntype Options = {\n create?: boolean;\n cwd?: URL | string;\n};\n\nconst useDirectory = (directory: string, options?: Options): string => {\n if (options?.create) {\n ensureDirSync(directory);\n }\n\n return directory;\n};\n\nexport const findCacheDirectory = async (name: string, options?: Options): Promise<string | undefined> => {\n if (env.CACHE_DIR && ![\"0\", \"1\", \"false\", \"true\"].includes(env.CACHE_DIR)) {\n return useDirectory(join(env.CACHE_DIR, name), options);\n }\n\n const rootDirectory = await findPackageRoot(options?.cwd ?? cwd());\n\n if (!rootDirectory) {\n return undefined;\n }\n\n const nodeModulesDirectory = join(rootDirectory, \"node_modules\");\n const cacheDirectory = join(nodeModulesDirectory, \".cache\");\n const cacheNameDirectory = join(cacheDirectory, name);\n\n // If node_modules/.cache/${name} exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise, if node_modules/.cache exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise: If node_modules is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheNameDirectory) && !(await isAccessible(cacheNameDirectory, W_OK))) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheDirectory) && !(await isAccessible(cacheDirectory, W_OK))) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(nodeModulesDirectory) && !(await isAccessible(nodeModulesDirectory, W_OK))) {\n return undefined;\n }\n\n return useDirectory(cacheNameDirectory, options);\n};\n\nexport const findCacheDirectorySync = (name: string, options?: Options): string | undefined => {\n if (env.CACHE_DIR && ![\"0\", \"1\", \"false\", \"true\"].includes(env.CACHE_DIR)) {\n return useDirectory(join(env.CACHE_DIR, name), options);\n }\n\n const rootDirectory = findPackageRootSync(options?.cwd ?? cwd());\n\n if (!rootDirectory) {\n return undefined;\n }\n\n const nodeModulesDirectory = join(rootDirectory, \"node_modules\");\n const cacheDirectory = join(nodeModulesDirectory, \".cache\");\n const cacheNameDirectory = join(cacheDirectory, name);\n\n // If node_modules/.cache/${name} exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise, if node_modules/.cache exists: If it is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // Otherwise: If node_modules is writeable, return node_modules/.cache/${name}, otherwise return undefined\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheNameDirectory) && !isAccessibleSync(cacheNameDirectory, W_OK)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(cacheDirectory) && !isAccessibleSync(cacheDirectory, W_OK)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(nodeModulesDirectory) && !isAccessibleSync(nodeModulesDirectory, W_OK)) {\n return undefined;\n }\n\n return useDirectory(cacheNameDirectory, options);\n};\n"]}
@@ -0,0 +1,30 @@
1
+ import { WriteJsonOptions } from '@visulima/fs';
2
+ import { TsConfigJson } from 'type-fest';
3
+ import { T as TsConfigJsonResolved } from './types-hoigZ9HA.js';
4
+
5
+ type Options$1 = {
6
+ tscCompatible?: boolean;
7
+ };
8
+ declare const implicitBaseUrlSymbol: unique symbol;
9
+ declare const readTsConfig: (tsconfigPath: string, options?: Options$1) => TsConfigJsonResolved;
10
+
11
+ type Options = {
12
+ cache?: Map<string, TsConfigJsonResolved> | boolean;
13
+ configFileName?: string;
14
+ };
15
+ type TsConfigResult = {
16
+ config: TsConfigJsonResolved;
17
+ path: string;
18
+ };
19
+ declare const findTsConfig: (cwd?: URL | string, options?: Options) => Promise<TsConfigResult>;
20
+ declare const findTSConfig: (cwd?: URL | string, options?: Options) => Promise<TsConfigResult>;
21
+ declare const findTsConfigSync: (cwd?: URL | string, options?: Options) => TsConfigResult;
22
+ declare const findTSConfigSync: (cwd?: URL | string, options?: Options) => TsConfigResult;
23
+ declare const writeTsConfig: (data: TsConfigJson, options?: WriteJsonOptions & {
24
+ cwd?: URL | string;
25
+ }) => Promise<void>;
26
+ declare const writeTSConfig: (data: TsConfigJson, options?: WriteJsonOptions & {
27
+ cwd?: URL | string;
28
+ }) => Promise<void>;
29
+
30
+ export { type TsConfigResult as T, findTsConfig as a, findTSConfigSync as b, findTsConfigSync as c, writeTsConfig as d, findTSConfig as f, implicitBaseUrlSymbol as i, readTsConfig as r, writeTSConfig as w };
@@ -0,0 +1,30 @@
1
+ import { WriteJsonOptions } from '@visulima/fs';
2
+ import { TsConfigJson } from 'type-fest';
3
+ import { T as TsConfigJsonResolved } from './types-hoigZ9HA.cjs';
4
+
5
+ type Options$1 = {
6
+ tscCompatible?: boolean;
7
+ };
8
+ declare const implicitBaseUrlSymbol: unique symbol;
9
+ declare const readTsConfig: (tsconfigPath: string, options?: Options$1) => TsConfigJsonResolved;
10
+
11
+ type Options = {
12
+ cache?: Map<string, TsConfigJsonResolved> | boolean;
13
+ configFileName?: string;
14
+ };
15
+ type TsConfigResult = {
16
+ config: TsConfigJsonResolved;
17
+ path: string;
18
+ };
19
+ declare const findTsConfig: (cwd?: URL | string, options?: Options) => Promise<TsConfigResult>;
20
+ declare const findTSConfig: (cwd?: URL | string, options?: Options) => Promise<TsConfigResult>;
21
+ declare const findTsConfigSync: (cwd?: URL | string, options?: Options) => TsConfigResult;
22
+ declare const findTSConfigSync: (cwd?: URL | string, options?: Options) => TsConfigResult;
23
+ declare const writeTsConfig: (data: TsConfigJson, options?: WriteJsonOptions & {
24
+ cwd?: URL | string;
25
+ }) => Promise<void>;
26
+ declare const writeTSConfig: (data: TsConfigJson, options?: WriteJsonOptions & {
27
+ cwd?: URL | string;
28
+ }) => Promise<void>;
29
+
30
+ export { type TsConfigResult as T, findTsConfig as a, findTSConfigSync as b, findTsConfigSync as c, writeTsConfig as d, findTSConfig as f, implicitBaseUrlSymbol as i, readTsConfig as r, writeTSConfig as w };
package/dist/tsconfig.cjs CHANGED
@@ -1,32 +1,36 @@
1
1
  'use strict';
2
2
 
3
- var chunkOVKFHJQE_cjs = require('./chunk-OVKFHJQE.cjs');
3
+ var chunk3I7BDTA7_cjs = require('./chunk-3I7BDTA7.cjs');
4
4
 
5
5
 
6
6
 
7
7
  Object.defineProperty(exports, 'findTSConfig', {
8
8
  enumerable: true,
9
- get: function () { return chunkOVKFHJQE_cjs.c; }
9
+ get: function () { return chunk3I7BDTA7_cjs.d; }
10
10
  });
11
11
  Object.defineProperty(exports, 'findTSConfigSync', {
12
12
  enumerable: true,
13
- get: function () { return chunkOVKFHJQE_cjs.e; }
13
+ get: function () { return chunk3I7BDTA7_cjs.f; }
14
14
  });
15
15
  Object.defineProperty(exports, 'findTsConfig', {
16
16
  enumerable: true,
17
- get: function () { return chunkOVKFHJQE_cjs.b; }
17
+ get: function () { return chunk3I7BDTA7_cjs.c; }
18
18
  });
19
19
  Object.defineProperty(exports, 'findTsConfigSync', {
20
20
  enumerable: true,
21
- get: function () { return chunkOVKFHJQE_cjs.d; }
21
+ get: function () { return chunk3I7BDTA7_cjs.e; }
22
+ });
23
+ Object.defineProperty(exports, 'implicitBaseUrlSymbol', {
24
+ enumerable: true,
25
+ get: function () { return chunk3I7BDTA7_cjs.a; }
22
26
  });
23
27
  Object.defineProperty(exports, 'writeTSConfig', {
24
28
  enumerable: true,
25
- get: function () { return chunkOVKFHJQE_cjs.g; }
29
+ get: function () { return chunk3I7BDTA7_cjs.h; }
26
30
  });
27
31
  Object.defineProperty(exports, 'writeTsConfig', {
28
32
  enumerable: true,
29
- get: function () { return chunkOVKFHJQE_cjs.f; }
33
+ get: function () { return chunk3I7BDTA7_cjs.g; }
30
34
  });
31
35
  //# sourceMappingURL=out.js.map
32
36
  //# sourceMappingURL=tsconfig.cjs.map
@@ -1,25 +1,5 @@
1
- import { WriteJsonOptions } from '@visulima/fs';
2
- import { TsConfigJson } from 'type-fest';
3
- import { T as TsConfigJsonResolved } from './types-hoigZ9HA.cjs';
1
+ import '@visulima/fs';
2
+ import 'type-fest';
3
+ import './types-hoigZ9HA.cjs';
4
+ export { T as TsConfigResult, f as findTSConfig, b as findTSConfigSync, a as findTsConfig, c as findTsConfigSync, i as implicitBaseUrlSymbol, w as writeTSConfig, d as writeTsConfig } from './tsconfig-d4zwQgCH.cjs';
4
5
  import 'normalize-package-data';
5
-
6
- type Options = {
7
- cache?: Map<string, TsConfigJsonResolved> | boolean;
8
- configFileName?: string;
9
- };
10
- type TsConfigResult = {
11
- config: TsConfigJsonResolved;
12
- path: string;
13
- };
14
- declare const findTsConfig: (cwd?: URL | string, options?: Options) => Promise<TsConfigResult>;
15
- declare const findTSConfig: (cwd?: URL | string, options?: Options) => Promise<TsConfigResult>;
16
- declare const findTsConfigSync: (cwd?: URL | string, options?: Options) => TsConfigResult;
17
- declare const findTSConfigSync: (cwd?: URL | string, options?: Options) => TsConfigResult;
18
- declare const writeTsConfig: (data: TsConfigJson, options?: WriteJsonOptions & {
19
- cwd?: URL | string;
20
- }) => Promise<void>;
21
- declare const writeTSConfig: (data: TsConfigJson, options?: WriteJsonOptions & {
22
- cwd?: URL | string;
23
- }) => Promise<void>;
24
-
25
- export { type TsConfigResult, findTSConfig, findTSConfigSync, findTsConfig, findTsConfigSync, writeTSConfig, writeTsConfig };
@@ -1,25 +1,5 @@
1
- import { WriteJsonOptions } from '@visulima/fs';
2
- import { TsConfigJson } from 'type-fest';
3
- import { T as TsConfigJsonResolved } from './types-hoigZ9HA.js';
1
+ import '@visulima/fs';
2
+ import 'type-fest';
3
+ import './types-hoigZ9HA.js';
4
+ export { T as TsConfigResult, f as findTSConfig, b as findTSConfigSync, a as findTsConfig, c as findTsConfigSync, i as implicitBaseUrlSymbol, w as writeTSConfig, d as writeTsConfig } from './tsconfig-G-HInwrt.js';
4
5
  import 'normalize-package-data';
5
-
6
- type Options = {
7
- cache?: Map<string, TsConfigJsonResolved> | boolean;
8
- configFileName?: string;
9
- };
10
- type TsConfigResult = {
11
- config: TsConfigJsonResolved;
12
- path: string;
13
- };
14
- declare const findTsConfig: (cwd?: URL | string, options?: Options) => Promise<TsConfigResult>;
15
- declare const findTSConfig: (cwd?: URL | string, options?: Options) => Promise<TsConfigResult>;
16
- declare const findTsConfigSync: (cwd?: URL | string, options?: Options) => TsConfigResult;
17
- declare const findTSConfigSync: (cwd?: URL | string, options?: Options) => TsConfigResult;
18
- declare const writeTsConfig: (data: TsConfigJson, options?: WriteJsonOptions & {
19
- cwd?: URL | string;
20
- }) => Promise<void>;
21
- declare const writeTSConfig: (data: TsConfigJson, options?: WriteJsonOptions & {
22
- cwd?: URL | string;
23
- }) => Promise<void>;
24
-
25
- export { type TsConfigResult, findTSConfig, findTSConfigSync, findTsConfig, findTsConfigSync, writeTSConfig, writeTsConfig };
package/dist/tsconfig.js CHANGED
@@ -1,3 +1,3 @@
1
- export { c as findTSConfig, e as findTSConfigSync, b as findTsConfig, d as findTsConfigSync, g as writeTSConfig, f as writeTsConfig } from './chunk-CMEGXNWH.js';
1
+ export { d as findTSConfig, f as findTSConfigSync, c as findTsConfig, e as findTsConfigSync, a as implicitBaseUrlSymbol, h as writeTSConfig, g as writeTsConfig } from './chunk-YUFKVE42.js';
2
2
  //# sourceMappingURL=out.js.map
3
3
  //# sourceMappingURL=tsconfig.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/package",
3
- "version": "1.6.1",
3
+ "version": "1.7.0",
4
4
  "description": "One Package to rule them all, finds your root-dir, monorepo, package manager or tsconfig.json",
5
5
  "keywords": [
6
6
  "anolilab",
@@ -153,19 +153,19 @@
153
153
  "test:watch": "vitest"
154
154
  },
155
155
  "dependencies": {
156
- "@visulima/fs": "2.0.4",
156
+ "@visulima/fs": "2.0.5",
157
157
  "jsonc-parser": "^3.2.1",
158
158
  "normalize-package-data": "^6.0.0",
159
159
  "pathe": "^1.1.2",
160
160
  "resolve-pkg-maps": "^1.0.0",
161
- "type-fest": "^4.14.0"
161
+ "type-fest": "^4.15.0"
162
162
  },
163
163
  "devDependencies": {
164
164
  "@anolilab/eslint-config": "^15.0.3",
165
165
  "@anolilab/prettier-config": "^5.0.14",
166
166
  "@anolilab/semantic-release-preset": "^8.0.3",
167
- "@babel/core": "^7.24.3",
168
- "@pnpm/exe": "^8.15.5",
167
+ "@babel/core": "^7.24.4",
168
+ "@pnpm/exe": "^8.15.6",
169
169
  "@rushstack/eslint-plugin-security": "^0.8.1",
170
170
  "@total-typescript/ts-reset": "^0.5.1",
171
171
  "@types/node": "18.18.14",
@@ -178,18 +178,18 @@
178
178
  "eslint-plugin-etc": "^2.0.3",
179
179
  "eslint-plugin-import": "npm:eslint-plugin-i@^2.29.1",
180
180
  "eslint-plugin-mdx": "^3.1.5",
181
- "eslint-plugin-vitest": "^0.4.0",
181
+ "eslint-plugin-vitest": "^0.4.1",
182
182
  "eslint-plugin-vitest-globals": "^1.5.0",
183
183
  "execa": "^8.0.1",
184
- "npm": "^10.5.0",
184
+ "npm": "^10.5.1",
185
185
  "prettier": "^3.2.5",
186
186
  "rimraf": "^5.0.5",
187
- "semantic-release": "^23.0.6",
187
+ "semantic-release": "^23.0.7",
188
188
  "sort-package-json": "^2.10.0",
189
189
  "strip-ansi": "^7.1.0",
190
190
  "tempy": "^3.1.0",
191
191
  "tsup": "^8.0.2",
192
- "typescript": "^5.4.3",
192
+ "typescript": "^5.4.4",
193
193
  "vitest": "^1.4.0",
194
194
  "which-pm-runs": "file:",
195
195
  "yarn": "^1.22.22"
@@ -1,15 +0,0 @@
1
- import { findUp, findUpSync, writeJson, readFileSync } from '@visulima/fs';
2
- import { NotFoundError } from '@visulima/fs/error';
3
- import { toPath } from '@visulima/fs/utils';
4
- import { join, dirname, resolve, relative, normalize, toNamespacedPath } from 'pathe';
5
- import { realpathSync, existsSync, statSync } from 'node:fs';
6
- import { parse } from 'jsonc-parser';
7
- import A from 'node:module';
8
- import { join as join$1, resolve as resolve$1, isAbsolute } from 'node:path';
9
- import { resolveExports } from 'resolve-pkg-maps';
10
-
11
- var _=s=>parse(readFileSync(s)),L=()=>{let{findPnpApi:s}=A;return s?.(process.cwd())},v=(s,o,l,n)=>{let t=`resolveFromPackageJsonPath:${s}:${o}:${l}`;if(n?.has(t))return n.get(t);let i=_(s);if(!i)return;let e=o||"tsconfig.json";if(!l&&i.exports)try{let[a]=resolveExports(i.exports,o,["require","types"]);e=a;}catch{return !1}else !o&&i.tsconfig&&(e=i.tsconfig);return e=join$1(s,"..",e),n?.set(t,e),e},P="package.json",T="tsconfig.json",G=(s,o,l)=>{let n=s;if(s===".."&&(n=join$1(n,T)),s.startsWith(".")&&(n=resolve$1(o,n)),isAbsolute(n)){if(existsSync(n)){if(statSync(n).isFile())return n}else if(!n.endsWith(".json")){let c=`${n}.json`;if(existsSync(c))return c}return}let[t,...i]=s.split("/"),e=t.startsWith("@")?`${t}/${i.shift()}`:t,a=i.join("/"),r=L();if(r){let{resolveRequest:c}=r;try{if(e===s){let p=c(join$1(e,P),o);if(p){let h=v(p,a,!1,l);if(h&&existsSync(h))return h}}else {let p;try{p=c(s,o,{extensions:[".json"]});}catch{p=c(join$1(s,T),o);}if(p)return p}}catch{}}let f=findUpSync(c=>{let p=join$1(c,"node_modules",e);if(existsSync(p))return join$1("node_modules",e)},{cwd:o,type:"directory"});if(!f||!statSync(f).isDirectory())return;let g=join$1(f,P);if(existsSync(g)){let c=v(g,a,!1,l);if(c===!1)return;if(c&&existsSync(c)&&statSync(c).isFile())return c}let m=join$1(f,a),C=m.endsWith(".json");if(!C){let c=`${m}.json`;if(existsSync(c))return c}if(existsSync(m)){if(statSync(m).isDirectory()){let c=join$1(m,P);if(existsSync(c)){let h=v(c,"",!0,l);if(h&&existsSync(h))return h}let p=join$1(m,T);if(existsSync(p))return p}else if(C)return m}},F=G;var Z=Symbol("implicitBaseUrl"),q=s=>parse(readFileSync(s)),O=s=>toNamespacedPath(/^\.{1,2}(?:\/.*)?$/.test(s)?s:`./${s}`),ee=(s,o,l,n)=>{let t=F(s,o);if(!t)throw new NotFoundError(`No such file or directory, for '${s}' found.`);if(l.has(t))throw new Error(`Circularity detected while resolving configuration: ${t}`);l.add(t);let i=dirname(t),e=I(t,n,l);delete e.references;let{compilerOptions:a}=e;if(a){let r=["baseUrl","outDir"];for(let f of r){let g=a[f];g&&(a[f]=relative(o,join(i,g)).replaceAll("\\","/")||"./");}}return e.files&&(e.files=e.files.map(r=>relative(o,join(i,r)))),e.include&&(e.include=e.include.map(r=>relative(o,join(i,r)))),e.exclude&&(e.exclude=e.exclude.map(r=>relative(o,join(i,r)))),e},I=(s,o,l=new Set)=>{let n;try{n=realpathSync(s);}catch{throw new Error(`Cannot resolve tsconfig at path: ${s}`)}let t=q(n)||{};if(typeof t!="object")throw new SyntaxError(`Failed to parse tsconfig at: ${s}`);let i=dirname(n);if(t.compilerOptions){let{compilerOptions:e}=t;e.paths&&!e.baseUrl&&(e[Z]=i);}if(t.extends){let e=Array.isArray(t.extends)?t.extends:[t.extends];delete t.extends;for(let a of e.reverse()){let r=ee(a,i,new Set(l),o),f={...r,...t,compilerOptions:{...r.compilerOptions,...t.compilerOptions}};r.watchOptions&&(f.watchOptions={...r.watchOptions,...t.watchOptions}),t=f;}}if(t.compilerOptions){let{compilerOptions:e}=t,a=["baseUrl","rootDir"];for(let f of a){let g=e[f];if(g){let m=resolve(i,g),C=relative(i,m);e[f]=O(C);}}let{outDir:r}=e;r&&(Array.isArray(t.exclude)||(t.exclude=[]),t.exclude.includes(r)||t.exclude.push(r),e.outDir=O(r)),o?.tscCompatible&&e.module==="node16"&&(e.allowSyntheticDefaultImports=e.allowSyntheticDefaultImports??!0,e.esModuleInterop=e.esModuleInterop??!0,e.moduleDetection=e.moduleDetection??"force",e.moduleResolution=e.moduleResolution??"node16",e.target=e.target??"es2022",e.useDefineForClassFields=e.useDefineForClassFields??!0),o?.tscCompatible&&e.strict&&(e.noImplicitAny=e.noImplicitAny??!0,e.noImplicitThis=e.noImplicitThis??!0,e.strictNullChecks=e.strictNullChecks??!0,e.strictFunctionTypes=e.strictFunctionTypes??!0,e.strictBindCallApply=e.strictBindCallApply??!0,e.strictPropertyInitialization=e.strictPropertyInitialization??!0,e.alwaysStrict=e.alwaysStrict??!0,e.useUnknownInCatchVariables=e.useUnknownInCatchVariables??!0),o?.tscCompatible&&e.isolatedModules&&(e.preserveConstEnums=e.preserveConstEnums??!0),o?.tscCompatible&&e.esModuleInterop&&(e.allowSyntheticDefaultImports=e.allowSyntheticDefaultImports??!0),o?.tscCompatible&&e.target==="esnext"&&(e.useDefineForClassFields=e.useDefineForClassFields??!0);}else t.compilerOptions={};if(t.files&&(t.files=t.files.map(e=>O(e))),t.include&&(t.include=t.include.map(e=>normalize(e))),t.watchOptions){let{watchOptions:e}=t;e.excludeDirectories&&(e.excludeDirectories=e.excludeDirectories.map(a=>resolve(i,a)));}return t},te=(s,o)=>I(s,o),J=te;var D=new Map,ie=async(s,o={})=>{let l=o.configFileName??"tsconfig.json",n=await findUp(l,{...s&&{cwd:s},type:"file"});if(n||(n=await findUp("jsconfig.json",{...s&&{cwd:s},type:"file"})),!n)throw new NotFoundError(`No such file or directory, for ${l} or jsconfig.json found.`);let t=o.cache&&typeof o.cache!="boolean"?o.cache:D;if(o.cache&&t.has(n))return t.get(n);let i={config:J(n),path:n};return o.cache&&t.set(n,i),i},be=ie,re=(s,o={})=>{let l=o.configFileName??"tsconfig.json",n=findUpSync(l,{...s&&{cwd:s},type:"file"});if(n||(n=findUpSync("jsconfig.json",{...s&&{cwd:s},type:"file"})),!n)throw new NotFoundError(`No such file or directory, for ${l} or jsconfig.json found.`);let t=o.cache&&typeof o.cache!="boolean"?o.cache:D;if(o.cache&&t.has(n))return t.get(n);let i={config:J(n),path:n};return o.cache&&t.set(n,i),i},ke=re,ce=async(s,o={})=>{let{cwd:l,...n}=o,t=toPath(o.cwd??process.cwd());await writeJson(join(t,"tsconfig.json"),s,n);},Ie=ce;
12
-
13
- export { J as a, ie as b, be as c, re as d, ke as e, ce as f, Ie as g };
14
- //# sourceMappingURL=out.js.map
15
- //# sourceMappingURL=chunk-CMEGXNWH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tsconfig.ts","../src/read-tsconfig.ts","../src/utils/resolve-extends-path.ts"],"names":["findUp","findUpSync","writeJson","NotFoundError","toPath","join","realpathSync","readFileSync","parse","dirname","normalize","relative","resolve","toNamespacedPath","existsSync","statSync","Module","isAbsolute","resolveExports","readJsonc","jsonPath","getPnpApi","findPnpApi","resolveFromPackageJsonPath","packageJsonPath","subpath","ignoreExports","cache","cacheKey","packageJson","resolvedPath","resolvedExport","PACKAGE_JSON","TS_CONFIG_JSON","resolveExtendsPath","requestedPath","directoryPath","filePath","orgOrName","remaining","packageName","pnpApi","resolveWithPnp","resolved","packagePath","directory","path","fullPackagePath","jsonExtension","fullPackagePathWithJson","fullPackageJsonPath","tsconfigPath","resolve_extends_path_default","implicitBaseUrlSymbol","normalizePath","resolveExtends","extendsPath","fromDirectoryPath","circularExtendsTracker","options","resolvedExtendsPath","extendsDirectoryPath","extendsConfig","internalParseTsConfig","compilerOptions","resolvePaths","property","unresolvedPath","file","realTsconfigPath","config","extendsPathList","merged","normalizedPaths","resolvedBaseUrl","relativeBaseUrl","outDir","element","watchOptions","excludePath","readTsConfig","read_tsconfig_default","TsConfigFileCache","findTsConfig","cwd","configFileName","output","findTSConfig","findTsConfigSync","findTSConfigSync","writeTsConfig","data","writeOptions","writeTSConfig"],"mappings":"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","sourcesContent":["import type { WriteJsonOptions } from \"@visulima/fs\";\nimport { findUp, findUpSync, writeJson } from \"@visulima/fs\";\nimport { NotFoundError } from \"@visulima/fs/error\";\nimport { toPath } from \"@visulima/fs/utils\";\nimport { join } from \"pathe\";\nimport type { TsConfigJson } from \"type-fest\";\n\nimport readTsConfig from \"./read-tsconfig\";\nimport type { TsConfigJsonResolved } from \"./types\";\n\ntype Options = {\n cache?: Map<string, TsConfigJsonResolved> | boolean;\n configFileName?: string;\n};\n\nconst TsConfigFileCache = new Map<string, TsConfigResult>();\n\nexport type TsConfigResult = {\n config: TsConfigJsonResolved;\n path: string;\n};\n\n/**\n * An asynchronous function that retrieves the TSConfig by searching for the \"tsconfig.json\" first,\n * second attempt is to look for the \"jsconfig.json\" file from a given current working directory.\n *\n * @param cwd - Optional. The current working directory from which to search for the \"tsconfig.json\" file.\n * The type of `cwd` is `string`.\n * @returns A `Promise` that resolves to the TSConfig result object.\n * The return type of the function is `Promise<TsConfigResult>`.\n * @throws An `Error` when the \"tsconfig.json\" file is not found.\n */\nexport const findTsConfig = async (cwd?: URL | string, options: Options = {}): Promise<TsConfigResult> => {\n const configFileName = options.configFileName ?? \"tsconfig.json\";\n\n let filePath = await findUp(configFileName, {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n\n if (!filePath) {\n filePath = await findUp(\"jsconfig.json\", {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n }\n\n if (!filePath) {\n throw new NotFoundError(`No such file or directory, for ${configFileName} or jsconfig.json found.`);\n }\n\n const cache = options.cache && typeof options.cache !== \"boolean\" ? options.cache : TsConfigFileCache;\n\n if (options.cache && cache.has(filePath)) {\n return cache.get(filePath) as TsConfigResult;\n }\n\n const output = {\n config: readTsConfig(filePath),\n path: filePath,\n };\n\n if (options.cache) {\n cache.set(filePath, output);\n }\n\n return output;\n};\n\n// @deprecate Please use `findTsConfig` instead.\nexport const findTSConfig = findTsConfig;\n\nexport const findTsConfigSync = (cwd?: URL | string, options: Options = {}): TsConfigResult => {\n const configFileName = options.configFileName ?? \"tsconfig.json\";\n\n let filePath = findUpSync(configFileName, {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n\n if (!filePath) {\n filePath = findUpSync(\"jsconfig.json\", {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n }\n\n if (!filePath) {\n throw new NotFoundError(`No such file or directory, for ${configFileName} or jsconfig.json found.`);\n }\n\n const cache = options.cache && typeof options.cache !== \"boolean\" ? options.cache : TsConfigFileCache;\n\n if (options.cache && cache.has(filePath)) {\n return cache.get(filePath) as TsConfigResult;\n }\n\n const output = {\n config: readTsConfig(filePath),\n path: filePath,\n };\n\n if (options.cache) {\n cache.set(filePath, output);\n }\n\n return output;\n};\n\n// @deprecate Please use `findTsConfigSync` instead.\nexport const findTSConfigSync = findTsConfigSync;\n\n/**\n * An asynchronous function that writes the provided TypeScript configuration object to a tsconfig.json file.\n *\n * @param tsConfig - The TypeScript configuration object to write. The type of `tsConfig` is `TsConfigJson`.\n * @param options - Optional. The write options and the current working directory. The type of `options` is an\n * intersection type of `WriteOptions` and a Record type with an optional `cwd` key of type `string`.\n * @returns A `Promise` that resolves when the tsconfig.json file has been written.\n * The return type of function is `Promise<void>`.\n */\nexport const writeTsConfig = async (data: TsConfigJson, options: WriteJsonOptions & { cwd?: URL | string } = {}): Promise<void> => {\n const { cwd, ...writeOptions } = options;\n\n const directory = toPath(options.cwd ?? process.cwd());\n\n await writeJson(join(directory, \"tsconfig.json\"), data, writeOptions);\n};\n\n// @deprecate Please use `writeTsconfig` instead.\nexport const writeTSConfig = writeTsConfig;\n","/**\n * A modified version of `readTsconfig` from `https://github.com/privatenumber/get-tsconfig/blob/develop/src/parse-tsconfig/index.ts`\n *\n * MIT License\n * Copyright (c) Hiroki Osame <hiroki.osame@gmail.com>\n */\nimport { realpathSync } from \"node:fs\";\n\nimport { readFileSync } from \"@visulima/fs\";\nimport { NotFoundError } from \"@visulima/fs/error\";\nimport { parse } from \"jsonc-parser\";\nimport { dirname, join, normalize, relative, resolve, toNamespacedPath } from \"pathe\";\nimport type { TsConfigJson } from \"type-fest\";\n\nimport type { TsConfigJsonResolved } from \"./types\";\nimport resolveExtendsPath from \"./utils/resolve-extends-path\";\n\ntype Options = {\n tscCompatible?: boolean;\n};\n\nconst implicitBaseUrlSymbol = Symbol(\"implicitBaseUrl\");\n\nconst readJsonc = (jsonPath: string) => parse(readFileSync(jsonPath) as string) as unknown;\n// eslint-disable-next-line security/detect-unsafe-regex\nconst normalizePath = (path: string): string => toNamespacedPath(/^\\.{1,2}(?:\\/.*)?$/.test(path) ? path : `./${path}`);\n\nconst resolveExtends = (extendsPath: string, fromDirectoryPath: string, circularExtendsTracker: Set<string>, options?: Options) => {\n const resolvedExtendsPath = resolveExtendsPath(extendsPath, fromDirectoryPath);\n\n if (!resolvedExtendsPath) {\n throw new NotFoundError(`No such file or directory, for '${extendsPath}' found.`);\n }\n\n if (circularExtendsTracker.has(resolvedExtendsPath)) {\n throw new Error(`Circularity detected while resolving configuration: ${resolvedExtendsPath}`);\n }\n\n circularExtendsTracker.add(resolvedExtendsPath);\n\n const extendsDirectoryPath = dirname(resolvedExtendsPath);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const extendsConfig = internalParseTsConfig(resolvedExtendsPath, options, circularExtendsTracker);\n\n delete extendsConfig.references;\n\n const { compilerOptions } = extendsConfig;\n\n if (compilerOptions) {\n const resolvePaths = [\"baseUrl\", \"outDir\"] as const;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of resolvePaths) {\n // eslint-disable-next-line security/detect-object-injection\n const unresolvedPath = compilerOptions[property];\n\n if (unresolvedPath) {\n // eslint-disable-next-line security/detect-object-injection\n compilerOptions[property] = relative(fromDirectoryPath, join(extendsDirectoryPath, unresolvedPath)).replaceAll(\"\\\\\", \"/\") || \"./\";\n }\n }\n }\n\n if (extendsConfig.files) {\n extendsConfig.files = extendsConfig.files.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n if (extendsConfig.include) {\n extendsConfig.include = extendsConfig.include.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n if (extendsConfig.exclude) {\n extendsConfig.exclude = extendsConfig.exclude.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n return extendsConfig;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst internalParseTsConfig = (tsconfigPath: string, options?: Options, circularExtendsTracker = new Set<string>()): TsConfigJsonResolved => {\n let realTsconfigPath: string;\n\n try {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n realTsconfigPath = realpathSync(tsconfigPath) as string;\n } catch {\n throw new Error(`Cannot resolve tsconfig at path: ${tsconfigPath}`);\n }\n\n /**\n * Decided not to cache the TsConfigJsonResolved object because it's\n * mutable.\n *\n * Note how `resolveExtends` can call `readTsconfig` rescursively\n * and actually mutates the object. It can also be mutated in\n * user-land.\n *\n * By only caching fs results, we can avoid serving mutated objects\n */\n let config: TsConfigJson = readJsonc(realTsconfigPath) || {};\n\n if (typeof config !== \"object\") {\n throw new SyntaxError(`Failed to parse tsconfig at: ${tsconfigPath}`);\n }\n\n const directoryPath = dirname(realTsconfigPath);\n\n if (config.compilerOptions) {\n const { compilerOptions } = config;\n if (compilerOptions.paths && !compilerOptions.baseUrl) {\n type WithImplicitBaseUrl = TsConfigJson.CompilerOptions & {\n [implicitBaseUrlSymbol]: string;\n };\n // eslint-disable-next-line security/detect-object-injection\n (compilerOptions as WithImplicitBaseUrl)[implicitBaseUrlSymbol] = directoryPath;\n }\n }\n\n if (config.extends) {\n const extendsPathList = Array.isArray(config.extends) ? config.extends : [config.extends];\n\n delete config.extends;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax,etc/no-assign-mutated-array\n for (const extendsPath of extendsPathList.reverse()) {\n const extendsConfig = resolveExtends(extendsPath, directoryPath, new Set(circularExtendsTracker), options);\n const merged = {\n ...extendsConfig,\n ...config,\n\n compilerOptions: {\n ...extendsConfig.compilerOptions,\n ...config.compilerOptions,\n },\n };\n\n if (extendsConfig.watchOptions) {\n merged.watchOptions = {\n ...extendsConfig.watchOptions,\n ...config.watchOptions,\n };\n }\n\n config = merged;\n }\n }\n\n if (config.compilerOptions) {\n const { compilerOptions } = config;\n const normalizedPaths = [\"baseUrl\", \"rootDir\"] as const;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of normalizedPaths) {\n // eslint-disable-next-line security/detect-object-injection\n const unresolvedPath = compilerOptions[property];\n\n if (unresolvedPath) {\n const resolvedBaseUrl = resolve(directoryPath, unresolvedPath);\n const relativeBaseUrl = relative(directoryPath, resolvedBaseUrl);\n\n // eslint-disable-next-line security/detect-object-injection\n compilerOptions[property] = normalizePath(relativeBaseUrl);\n }\n }\n\n const { outDir } = compilerOptions;\n\n if (outDir) {\n if (!Array.isArray(config.exclude)) {\n config.exclude = [];\n }\n\n if (!config.exclude.includes(outDir)) {\n config.exclude.push(outDir);\n }\n\n compilerOptions.outDir = normalizePath(outDir);\n }\n\n if (options?.tscCompatible && compilerOptions.module === \"node16\") {\n compilerOptions.allowSyntheticDefaultImports = compilerOptions.allowSyntheticDefaultImports ?? true;\n compilerOptions.esModuleInterop = compilerOptions.esModuleInterop ?? true;\n compilerOptions.moduleDetection = compilerOptions.moduleDetection ?? \"force\";\n compilerOptions.moduleResolution = compilerOptions.moduleResolution ?? \"node16\";\n compilerOptions.target = compilerOptions.target ?? \"es2022\";\n compilerOptions.useDefineForClassFields = compilerOptions.useDefineForClassFields ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.strict) {\n compilerOptions.noImplicitAny = compilerOptions.noImplicitAny ?? true;\n compilerOptions.noImplicitThis = compilerOptions.noImplicitThis ?? true;\n compilerOptions.strictNullChecks = compilerOptions.strictNullChecks ?? true;\n compilerOptions.strictFunctionTypes = compilerOptions.strictFunctionTypes ?? true;\n compilerOptions.strictBindCallApply = compilerOptions.strictBindCallApply ?? true;\n compilerOptions.strictPropertyInitialization = compilerOptions.strictPropertyInitialization ?? true;\n compilerOptions.alwaysStrict = compilerOptions.alwaysStrict ?? true;\n compilerOptions.useUnknownInCatchVariables = compilerOptions.useUnknownInCatchVariables ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.isolatedModules) {\n compilerOptions.preserveConstEnums = compilerOptions.preserveConstEnums ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.esModuleInterop) {\n compilerOptions.allowSyntheticDefaultImports = compilerOptions.allowSyntheticDefaultImports ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.target === \"esnext\") {\n compilerOptions.useDefineForClassFields = compilerOptions.useDefineForClassFields ?? true;\n }\n } else {\n config.compilerOptions = {};\n }\n\n if (config.files) {\n config.files = config.files.map((element) => normalizePath(element));\n }\n\n if (config.include) {\n config.include = config.include.map((element) => normalize(element));\n }\n\n if (config.watchOptions) {\n const { watchOptions } = config;\n\n if (watchOptions.excludeDirectories) {\n watchOptions.excludeDirectories = watchOptions.excludeDirectories.map((excludePath) => resolve(directoryPath, excludePath));\n }\n }\n\n return config;\n};\n\nconst readTsConfig = (tsconfigPath: string, options?: Options): TsConfigJsonResolved => internalParseTsConfig(tsconfigPath, options);\n\nexport default readTsConfig;\n","/**\n * A modified version of `resolveExtendsPath` from `https://github.com/privatenumber/get-tsconfig/blob/develop/src/parse-tsconfig/resolve-extends-path.ts`\n *\n * MIT License\n * Copyright (c) Hiroki Osame <hiroki.osame@gmail.com>\n */\nimport { existsSync, statSync } from \"node:fs\";\nimport Module from \"node:module\";\nimport { isAbsolute, join, resolve } from \"node:path\";\n\nimport { findUpSync, readFileSync } from \"@visulima/fs\";\nimport { parse } from \"jsonc-parser\";\nimport type { PathConditions } from \"resolve-pkg-maps\";\nimport { resolveExports } from \"resolve-pkg-maps\";\nimport type { PackageJson } from \"type-fest\";\n\nimport type { Cache } from \"../types\";\n\nconst readJsonc = (jsonPath: string) => parse(readFileSync(jsonPath) as string) as unknown;\n\nconst getPnpApi = () => {\n const { findPnpApi } = Module;\n\n // https://yarnpkg.com/advanced/pnpapi/#requirepnpapi\n return findPnpApi?.(process.cwd());\n};\n\nconst resolveFromPackageJsonPath = (packageJsonPath: string, subpath: string, ignoreExports?: boolean, cache?: Cache<string>) => {\n const cacheKey = `resolveFromPackageJsonPath:${packageJsonPath}:${subpath}:${ignoreExports}`;\n\n if (cache?.has(cacheKey)) {\n return cache.get(cacheKey);\n }\n\n const packageJson = readJsonc(packageJsonPath);\n\n if (!packageJson) {\n return undefined;\n }\n\n let resolvedPath = subpath || \"tsconfig.json\";\n\n if (!ignoreExports && (packageJson as PackageJson).exports) {\n try {\n const [resolvedExport] = resolveExports((packageJson as PackageJson).exports as PathConditions, subpath, [\"require\", \"types\"]);\n\n resolvedPath = resolvedExport as string;\n } catch {\n // Block\n return false;\n }\n } else if (!subpath && (packageJson as PackageJson).tsconfig) {\n resolvedPath = (packageJson as PackageJson).tsconfig as string;\n }\n\n resolvedPath = join(packageJsonPath, \"..\", resolvedPath);\n\n cache?.set(cacheKey, resolvedPath);\n\n return resolvedPath;\n};\n\nconst PACKAGE_JSON = \"package.json\";\nconst TS_CONFIG_JSON = \"tsconfig.json\";\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst resolveExtendsPath = (requestedPath: string, directoryPath: string, cache?: Cache<string>): string | undefined => {\n let filePath = requestedPath;\n\n if (requestedPath === \"..\") {\n filePath = join(filePath, TS_CONFIG_JSON);\n }\n\n if (requestedPath.startsWith(\".\")) {\n filePath = resolve(directoryPath, filePath);\n }\n\n if (isAbsolute(filePath)) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(filePath)) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (statSync(filePath).isFile()) {\n return filePath;\n }\n } else if (!filePath.endsWith(\".json\")) {\n const jsonPath = `${filePath}.json`;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(jsonPath)) {\n return jsonPath;\n }\n }\n\n return undefined;\n }\n\n const [orgOrName, ...remaining] = requestedPath.split(\"/\");\n const packageName = ((orgOrName as string).startsWith(\"@\") ? `${orgOrName}/${remaining.shift()}` : orgOrName) as string;\n const subpath = remaining.join(\"/\");\n\n const pnpApi = getPnpApi();\n\n if (pnpApi) {\n const { resolveRequest: resolveWithPnp } = pnpApi;\n\n try {\n if (packageName === requestedPath) {\n const packageJsonPath = resolveWithPnp(join(packageName, PACKAGE_JSON), directoryPath);\n\n if (packageJsonPath) {\n const resolvedPath = resolveFromPackageJsonPath(packageJsonPath, subpath, false, cache);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n } else {\n let resolved: string | null;\n\n try {\n resolved = resolveWithPnp(requestedPath, directoryPath, { extensions: [\".json\"] });\n } catch {\n resolved = resolveWithPnp(join(requestedPath, TS_CONFIG_JSON), directoryPath);\n }\n\n if (resolved) {\n return resolved;\n }\n }\n } catch {\n /* empty */\n }\n }\n\n const packagePath = findUpSync(\n (directory) => {\n const path = join(directory, \"node_modules\", packageName);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(path)) {\n return join(\"node_modules\", packageName);\n }\n\n return undefined;\n },\n {\n cwd: directoryPath,\n type: \"directory\",\n },\n );\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!packagePath || !statSync(packagePath).isDirectory()) {\n return undefined;\n }\n\n const packageJsonPath = join(packagePath, PACKAGE_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(packageJsonPath)) {\n const resolvedPath = resolveFromPackageJsonPath(packageJsonPath, subpath, false, cache);\n\n // Blocked\n if (resolvedPath === false) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath) && statSync(resolvedPath).isFile()) {\n return resolvedPath;\n }\n }\n\n const fullPackagePath = join(packagePath, subpath);\n const jsonExtension = fullPackagePath.endsWith(\".json\");\n\n if (!jsonExtension) {\n const fullPackagePathWithJson = `${fullPackagePath}.json`;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(fullPackagePathWithJson)) {\n return fullPackagePathWithJson;\n }\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!existsSync(fullPackagePath)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (statSync(fullPackagePath).isDirectory()) {\n const fullPackageJsonPath = join(fullPackagePath, PACKAGE_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(fullPackageJsonPath)) {\n const resolvedPath = resolveFromPackageJsonPath(fullPackageJsonPath, \"\", true, cache);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n\n const tsconfigPath = join(fullPackagePath, TS_CONFIG_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(tsconfigPath)) {\n return tsconfigPath;\n }\n } else if (jsonExtension) {\n return fullPackagePath;\n }\n\n return undefined;\n};\n\nexport default resolveExtendsPath;\n"]}
@@ -1,27 +0,0 @@
1
- 'use strict';
2
-
3
- var fs = require('@visulima/fs');
4
- var error = require('@visulima/fs/error');
5
- var utils = require('@visulima/fs/utils');
6
- var pathe = require('pathe');
7
- var fs$1 = require('fs');
8
- var jsoncParser = require('jsonc-parser');
9
- var D = require('module');
10
- var path = require('path');
11
- var resolvePkgMaps = require('resolve-pkg-maps');
12
-
13
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
-
15
- var D__default = /*#__PURE__*/_interopDefault(D);
16
-
17
- var z=s=>jsoncParser.parse(fs.readFileSync(s)),_=()=>{let{findPnpApi:s}=D__default.default;return s?.(process.cwd())},v=(s,o,l,n)=>{let t=`resolveFromPackageJsonPath:${s}:${o}:${l}`;if(n?.has(t))return n.get(t);let i=z(s);if(!i)return;let e=o||"tsconfig.json";if(!l&&i.exports)try{let[a]=resolvePkgMaps.resolveExports(i.exports,o,["require","types"]);e=a;}catch{return !1}else !o&&i.tsconfig&&(e=i.tsconfig);return e=path.join(s,"..",e),n?.set(t,e),e},P="package.json",T="tsconfig.json",L=(s,o,l)=>{let n=s;if(s===".."&&(n=path.join(n,T)),s.startsWith(".")&&(n=path.resolve(o,n)),path.isAbsolute(n)){if(fs$1.existsSync(n)){if(fs$1.statSync(n).isFile())return n}else if(!n.endsWith(".json")){let c=`${n}.json`;if(fs$1.existsSync(c))return c}return}let[t,...i]=s.split("/"),e=t.startsWith("@")?`${t}/${i.shift()}`:t,a=i.join("/"),r=_();if(r){let{resolveRequest:c}=r;try{if(e===s){let p=c(path.join(e,P),o);if(p){let h=v(p,a,!1,l);if(h&&fs$1.existsSync(h))return h}}else {let p;try{p=c(s,o,{extensions:[".json"]});}catch{p=c(path.join(s,T),o);}if(p)return p}}catch{}}let f=fs.findUpSync(c=>{let p=path.join(c,"node_modules",e);if(fs$1.existsSync(p))return path.join("node_modules",e)},{cwd:o,type:"directory"});if(!f||!fs$1.statSync(f).isDirectory())return;let g=path.join(f,P);if(fs$1.existsSync(g)){let c=v(g,a,!1,l);if(c===!1)return;if(c&&fs$1.existsSync(c)&&fs$1.statSync(c).isFile())return c}let m=path.join(f,a),C=m.endsWith(".json");if(!C){let c=`${m}.json`;if(fs$1.existsSync(c))return c}if(fs$1.existsSync(m)){if(fs$1.statSync(m).isDirectory()){let c=path.join(m,P);if(fs$1.existsSync(c)){let h=v(c,"",!0,l);if(h&&fs$1.existsSync(h))return h}let p=path.join(m,T);if(fs$1.existsSync(p))return p}else if(C)return m}},j=L;var Y=Symbol("implicitBaseUrl"),Z=s=>jsoncParser.parse(fs.readFileSync(s)),O=s=>pathe.toNamespacedPath(/^\.{1,2}(?:\/.*)?$/.test(s)?s:`./${s}`),q=(s,o,l,n)=>{let t=j(s,o);if(!t)throw new error.NotFoundError(`No such file or directory, for '${s}' found.`);if(l.has(t))throw new Error(`Circularity detected while resolving configuration: ${t}`);l.add(t);let i=pathe.dirname(t),e=k(t,n,l);delete e.references;let{compilerOptions:a}=e;if(a){let r=["baseUrl","outDir"];for(let f of r){let g=a[f];g&&(a[f]=pathe.relative(o,pathe.join(i,g)).replaceAll("\\","/")||"./");}}return e.files&&(e.files=e.files.map(r=>pathe.relative(o,pathe.join(i,r)))),e.include&&(e.include=e.include.map(r=>pathe.relative(o,pathe.join(i,r)))),e.exclude&&(e.exclude=e.exclude.map(r=>pathe.relative(o,pathe.join(i,r)))),e},k=(s,o,l=new Set)=>{let n;try{n=fs$1.realpathSync(s);}catch{throw new Error(`Cannot resolve tsconfig at path: ${s}`)}let t=Z(n)||{};if(typeof t!="object")throw new SyntaxError(`Failed to parse tsconfig at: ${s}`);let i=pathe.dirname(n);if(t.compilerOptions){let{compilerOptions:e}=t;e.paths&&!e.baseUrl&&(e[Y]=i);}if(t.extends){let e=Array.isArray(t.extends)?t.extends:[t.extends];delete t.extends;for(let a of e.reverse()){let r=q(a,i,new Set(l),o),f={...r,...t,compilerOptions:{...r.compilerOptions,...t.compilerOptions}};r.watchOptions&&(f.watchOptions={...r.watchOptions,...t.watchOptions}),t=f;}}if(t.compilerOptions){let{compilerOptions:e}=t,a=["baseUrl","rootDir"];for(let f of a){let g=e[f];if(g){let m=pathe.resolve(i,g),C=pathe.relative(i,m);e[f]=O(C);}}let{outDir:r}=e;r&&(Array.isArray(t.exclude)||(t.exclude=[]),t.exclude.includes(r)||t.exclude.push(r),e.outDir=O(r)),o?.tscCompatible&&e.module==="node16"&&(e.allowSyntheticDefaultImports=e.allowSyntheticDefaultImports??!0,e.esModuleInterop=e.esModuleInterop??!0,e.moduleDetection=e.moduleDetection??"force",e.moduleResolution=e.moduleResolution??"node16",e.target=e.target??"es2022",e.useDefineForClassFields=e.useDefineForClassFields??!0),o?.tscCompatible&&e.strict&&(e.noImplicitAny=e.noImplicitAny??!0,e.noImplicitThis=e.noImplicitThis??!0,e.strictNullChecks=e.strictNullChecks??!0,e.strictFunctionTypes=e.strictFunctionTypes??!0,e.strictBindCallApply=e.strictBindCallApply??!0,e.strictPropertyInitialization=e.strictPropertyInitialization??!0,e.alwaysStrict=e.alwaysStrict??!0,e.useUnknownInCatchVariables=e.useUnknownInCatchVariables??!0),o?.tscCompatible&&e.isolatedModules&&(e.preserveConstEnums=e.preserveConstEnums??!0),o?.tscCompatible&&e.esModuleInterop&&(e.allowSyntheticDefaultImports=e.allowSyntheticDefaultImports??!0),o?.tscCompatible&&e.target==="esnext"&&(e.useDefineForClassFields=e.useDefineForClassFields??!0);}else t.compilerOptions={};if(t.files&&(t.files=t.files.map(e=>O(e))),t.include&&(t.include=t.include.map(e=>pathe.normalize(e))),t.watchOptions){let{watchOptions:e}=t;e.excludeDirectories&&(e.excludeDirectories=e.excludeDirectories.map(a=>pathe.resolve(i,a)));}return t},ee=(s,o)=>k(s,o),J=ee;var U=new Map,ne=async(s,o={})=>{let l=o.configFileName??"tsconfig.json",n=await fs.findUp(l,{...s&&{cwd:s},type:"file"});if(n||(n=await fs.findUp("jsconfig.json",{...s&&{cwd:s},type:"file"})),!n)throw new error.NotFoundError(`No such file or directory, for ${l} or jsconfig.json found.`);let t=o.cache&&typeof o.cache!="boolean"?o.cache:U;if(o.cache&&t.has(n))return t.get(n);let i={config:J(n),path:n};return o.cache&&t.set(n,i),i},Fe=ne,ie=(s,o={})=>{let l=o.configFileName??"tsconfig.json",n=fs.findUpSync(l,{...s&&{cwd:s},type:"file"});if(n||(n=fs.findUpSync("jsconfig.json",{...s&&{cwd:s},type:"file"})),!n)throw new error.NotFoundError(`No such file or directory, for ${l} or jsconfig.json found.`);let t=o.cache&&typeof o.cache!="boolean"?o.cache:U;if(o.cache&&t.has(n))return t.get(n);let i={config:J(n),path:n};return o.cache&&t.set(n,i),i},be=ie,re=async(s,o={})=>{let{cwd:l,...n}=o,t=utils.toPath(o.cwd??process.cwd());await fs.writeJson(pathe.join(t,"tsconfig.json"),s,n);},ke=re;
18
-
19
- exports.a = J;
20
- exports.b = ne;
21
- exports.c = Fe;
22
- exports.d = ie;
23
- exports.e = be;
24
- exports.f = re;
25
- exports.g = ke;
26
- //# sourceMappingURL=out.js.map
27
- //# sourceMappingURL=chunk-OVKFHJQE.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tsconfig.ts","../src/read-tsconfig.ts","../src/utils/resolve-extends-path.ts"],"names":["findUp","findUpSync","writeJson","NotFoundError","toPath","join","realpathSync","readFileSync","parse","dirname","normalize","relative","resolve","toNamespacedPath","existsSync","statSync","Module","isAbsolute","resolveExports","readJsonc","jsonPath","getPnpApi","findPnpApi","resolveFromPackageJsonPath","packageJsonPath","subpath","ignoreExports","cache","cacheKey","packageJson","resolvedPath","resolvedExport","PACKAGE_JSON","TS_CONFIG_JSON","resolveExtendsPath","requestedPath","directoryPath","filePath","orgOrName","remaining","packageName","pnpApi","resolveWithPnp","resolved","packagePath","directory","path","fullPackagePath","jsonExtension","fullPackagePathWithJson","fullPackageJsonPath","tsconfigPath","resolve_extends_path_default","implicitBaseUrlSymbol","normalizePath","resolveExtends","extendsPath","fromDirectoryPath","circularExtendsTracker","options","resolvedExtendsPath","extendsDirectoryPath","extendsConfig","internalParseTsConfig","compilerOptions","resolvePaths","property","unresolvedPath","file","realTsconfigPath","config","extendsPathList","merged","normalizedPaths","resolvedBaseUrl","relativeBaseUrl","outDir","element","watchOptions","excludePath","readTsConfig","read_tsconfig_default","TsConfigFileCache","findTsConfig","cwd","configFileName","output","findTSConfig","findTsConfigSync","findTSConfigSync","writeTsConfig","data","writeOptions","writeTSConfig"],"mappings":"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","sourcesContent":["import type { WriteJsonOptions } from \"@visulima/fs\";\nimport { findUp, findUpSync, writeJson } from \"@visulima/fs\";\nimport { NotFoundError } from \"@visulima/fs/error\";\nimport { toPath } from \"@visulima/fs/utils\";\nimport { join } from \"pathe\";\nimport type { TsConfigJson } from \"type-fest\";\n\nimport readTsConfig from \"./read-tsconfig\";\nimport type { TsConfigJsonResolved } from \"./types\";\n\ntype Options = {\n cache?: Map<string, TsConfigJsonResolved> | boolean;\n configFileName?: string;\n};\n\nconst TsConfigFileCache = new Map<string, TsConfigResult>();\n\nexport type TsConfigResult = {\n config: TsConfigJsonResolved;\n path: string;\n};\n\n/**\n * An asynchronous function that retrieves the TSConfig by searching for the \"tsconfig.json\" first,\n * second attempt is to look for the \"jsconfig.json\" file from a given current working directory.\n *\n * @param cwd - Optional. The current working directory from which to search for the \"tsconfig.json\" file.\n * The type of `cwd` is `string`.\n * @returns A `Promise` that resolves to the TSConfig result object.\n * The return type of the function is `Promise<TsConfigResult>`.\n * @throws An `Error` when the \"tsconfig.json\" file is not found.\n */\nexport const findTsConfig = async (cwd?: URL | string, options: Options = {}): Promise<TsConfigResult> => {\n const configFileName = options.configFileName ?? \"tsconfig.json\";\n\n let filePath = await findUp(configFileName, {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n\n if (!filePath) {\n filePath = await findUp(\"jsconfig.json\", {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n }\n\n if (!filePath) {\n throw new NotFoundError(`No such file or directory, for ${configFileName} or jsconfig.json found.`);\n }\n\n const cache = options.cache && typeof options.cache !== \"boolean\" ? options.cache : TsConfigFileCache;\n\n if (options.cache && cache.has(filePath)) {\n return cache.get(filePath) as TsConfigResult;\n }\n\n const output = {\n config: readTsConfig(filePath),\n path: filePath,\n };\n\n if (options.cache) {\n cache.set(filePath, output);\n }\n\n return output;\n};\n\n// @deprecate Please use `findTsConfig` instead.\nexport const findTSConfig = findTsConfig;\n\nexport const findTsConfigSync = (cwd?: URL | string, options: Options = {}): TsConfigResult => {\n const configFileName = options.configFileName ?? \"tsconfig.json\";\n\n let filePath = findUpSync(configFileName, {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n\n if (!filePath) {\n filePath = findUpSync(\"jsconfig.json\", {\n ...(cwd && { cwd }),\n type: \"file\",\n });\n }\n\n if (!filePath) {\n throw new NotFoundError(`No such file or directory, for ${configFileName} or jsconfig.json found.`);\n }\n\n const cache = options.cache && typeof options.cache !== \"boolean\" ? options.cache : TsConfigFileCache;\n\n if (options.cache && cache.has(filePath)) {\n return cache.get(filePath) as TsConfigResult;\n }\n\n const output = {\n config: readTsConfig(filePath),\n path: filePath,\n };\n\n if (options.cache) {\n cache.set(filePath, output);\n }\n\n return output;\n};\n\n// @deprecate Please use `findTsConfigSync` instead.\nexport const findTSConfigSync = findTsConfigSync;\n\n/**\n * An asynchronous function that writes the provided TypeScript configuration object to a tsconfig.json file.\n *\n * @param tsConfig - The TypeScript configuration object to write. The type of `tsConfig` is `TsConfigJson`.\n * @param options - Optional. The write options and the current working directory. The type of `options` is an\n * intersection type of `WriteOptions` and a Record type with an optional `cwd` key of type `string`.\n * @returns A `Promise` that resolves when the tsconfig.json file has been written.\n * The return type of function is `Promise<void>`.\n */\nexport const writeTsConfig = async (data: TsConfigJson, options: WriteJsonOptions & { cwd?: URL | string } = {}): Promise<void> => {\n const { cwd, ...writeOptions } = options;\n\n const directory = toPath(options.cwd ?? process.cwd());\n\n await writeJson(join(directory, \"tsconfig.json\"), data, writeOptions);\n};\n\n// @deprecate Please use `writeTsconfig` instead.\nexport const writeTSConfig = writeTsConfig;\n","/**\n * A modified version of `readTsconfig` from `https://github.com/privatenumber/get-tsconfig/blob/develop/src/parse-tsconfig/index.ts`\n *\n * MIT License\n * Copyright (c) Hiroki Osame <hiroki.osame@gmail.com>\n */\nimport { realpathSync } from \"node:fs\";\n\nimport { readFileSync } from \"@visulima/fs\";\nimport { NotFoundError } from \"@visulima/fs/error\";\nimport { parse } from \"jsonc-parser\";\nimport { dirname, join, normalize, relative, resolve, toNamespacedPath } from \"pathe\";\nimport type { TsConfigJson } from \"type-fest\";\n\nimport type { TsConfigJsonResolved } from \"./types\";\nimport resolveExtendsPath from \"./utils/resolve-extends-path\";\n\ntype Options = {\n tscCompatible?: boolean;\n};\n\nconst implicitBaseUrlSymbol = Symbol(\"implicitBaseUrl\");\n\nconst readJsonc = (jsonPath: string) => parse(readFileSync(jsonPath) as string) as unknown;\n// eslint-disable-next-line security/detect-unsafe-regex\nconst normalizePath = (path: string): string => toNamespacedPath(/^\\.{1,2}(?:\\/.*)?$/.test(path) ? path : `./${path}`);\n\nconst resolveExtends = (extendsPath: string, fromDirectoryPath: string, circularExtendsTracker: Set<string>, options?: Options) => {\n const resolvedExtendsPath = resolveExtendsPath(extendsPath, fromDirectoryPath);\n\n if (!resolvedExtendsPath) {\n throw new NotFoundError(`No such file or directory, for '${extendsPath}' found.`);\n }\n\n if (circularExtendsTracker.has(resolvedExtendsPath)) {\n throw new Error(`Circularity detected while resolving configuration: ${resolvedExtendsPath}`);\n }\n\n circularExtendsTracker.add(resolvedExtendsPath);\n\n const extendsDirectoryPath = dirname(resolvedExtendsPath);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const extendsConfig = internalParseTsConfig(resolvedExtendsPath, options, circularExtendsTracker);\n\n delete extendsConfig.references;\n\n const { compilerOptions } = extendsConfig;\n\n if (compilerOptions) {\n const resolvePaths = [\"baseUrl\", \"outDir\"] as const;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of resolvePaths) {\n // eslint-disable-next-line security/detect-object-injection\n const unresolvedPath = compilerOptions[property];\n\n if (unresolvedPath) {\n // eslint-disable-next-line security/detect-object-injection\n compilerOptions[property] = relative(fromDirectoryPath, join(extendsDirectoryPath, unresolvedPath)).replaceAll(\"\\\\\", \"/\") || \"./\";\n }\n }\n }\n\n if (extendsConfig.files) {\n extendsConfig.files = extendsConfig.files.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n if (extendsConfig.include) {\n extendsConfig.include = extendsConfig.include.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n if (extendsConfig.exclude) {\n extendsConfig.exclude = extendsConfig.exclude.map((file) => relative(fromDirectoryPath, join(extendsDirectoryPath, file)));\n }\n\n return extendsConfig;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst internalParseTsConfig = (tsconfigPath: string, options?: Options, circularExtendsTracker = new Set<string>()): TsConfigJsonResolved => {\n let realTsconfigPath: string;\n\n try {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n realTsconfigPath = realpathSync(tsconfigPath) as string;\n } catch {\n throw new Error(`Cannot resolve tsconfig at path: ${tsconfigPath}`);\n }\n\n /**\n * Decided not to cache the TsConfigJsonResolved object because it's\n * mutable.\n *\n * Note how `resolveExtends` can call `readTsconfig` rescursively\n * and actually mutates the object. It can also be mutated in\n * user-land.\n *\n * By only caching fs results, we can avoid serving mutated objects\n */\n let config: TsConfigJson = readJsonc(realTsconfigPath) || {};\n\n if (typeof config !== \"object\") {\n throw new SyntaxError(`Failed to parse tsconfig at: ${tsconfigPath}`);\n }\n\n const directoryPath = dirname(realTsconfigPath);\n\n if (config.compilerOptions) {\n const { compilerOptions } = config;\n if (compilerOptions.paths && !compilerOptions.baseUrl) {\n type WithImplicitBaseUrl = TsConfigJson.CompilerOptions & {\n [implicitBaseUrlSymbol]: string;\n };\n // eslint-disable-next-line security/detect-object-injection\n (compilerOptions as WithImplicitBaseUrl)[implicitBaseUrlSymbol] = directoryPath;\n }\n }\n\n if (config.extends) {\n const extendsPathList = Array.isArray(config.extends) ? config.extends : [config.extends];\n\n delete config.extends;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax,etc/no-assign-mutated-array\n for (const extendsPath of extendsPathList.reverse()) {\n const extendsConfig = resolveExtends(extendsPath, directoryPath, new Set(circularExtendsTracker), options);\n const merged = {\n ...extendsConfig,\n ...config,\n\n compilerOptions: {\n ...extendsConfig.compilerOptions,\n ...config.compilerOptions,\n },\n };\n\n if (extendsConfig.watchOptions) {\n merged.watchOptions = {\n ...extendsConfig.watchOptions,\n ...config.watchOptions,\n };\n }\n\n config = merged;\n }\n }\n\n if (config.compilerOptions) {\n const { compilerOptions } = config;\n const normalizedPaths = [\"baseUrl\", \"rootDir\"] as const;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of normalizedPaths) {\n // eslint-disable-next-line security/detect-object-injection\n const unresolvedPath = compilerOptions[property];\n\n if (unresolvedPath) {\n const resolvedBaseUrl = resolve(directoryPath, unresolvedPath);\n const relativeBaseUrl = relative(directoryPath, resolvedBaseUrl);\n\n // eslint-disable-next-line security/detect-object-injection\n compilerOptions[property] = normalizePath(relativeBaseUrl);\n }\n }\n\n const { outDir } = compilerOptions;\n\n if (outDir) {\n if (!Array.isArray(config.exclude)) {\n config.exclude = [];\n }\n\n if (!config.exclude.includes(outDir)) {\n config.exclude.push(outDir);\n }\n\n compilerOptions.outDir = normalizePath(outDir);\n }\n\n if (options?.tscCompatible && compilerOptions.module === \"node16\") {\n compilerOptions.allowSyntheticDefaultImports = compilerOptions.allowSyntheticDefaultImports ?? true;\n compilerOptions.esModuleInterop = compilerOptions.esModuleInterop ?? true;\n compilerOptions.moduleDetection = compilerOptions.moduleDetection ?? \"force\";\n compilerOptions.moduleResolution = compilerOptions.moduleResolution ?? \"node16\";\n compilerOptions.target = compilerOptions.target ?? \"es2022\";\n compilerOptions.useDefineForClassFields = compilerOptions.useDefineForClassFields ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.strict) {\n compilerOptions.noImplicitAny = compilerOptions.noImplicitAny ?? true;\n compilerOptions.noImplicitThis = compilerOptions.noImplicitThis ?? true;\n compilerOptions.strictNullChecks = compilerOptions.strictNullChecks ?? true;\n compilerOptions.strictFunctionTypes = compilerOptions.strictFunctionTypes ?? true;\n compilerOptions.strictBindCallApply = compilerOptions.strictBindCallApply ?? true;\n compilerOptions.strictPropertyInitialization = compilerOptions.strictPropertyInitialization ?? true;\n compilerOptions.alwaysStrict = compilerOptions.alwaysStrict ?? true;\n compilerOptions.useUnknownInCatchVariables = compilerOptions.useUnknownInCatchVariables ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.isolatedModules) {\n compilerOptions.preserveConstEnums = compilerOptions.preserveConstEnums ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.esModuleInterop) {\n compilerOptions.allowSyntheticDefaultImports = compilerOptions.allowSyntheticDefaultImports ?? true;\n }\n\n if (options?.tscCompatible && compilerOptions.target === \"esnext\") {\n compilerOptions.useDefineForClassFields = compilerOptions.useDefineForClassFields ?? true;\n }\n } else {\n config.compilerOptions = {};\n }\n\n if (config.files) {\n config.files = config.files.map((element) => normalizePath(element));\n }\n\n if (config.include) {\n config.include = config.include.map((element) => normalize(element));\n }\n\n if (config.watchOptions) {\n const { watchOptions } = config;\n\n if (watchOptions.excludeDirectories) {\n watchOptions.excludeDirectories = watchOptions.excludeDirectories.map((excludePath) => resolve(directoryPath, excludePath));\n }\n }\n\n return config;\n};\n\nconst readTsConfig = (tsconfigPath: string, options?: Options): TsConfigJsonResolved => internalParseTsConfig(tsconfigPath, options);\n\nexport default readTsConfig;\n","/**\n * A modified version of `resolveExtendsPath` from `https://github.com/privatenumber/get-tsconfig/blob/develop/src/parse-tsconfig/resolve-extends-path.ts`\n *\n * MIT License\n * Copyright (c) Hiroki Osame <hiroki.osame@gmail.com>\n */\nimport { existsSync, statSync } from \"node:fs\";\nimport Module from \"node:module\";\nimport { isAbsolute, join, resolve } from \"node:path\";\n\nimport { findUpSync, readFileSync } from \"@visulima/fs\";\nimport { parse } from \"jsonc-parser\";\nimport type { PathConditions } from \"resolve-pkg-maps\";\nimport { resolveExports } from \"resolve-pkg-maps\";\nimport type { PackageJson } from \"type-fest\";\n\nimport type { Cache } from \"../types\";\n\nconst readJsonc = (jsonPath: string) => parse(readFileSync(jsonPath) as string) as unknown;\n\nconst getPnpApi = () => {\n const { findPnpApi } = Module;\n\n // https://yarnpkg.com/advanced/pnpapi/#requirepnpapi\n return findPnpApi?.(process.cwd());\n};\n\nconst resolveFromPackageJsonPath = (packageJsonPath: string, subpath: string, ignoreExports?: boolean, cache?: Cache<string>) => {\n const cacheKey = `resolveFromPackageJsonPath:${packageJsonPath}:${subpath}:${ignoreExports}`;\n\n if (cache?.has(cacheKey)) {\n return cache.get(cacheKey);\n }\n\n const packageJson = readJsonc(packageJsonPath);\n\n if (!packageJson) {\n return undefined;\n }\n\n let resolvedPath = subpath || \"tsconfig.json\";\n\n if (!ignoreExports && (packageJson as PackageJson).exports) {\n try {\n const [resolvedExport] = resolveExports((packageJson as PackageJson).exports as PathConditions, subpath, [\"require\", \"types\"]);\n\n resolvedPath = resolvedExport as string;\n } catch {\n // Block\n return false;\n }\n } else if (!subpath && (packageJson as PackageJson).tsconfig) {\n resolvedPath = (packageJson as PackageJson).tsconfig as string;\n }\n\n resolvedPath = join(packageJsonPath, \"..\", resolvedPath);\n\n cache?.set(cacheKey, resolvedPath);\n\n return resolvedPath;\n};\n\nconst PACKAGE_JSON = \"package.json\";\nconst TS_CONFIG_JSON = \"tsconfig.json\";\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst resolveExtendsPath = (requestedPath: string, directoryPath: string, cache?: Cache<string>): string | undefined => {\n let filePath = requestedPath;\n\n if (requestedPath === \"..\") {\n filePath = join(filePath, TS_CONFIG_JSON);\n }\n\n if (requestedPath.startsWith(\".\")) {\n filePath = resolve(directoryPath, filePath);\n }\n\n if (isAbsolute(filePath)) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(filePath)) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (statSync(filePath).isFile()) {\n return filePath;\n }\n } else if (!filePath.endsWith(\".json\")) {\n const jsonPath = `${filePath}.json`;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(jsonPath)) {\n return jsonPath;\n }\n }\n\n return undefined;\n }\n\n const [orgOrName, ...remaining] = requestedPath.split(\"/\");\n const packageName = ((orgOrName as string).startsWith(\"@\") ? `${orgOrName}/${remaining.shift()}` : orgOrName) as string;\n const subpath = remaining.join(\"/\");\n\n const pnpApi = getPnpApi();\n\n if (pnpApi) {\n const { resolveRequest: resolveWithPnp } = pnpApi;\n\n try {\n if (packageName === requestedPath) {\n const packageJsonPath = resolveWithPnp(join(packageName, PACKAGE_JSON), directoryPath);\n\n if (packageJsonPath) {\n const resolvedPath = resolveFromPackageJsonPath(packageJsonPath, subpath, false, cache);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n } else {\n let resolved: string | null;\n\n try {\n resolved = resolveWithPnp(requestedPath, directoryPath, { extensions: [\".json\"] });\n } catch {\n resolved = resolveWithPnp(join(requestedPath, TS_CONFIG_JSON), directoryPath);\n }\n\n if (resolved) {\n return resolved;\n }\n }\n } catch {\n /* empty */\n }\n }\n\n const packagePath = findUpSync(\n (directory) => {\n const path = join(directory, \"node_modules\", packageName);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(path)) {\n return join(\"node_modules\", packageName);\n }\n\n return undefined;\n },\n {\n cwd: directoryPath,\n type: \"directory\",\n },\n );\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!packagePath || !statSync(packagePath).isDirectory()) {\n return undefined;\n }\n\n const packageJsonPath = join(packagePath, PACKAGE_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(packageJsonPath)) {\n const resolvedPath = resolveFromPackageJsonPath(packageJsonPath, subpath, false, cache);\n\n // Blocked\n if (resolvedPath === false) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath) && statSync(resolvedPath).isFile()) {\n return resolvedPath;\n }\n }\n\n const fullPackagePath = join(packagePath, subpath);\n const jsonExtension = fullPackagePath.endsWith(\".json\");\n\n if (!jsonExtension) {\n const fullPackagePathWithJson = `${fullPackagePath}.json`;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(fullPackagePathWithJson)) {\n return fullPackagePathWithJson;\n }\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!existsSync(fullPackagePath)) {\n return undefined;\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (statSync(fullPackagePath).isDirectory()) {\n const fullPackageJsonPath = join(fullPackagePath, PACKAGE_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(fullPackageJsonPath)) {\n const resolvedPath = resolveFromPackageJsonPath(fullPackageJsonPath, \"\", true, cache);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (resolvedPath && existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n\n const tsconfigPath = join(fullPackagePath, TS_CONFIG_JSON);\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(tsconfigPath)) {\n return tsconfigPath;\n }\n } else if (jsonExtension) {\n return fullPackagePath;\n }\n\n return undefined;\n};\n\nexport default resolveExtendsPath;\n"]}