@aryaemami59/vitest-config 0.0.4 → 0.0.5

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @aryaemami59/vitest-config
2
2
 
3
- Vitest configuration tailored for projects using TypeScript.
3
+ Shareable [**Vitest**](https://vitest.dev) configuration tailored for projects using TypeScript.
4
4
 
5
5
  ## Installation
6
6
 
@@ -30,6 +30,10 @@ bun add --dev @aryaemami59/vitest-config
30
30
 
31
31
  ## Usage
32
32
 
33
+ ### **`vitestConfig`**
34
+
35
+ Shareable [**Vitest**](https://vitest.dev) configuration tailored for projects using TypeScript.
36
+
33
37
  **ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`**:
34
38
 
35
39
  ```ts
@@ -62,7 +66,42 @@ import vitestConfig = vitestConfigModule.vitestConfig
62
66
  export = vitestConfig
63
67
  ```
64
68
 
65
- To avoid having to write JSDocs we also provide a `createVitestConfig` function. This function already includes the default `vitestConfig` and you can pass in additional overrides as an argument.
69
+ ### **`vitestProject`**
70
+
71
+ Shareable [**Vitest**](https://vitest.dev) configuration tailored for projects using TypeScript.
72
+
73
+ **ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`**
74
+
75
+ ```ts
76
+ import { vitestProject } from '@aryaemami59/vitest-config'
77
+ export default vitestProject
78
+ ```
79
+
80
+ **CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)**
81
+
82
+ ```ts
83
+ const { vitestProject } = require('@aryaemami59/vitest-config')
84
+ module.exports = vitestProject
85
+ ```
86
+
87
+ **CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)**
88
+
89
+ ```ts
90
+ module.exports = (async () =>
91
+ (await import('@aryaemami59/vitest-config')).vitestProject)()
92
+ ```
93
+
94
+ **CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)**
95
+
96
+ ```ts
97
+ import vitestConfigModule = require('@aryaemami59/vitest-config')
98
+ import vitestProject = vitestConfigModule.vitestProject
99
+ export = vitestProject
100
+ ```
101
+
102
+ ### **`createVitestConfig`**
103
+
104
+ To avoid having to write JSDocs we also provide a `createVitestConfig` function. This function already includes the default **<a href="#vitestConfig">`vitestConfig`</a>** and you can pass in additional overrides as an argument.
66
105
 
67
106
  **ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`**:
68
107
 
@@ -115,3 +154,57 @@ export = createVitestConfig({
115
154
  },
116
155
  })
117
156
  ```
157
+
158
+ ### **`createVitestProject`**
159
+
160
+ A function that returns **<a href="#vitestProject">`vitestProject`</a>**
161
+ along with optional additional overrides.
162
+
163
+ **ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`**
164
+
165
+ ```ts
166
+ import { createVitestProject } from '@aryaemami59/vitest-config'
167
+ export default createVitestProject({
168
+ test: {
169
+ environment: 'jsdom',
170
+ // Other additional overrides
171
+ },
172
+ })
173
+ ```
174
+
175
+ **CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)**
176
+
177
+ ```ts
178
+ const { createVitestProject } = require('@aryaemami59/vitest-config')
179
+ module.exports = createVitestProject({
180
+ test: {
181
+ environment: 'jsdom',
182
+ // Other additional overrides
183
+ },
184
+ })
185
+ ```
186
+
187
+ **CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)**
188
+
189
+ ```ts
190
+ module.exports = (async () =>
191
+ (await import('@aryaemami59/vitest-config')).createVitestProject({
192
+ test: {
193
+ environment: 'jsdom',
194
+ // Other additional overrides
195
+ },
196
+ }))()
197
+ ```
198
+
199
+ **CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)**
200
+
201
+ ```ts
202
+ import vitestConfigModule = require('@aryaemami59/vitest-config')
203
+ import createVitestProject = vitestConfigModule.createVitestProject
204
+ export = createVitestProject({
205
+ test: {
206
+ environment: 'jsdom',
207
+ // Other additional overrides
208
+ },
209
+ })
210
+ ```
package/dist/index.cjs CHANGED
@@ -31,13 +31,21 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var src_exports = {};
32
32
  __export(src_exports, {
33
33
  createVitestConfig: () => createVitestConfig,
34
- vitestConfig: () => vitestConfig
34
+ createVitestProject: () => createVitestProject,
35
+ defineConfig: () => import_config.defineConfig,
36
+ defineProject: () => import_config.defineProject,
37
+ mergeConfig: () => import_config.mergeConfig,
38
+ plugins: () => plugins,
39
+ tsconfigPaths: () => src_default,
40
+ tsconfigPathsOptions: () => tsconfigPathsOptions,
41
+ vitestConfig: () => vitestConfig,
42
+ vitestConfigDefaults: () => vitestConfigDefaults,
43
+ vitestProject: () => vitestProject,
44
+ vitestProjectDefaults: () => vitestProjectDefaults
35
45
  });
36
46
  module.exports = __toCommonJS(src_exports);
37
- var import_node_fs = require("node:fs");
38
47
 
39
48
  // ../../node_modules/vite-tsconfig-paths/dist/index.js
40
- var import_debug = __toESM(require("debug"), 1);
41
49
  var fs = __toESM(require("fs"), 1);
42
50
  var import_globrex = __toESM(require("globrex"), 1);
43
51
  var import_path = require("path");
@@ -48,6 +56,7 @@ var os = __toESM(require("os"), 1);
48
56
  var path = __toESM(require("path"), 1);
49
57
  var import_vite2 = require("vite");
50
58
  var import_path3 = require("path");
59
+ var import_debug = __toESM(require("debug"), 1);
51
60
  function resolvePathMappings(paths, base) {
52
61
  const sortedPatterns = Object.keys(paths).sort(
53
62
  (a, b) => getPrefixLength(b) - getPrefixLength(a)
@@ -77,7 +86,12 @@ var join = path.posix.join;
77
86
  var relative = path.posix.relative;
78
87
  var basename = path.posix.basename;
79
88
  var debug = (0, import_debug.default)("vite-tsconfig-paths");
80
- var noMatch = [void 0, false];
89
+ var debugResolve = (0, import_debug.default)("vite-tsconfig-paths:resolve");
90
+ if (process.env.TEST) {
91
+ import_debug.default.log = console.log.bind(console);
92
+ }
93
+ var notApplicable = [void 0, false];
94
+ var notFound = [void 0, true];
81
95
  var src_default = (opts = {}) => {
82
96
  let resolversByDir;
83
97
  return {
@@ -186,37 +200,68 @@ var src_default = (opts = {}) => {
186
200
  });
187
201
  },
188
202
  async resolveId(id, importer, options) {
189
- if (importer && !relativeImportRE.test(id) && !isAbsolute(id)) {
190
- const resolveOptions = { ...options, skipSelf: true };
191
- const viteResolve = async (id2, importer2) => {
192
- var _a;
193
- return (_a = await this.resolve(id2, importer2, resolveOptions)) == null ? void 0 : _a.id;
194
- };
195
- let prevProjectDir;
196
- let projectDir = (0, import_vite.normalizePath)((0, import_path3.dirname)(importer));
197
- loop:
198
- while (projectDir && projectDir != prevProjectDir) {
199
- const resolvers = resolversByDir[projectDir];
200
- if (resolvers)
201
- for (const resolve4 of resolvers) {
202
- const [resolved, matched] = await resolve4(
203
- viteResolve,
204
- id,
205
- importer
206
- );
207
- if (resolved) {
208
- return resolved;
209
- }
210
- if (matched) {
211
- break loop;
212
- }
203
+ if (debugResolve.enabled) {
204
+ debugResolve("resolving:", { id, importer });
205
+ }
206
+ if (!importer) {
207
+ debugResolve("importer is empty or undefined. skipping...");
208
+ return;
209
+ }
210
+ if (relativeImportRE.test(id)) {
211
+ debugResolve("id is a relative import. skipping...");
212
+ return;
213
+ }
214
+ if (isAbsolute(id)) {
215
+ debugResolve("id is an absolute path. skipping...");
216
+ return;
217
+ }
218
+ if (id.includes("\0")) {
219
+ debugResolve("id is a virtual module. skipping...");
220
+ return;
221
+ }
222
+ const resolveOptions = { ...options, skipSelf: true };
223
+ const viteResolve = async (id2, importer2) => {
224
+ var _a;
225
+ return (_a = await this.resolve(id2, importer2, resolveOptions)) == null ? void 0 : _a.id;
226
+ };
227
+ let prevProjectDir;
228
+ let projectDir = (0, import_vite.normalizePath)((0, import_path3.dirname)(importer));
229
+ loop:
230
+ while (projectDir && projectDir != prevProjectDir) {
231
+ const resolvers = resolversByDir[projectDir];
232
+ if (resolvers) {
233
+ for (const resolve4 of resolvers) {
234
+ const [resolved, matched] = await resolve4(viteResolve, id, importer);
235
+ if (resolved) {
236
+ return resolved;
237
+ }
238
+ if (matched) {
239
+ break loop;
213
240
  }
214
- prevProjectDir = projectDir;
215
- projectDir = (0, import_path3.dirname)(prevProjectDir);
241
+ }
216
242
  }
217
- }
243
+ prevProjectDir = projectDir;
244
+ projectDir = (0, import_path3.dirname)(prevProjectDir);
245
+ }
218
246
  }
219
247
  };
248
+ function resolvePathsRootDir(project) {
249
+ var _a, _b, _c, _d;
250
+ if ("result" in project) {
251
+ return (_b = (_a = project.result.options) == null ? void 0 : _a.pathsBasePath) != null ? _b : (0, import_path3.dirname)(project.tsconfigFile);
252
+ }
253
+ const baseUrl = (_c = project.tsconfig.compilerOptions) == null ? void 0 : _c.baseUrl;
254
+ if (baseUrl) {
255
+ return baseUrl;
256
+ }
257
+ const projectWithPaths = (_d = project.extended) == null ? void 0 : _d.find(
258
+ (p) => {
259
+ var _a2;
260
+ return (_a2 = p.tsconfig.compilerOptions) == null ? void 0 : _a2.paths;
261
+ }
262
+ );
263
+ return (0, import_path3.dirname)((projectWithPaths != null ? projectWithPaths : project).tsconfigFile);
264
+ }
220
265
  function createResolver(project) {
221
266
  var _a, _b, _c, _d;
222
267
  const configPath = (0, import_vite.normalizePath)(project.tsconfigFile);
@@ -234,13 +279,15 @@ var src_default = (opts = {}) => {
234
279
  debug(`[!] missing baseUrl and paths: "${configPath}"`);
235
280
  return null;
236
281
  }
237
- const resolveWithBaseUrl = baseUrl ? (viteResolve, id, importer) => viteResolve(join(baseUrl, id), importer) : void 0;
282
+ const resolveWithBaseUrl = baseUrl ? (viteResolve, id, importer) => {
283
+ const absoluteId = join(baseUrl, id);
284
+ debugResolve("trying with baseUrl:", absoluteId);
285
+ return viteResolve(absoluteId, importer);
286
+ } : void 0;
238
287
  let resolveId;
239
288
  if (paths) {
240
- const pathMappings = resolvePathMappings(
241
- paths,
242
- baseUrl != null ? baseUrl : (0, import_path3.dirname)(configPath)
243
- );
289
+ const pathsRootDir = resolvePathsRootDir(project);
290
+ const pathMappings = resolvePathMappings(paths, pathsRootDir);
244
291
  const resolveWithPaths = async (viteResolve, id, importer) => {
245
292
  for (const mapping of pathMappings) {
246
293
  const match = id.match(mapping.pattern);
@@ -253,6 +300,7 @@ var src_default = (opts = {}) => {
253
300
  const matchIndex = Math.min(++starCount, match.length - 1);
254
301
  return match[matchIndex];
255
302
  });
303
+ debugResolve("found match, trying to resolve:", mappedId);
256
304
  const resolved = await viteResolve(mappedId, importer);
257
305
  if (resolved) {
258
306
  return resolved;
@@ -284,37 +332,41 @@ var src_default = (opts = {}) => {
284
332
  const resolutionCache = /* @__PURE__ */ new Map();
285
333
  return async (viteResolve, id, importer) => {
286
334
  var _a2;
287
- if (id.includes("\0")) {
288
- return noMatch;
289
- }
290
335
  importer = (0, import_vite.normalizePath)(importer);
291
336
  const importerFile = importer.replace(/[#?].+$/, "");
292
337
  if (!importerExtRE.test(importerFile)) {
293
- return noMatch;
338
+ debugResolve("importer has unsupported extension. skipping...");
339
+ return notApplicable;
294
340
  }
295
341
  const relativeImporterFile = relative(configDir, importerFile);
296
342
  if (!isIncludedRelative(relativeImporterFile)) {
297
- return noMatch;
343
+ debugResolve("importer is not included. skipping...");
344
+ return notApplicable;
298
345
  }
299
346
  const suffix = (_a2 = /\?.+$/.exec(id)) == null ? void 0 : _a2[0];
300
347
  if (suffix) {
301
348
  id = id.slice(0, -suffix.length);
302
349
  }
303
- let path2 = resolutionCache.get(id);
304
- if (!path2) {
305
- path2 = await resolveId(viteResolve, id, importer);
306
- if (!path2) {
307
- return noMatch;
350
+ let resolvedId = resolutionCache.get(id);
351
+ if (!resolvedId) {
352
+ resolvedId = await resolveId(viteResolve, id, importer);
353
+ if (!resolvedId) {
354
+ return notFound;
308
355
  }
309
- resolutionCache.set(id, path2);
310
- debug(`resolved:`, {
311
- id,
312
- importer,
313
- resolvedId: path2,
314
- configPath
315
- });
356
+ resolutionCache.set(id, resolvedId);
357
+ if (debugResolve.enabled) {
358
+ debugResolve("resolved without error:", {
359
+ id,
360
+ importer,
361
+ resolvedId,
362
+ configPath
363
+ });
364
+ }
365
+ }
366
+ if (suffix) {
367
+ resolvedId += suffix;
316
368
  }
317
- return [path2 && suffix ? path2 + suffix : path2, true];
369
+ return [resolvedId, true];
318
370
  };
319
371
  }
320
372
  };
@@ -369,22 +421,113 @@ function ensureRelative(dir, path2) {
369
421
  return isAbsolute(path2) ? relative(dir, path2) : path2;
370
422
  }
371
423
 
372
- // src/index.ts
424
+ // src/external.ts
373
425
  var import_config = require("vitest/config");
374
- var vitestConfig = /* @__PURE__ */ (0, import_config.defineConfig)({
375
- plugins: [/* @__PURE__ */ src_default({ projects: ["./tsconfig.json"] })],
426
+
427
+ // src/plugins.ts
428
+ var tsconfigPathsOptions = {
429
+ configNames: ["tsconfig.json"],
430
+ projects: ["./tsconfig.json"]
431
+ };
432
+ var plugins = [
433
+ /* @__PURE__ */ src_default(tsconfigPathsOptions)
434
+ ];
435
+
436
+ // src/defaults.ts
437
+ var vitestProjectDefaults = {
438
+ /**
439
+ * @default { 'import.meta.vitest': 'undefined' }
440
+ */
441
+ define: {
442
+ /**
443
+ * @default 'undefined'
444
+ */
445
+ "import.meta.vitest": "undefined"
446
+ },
447
+ /**
448
+ * @default [tsconfigPaths({ configNames: ['tsconfig.json'], projects: ['./tsconfig.json'] })]
449
+ */
450
+ plugins,
376
451
  test: {
377
- watch: false,
452
+ /**
453
+ * @default true
454
+ */
455
+ clearMocks: true,
456
+ /**
457
+ * @default true
458
+ */
378
459
  globals: true,
379
- testTimeout: 1e4,
380
- setupFiles: /* @__PURE__ */ (0, import_node_fs.existsSync)("./vitest.setup.ts") ? ["./vitest.setup.ts"] : []
381
- },
382
- define: { "import.meta.vitest": "undefined" }
383
- });
460
+ /**
461
+ * @default { enabled: true, tsconfig: './tsconfig.json' }
462
+ */
463
+ typecheck: {
464
+ /**
465
+ * @default true
466
+ */
467
+ enabled: true,
468
+ /**
469
+ * @default './tsconfig.json'
470
+ */
471
+ tsconfig: "./tsconfig.json"
472
+ },
473
+ /**
474
+ * @default true
475
+ */
476
+ unstubEnvs: true,
477
+ /**
478
+ * @default true
479
+ */
480
+ unstubGlobals: true
481
+ }
482
+ };
483
+ var vitestConfigDefaults = {
484
+ ...vitestProjectDefaults,
485
+ test: {
486
+ ...vitestProjectDefaults.test,
487
+ /**
488
+ * @default { extension: ['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs', '.cts', '.cjs'], include: ['src'] }
489
+ */
490
+ coverage: {
491
+ /**
492
+ * @default ['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs', '.cts', '.cjs']
493
+ */
494
+ extension: [".ts", ".tsx", ".js", ".jsx", ".mts", ".mjs", ".cts", ".cjs"],
495
+ /**
496
+ * @default ['src']
497
+ */
498
+ include: ["src"]
499
+ },
500
+ /**
501
+ * @default process.env.GITHUB_ACTIONS ? [['default', { summary: false }], ['github-actions']] : [['default']]
502
+ */
503
+ reporters: process.env.GITHUB_ACTIONS ? [["default", { summary: false }], ["github-actions"]] : [["default"]],
504
+ /**
505
+ * @default false
506
+ */
507
+ watch: false
508
+ }
509
+ };
510
+
511
+ // src/shareableConfigs.ts
512
+ var vitestConfig = /* @__PURE__ */ (0, import_config.defineConfig)(vitestConfigDefaults);
513
+ var vitestProject = /* @__PURE__ */ (0, import_config.defineProject)(vitestConfigDefaults);
514
+
515
+ // src/utils.ts
384
516
  var createVitestConfig = (additionalOverrides = {}) => /* @__PURE__ */ (0, import_config.mergeConfig)(vitestConfig, additionalOverrides);
517
+ var createVitestProject = (additionalOverrides = {}) => /* @__PURE__ */ (0, import_config.mergeConfig)(vitestProject, additionalOverrides);
385
518
  // Annotate the CommonJS export names for ESM import in node:
386
519
  0 && (module.exports = {
387
520
  createVitestConfig,
388
- vitestConfig
521
+ createVitestProject,
522
+ defineConfig,
523
+ defineProject,
524
+ mergeConfig,
525
+ plugins,
526
+ tsconfigPaths,
527
+ tsconfigPathsOptions,
528
+ vitestConfig,
529
+ vitestConfigDefaults,
530
+ vitestProject,
531
+ vitestProjectDefaults
389
532
  });
390
533
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../../../node_modules/vite-tsconfig-paths/src/index.ts","../../../node_modules/vite-tsconfig-paths/src/mappings.ts","../../../node_modules/vite-tsconfig-paths/src/path.ts"],"sourcesContent":["import { existsSync } from 'node:fs'\nimport tsconfigPaths from 'vite-tsconfig-paths'\nimport type { ViteUserConfig } from 'vitest/config'\nimport { defineConfig, mergeConfig } from 'vitest/config'\n\n/**\n * Vitest configuration tailored for projects using TypeScript.\n *\n * @example\n * <caption>#### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__</caption>\n *\n * ```ts\n * import { vitestConfig } from '@aryaemami59/vitest-config'\n *\n * export default vitestConfig\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__</caption>\n *\n * ```ts\n * const { vitestConfig } = require('@aryaemami59/vitest-config')\n *\n * module.exports = vitestConfig\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__</caption>\n *\n * ```ts\n * module.exports = (async () =>\n * (await import('@aryaemami59/vitest-config')).vitestConfig)()\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__</caption>\n *\n * ```ts\n * import vitestConfigModule = require('@aryaemami59/vitest-config')\n * import vitestConfig = vitestConfigModule.vitestConfig\n *\n * export = vitestConfig\n * ```\n *\n * @since 0.0.3\n * @public\n */\nexport const vitestConfig: ViteUserConfig = /* @__PURE__ */ defineConfig({\n plugins: [/* @__PURE__ */ tsconfigPaths({ projects: ['./tsconfig.json'] })],\n test: {\n watch: false,\n globals: true,\n testTimeout: 10_000,\n setupFiles: /* @__PURE__ */ existsSync('./vitest.setup.ts')\n ? ['./vitest.setup.ts']\n : [],\n },\n define: { 'import.meta.vitest': 'undefined' },\n})\n\n/**\n * A function that returns {@linkcode vitestConfig}\n * along with optional additional overrides.\n *\n * @param additionalOverrides - Optional additional overrides to apply to the configuration.\n * @returns An augmented version of the default {@linkcode vitestConfig}, incorporating any provided overrides.\n *\n * @example\n * <caption>#### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__</caption>\n *\n * ```ts\n * import { createVitestConfig } from '@aryaemami59/vitest-config'\n *\n * export default createVitestConfig({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * })\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__</caption>\n *\n * ```ts\n * const { createVitestConfig } = require('@aryaemami59/vitest-config')\n *\n * module.exports = createVitestConfig({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * })\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__</caption>\n *\n * ```ts\n * module.exports = (async () =>\n * (await import('@aryaemami59/vitest-config')).createVitestConfig({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * }))()\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__</caption>\n *\n * ```ts\n * import vitestConfigModule = require('@aryaemami59/vitest-config')\n * import createVitestConfig = vitestConfigModule.createVitestConfig\n *\n * export = createVitestConfig({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * })\n * ```\n *\n * @since 0.0.3\n * @public\n */\nexport const createVitestConfig = (\n additionalOverrides: ViteUserConfig = {},\n): ViteUserConfig =>\n /* @__PURE__ */ mergeConfig(vitestConfig, additionalOverrides)\n","import _debug from 'debug'\nimport * as fs from 'fs'\nimport globRex from 'globrex'\nimport { resolve } from 'path'\nimport type { TSConfckParseOptions, TSConfckParseResult } from 'tsconfck'\nimport type { CompilerOptions } from 'typescript'\nimport { inspect } from 'util'\nimport { normalizePath, Plugin, searchForWorkspaceRoot } from 'vite'\nimport { resolvePathMappings } from './mappings'\nimport { basename, dirname, isAbsolute, join, relative } from './path'\nimport { PluginOptions } from './types'\n\nconst debug = _debug('vite-tsconfig-paths')\n\nconst noMatch = [undefined, false] as [undefined, false]\n\ntype ViteResolve = (id: string, importer: string) => Promise<string | undefined>\n\ntype Resolver = (\n viteResolve: ViteResolve,\n id: string,\n importer: string\n) => Promise<[resolved: string | undefined, matched: boolean]>\n\nexport type { PluginOptions }\n\nexport default (opts: PluginOptions = {}): Plugin => {\n let resolversByDir: Record<string, Resolver[]>\n\n return {\n name: 'vite-tsconfig-paths',\n enforce: 'pre',\n async configResolved(config) {\n let projectRoot = config.root\n let workspaceRoot!: string\n\n let { root } = opts\n if (root) {\n root = resolve(projectRoot, root)\n } else {\n workspaceRoot = searchForWorkspaceRoot(projectRoot)\n }\n\n debug('options.root ==', root)\n debug('project root ==', projectRoot)\n debug('workspace root ==', workspaceRoot)\n\n // The \"root\" option overrides both of these.\n if (root) {\n projectRoot = root\n workspaceRoot = root\n }\n\n const tsconfck = await import('tsconfck')\n\n const projects = opts.projects\n ? opts.projects.map((file) => {\n if (!file.endsWith('.json')) {\n file = join(file, 'tsconfig.json')\n }\n return resolve(projectRoot, file)\n })\n : await tsconfck.findAll(workspaceRoot, {\n configNames: opts.configNames || ['tsconfig.json', 'jsconfig.json'],\n skip(dir) {\n if (dir === '.git' || dir === 'node_modules') {\n return true\n }\n if (typeof opts.skip === 'function') {\n return opts.skip(dir)\n }\n return false\n },\n })\n\n debug('projects:', projects)\n\n let hasTypeScriptDep = false\n if (opts.parseNative) {\n try {\n const pkgJson = fs.readFileSync(\n join(workspaceRoot, 'package.json'),\n 'utf8'\n )\n const pkg = JSON.parse(pkgJson)\n const deps = { ...pkg.dependencies, ...pkg.devDependencies }\n hasTypeScriptDep = 'typescript' in deps\n } catch (e: any) {\n if (e.code != 'ENOENT') {\n throw e\n }\n }\n }\n\n let firstError: any\n\n const parseOptions: TSConfckParseOptions = {\n cache: new tsconfck.TSConfckCache(),\n }\n\n const parsedProjects = new Set(\n await Promise.all(\n projects.map((tsconfigFile) => {\n if (tsconfigFile === null) {\n debug('tsconfig file not found:', tsconfigFile)\n return null\n }\n return (\n hasTypeScriptDep\n ? tsconfck.parseNative(tsconfigFile, parseOptions)\n : tsconfck.parse(tsconfigFile, parseOptions)\n ).catch((error) => {\n if (opts.ignoreConfigErrors) {\n debug('tsconfig file caused a parsing error:', tsconfigFile)\n } else {\n config.logger.error(\n '[tsconfig-paths] An error occurred while parsing \"' +\n tsconfigFile +\n '\". See below for details.' +\n (firstError\n ? ''\n : ' To disable this message, set the `ignoreConfigErrors` option to true.'),\n { error }\n )\n if (config.logger.hasErrorLogged(error)) {\n console.error(error)\n }\n firstError = error\n }\n return null\n })\n })\n )\n )\n\n resolversByDir = {}\n parsedProjects.forEach((project) => {\n if (!project) {\n return\n }\n // Don't create a resolver for projects with a references array.\n // Instead, create a resolver for each project in that array.\n if (project.referenced) {\n project.referenced.forEach((projectRef) => {\n parsedProjects.add(projectRef)\n })\n // Reinsert the parent project so it's tried last. This is\n // important because project references can be used to\n // override the parent project.\n parsedProjects.delete(project)\n parsedProjects.add(project)\n project.referenced = undefined\n } else {\n const resolver = createResolver(project)\n if (resolver) {\n const projectDir = normalizePath(dirname(project.tsconfigFile))\n const resolvers = (resolversByDir[projectDir] ||= [])\n resolvers.push(resolver)\n }\n }\n })\n },\n async resolveId(id, importer, options) {\n if (importer && !relativeImportRE.test(id) && !isAbsolute(id)) {\n // For Vite 4 and under, skipSelf needs to be set.\n const resolveOptions = { ...options, skipSelf: true }\n const viteResolve: ViteResolve = async (id, importer) =>\n (await this.resolve(id, importer, resolveOptions))?.id\n\n let prevProjectDir: string | undefined\n let projectDir = normalizePath(dirname(importer))\n\n // Find the nearest directory with a matching tsconfig file.\n loop: while (projectDir && projectDir != prevProjectDir) {\n const resolvers = resolversByDir[projectDir]\n if (resolvers)\n for (const resolve of resolvers) {\n const [resolved, matched] = await resolve(\n viteResolve,\n id,\n importer\n )\n if (resolved) {\n return resolved\n }\n if (matched) {\n // Once a matching resolver is found, stop looking.\n break loop\n }\n }\n prevProjectDir = projectDir\n projectDir = dirname(prevProjectDir)\n }\n }\n },\n }\n\n function createResolver(project: TSConfckParseResult): Resolver | null {\n const configPath = normalizePath(project.tsconfigFile)\n const config = project.tsconfig as {\n files?: string[]\n include?: string[]\n exclude?: string[]\n compilerOptions?: CompilerOptions\n }\n\n debug('config loaded:', inspect({ configPath, config }, false, 10, true))\n\n // Sometimes a tsconfig is not meant to be used for path resolution,\n // but rather for pointing to other tsconfig files and possibly\n // being extended by them. This is represented by an explicitly\n // empty \"files\" array and a missing/empty \"include\" array.\n if (config.files?.length == 0 && !config.include?.length) {\n debug(\n `[!] skipping \"${configPath}\" as no files can be matched since \"files\" is empty and \"include\" is missing or empty`\n )\n return null\n }\n\n const options = config.compilerOptions || {}\n const { baseUrl, paths } = options\n if (!baseUrl && !paths) {\n debug(`[!] missing baseUrl and paths: \"${configPath}\"`)\n return null\n }\n\n type InternalResolver = (\n viteResolve: ViteResolve,\n id: string,\n importer: string\n ) => Promise<string | undefined>\n\n const resolveWithBaseUrl: InternalResolver | undefined = baseUrl\n ? (viteResolve, id, importer) => viteResolve(join(baseUrl, id), importer)\n : undefined\n\n let resolveId: InternalResolver\n if (paths) {\n const pathMappings = resolvePathMappings(\n paths,\n baseUrl ?? dirname(configPath)\n )\n const resolveWithPaths: InternalResolver = async (\n viteResolve,\n id,\n importer\n ) => {\n for (const mapping of pathMappings) {\n const match = id.match(mapping.pattern)\n if (!match) {\n continue\n }\n for (let pathTemplate of mapping.paths) {\n let starCount = 0\n const mappedId = pathTemplate.replace(/\\*/g, () => {\n // There may exist more globs in the path template than in\n // the match pattern. In that case, we reuse the final\n // glob match.\n const matchIndex = Math.min(++starCount, match.length - 1)\n return match[matchIndex]\n })\n const resolved = await viteResolve(mappedId, importer)\n if (resolved) {\n return resolved\n }\n }\n }\n }\n\n if (resolveWithBaseUrl) {\n resolveId = (viteResolve, id, importer) =>\n resolveWithPaths(viteResolve, id, importer).then((resolved) => {\n return resolved ?? resolveWithBaseUrl(viteResolve, id, importer)\n })\n } else {\n resolveId = resolveWithPaths\n }\n } else {\n resolveId = resolveWithBaseUrl!\n }\n\n const configDir = dirname(configPath)\n\n // When `tsconfck.parseNative` is used, the outDir is absolute,\n // which is not what `getIncluder` expects.\n let { outDir } = options\n if (outDir && isAbsolute(outDir)) {\n outDir = relative(configDir, outDir)\n }\n\n const isIncludedRelative = getIncluder(\n config.include?.map((p) => ensureRelative(configDir, p)),\n config.exclude?.map((p) => ensureRelative(configDir, p)),\n outDir\n )\n\n const importerExtRE = opts.loose\n ? /./\n : options.allowJs || basename(configPath).startsWith('jsconfig.')\n ? jsLikeRE\n : /\\.[mc]?tsx?$/\n\n const resolutionCache = new Map<string, string>()\n return async (viteResolve, id, importer) => {\n // Skip virtual modules.\n if (id.includes('\\0')) {\n return noMatch\n }\n\n importer = normalizePath(importer)\n const importerFile = importer.replace(/[#?].+$/, '')\n\n // Ignore importers with unsupported extensions.\n if (!importerExtRE.test(importerFile)) {\n return noMatch\n }\n\n // Respect the include/exclude properties.\n const relativeImporterFile = relative(configDir, importerFile)\n if (!isIncludedRelative(relativeImporterFile)) {\n return noMatch\n }\n\n // Find and remove Vite's suffix (e.g. \"?url\") if present.\n // If the path is resolved, the suffix will be added back.\n const suffix = /\\?.+$/.exec(id)?.[0]\n if (suffix) {\n id = id.slice(0, -suffix.length)\n }\n\n let path = resolutionCache.get(id)\n if (!path) {\n path = await resolveId(viteResolve, id, importer)\n if (!path) {\n return noMatch\n }\n resolutionCache.set(id, path)\n debug(`resolved:`, {\n id,\n importer,\n resolvedId: path,\n configPath,\n })\n }\n return [path && suffix ? path + suffix : path, true]\n }\n }\n}\n\nconst jsLikeRE = /\\.(vue|svelte|mdx|[mc]?[jt]sx?)$/\nconst relativeImportRE = /^\\.\\.?(\\/|$)/\nconst defaultInclude = ['**/*']\nconst defaultExclude = [\n '**/node_modules',\n '**/bower_components',\n '**/jspm_packages',\n]\n\n/**\n * The returned function does not support absolute paths.\n * Be sure to call `path.relative` on your path first.\n */\nfunction getIncluder(\n includePaths = defaultInclude,\n excludePaths = defaultExclude,\n outDir?: string\n) {\n if (outDir) {\n excludePaths = excludePaths.concat(outDir)\n }\n if (includePaths.length || excludePaths.length) {\n const includers: RegExp[] = []\n const excluders: RegExp[] = []\n\n includePaths.forEach(addCompiledGlob, includers)\n excludePaths.forEach(addCompiledGlob, excluders)\n debug(`compiled globs:`, { includers, excluders })\n\n return (path: string) => {\n path = path.replace(/\\?.+$/, '')\n if (!relativeImportRE.test(path)) {\n path = './' + path\n }\n const test = (glob: RegExp) => glob.test(path)\n return includers.some(test) && !excluders.some(test)\n }\n }\n return () => true\n}\n\nfunction addCompiledGlob(this: RegExp[], glob: string) {\n const endsWithGlob = glob.split('/').pop()!.includes('*')\n const relativeGlob = relativeImportRE.test(glob) ? glob : './' + glob\n if (endsWithGlob) {\n this.push(compileGlob(relativeGlob))\n } else {\n // Append a globstar to possible directories.\n this.push(compileGlob(relativeGlob + '/**'))\n // Try to match specific files (must have file extension).\n if (/\\.\\w+$/.test(glob)) {\n this.push(compileGlob(relativeGlob))\n }\n }\n}\n\nfunction compileGlob(glob: string) {\n return globRex(glob, {\n extended: true,\n globstar: true,\n }).regex\n}\n\nfunction ensureRelative(dir: string, path: string) {\n return isAbsolute(path) ? relative(dir, path) : path\n}\n","import { resolve } from 'path'\n\nexport type PathMapping = {\n pattern: RegExp\n paths: string[]\n}\n\nexport function resolvePathMappings(\n paths: Record<string, string[]>,\n base: string\n) {\n // If a module name can be matched with multiple patterns then pattern\n // with the longest prefix will be picked.\n const sortedPatterns = Object.keys(paths).sort(\n (a: string, b: string) => getPrefixLength(b) - getPrefixLength(a)\n )\n const resolved: PathMapping[] = []\n for (let pattern of sortedPatterns) {\n const relativePaths = paths[pattern]\n pattern = escapeStringRegexp(pattern).replace(/\\*/g, '(.+)')\n resolved.push({\n pattern: new RegExp('^' + pattern + '$'),\n paths: relativePaths.map((relativePath) => resolve(base, relativePath)),\n })\n }\n return resolved\n}\n\nfunction getPrefixLength(pattern: string): number {\n const prefixLength = pattern.indexOf('*')\n return pattern.substr(0, prefixLength).length\n}\n\n// Adapted from:\n// https://github.com/sindresorhus/escape-string-regexp/blob/ba9a4473850cb367936417e97f1f2191b7cc67dd/index.js\n//\n// MIT License\n//\n// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://\n// sindresorhus.com)\n//\nfunction escapeStringRegexp(string: string) {\n // Escape characters with special meaning either inside or outside\n // character sets. Use a simple backslash escape when it’s always\n // valid, and a `\\xnn` escape when the simpler form would be\n // disallowed by Unicode patterns’ stricter grammar.\n return string.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d')\n}\n","import * as os from 'os'\nimport * as path from 'path'\nimport { normalizePath } from 'vite'\n\nconst isWindows = os.platform() == 'win32'\n\nexport const resolve = isWindows\n ? (...paths: string[]) => normalizePath(path.win32.resolve(...paths))\n : path.posix.resolve\n\nexport const isAbsolute = isWindows\n ? path.win32.isAbsolute\n : path.posix.isAbsolute\n\n/** Only call this on normalized paths */\nexport const join = path.posix.join\n\n/** Only call this on normalized paths */\nexport const relative = path.posix.relative\n\n/** Only call this on normalized paths */\nexport const basename = path.posix.basename\n\nexport { dirname } from 'path'\n"],"mappings":"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","names":["import_path","import_vite","resolve","_debug","normalizePath","id","importer","_a","path","globRex"]}
1
+ {"version":3,"sources":["../src/index.ts","../../../node_modules/vite-tsconfig-paths/src/index.ts","../../../node_modules/vite-tsconfig-paths/src/mappings.ts","../../../node_modules/vite-tsconfig-paths/src/path.ts","../../../node_modules/vite-tsconfig-paths/src/debug.ts","../src/external.ts","../src/plugins.ts","../src/defaults.ts","../src/shareableConfigs.ts","../src/utils.ts"],"sourcesContent":["export { vitestConfigDefaults, vitestProjectDefaults } from './defaults.js'\nexport {\n defineConfig,\n defineProject,\n mergeConfig,\n tsconfigPaths,\n} from './external.js'\nexport type {\n Plugin,\n PluginOptions,\n UserWorkspaceConfig,\n ViteUserConfig,\n} from './external.js'\nexport { plugins, tsconfigPathsOptions } from './plugins.js'\nexport { vitestConfig, vitestProject } from './shareableConfigs.js'\nexport { createVitestConfig, createVitestProject } from './utils.js'\n","import _debug from 'debug'\nimport * as fs from 'fs'\nimport globRex from 'globrex'\nimport { resolve } from 'path'\nimport type {\n TSConfckParseNativeResult,\n TSConfckParseOptions,\n TSConfckParseResult,\n} from 'tsconfck'\nimport type { CompilerOptions } from 'typescript'\nimport { inspect } from 'util'\nimport { normalizePath, Plugin, searchForWorkspaceRoot } from 'vite'\nimport { resolvePathMappings } from './mappings'\nimport { basename, dirname, isAbsolute, join, relative } from './path'\nimport { PluginOptions } from './types'\nimport { debug, debugResolve } from './debug'\n\nconst notApplicable = [undefined, false] as const\nconst notFound = [undefined, true] as const\n\ntype ViteResolve = (id: string, importer: string) => Promise<string | undefined>\n\ntype Resolver = (\n viteResolve: ViteResolve,\n id: string,\n importer: string\n) => Promise<readonly [resolved: string | undefined, matched: boolean]>\n\nexport type { PluginOptions }\n\nexport default (opts: PluginOptions = {}): Plugin => {\n let resolversByDir: Record<string, Resolver[]>\n\n return {\n name: 'vite-tsconfig-paths',\n enforce: 'pre',\n async configResolved(config) {\n let projectRoot = config.root\n let workspaceRoot!: string\n\n let { root } = opts\n if (root) {\n root = resolve(projectRoot, root)\n } else {\n workspaceRoot = searchForWorkspaceRoot(projectRoot)\n }\n\n debug('options.root ==', root)\n debug('project root ==', projectRoot)\n debug('workspace root ==', workspaceRoot)\n\n // The \"root\" option overrides both of these.\n if (root) {\n projectRoot = root\n workspaceRoot = root\n }\n\n const tsconfck = await import('tsconfck')\n\n const projects = opts.projects\n ? opts.projects.map((file) => {\n if (!file.endsWith('.json')) {\n file = join(file, 'tsconfig.json')\n }\n return resolve(projectRoot, file)\n })\n : await tsconfck.findAll(workspaceRoot, {\n configNames: opts.configNames || ['tsconfig.json', 'jsconfig.json'],\n skip(dir) {\n if (dir === '.git' || dir === 'node_modules') {\n return true\n }\n if (typeof opts.skip === 'function') {\n return opts.skip(dir)\n }\n return false\n },\n })\n\n debug('projects:', projects)\n\n let hasTypeScriptDep = false\n if (opts.parseNative) {\n try {\n const pkgJson = fs.readFileSync(\n join(workspaceRoot, 'package.json'),\n 'utf8'\n )\n const pkg = JSON.parse(pkgJson)\n const deps = { ...pkg.dependencies, ...pkg.devDependencies }\n hasTypeScriptDep = 'typescript' in deps\n } catch (e: any) {\n if (e.code != 'ENOENT') {\n throw e\n }\n }\n }\n\n let firstError: any\n\n const parseOptions: TSConfckParseOptions = {\n cache: new tsconfck.TSConfckCache(),\n }\n\n const parsedProjects = new Set(\n await Promise.all(\n projects.map((tsconfigFile) => {\n if (tsconfigFile === null) {\n debug('tsconfig file not found:', tsconfigFile)\n return null\n }\n return (\n hasTypeScriptDep\n ? tsconfck.parseNative(tsconfigFile, parseOptions)\n : tsconfck.parse(tsconfigFile, parseOptions)\n ).catch((error) => {\n if (opts.ignoreConfigErrors) {\n debug('tsconfig file caused a parsing error:', tsconfigFile)\n } else {\n config.logger.error(\n '[tsconfig-paths] An error occurred while parsing \"' +\n tsconfigFile +\n '\". See below for details.' +\n (firstError\n ? ''\n : ' To disable this message, set the `ignoreConfigErrors` option to true.'),\n { error }\n )\n if (config.logger.hasErrorLogged(error)) {\n console.error(error)\n }\n firstError = error\n }\n return null\n })\n })\n )\n )\n\n resolversByDir = {}\n parsedProjects.forEach((project) => {\n if (!project) {\n return\n }\n // Don't create a resolver for projects with a references array.\n // Instead, create a resolver for each project in that array.\n if (project.referenced) {\n project.referenced.forEach((projectRef) => {\n parsedProjects.add(projectRef)\n })\n // Reinsert the parent project so it's tried last. This is\n // important because project references can be used to\n // override the parent project.\n parsedProjects.delete(project)\n parsedProjects.add(project)\n project.referenced = undefined\n } else {\n const resolver = createResolver(project)\n if (resolver) {\n const projectDir = normalizePath(dirname(project.tsconfigFile))\n const resolvers = (resolversByDir[projectDir] ||= [])\n resolvers.push(resolver)\n }\n }\n })\n },\n async resolveId(id, importer, options) {\n if (debugResolve.enabled) {\n debugResolve('resolving:', { id, importer })\n }\n\n if (!importer) {\n debugResolve('importer is empty or undefined. skipping...')\n return\n }\n if (relativeImportRE.test(id)) {\n debugResolve('id is a relative import. skipping...')\n return\n }\n if (isAbsolute(id)) {\n debugResolve('id is an absolute path. skipping...')\n return\n }\n if (id.includes('\\0')) {\n debugResolve('id is a virtual module. skipping...')\n return\n }\n\n // For Vite 4 and under, skipSelf needs to be set.\n const resolveOptions = { ...options, skipSelf: true }\n const viteResolve: ViteResolve = async (id, importer) =>\n (await this.resolve(id, importer, resolveOptions))?.id\n\n let prevProjectDir: string | undefined\n let projectDir = normalizePath(dirname(importer))\n\n // Find the nearest directory with a matching tsconfig file.\n loop: while (projectDir && projectDir != prevProjectDir) {\n const resolvers = resolversByDir[projectDir]\n if (resolvers) {\n for (const resolve of resolvers) {\n const [resolved, matched] = await resolve(viteResolve, id, importer)\n if (resolved) {\n return resolved\n }\n if (matched) {\n // Once a matching resolver is found, stop looking.\n break loop\n }\n }\n }\n prevProjectDir = projectDir\n projectDir = dirname(prevProjectDir)\n }\n },\n }\n\n type TsConfig = {\n files?: string[]\n include?: string[]\n exclude?: string[]\n compilerOptions?: CompilerOptions\n }\n\n function resolvePathsRootDir(\n project: TSConfckParseResult | TSConfckParseNativeResult\n ): string {\n if ('result' in project) {\n return (\n project.result.options?.pathsBasePath ?? dirname(project.tsconfigFile)\n )\n }\n const baseUrl = (project.tsconfig as TsConfig).compilerOptions?.baseUrl\n if (baseUrl) {\n return baseUrl\n }\n const projectWithPaths = project.extended?.find(\n (p) => (p.tsconfig as TsConfig).compilerOptions?.paths\n )\n return dirname((projectWithPaths ?? project).tsconfigFile)\n }\n\n function createResolver(\n project: TSConfckParseResult | TSConfckParseNativeResult\n ): Resolver | null {\n const configPath = normalizePath(project.tsconfigFile)\n const config = project.tsconfig as TsConfig\n\n debug('config loaded:', inspect({ configPath, config }, false, 10, true))\n\n // Sometimes a tsconfig is not meant to be used for path resolution,\n // but rather for pointing to other tsconfig files and possibly\n // being extended by them. This is represented by an explicitly\n // empty \"files\" array and a missing/empty \"include\" array.\n if (config.files?.length == 0 && !config.include?.length) {\n debug(\n `[!] skipping \"${configPath}\" as no files can be matched since \"files\" is empty and \"include\" is missing or empty`\n )\n return null\n }\n\n const options = config.compilerOptions || {}\n const { baseUrl, paths } = options\n if (!baseUrl && !paths) {\n debug(`[!] missing baseUrl and paths: \"${configPath}\"`)\n return null\n }\n\n type InternalResolver = (\n viteResolve: ViteResolve,\n id: string,\n importer: string\n ) => Promise<string | undefined>\n\n const resolveWithBaseUrl: InternalResolver | undefined = baseUrl\n ? (viteResolve, id, importer) => {\n const absoluteId = join(baseUrl, id)\n debugResolve('trying with baseUrl:', absoluteId)\n return viteResolve(absoluteId, importer)\n }\n : undefined\n\n let resolveId: InternalResolver\n if (paths) {\n const pathsRootDir = resolvePathsRootDir(project)\n const pathMappings = resolvePathMappings(paths, pathsRootDir)\n\n const resolveWithPaths: InternalResolver = async (\n viteResolve,\n id,\n importer\n ) => {\n for (const mapping of pathMappings) {\n const match = id.match(mapping.pattern)\n if (!match) {\n continue\n }\n for (let pathTemplate of mapping.paths) {\n let starCount = 0\n const mappedId = pathTemplate.replace(/\\*/g, () => {\n // There may exist more globs in the path template than in\n // the match pattern. In that case, we reuse the final\n // glob match.\n const matchIndex = Math.min(++starCount, match.length - 1)\n return match[matchIndex]\n })\n debugResolve('found match, trying to resolve:', mappedId)\n const resolved = await viteResolve(mappedId, importer)\n if (resolved) {\n return resolved\n }\n }\n }\n }\n\n if (resolveWithBaseUrl) {\n resolveId = (viteResolve, id, importer) =>\n resolveWithPaths(viteResolve, id, importer).then((resolved) => {\n return resolved ?? resolveWithBaseUrl(viteResolve, id, importer)\n })\n } else {\n resolveId = resolveWithPaths\n }\n } else {\n resolveId = resolveWithBaseUrl!\n }\n\n const configDir = dirname(configPath)\n\n // When `tsconfck.parseNative` is used, the outDir is absolute,\n // which is not what `getIncluder` expects.\n let { outDir } = options\n if (outDir && isAbsolute(outDir)) {\n outDir = relative(configDir, outDir)\n }\n\n const isIncludedRelative = getIncluder(\n config.include?.map((p) => ensureRelative(configDir, p)),\n config.exclude?.map((p) => ensureRelative(configDir, p)),\n outDir\n )\n\n const importerExtRE = opts.loose\n ? /./\n : options.allowJs || basename(configPath).startsWith('jsconfig.')\n ? jsLikeRE\n : /\\.[mc]?tsx?$/\n\n const resolutionCache = new Map<string, string>()\n\n return async (viteResolve, id, importer) => {\n // Ideally, Vite would normalize the importer path for us.\n importer = normalizePath(importer)\n\n // Remove query and hash parameters from the importer path.\n const importerFile = importer.replace(/[#?].+$/, '')\n\n // Ignore importers with unsupported extensions.\n if (!importerExtRE.test(importerFile)) {\n debugResolve('importer has unsupported extension. skipping...')\n return notApplicable\n }\n\n // Respect the include/exclude properties.\n const relativeImporterFile = relative(configDir, importerFile)\n if (!isIncludedRelative(relativeImporterFile)) {\n debugResolve('importer is not included. skipping...')\n return notApplicable\n }\n\n // Find and remove Vite's suffix (e.g. \"?url\") if present.\n // If the path is resolved, the suffix will be added back.\n const suffix = /\\?.+$/.exec(id)?.[0]\n if (suffix) {\n id = id.slice(0, -suffix.length)\n }\n\n let resolvedId = resolutionCache.get(id)\n if (!resolvedId) {\n resolvedId = await resolveId(viteResolve, id, importer)\n if (!resolvedId) {\n return notFound\n }\n resolutionCache.set(id, resolvedId)\n if (debugResolve.enabled) {\n debugResolve('resolved without error:', {\n id,\n importer,\n resolvedId,\n configPath,\n })\n }\n }\n\n // Restore the suffix if one was removed earlier.\n if (suffix) {\n resolvedId += suffix\n }\n\n return [resolvedId, true]\n }\n }\n}\n\nconst jsLikeRE = /\\.(vue|svelte|mdx|[mc]?[jt]sx?)$/\nconst relativeImportRE = /^\\.\\.?(\\/|$)/\nconst defaultInclude = ['**/*']\nconst defaultExclude = [\n '**/node_modules',\n '**/bower_components',\n '**/jspm_packages',\n]\n\n/**\n * The returned function does not support absolute paths.\n * Be sure to call `path.relative` on your path first.\n */\nfunction getIncluder(\n includePaths = defaultInclude,\n excludePaths = defaultExclude,\n outDir?: string\n) {\n if (outDir) {\n excludePaths = excludePaths.concat(outDir)\n }\n if (includePaths.length || excludePaths.length) {\n const includers: RegExp[] = []\n const excluders: RegExp[] = []\n\n includePaths.forEach(addCompiledGlob, includers)\n excludePaths.forEach(addCompiledGlob, excluders)\n debug(`compiled globs:`, { includers, excluders })\n\n return (path: string) => {\n path = path.replace(/\\?.+$/, '')\n if (!relativeImportRE.test(path)) {\n path = './' + path\n }\n const test = (glob: RegExp) => glob.test(path)\n return includers.some(test) && !excluders.some(test)\n }\n }\n return () => true\n}\n\nfunction addCompiledGlob(this: RegExp[], glob: string) {\n const endsWithGlob = glob.split('/').pop()!.includes('*')\n const relativeGlob = relativeImportRE.test(glob) ? glob : './' + glob\n if (endsWithGlob) {\n this.push(compileGlob(relativeGlob))\n } else {\n // Append a globstar to possible directories.\n this.push(compileGlob(relativeGlob + '/**'))\n // Try to match specific files (must have file extension).\n if (/\\.\\w+$/.test(glob)) {\n this.push(compileGlob(relativeGlob))\n }\n }\n}\n\nfunction compileGlob(glob: string) {\n return globRex(glob, {\n extended: true,\n globstar: true,\n }).regex\n}\n\nfunction ensureRelative(dir: string, path: string) {\n return isAbsolute(path) ? relative(dir, path) : path\n}\n","import { resolve } from 'path'\n\nexport type PathMapping = {\n pattern: RegExp\n paths: string[]\n}\n\nexport function resolvePathMappings(\n paths: Record<string, string[]>,\n base: string\n) {\n // If a module name can be matched with multiple patterns then pattern\n // with the longest prefix will be picked.\n const sortedPatterns = Object.keys(paths).sort(\n (a: string, b: string) => getPrefixLength(b) - getPrefixLength(a)\n )\n const resolved: PathMapping[] = []\n for (let pattern of sortedPatterns) {\n const relativePaths = paths[pattern]\n pattern = escapeStringRegexp(pattern).replace(/\\*/g, '(.+)')\n resolved.push({\n pattern: new RegExp('^' + pattern + '$'),\n paths: relativePaths.map((relativePath) => resolve(base, relativePath)),\n })\n }\n return resolved\n}\n\nfunction getPrefixLength(pattern: string): number {\n const prefixLength = pattern.indexOf('*')\n return pattern.substr(0, prefixLength).length\n}\n\n// Adapted from:\n// https://github.com/sindresorhus/escape-string-regexp/blob/ba9a4473850cb367936417e97f1f2191b7cc67dd/index.js\n//\n// MIT License\n//\n// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://\n// sindresorhus.com)\n//\nfunction escapeStringRegexp(string: string) {\n // Escape characters with special meaning either inside or outside\n // character sets. Use a simple backslash escape when it’s always\n // valid, and a `\\xnn` escape when the simpler form would be\n // disallowed by Unicode patterns’ stricter grammar.\n return string.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d')\n}\n","import * as os from 'os'\nimport * as path from 'path'\nimport { normalizePath } from 'vite'\n\nconst isWindows = os.platform() == 'win32'\n\nexport const resolve = isWindows\n ? (...paths: string[]) => normalizePath(path.win32.resolve(...paths))\n : path.posix.resolve\n\nexport const isAbsolute = isWindows\n ? path.win32.isAbsolute\n : path.posix.isAbsolute\n\n/** Only call this on normalized paths */\nexport const join = path.posix.join\n\n/** Only call this on normalized paths */\nexport const relative = path.posix.relative\n\n/** Only call this on normalized paths */\nexport const basename = path.posix.basename\n\nexport { dirname } from 'path'\n","import createDebug from 'debug'\n\nexport const debug = createDebug('vite-tsconfig-paths')\nexport const debugResolve = createDebug('vite-tsconfig-paths:resolve')\n\nif (process.env.TEST) {\n createDebug.log = console.log.bind(console)\n}\n","import tsconfigPaths from 'vite-tsconfig-paths'\nexport type { PluginOptions } from 'vite-tsconfig-paths'\nexport { defineConfig, defineProject, mergeConfig } from 'vitest/config'\nexport type { Plugin, UserWorkspaceConfig, ViteUserConfig } from 'vitest/config'\nexport { tsconfigPaths }\n","import type { Plugin, PluginOptions } from './external.js'\nimport { tsconfigPaths } from './external.js'\n\n/**\n * Default configuration for {@linkcode tsconfigPaths}.\n *\n * @since 0.0.5\n * @public\n */\nexport const tsconfigPathsOptions = {\n configNames: ['tsconfig.json'],\n projects: ['./tsconfig.json'],\n} as const satisfies PluginOptions\n\n/**\n * plugins for {@linkcode vitestProjectDefaults}.\n *\n * @since 0.0.5\n * @public\n */\nexport const plugins = [\n /* @__PURE__ */ tsconfigPaths(tsconfigPathsOptions),\n] as const satisfies [Plugin]\n","import type { UserWorkspaceConfig, ViteUserConfig } from './external.js'\nimport { plugins } from './plugins.js'\n\n/**\n * Default configuration for {@linkcode vitestProject}.\n *\n * @since 0.0.5\n * @public\n */\nexport const vitestProjectDefaults = {\n /**\n * @default { 'import.meta.vitest': 'undefined' }\n */\n define: {\n /**\n * @default 'undefined'\n */\n 'import.meta.vitest': 'undefined',\n },\n\n /**\n * @default [tsconfigPaths({ configNames: ['tsconfig.json'], projects: ['./tsconfig.json'] })]\n */\n plugins,\n\n test: {\n /**\n * @default true\n */\n clearMocks: true,\n\n /**\n * @default true\n */\n globals: true,\n\n /**\n * @default { enabled: true, tsconfig: './tsconfig.json' }\n */\n typecheck: {\n /**\n * @default true\n */\n enabled: true,\n\n /**\n * @default './tsconfig.json'\n */\n tsconfig: './tsconfig.json',\n },\n\n /**\n * @default true\n */\n unstubEnvs: true,\n\n /**\n * @default true\n */\n unstubGlobals: true,\n },\n} as const satisfies UserWorkspaceConfig\n\n/**\n * Default configuration for {@linkcode vitestConfig}.\n *\n * @since 0.0.5\n * @public\n */\nexport const vitestConfigDefaults = {\n ...vitestProjectDefaults,\n\n test: {\n ...vitestProjectDefaults.test,\n\n /**\n * @default { extension: ['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs', '.cts', '.cjs'], include: ['src'] }\n */\n coverage: {\n /**\n * @default ['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs', '.cts', '.cjs']\n */\n extension: ['.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs', '.cts', '.cjs'],\n\n /**\n * @default ['src']\n */\n include: ['src'],\n },\n\n /**\n * @default process.env.GITHUB_ACTIONS ? [['default', { summary: false }], ['github-actions']] : [['default']]\n */\n reporters: process.env.GITHUB_ACTIONS\n ? ([['default', { summary: false }], ['github-actions']] as const)\n : ([['default']] as const),\n\n /**\n * @default false\n */\n watch: false,\n },\n} as const satisfies ViteUserConfig\n","import { vitestConfigDefaults } from './defaults.js'\nimport type { UserWorkspaceConfig, ViteUserConfig } from './external.js'\nimport { defineConfig, defineProject } from './external.js'\n\n/**\n * Shareable {@link https://vitest.dev | **Vitest**}\n * configuration tailored for projects using TypeScript.\n *\n * @example\n * <caption>#### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__</caption>\n *\n * ```ts\n * import { vitestConfig } from '@aryaemami59/vitest-config'\n *\n * export default vitestConfig\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__</caption>\n *\n * ```ts\n * const { vitestConfig } = require('@aryaemami59/vitest-config')\n *\n * module.exports = vitestConfig\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__</caption>\n *\n * ```ts\n * module.exports = (async () =>\n * (await import('@aryaemami59/vitest-config')).vitestConfig)()\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__</caption>\n *\n * ```ts\n * import vitestConfigModule = require('@aryaemami59/vitest-config')\n * import vitestConfig = vitestConfigModule.vitestConfig\n *\n * export = vitestConfig\n * ```\n *\n * @since 0.0.3\n * @public\n */\nexport const vitestConfig: ViteUserConfig =\n /* @__PURE__ */ defineConfig(vitestConfigDefaults)\n\n/**\n * Shareable {@link https://vitest.dev | **Vitest**}\n * configuration tailored for projects using TypeScript.\n *\n * @example\n * <caption>#### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__</caption>\n *\n * ```ts\n * import { vitestProject } from '@aryaemami59/vitest-config'\n *\n * export default vitestProject\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__</caption>\n *\n * ```ts\n * const { vitestProject } = require('@aryaemami59/vitest-config')\n *\n * module.exports = vitestProject\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__</caption>\n *\n * ```ts\n * module.exports = (async () =>\n * (await import('@aryaemami59/vitest-config')).vitestProject)()\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__</caption>\n *\n * ```ts\n * import vitestConfigModule = require('@aryaemami59/vitest-config')\n * import vitestProject = vitestConfigModule.vitestProject\n *\n * export = vitestProject\n * ```\n *\n * @since 0.0.5\n * @public\n */\nexport const vitestProject: UserWorkspaceConfig =\n /* @__PURE__ */ defineProject(vitestConfigDefaults)\n","import type { UserWorkspaceConfig, ViteUserConfig } from './external.js'\nimport { mergeConfig } from './external.js'\nimport { vitestConfig, vitestProject } from './shareableConfigs.js'\n\n/**\n * A function that returns {@linkcode vitestConfig}\n * along with optional additional overrides.\n *\n * @param [additionalOverrides] - **Optional** additional overrides to apply to the configuration.\n * @returns An augmented version of the default {@linkcode vitestConfig}, incorporating any provided overrides.\n *\n * @example\n * <caption>#### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__</caption>\n *\n * ```ts\n * import { createVitestConfig } from '@aryaemami59/vitest-config'\n *\n * export default createVitestConfig({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * })\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__</caption>\n *\n * ```ts\n * const { createVitestConfig } = require('@aryaemami59/vitest-config')\n *\n * module.exports = createVitestConfig({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * })\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__</caption>\n *\n * ```ts\n * module.exports = (async () =>\n * (await import('@aryaemami59/vitest-config')).createVitestConfig({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * }))()\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__</caption>\n *\n * ```ts\n * import vitestConfigModule = require('@aryaemami59/vitest-config')\n * import createVitestConfig = vitestConfigModule.createVitestConfig\n *\n * export = createVitestConfig({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * })\n * ```\n *\n * @since 0.0.3\n * @public\n */\nexport const createVitestConfig = (\n additionalOverrides: ViteUserConfig = {},\n): ViteUserConfig =>\n /* @__PURE__ */ mergeConfig(vitestConfig, additionalOverrides)\n\n/**\n * A function that returns {@linkcode vitestProject}\n * along with optional additional overrides.\n *\n * @param [additionalOverrides] - **Optional** additional overrides to apply to the configuration.\n * @returns An augmented version of the default {@linkcode vitestProject}, incorporating any provided overrides.\n *\n * @example\n * <caption>#### __ECMAScript Modules (ESM) usage inside a file like `vitest.config.mts` or `vitest.config.mjs`__</caption>\n *\n * ```ts\n * import { createVitestProject } from '@aryaemami59/vitest-config'\n *\n * export default createVitestProject({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * })\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using `require`)__</caption>\n *\n * ```ts\n * const { createVitestProject } = require('@aryaemami59/vitest-config')\n *\n * module.exports = createVitestProject({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * })\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` or `vitest.config.cjs` (using dynamic import)__</caption>\n *\n * ```ts\n * module.exports = (async () =>\n * (await import('@aryaemami59/vitest-config')).createVitestProject({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * }))()\n * ```\n *\n * @example\n * <caption>#### __CommonJS (CJS) usage inside a file like `vitest.config.cts` (using import and export assignment)__</caption>\n *\n * ```ts\n * import vitestConfigModule = require('@aryaemami59/vitest-config')\n * import createVitestProject = vitestConfigModule.createVitestProject\n *\n * export = createVitestProject({\n * test: {\n * environment: 'jsdom',\n * // Other additional overrides\n * },\n * })\n * ```\n *\n * @since 0.0.5\n * @public\n */\nexport const createVitestProject = (\n additionalOverrides: UserWorkspaceConfig = {},\n): UserWorkspaceConfig =>\n /* @__PURE__ */ mergeConfig(vitestProject, additionalOverrides)\n"],"mappings":"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","names":["import_path","import_vite","resolve","createDebug","normalizePath","id","importer","_a","path","globRex"]}