@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 +95 -2
- package/dist/index.cjs +207 -64
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +266 -4
- package/dist/index.d.ts +266 -4
- package/dist/index.js +102 -12
- package/dist/index.js.map +1 -1
- package/package.json +20 -15
- package/src/defaults.ts +103 -0
- package/src/external.ts +5 -0
- package/src/index.ts +16 -130
- package/src/plugins.ts +23 -0
- package/src/shareableConfigs.ts +95 -0
- package/src/utils.ts +145 -0
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
|
-
|
|
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
|
-
|
|
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
|
|
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 (
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
-
|
|
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) =>
|
|
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
|
|
241
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
304
|
-
if (!
|
|
305
|
-
|
|
306
|
-
if (!
|
|
307
|
-
return
|
|
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,
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
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 [
|
|
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/
|
|
424
|
+
// src/external.ts
|
|
373
425
|
var import_config = require("vitest/config");
|
|
374
|
-
|
|
375
|
-
|
|
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
|
-
|
|
452
|
+
/**
|
|
453
|
+
* @default true
|
|
454
|
+
*/
|
|
455
|
+
clearMocks: true,
|
|
456
|
+
/**
|
|
457
|
+
* @default true
|
|
458
|
+
*/
|
|
378
459
|
globals: true,
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
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
|
-
|
|
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
|
package/dist/index.cjs.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA2B;;;ACA3B,mBAAmB;AACnB,SAAoB;AACpB,qBAAoB;AACpB,kBAAwB;AAGxB,kBAAwB;AACxB,kBAA8D;ACP9D,IAAAA,eAAwB;ACAxB,SAAoB;AACpB,WAAsB;AACtB,IAAAC,eAA8B;AAqB9B,IAAAD,eAAwB;ADhBjB,SAAS,oBACd,OACA,MACA;AAGA,QAAM,iBAAiB,OAAO,KAAK,KAAK,EAAE;IACxC,CAAC,GAAW,MAAc,gBAAgB,CAAC,IAAI,gBAAgB,CAAC;EAClE;AACA,QAAM,WAA0B,CAAC;AACjC,WAAS,WAAW,gBAAgB;AAClC,UAAM,gBAAgB,MAAM,OAAO;AACnC,cAAU,mBAAmB,OAAO,EAAE,QAAQ,OAAO,MAAM;AAC3D,aAAS,KAAK;MACZ,SAAS,IAAI,OAAO,MAAM,UAAU,GAAG;MACvC,OAAO,cAAc,IAAI,CAAC,qBAAiB,sBAAQ,MAAM,YAAY,CAAC;IACxE,CAAC;EACH;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,SAAyB;AAChD,QAAM,eAAe,QAAQ,QAAQ,GAAG;AACxC,SAAO,QAAQ,OAAO,GAAG,YAAY,EAAE;AACzC;AAUA,SAAS,mBAAmB,QAAgB;AAK1C,SAAO,OAAO,QAAQ,sBAAsB,MAAM,EAAE,QAAQ,MAAM,OAAO;AAC3E;AC3CA,IAAM,YAAe,YAAS,KAAK;AAE5B,IAAME,WAAU,YACnB,IAAI,cAAoB,4BAAmB,WAAM,QAAQ,GAAG,KAAK,CAAC,IAC7D,WAAM;AAER,IAAM,aAAa,YACjB,WAAM,aACN,WAAM;AAGR,IAAM,OAAY,WAAM;AAGxB,IAAM,WAAgB,WAAM;AAG5B,IAAM,WAAgB,WAAM;AFTnC,IAAM,YAAQ,aAAAC,SAAO,qBAAqB;AAE1C,IAAM,UAAU,CAAC,QAAW,KAAK;AAYjC,IAAO,cAAQ,CAAC,OAAsB,CAAC,MAAc;AACnD,MAAI;AAEJ,SAAO;IACL,MAAM;IACN,SAAS;IACT,MAAM,eAAe,QAAQ;AAC3B,UAAI,cAAc,OAAO;AACzB,UAAI;AAEJ,UAAI,EAAE,KAAK,IAAI;AACf,UAAI,MAAM;AACR,mBAAOD,YAAAA,SAAQ,aAAa,IAAI;MAClC,OAAO;AACL,4BAAgB,oCAAuB,WAAW;MACpD;AAEA,YAAM,qBAAqB,IAAI;AAC/B,YAAM,qBAAqB,WAAW;AACtC,YAAM,qBAAqB,aAAa;AAGxC,UAAI,MAAM;AACR,sBAAc;AACd,wBAAgB;MAClB;AAEA,YAAM,WAAW,MAAM,OAAO,UAAU;AAExC,YAAM,WAAW,KAAK,WAClB,KAAK,SAAS,IAAI,CAAC,SAAS;AAC1B,YAAI,CAAC,KAAK,SAAS,OAAO,GAAG;AAC3B,iBAAO,KAAK,MAAM,eAAe;QACnC;AACA,mBAAOA,YAAAA,SAAQ,aAAa,IAAI;MAClC,CAAC,IACD,MAAM,SAAS,QAAQ,eAAe;QACpC,aAAa,KAAK,eAAe,CAAC,iBAAiB,eAAe;QAClE,KAAK,KAAK;AACR,cAAI,QAAQ,UAAU,QAAQ,gBAAgB;AAC5C,mBAAO;UACT;AACA,cAAI,OAAO,KAAK,SAAS,YAAY;AACnC,mBAAO,KAAK,KAAK,GAAG;UACtB;AACA,iBAAO;QACT;MACF,CAAC;AAEL,YAAM,aAAa,QAAQ;AAE3B,UAAI,mBAAmB;AACvB,UAAI,KAAK,aAAa;AACpB,YAAI;AACF,gBAAM,UAAa;YACjB,KAAK,eAAe,cAAc;YAClC;UACF;AACA,gBAAM,MAAM,KAAK,MAAM,OAAO;AAC9B,gBAAM,OAAO,EAAE,GAAG,IAAI,cAAc,GAAG,IAAI,gBAAgB;AAC3D,6BAAmB,gBAAgB;QACrC,SAAS,GAAP;AACA,cAAI,EAAE,QAAQ,UAAU;AACtB,kBAAM;UACR;QACF;MACF;AAEA,UAAI;AAEJ,YAAM,eAAqC;QACzC,OAAO,IAAI,SAAS,cAAc;MACpC;AAEA,YAAM,iBAAiB,IAAI;QACzB,MAAM,QAAQ;UACZ,SAAS,IAAI,CAAC,iBAAiB;AAC7B,gBAAI,iBAAiB,MAAM;AACzB,oBAAM,4BAA4B,YAAY;AAC9C,qBAAO;YACT;AACA,oBACE,mBACI,SAAS,YAAY,cAAc,YAAY,IAC/C,SAAS,MAAM,cAAc,YAAY,GAC7C,MAAM,CAAC,UAAU;AACjB,kBAAI,KAAK,oBAAoB;AAC3B,sBAAM,yCAAyC,YAAY;cAC7D,OAAO;AACL,uBAAO,OAAO;kBACZ,uDACE,eACA,+BACC,aACG,KACA;kBACN,EAAE,MAAM;gBACV;AACA,oBAAI,OAAO,OAAO,eAAe,KAAK,GAAG;AACvC,0BAAQ,MAAM,KAAK;gBACrB;AACA,6BAAa;cACf;AACA,qBAAO;YACT,CAAC;UACH,CAAC;QACH;MACF;AAEA,uBAAiB,CAAC;AAClB,qBAAe,QAAQ,CAAC,YAAY;AAClC,YAAI,CAAC,SAAS;AACZ;QACF;AAGA,YAAI,QAAQ,YAAY;AACtB,kBAAQ,WAAW,QAAQ,CAAC,eAAe;AACzC,2BAAe,IAAI,UAAU;UAC/B,CAAC;AAID,yBAAe,OAAO,OAAO;AAC7B,yBAAe,IAAI,OAAO;AAC1B,kBAAQ,aAAa;QACvB,OAAO;AACL,gBAAM,WAAW,eAAe,OAAO;AACvC,cAAI,UAAU;AACZ,kBAAM,iBAAaE,YAAAA,mBAAc,sBAAQ,QAAQ,YAAY,CAAC;AAC9D,kBAAM,YAAa,eAAA,UAAA,MAAA,eAAA,UAAA,IAA+B,CAAC;AACnD,sBAAU,KAAK,QAAQ;UACzB;QACF;MACF,CAAC;IACH;IACA,MAAM,UAAU,IAAI,UAAU,SAAS;AACrC,UAAI,YAAY,CAAC,iBAAiB,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG;AAE7D,cAAM,iBAAiB,EAAE,GAAG,SAAS,UAAU,KAAK;AACpD,cAAM,cAA2B,OAAOC,KAAIC,cAAU;AAtK9D,cAAA;AAuKW,kBAAA,KAAA,MAAM,KAAK,QAAQD,KAAIC,WAAU,cAAc,MAA/C,OAAA,SAAA,GAAmD;QAAA;AAEtD,YAAI;AACJ,YAAI,iBAAaF,YAAAA,mBAAc,sBAAQ,QAAQ,CAAC;AAGhD;AAAM,iBAAO,cAAc,cAAc,gBAAgB;AACvD,kBAAM,YAAY,eAAe,UAAU;AAC3C,gBAAI;AACF,yBAAWF,YAAW,WAAW;AAC/B,sBAAM,CAAC,UAAU,OAAO,IAAI,MAAMA;kBAChC;kBACA;kBACA;gBACF;AACA,oBAAI,UAAU;AACZ,yBAAO;gBACT;AACA,oBAAI,SAAS;AAEX,wBAAM;gBACR;cACF;AACF,6BAAiB;AACjB,6BAAa,sBAAQ,cAAc;UACrC;MACF;IACF;EACF;AAEA,WAAS,eAAe,SAA+C;AArMzE,QAAA,IAAA,IAAA,IAAA;AAsMI,UAAM,iBAAaE,YAAAA,eAAc,QAAQ,YAAY;AACrD,UAAM,SAAS,QAAQ;AAOvB,UAAM,sBAAkB,qBAAQ,EAAE,YAAY,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;AAMxE,UAAI,KAAA,OAAO,UAAP,OAAA,SAAA,GAAc,WAAU,KAAK,GAAC,KAAA,OAAO,YAAP,OAAA,SAAA,GAAgB,SAAQ;AACxD;QACE,iBAAiB,UAAA;MACnB;AACA,aAAO;IACT;AAEA,UAAM,UAAU,OAAO,mBAAmB,CAAC;AAC3C,UAAM,EAAE,SAAS,MAAM,IAAI;AAC3B,QAAI,CAAC,WAAW,CAAC,OAAO;AACtB,YAAM,mCAAmC,UAAA,GAAa;AACtD,aAAO;IACT;AAQA,UAAM,qBAAmD,UACrD,CAAC,aAAa,IAAI,aAAa,YAAY,KAAK,SAAS,EAAE,GAAG,QAAQ,IACtE;AAEJ,QAAI;AACJ,QAAI,OAAO;AACT,YAAM,eAAe;QACnB;QACA,WAAA,OAAA,cAAW,sBAAQ,UAAU;MAC/B;AACA,YAAM,mBAAqC,OACzC,aACA,IACA,aACG;AACH,mBAAW,WAAW,cAAc;AAClC,gBAAM,QAAQ,GAAG,MAAM,QAAQ,OAAO;AACtC,cAAI,CAAC,OAAO;AACV;UACF;AACA,mBAAS,gBAAgB,QAAQ,OAAO;AACtC,gBAAI,YAAY;AAChB,kBAAM,WAAW,aAAa,QAAQ,OAAO,MAAM;AAIjD,oBAAM,aAAa,KAAK,IAAI,EAAE,WAAW,MAAM,SAAS,CAAC;AACzD,qBAAO,MAAM,UAAU;YACzB,CAAC;AACD,kBAAM,WAAW,MAAM,YAAY,UAAU,QAAQ;AACrD,gBAAI,UAAU;AACZ,qBAAO;YACT;UACF;QACF;MACF;AAEA,UAAI,oBAAoB;AACtB,oBAAY,CAAC,aAAa,IAAI,aAC5B,iBAAiB,aAAa,IAAI,QAAQ,EAAE,KAAK,CAAC,aAAa;AAC7D,iBAAO,YAAA,OAAA,WAAY,mBAAmB,aAAa,IAAI,QAAQ;QACjE,CAAC;MACL,OAAO;AACL,oBAAY;MACd;IACF,OAAO;AACL,kBAAY;IACd;AAEA,UAAM,gBAAY,sBAAQ,UAAU;AAIpC,QAAI,EAAE,OAAO,IAAI;AACjB,QAAI,UAAU,WAAW,MAAM,GAAG;AAChC,eAAS,SAAS,WAAW,MAAM;IACrC;AAEA,UAAM,qBAAqB;OACzB,KAAA,OAAO,YAAP,OAAA,SAAA,GAAgB,IAAI,CAAC,MAAM,eAAe,WAAW,CAAC,CAAA;OACtD,KAAA,OAAO,YAAP,OAAA,SAAA,GAAgB,IAAI,CAAC,MAAM,eAAe,WAAW,CAAC,CAAA;MACtD;IACF;AAEA,UAAM,gBAAgB,KAAK,QACvB,MACA,QAAQ,WAAW,SAAS,UAAU,EAAE,WAAW,WAAW,IAC9D,WACA;AAEJ,UAAM,kBAAkB,oBAAI,IAAoB;AAChD,WAAO,OAAO,aAAa,IAAI,aAAa;AA/ShD,UAAAG;AAiTM,UAAI,GAAG,SAAS,IAAI,GAAG;AACrB,eAAO;MACT;AAEA,qBAAWH,YAAAA,eAAc,QAAQ;AACjC,YAAM,eAAe,SAAS,QAAQ,WAAW,EAAE;AAGnD,UAAI,CAAC,cAAc,KAAK,YAAY,GAAG;AACrC,eAAO;MACT;AAGA,YAAM,uBAAuB,SAAS,WAAW,YAAY;AAC7D,UAAI,CAAC,mBAAmB,oBAAoB,GAAG;AAC7C,eAAO;MACT;AAIA,YAAM,UAASG,MAAA,QAAQ,KAAK,EAAE,MAAf,OAAA,SAAAA,IAAmB,CAAA;AAClC,UAAI,QAAQ;AACV,aAAK,GAAG,MAAM,GAAG,CAAC,OAAO,MAAM;MACjC;AAEA,UAAIC,QAAO,gBAAgB,IAAI,EAAE;AACjC,UAAI,CAACA,OAAM;AACTA,gBAAO,MAAM,UAAU,aAAa,IAAI,QAAQ;AAChD,YAAI,CAACA,OAAM;AACT,iBAAO;QACT;AACA,wBAAgB,IAAI,IAAIA,KAAI;AAC5B,cAAM,aAAa;UACjB;UACA;UACA,YAAYA;UACZ;QACF,CAAC;MACH;AACA,aAAO,CAACA,SAAQ,SAASA,QAAO,SAASA,OAAM,IAAI;IACrD;EACF;AACF;AAEA,IAAM,WAAW;AACjB,IAAM,mBAAmB;AACzB,IAAM,iBAAiB,CAAC,MAAM;AAC9B,IAAM,iBAAiB;EACrB;EACA;EACA;AACF;AAMA,SAAS,YACP,eAAe,gBACf,eAAe,gBACf,QACA;AACA,MAAI,QAAQ;AACV,mBAAe,aAAa,OAAO,MAAM;EAC3C;AACA,MAAI,aAAa,UAAU,aAAa,QAAQ;AAC9C,UAAM,YAAsB,CAAC;AAC7B,UAAM,YAAsB,CAAC;AAE7B,iBAAa,QAAQ,iBAAiB,SAAS;AAC/C,iBAAa,QAAQ,iBAAiB,SAAS;AAC/C,UAAM,mBAAmB,EAAE,WAAW,UAAU,CAAC;AAEjD,WAAO,CAACA,UAAiB;AACvBA,cAAOA,MAAK,QAAQ,SAAS,EAAE;AAC/B,UAAI,CAAC,iBAAiB,KAAKA,KAAI,GAAG;AAChCA,gBAAO,OAAOA;MAChB;AACA,YAAM,OAAO,CAAC,SAAiB,KAAK,KAAKA,KAAI;AAC7C,aAAO,UAAU,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;IACrD;EACF;AACA,SAAO,MAAM;AACf;AAEA,SAAS,gBAAgC,MAAc;AACrD,QAAM,eAAe,KAAK,MAAM,GAAG,EAAE,IAAI,EAAG,SAAS,GAAG;AACxD,QAAM,eAAe,iBAAiB,KAAK,IAAI,IAAI,OAAO,OAAO;AACjE,MAAI,cAAc;AAChB,SAAK,KAAK,YAAY,YAAY,CAAC;EACrC,OAAO;AAEL,SAAK,KAAK,YAAY,eAAe,KAAK,CAAC;AAE3C,QAAI,SAAS,KAAK,IAAI,GAAG;AACvB,WAAK,KAAK,YAAY,YAAY,CAAC;IACrC;EACF;AACF;AAEA,SAAS,YAAY,MAAc;AACjC,aAAO,eAAAC,SAAQ,MAAM;IACnB,UAAU;IACV,UAAU;EACZ,CAAC,EAAE;AACL;AAEA,SAAS,eAAe,KAAaD,OAAc;AACjD,SAAO,WAAWA,KAAI,IAAI,SAAS,KAAKA,KAAI,IAAIA;AAClD;;;AD3ZA,oBAA0C;AA4CnC,IAAM,eAA+C,gDAAa;AAAA,EACvE,SAAS,CAAiB,4BAAc,EAAE,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAAA,EAC1E,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,YAA4B,+CAAW,mBAAmB,IACtD,CAAC,mBAAmB,IACpB,CAAC;AAAA,EACP;AAAA,EACA,QAAQ,EAAE,sBAAsB,YAAY;AAC9C,CAAC;AAoEM,IAAM,qBAAqB,CAChC,sBAAsC,CAAC,MAEvB,+CAAY,cAAc,mBAAmB;","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"]}
|