vitest 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { ViteDevServer, TransformResult, CommonServerOptions } from 'vite';
2
- import { Profiler } from 'inspector';
3
2
  import { MessagePort } from 'worker_threads';
4
3
  import { SpyImpl } from 'tinyspy';
5
4
  export { assert, default as chai, should } from 'chai';
@@ -228,11 +227,6 @@ declare class Any extends AsymmetricMatcher<any> {
228
227
  toAsymmetricMatcher(): string;
229
228
  }
230
229
 
231
- interface FetchResult$1 {
232
- code?: string;
233
- externalize?: string;
234
- }
235
-
236
230
  interface DepsHandlingOptions {
237
231
  external?: (string | RegExp)[];
238
232
  inline?: (string | RegExp)[];
@@ -242,6 +236,22 @@ interface DepsHandlingOptions {
242
236
  */
243
237
  fallbackCJS?: boolean;
244
238
  }
239
+ interface StartOfSourceMap$1 {
240
+ file?: string;
241
+ sourceRoot?: string;
242
+ }
243
+ interface RawSourceMap$1 extends StartOfSourceMap$1 {
244
+ version: string;
245
+ sources: string[];
246
+ names: string[];
247
+ sourcesContent?: string[];
248
+ mappings: string;
249
+ }
250
+ interface FetchResult$1 {
251
+ code?: string;
252
+ externalize?: string;
253
+ map?: RawSourceMap$1;
254
+ }
245
255
  interface ViteNodeResolveId$1 {
246
256
  external?: boolean | 'absolute' | 'relative';
247
257
  id: string;
@@ -252,9 +262,9 @@ interface ViteNodeResolveId$1 {
252
262
  interface ViteNodeServerOptions {
253
263
  /**
254
264
  * Inject inline sourcemap to modules
255
- * @default true
265
+ * @default 'inline'
256
266
  */
257
- sourcemap?: boolean;
267
+ sourcemap?: 'inline' | boolean;
258
268
  /**
259
269
  * Deps handling
260
270
  */
@@ -273,7 +283,10 @@ declare class ViteNodeServer {
273
283
  options: ViteNodeServerOptions;
274
284
  private fetchPromiseMap;
275
285
  private transformPromiseMap;
276
- private fetchCache;
286
+ fetchCache: Map<string, {
287
+ timestamp: number;
288
+ result: FetchResult$1;
289
+ }>;
277
290
  constructor(server: ViteDevServer, options?: ViteNodeServerOptions);
278
291
  shouldExternalize(id: string): Promise<string | false>;
279
292
  resolveId(id: string, importer?: string): Promise<ViteNodeResolveId$1 | null>;
@@ -318,7 +331,6 @@ declare class Vitest {
318
331
  server: ViteDevServer;
319
332
  state: StateManager;
320
333
  snapshot: SnapshotManager;
321
- coverage: Profiler.TakePreciseCoverageReturnType[];
322
334
  reporters: Reporter[];
323
335
  console: Console;
324
336
  pool: WorkerPool | undefined;
@@ -331,7 +343,6 @@ declare class Vitest {
331
343
  vitenode: ViteNodeServer;
332
344
  invalidates: Set<string>;
333
345
  changedTests: Set<string>;
334
- visitedFilesMap: Map<string, RawSourceMap>;
335
346
  runningPromise?: Promise<void>;
336
347
  closingPromise?: Promise<void>;
337
348
  isFirstRun: boolean;
@@ -472,6 +483,65 @@ declare const ReportersMap: {
472
483
  };
473
484
  declare type BuiltinReporters = keyof typeof ReportersMap;
474
485
 
486
+ declare type Awaitable<T> = T | PromiseLike<T>;
487
+ declare type Nullable<T> = T | null | undefined;
488
+ declare type Arrayable<T> = T | Array<T>;
489
+ declare type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
490
+ declare type MergeInsertions<T> = T extends object ? {
491
+ [K in keyof T]: MergeInsertions<T[K]>;
492
+ } : T;
493
+ declare type DeepMerge<F, S> = MergeInsertions<{
494
+ [K in keyof F | keyof S]: K extends keyof S & keyof F ? DeepMerge<F[K], S[K]> : K extends keyof S ? S[K] : K extends keyof F ? F[K] : never;
495
+ }>;
496
+ interface Constructable {
497
+ new (...args: any[]): any;
498
+ }
499
+ interface ModuleCache {
500
+ promise?: Promise<any>;
501
+ exports?: any;
502
+ code?: string;
503
+ }
504
+ interface EnvironmentReturn {
505
+ teardown: (global: any) => Awaitable<void>;
506
+ }
507
+ interface Environment {
508
+ name: string;
509
+ setup(global: any, options: Record<string, any>): Awaitable<EnvironmentReturn>;
510
+ }
511
+ interface UserConsoleLog {
512
+ content: string;
513
+ type: 'stdout' | 'stderr';
514
+ taskId?: string;
515
+ time: number;
516
+ }
517
+ interface Position {
518
+ line: number;
519
+ column: number;
520
+ }
521
+ interface ParsedStack {
522
+ method: string;
523
+ file: string;
524
+ line: number;
525
+ column: number;
526
+ sourcePos?: Position;
527
+ }
528
+ interface ErrorWithDiff extends Error {
529
+ name: string;
530
+ nameStr?: string;
531
+ stack?: string;
532
+ stackStr?: string;
533
+ stacks?: ParsedStack[];
534
+ showDiff?: boolean;
535
+ actual?: any;
536
+ expected?: any;
537
+ operator?: string;
538
+ }
539
+ interface ModuleGraphData {
540
+ graph: Record<string, string[]>;
541
+ externalized: string[];
542
+ inlined: string[];
543
+ }
544
+
475
545
  declare type CoverageReporter = 'clover' | 'cobertura' | 'html-spa' | 'html' | 'json-summary' | 'json' | 'lcov' | 'lcovonly' | 'none' | 'teamcity' | 'text-lcov' | 'text-summary' | 'text';
476
546
  interface C8Options {
477
547
  /**
@@ -521,6 +591,7 @@ interface C8Options {
521
591
  all?: boolean;
522
592
  }
523
593
  interface ResolvedC8Options extends Required<C8Options> {
594
+ tempDirectory: string;
524
595
  }
525
596
 
526
597
  interface JSDOMOptions {
@@ -603,76 +674,6 @@ interface JSDOMOptions {
603
674
  resources?: 'usable' | any;
604
675
  }
605
676
 
606
- declare type Awaitable<T> = T | PromiseLike<T>;
607
- declare type Nullable<T> = T | null | undefined;
608
- declare type Arrayable<T> = T | Array<T>;
609
- declare type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
610
- declare type MergeInsertions<T> = T extends object ? {
611
- [K in keyof T]: MergeInsertions<T[K]>;
612
- } : T;
613
- declare type DeepMerge<F, S> = MergeInsertions<{
614
- [K in keyof F | keyof S]: K extends keyof S & keyof F ? DeepMerge<F[K], S[K]> : K extends keyof S ? S[K] : K extends keyof F ? F[K] : never;
615
- }>;
616
- interface Constructable {
617
- new (...args: any[]): any;
618
- }
619
- interface ModuleCache {
620
- promise?: Promise<any>;
621
- exports?: any;
622
- code?: string;
623
- }
624
- interface EnvironmentReturn {
625
- teardown: (global: any) => Awaitable<void>;
626
- }
627
- interface Environment {
628
- name: string;
629
- setup(global: any, options: Record<string, any>): Awaitable<EnvironmentReturn>;
630
- }
631
- interface UserConsoleLog {
632
- content: string;
633
- type: 'stdout' | 'stderr';
634
- taskId?: string;
635
- time: number;
636
- }
637
- interface Position {
638
- line: number;
639
- column: number;
640
- }
641
- interface ParsedStack {
642
- method: string;
643
- file: string;
644
- line: number;
645
- column: number;
646
- sourcePos?: Position;
647
- }
648
- interface ErrorWithDiff extends Error {
649
- name: string;
650
- nameStr?: string;
651
- stack?: string;
652
- stackStr?: string;
653
- stacks?: ParsedStack[];
654
- showDiff?: boolean;
655
- actual?: any;
656
- expected?: any;
657
- operator?: string;
658
- }
659
- interface ModuleGraphData {
660
- graph: Record<string, string[]>;
661
- externalized: string[];
662
- inlined: string[];
663
- }
664
- interface StartOfSourceMap {
665
- file?: string;
666
- sourceRoot?: string;
667
- }
668
- interface RawSourceMap extends StartOfSourceMap {
669
- version: string;
670
- sources: string[];
671
- names: string[];
672
- sourcesContent?: string[];
673
- mappings: string;
674
- }
675
-
676
677
  declare type ChainableFunction<T extends string, Args extends any[], R = any> = {
677
678
  (...args: Args): R;
678
679
  } & {
@@ -894,7 +895,7 @@ interface InlineConfig {
894
895
  /**
895
896
  * Watch mode
896
897
  *
897
- * @default false
898
+ * @default true
898
899
  */
899
900
  watch?: boolean;
900
901
  /**
@@ -938,7 +939,7 @@ interface InlineConfig {
938
939
  /**
939
940
  * Default timeout of a hook in milliseconds
940
941
  *
941
- * @default 5000
942
+ * @default 10000
942
943
  */
943
944
  hookTimeout?: number;
944
945
  /**
@@ -1063,6 +1064,10 @@ interface UserConfig extends InlineConfig {
1063
1064
  * Pass with no tests
1064
1065
  */
1065
1066
  passWithNoTests?: boolean;
1067
+ /**
1068
+ * Allow tests and suites that are marked as only
1069
+ */
1070
+ allowOnly?: boolean;
1066
1071
  /**
1067
1072
  * Run tests that cover a list of source files
1068
1073
  */
@@ -1079,9 +1084,21 @@ interface ResolvedConfig extends Omit<Required<UserConfig>, 'config' | 'filters'
1079
1084
  api?: ApiConfig;
1080
1085
  }
1081
1086
 
1087
+ interface StartOfSourceMap {
1088
+ file?: string;
1089
+ sourceRoot?: string;
1090
+ }
1091
+ interface RawSourceMap extends StartOfSourceMap {
1092
+ version: string;
1093
+ sources: string[];
1094
+ names: string[];
1095
+ sourcesContent?: string[];
1096
+ mappings: string;
1097
+ }
1082
1098
  interface FetchResult {
1083
1099
  code?: string;
1084
1100
  externalize?: string;
1101
+ map?: RawSourceMap;
1085
1102
  }
1086
1103
  declare type FetchFunction = (id: string) => Promise<FetchResult>;
1087
1104
  interface ViteNodeResolveId {
@@ -1109,7 +1126,6 @@ interface WorkerRPC {
1109
1126
  onCollected: (files: File[]) => void;
1110
1127
  onTaskUpdate: (pack: TaskResultPack[]) => void;
1111
1128
  snapshotSaved: (snapshot: SnapshotResult) => void;
1112
- coverageCollected: (coverage: Profiler.TakePreciseCoverageReturnType) => void;
1113
1129
  }
1114
1130
 
1115
1131
  declare const suite: SuiteAPI;
@@ -1200,8 +1216,7 @@ declare const spies: Set<SpyInstance<any[], any>>;
1200
1216
  declare function isMockFunction(fn: any): fn is EnhancedSpy;
1201
1217
  declare function spyOn<T, S extends Properties<Required<T>>>(obj: T, methodName: S, accesType: 'get'): SpyInstance<[], T[S]>;
1202
1218
  declare function spyOn<T, G extends Properties<Required<T>>>(obj: T, methodName: G, accesType: 'set'): SpyInstance<[T[G]], void>;
1203
- declare function spyOn<T, M extends Classes<Required<T>>>(object: T, method: M): Required<T>[M] extends new (...args: infer A) => infer R ? SpyInstance<A, R> : never;
1204
- declare function spyOn<T, M extends Methods<Required<T>>>(obj: T, methodName: M, mock?: T[M]): Required<T>[M] extends (...args: infer A) => infer R ? SpyInstance<A, R> : never;
1219
+ declare function spyOn<T, M extends (Methods<Required<T>> | Classes<Required<T>>)>(obj: T, methodName: M): Required<T>[M] extends (...args: infer A) => infer R | (new (...args: infer A) => infer R) ? SpyInstance<A, R> : never;
1205
1220
  declare function fn<TArgs extends any[] = any[], R = any>(): SpyInstanceFn<TArgs, R>;
1206
1221
  declare function fn<TArgs extends any[] = any[], R = any>(implementation: (...args: TArgs) => R): SpyInstanceFn<TArgs, R>;
1207
1222
 
@@ -1307,6 +1322,8 @@ interface WebSocketHandlers {
1307
1322
  interface WebSocketEvents extends Pick<Reporter, 'onCollected' | 'onFinished' | 'onTaskUpdate' | 'onUserConsoleLog'> {
1308
1323
  }
1309
1324
 
1325
+ declare const configDefaults: UserConfig;
1326
+
1310
1327
  declare type VitestInlineConfig = InlineConfig;
1311
1328
 
1312
1329
  declare module 'vite' {
@@ -1327,6 +1344,10 @@ declare type Promisify<O> = {
1327
1344
  [K in keyof O]: O[K] extends (...args: infer A) => infer R ? O extends R ? Promisify<O[K]> : (...args: A) => Promise<R> : O[K];
1328
1345
  };
1329
1346
  declare global {
1347
+ namespace jest {
1348
+ interface Matchers<R, T = {}> {
1349
+ }
1350
+ }
1330
1351
  namespace Vi {
1331
1352
  interface ExpectStatic extends Chai.ExpectStatic, AsymmetricMatchersContaining {
1332
1353
  <T>(actual: T, message?: string): Vi.Assertion<T>;
@@ -1340,7 +1361,7 @@ declare global {
1340
1361
  setState(state: Partial<MatcherState>): void;
1341
1362
  not: AsymmetricMatchersContaining;
1342
1363
  }
1343
- interface JestAssertion<T = any> {
1364
+ interface JestAssertion<T = any> extends jest.Matchers<void, T> {
1344
1365
  toMatchSnapshot<U extends {
1345
1366
  [P in keyof T]: any;
1346
1367
  }>(snapshot: Partial<U>, message?: string): void;
@@ -1400,14 +1421,14 @@ declare global {
1400
1421
  toHaveNthReturnedWith<E>(nthCall: number, value: E): void;
1401
1422
  nthReturnedWith<E>(nthCall: number, value: E): void;
1402
1423
  }
1403
- type VitestAssertion<A> = {
1404
- [K in keyof A]: A[K] extends Chai.Assertion ? Assertion<any> : A[K] extends (...args: any[]) => any ? A[K] : VitestAssertion<A[K]>;
1405
- };
1406
- interface Assertion<T = any> extends VitestAssertion<Chai.Assertion>, JestAssertion<T> {
1424
+ type VitestAssertion<A, T> = {
1425
+ [K in keyof A]: A[K] extends Chai.Assertion ? Assertion<T> : A[K] extends (...args: any[]) => any ? A[K] : VitestAssertion<A[K], T>;
1426
+ } & ((type: string, message?: string) => Assertion);
1427
+ interface Assertion<T = any> extends VitestAssertion<Chai.Assertion, T>, JestAssertion<T> {
1407
1428
  resolves: Promisify<Assertion<T>>;
1408
1429
  rejects: Promisify<Assertion<T>>;
1409
1430
  }
1410
1431
  }
1411
1432
  }
1412
1433
 
1413
- export { ApiConfig, ArgumentsType, Arrayable, Awaitable, BuiltinEnvironment, Constructable, DeepMerge, DoneCallback, EachFunction, EnhancedSpy, Environment, EnvironmentOptions, EnvironmentReturn, ErrorWithDiff, File, HookListener, InlineConfig, JSDOMOptions, JestMockCompatContext, MaybeMocked, MaybeMockedConstructor, MaybeMockedDeep, MergeInsertions, MockWithArgs, MockedFunction, MockedFunctionDeep, MockedObject, MockedObjectDeep, ModuleCache, ModuleGraphData, Nullable, ParsedStack, Position, RawSourceMap, Reporter, ResolveIdFunction, ResolvedConfig, RunMode, RuntimeContext, SnapshotData, SnapshotMatchOptions, SnapshotResult, SnapshotStateOptions, SnapshotSummary, SnapshotUpdateState, SpyInstance, SpyInstanceFn, StartOfSourceMap, Suite, SuiteAPI, SuiteCollector, SuiteFactory, SuiteHooks, Task, TaskBase, TaskResult, TaskResultPack, TaskState, Test, TestAPI, TestFunction, TransformResultWithSource, UncheckedSnapshot, UserConfig, UserConsoleLog, WebSocketEvents, WebSocketHandlers, WorkerContext, WorkerRPC, afterAll, afterEach, beforeAll, beforeEach, describe, expect, fn, isMockFunction, it, spies, spyOn, suite, test, vi, vitest };
1434
+ export { ApiConfig, ArgumentsType, Arrayable, Awaitable, BuiltinEnvironment, C8Options, Constructable, CoverageReporter, DeepMerge, DoneCallback, EachFunction, EnhancedSpy, Environment, EnvironmentOptions, EnvironmentReturn, ErrorWithDiff, File, HookListener, InlineConfig, JSDOMOptions, JestMockCompatContext, MaybeMocked, MaybeMockedConstructor, MaybeMockedDeep, MergeInsertions, MockWithArgs, MockedFunction, MockedFunctionDeep, MockedObject, MockedObjectDeep, ModuleCache, ModuleGraphData, Nullable, ParsedStack, Position, Reporter, ResolveIdFunction, ResolvedC8Options, ResolvedConfig, RunMode, RuntimeContext, SnapshotData, SnapshotMatchOptions, SnapshotResult, SnapshotStateOptions, SnapshotSummary, SnapshotUpdateState, SpyInstance, SpyInstanceFn, Suite, SuiteAPI, SuiteCollector, SuiteFactory, SuiteHooks, Task, TaskBase, TaskResult, TaskResultPack, TaskState, Test, TestAPI, TestFunction, TransformResultWithSource, UncheckedSnapshot, UserConfig, UserConsoleLog, WebSocketEvents, WebSocketHandlers, WorkerContext, WorkerRPC, afterAll, afterEach, beforeAll, beforeEach, configDefaults, describe, expect, fn, isMockFunction, it, spies, spyOn, suite, test, vi, vitest };
package/dist/index.js CHANGED
@@ -1,12 +1,15 @@
1
- export { d as describe, i as it, c as suite, t as test, e as vi, v as vitest } from './vi-ed2bce6b.js';
2
- export { a as afterAll, d as afterEach, b as beforeAll, c as beforeEach, e as expect } from './index-bffba653.js';
3
- export { f as fn, i as isMockFunction, s as spies, a as spyOn } from './jest-mock-113430de.js';
1
+ export { d as describe, i as it, c as suite, t as test, e as vi, v as vitest } from './vi-93df942a.js';
2
+ export { a as afterAll, d as afterEach, b as beforeAll, c as beforeEach, e as expect } from './index-afc85128.js';
3
+ export { fn, isMockFunction, spies, spyOn } from './jest-mock.js';
4
+ export { c as configDefaults } from './constants-259a41c8.js';
4
5
  export { assert, default as chai, should } from 'chai';
5
6
  import 'util';
6
- import './index-043440ae.js';
7
+ import './index-f55e7b59.js';
8
+ import 'path';
7
9
  import 'tty';
8
10
  import 'local-pkg';
9
- import './source-map-1132e742.js';
11
+ import './source-map-0ecca7b8.js';
10
12
  import './_commonjsHelpers-c9e3b764.js';
11
13
  import 'tinyspy';
12
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OyJ9
14
+ import 'url';
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OyJ9
@@ -0,0 +1,99 @@
1
+ import { util } from 'chai';
2
+ import * as tinyspy from 'tinyspy';
3
+
4
+ const spies = new Set();
5
+ function isMockFunction(fn2) {
6
+ return typeof fn2 === "function" && "__isSpy" in fn2 && fn2.__isSpy;
7
+ }
8
+ function spyOn(obj, method, accessType) {
9
+ const dictionary = {
10
+ get: "getter",
11
+ set: "setter"
12
+ };
13
+ const objMethod = accessType ? { [dictionary[accessType]]: method } : method;
14
+ const stub = tinyspy.spyOn(obj, objMethod);
15
+ return enhanceSpy(stub);
16
+ }
17
+ let callOrder = 0;
18
+ function enhanceSpy(spy) {
19
+ const stub = spy;
20
+ let implementation;
21
+ let instances = [];
22
+ let invocations = [];
23
+ const mockContext = {
24
+ get calls() {
25
+ return stub.calls;
26
+ },
27
+ get instances() {
28
+ return instances;
29
+ },
30
+ get invocationCallOrder() {
31
+ return invocations;
32
+ },
33
+ get results() {
34
+ return stub.results.map(([callType, value]) => {
35
+ const type = callType === "error" ? "throw" : "return";
36
+ return { type, value };
37
+ });
38
+ }
39
+ };
40
+ let onceImplementations = [];
41
+ let name = stub.name;
42
+ stub.getMockName = () => name || "vi.fn()";
43
+ stub.mockName = (n) => {
44
+ name = n;
45
+ return stub;
46
+ };
47
+ stub.mockClear = () => {
48
+ stub.reset();
49
+ instances = [];
50
+ invocations = [];
51
+ return stub;
52
+ };
53
+ stub.mockReset = () => {
54
+ stub.mockClear();
55
+ implementation = () => void 0;
56
+ onceImplementations = [];
57
+ return stub;
58
+ };
59
+ stub.mockRestore = () => {
60
+ stub.mockReset();
61
+ implementation = void 0;
62
+ return stub;
63
+ };
64
+ stub.getMockImplementation = () => implementation;
65
+ stub.mockImplementation = (fn2) => {
66
+ implementation = fn2;
67
+ return stub;
68
+ };
69
+ stub.mockImplementationOnce = (fn2) => {
70
+ onceImplementations.push(fn2);
71
+ return stub;
72
+ };
73
+ stub.mockReturnThis = () => stub.mockImplementation(function() {
74
+ return this;
75
+ });
76
+ stub.mockReturnValue = (val) => stub.mockImplementation(() => val);
77
+ stub.mockReturnValueOnce = (val) => stub.mockImplementationOnce(() => val);
78
+ stub.mockResolvedValue = (val) => stub.mockImplementation(() => Promise.resolve(val));
79
+ stub.mockResolvedValueOnce = (val) => stub.mockImplementationOnce(() => Promise.resolve(val));
80
+ stub.mockRejectedValue = (val) => stub.mockImplementation(() => Promise.reject(val));
81
+ stub.mockRejectedValueOnce = (val) => stub.mockImplementationOnce(() => Promise.reject(val));
82
+ util.addProperty(stub, "mock", () => mockContext);
83
+ stub.willCall(function(...args) {
84
+ instances.push(this);
85
+ invocations.push(++callOrder);
86
+ const impl = onceImplementations.shift() || implementation || stub.getOriginal() || (() => {
87
+ });
88
+ return impl.apply(this, args);
89
+ });
90
+ spies.add(stub);
91
+ return stub;
92
+ }
93
+ function fn(implementation) {
94
+ return enhanceSpy(tinyspy.spyOn({ fn: implementation || (() => {
95
+ }) }, "fn"));
96
+ }
97
+
98
+ export { fn, isMockFunction, spies, spyOn };
99
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamVzdC1tb2NrLmpzIiwic291cmNlcyI6WyIuLi9zcmMvaW50ZWdyYXRpb25zL2plc3QtbW9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlsIH0gZnJvbSAnY2hhaSdcbmltcG9ydCB0eXBlIHsgU3B5SW1wbCB9IGZyb20gJ3RpbnlzcHknXG5pbXBvcnQgKiBhcyB0aW55c3B5IGZyb20gJ3RpbnlzcHknXG5cbmludGVyZmFjZSBNb2NrUmVzdWx0UmV0dXJuPFQ+IHtcbiAgdHlwZTogJ3JldHVybidcbiAgdmFsdWU6IFRcbn1cbmludGVyZmFjZSBNb2NrUmVzdWx0SW5jb21wbGV0ZSB7XG4gIHR5cGU6ICdpbmNvbXBsZXRlJ1xuICB2YWx1ZTogdW5kZWZpbmVkXG59XG5pbnRlcmZhY2UgTW9ja1Jlc3VsdFRocm93IHtcbiAgdHlwZTogJ3Rocm93J1xuICB2YWx1ZTogYW55XG59XG5cbnR5cGUgTW9ja1Jlc3VsdDxUPiA9IE1vY2tSZXN1bHRSZXR1cm48VD4gfCBNb2NrUmVzdWx0VGhyb3cgfCBNb2NrUmVzdWx0SW5jb21wbGV0ZVxuXG5leHBvcnQgaW50ZXJmYWNlIEplc3RNb2NrQ29tcGF0Q29udGV4dDxUQXJncywgVFJldHVybnM+IHtcbiAgY2FsbHM6IFRBcmdzW11cbiAgaW5zdGFuY2VzOiBUUmV0dXJuc1tdXG4gIGludm9jYXRpb25DYWxsT3JkZXI6IG51bWJlcltdXG4gIHJlc3VsdHM6IE1vY2tSZXN1bHQ8VFJldHVybnM+W11cbn1cblxudHlwZSBQcm9jZWR1cmUgPSAoLi4uYXJnczogYW55W10pID0+IGFueVxuXG50eXBlIE1ldGhvZHM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgUHJvY2VkdXJlID8gSyA6IG5ldmVyXG59W2tleW9mIFRdICYgc3RyaW5nXG50eXBlIFByb3BlcnRpZXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgUHJvY2VkdXJlID8gbmV2ZXIgOiBLXG59W2tleW9mIFRdICYgc3RyaW5nXG50eXBlIENsYXNzZXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55ID8gSyA6IG5ldmVyXG59W2tleW9mIFRdICYgc3RyaW5nXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3B5SW5zdGFuY2U8VEFyZ3MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLCBUUmV0dXJucyA9IGFueT4ge1xuICBnZXRNb2NrTmFtZSgpOiBzdHJpbmdcbiAgbW9ja05hbWUobjogc3RyaW5nKTogdGhpc1xuICBtb2NrOiBKZXN0TW9ja0NvbXBhdENvbnRleHQ8VEFyZ3MsIFRSZXR1cm5zPlxuICBtb2NrQ2xlYXIoKTogdGhpc1xuICBtb2NrUmVzZXQoKTogdGhpc1xuICBtb2NrUmVzdG9yZSgpOiB2b2lkXG4gIGdldE1vY2tJbXBsZW1lbnRhdGlvbigpOiAoKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJucykgfCB1bmRlZmluZWRcbiAgbW9ja0ltcGxlbWVudGF0aW9uKGZuOiAoKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJucykgfCAoKCkgPT4gUHJvbWlzZTxUUmV0dXJucz4pKTogdGhpc1xuICBtb2NrSW1wbGVtZW50YXRpb25PbmNlKGZuOiAoKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJucykgfCAoKCkgPT4gUHJvbWlzZTxUUmV0dXJucz4pKTogdGhpc1xuICBtb2NrUmV0dXJuVGhpcygpOiB0aGlzXG4gIG1vY2tSZXR1cm5WYWx1ZShvYmo6IFRSZXR1cm5zKTogdGhpc1xuICBtb2NrUmV0dXJuVmFsdWVPbmNlKG9iajogVFJldHVybnMpOiB0aGlzXG4gIG1vY2tSZXNvbHZlZFZhbHVlKG9iajogQXdhaXRlZDxUUmV0dXJucz4pOiB0aGlzXG4gIG1vY2tSZXNvbHZlZFZhbHVlT25jZShvYmo6IEF3YWl0ZWQ8VFJldHVybnM+KTogdGhpc1xuICBtb2NrUmVqZWN0ZWRWYWx1ZShvYmo6IGFueSk6IHRoaXNcbiAgbW9ja1JlamVjdGVkVmFsdWVPbmNlKG9iajogYW55KTogdGhpc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNweUluc3RhbmNlRm48VEFyZ3MgZXh0ZW5kcyBhbnlbXSA9IGFueSwgVFJldHVybnMgPSBhbnk+IGV4dGVuZHMgU3B5SW5zdGFuY2U8VEFyZ3MsIFRSZXR1cm5zPiB7XG4gICguLi5hcmdzOiBUQXJncyk6IFRSZXR1cm5zXG59XG5cbmV4cG9ydCB0eXBlIE1heWJlTW9ja2VkQ29uc3RydWN0b3I8VD4gPSBUIGV4dGVuZHMgbmV3IChcbiAgLi4uYXJnczogQXJyYXk8YW55PlxuKSA9PiBpbmZlciBSXG4gID8gU3B5SW5zdGFuY2VGbjxDb25zdHJ1Y3RvclBhcmFtZXRlcnM8VD4sIFI+XG4gIDogVFxuZXhwb3J0IHR5cGUgTW9ja2VkRnVuY3Rpb248VCBleHRlbmRzIFByb2NlZHVyZT4gPSBNb2NrV2l0aEFyZ3M8VD4gJiB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdO1xufVxuZXhwb3J0IHR5cGUgTW9ja2VkRnVuY3Rpb25EZWVwPFQgZXh0ZW5kcyBQcm9jZWR1cmU+ID0gTW9ja1dpdGhBcmdzPFQ+ICYgTW9ja2VkT2JqZWN0RGVlcDxUPlxuZXhwb3J0IHR5cGUgTW9ja2VkT2JqZWN0PFQ+ID0gTWF5YmVNb2NrZWRDb25zdHJ1Y3RvcjxUPiAmIHtcbiAgW0sgaW4gTWV0aG9kczxUPl06IFRbS10gZXh0ZW5kcyBQcm9jZWR1cmVcbiAgICA/IE1vY2tlZEZ1bmN0aW9uPFRbS10+XG4gICAgOiBUW0tdO1xufSAmIHsgW0sgaW4gUHJvcGVydGllczxUPl06IFRbS10gfVxuZXhwb3J0IHR5cGUgTW9ja2VkT2JqZWN0RGVlcDxUPiA9IE1heWJlTW9ja2VkQ29uc3RydWN0b3I8VD4gJiB7XG4gIFtLIGluIE1ldGhvZHM8VD5dOiBUW0tdIGV4dGVuZHMgUHJvY2VkdXJlXG4gICAgPyBNb2NrZWRGdW5jdGlvbkRlZXA8VFtLXT5cbiAgICA6IFRbS107XG59ICYgeyBbSyBpbiBQcm9wZXJ0aWVzPFQ+XTogTWF5YmVNb2NrZWREZWVwPFRbS10+IH1cblxuZXhwb3J0IHR5cGUgTWF5YmVNb2NrZWREZWVwPFQ+ID0gVCBleHRlbmRzIFByb2NlZHVyZVxuICA/IE1vY2tlZEZ1bmN0aW9uRGVlcDxUPlxuICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgICA/IE1vY2tlZE9iamVjdERlZXA8VD5cbiAgICA6IFRcblxuZXhwb3J0IHR5cGUgTWF5YmVNb2NrZWQ8VD4gPSBUIGV4dGVuZHMgUHJvY2VkdXJlXG4gID8gTW9ja2VkRnVuY3Rpb248VD5cbiAgOiBUIGV4dGVuZHMgb2JqZWN0XG4gICAgPyBNb2NrZWRPYmplY3Q8VD5cbiAgICA6IFRcblxuZXhwb3J0IHR5cGUgRW5oYW5jZWRTcHk8VEFyZ3MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLCBUUmV0dXJucyA9IGFueT4gPSBTcHlJbnN0YW5jZTxUQXJncywgVFJldHVybnM+ICYgU3B5SW1wbDxUQXJncywgVFJldHVybnM+XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ja1dpdGhBcmdzPFQgZXh0ZW5kcyBQcm9jZWR1cmU+XG4gIGV4dGVuZHMgU3B5SW5zdGFuY2VGbjxQYXJhbWV0ZXJzPFQ+LCBSZXR1cm5UeXBlPFQ+PiB7XG4gIG5ldyAoLi4uYXJnczogVCBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55KSA9PiBhbnkgPyBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8VD4gOiBuZXZlcik6IFRcbiAgKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pOiBSZXR1cm5UeXBlPFQ+XG59XG5cbmV4cG9ydCBjb25zdCBzcGllcyA9IG5ldyBTZXQ8U3B5SW5zdGFuY2U+KClcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTW9ja0Z1bmN0aW9uKGZuOiBhbnkpOiBmbiBpcyBFbmhhbmNlZFNweSB7XG4gIHJldHVybiB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbidcbiAgJiYgJ19faXNTcHknIGluIGZuXG4gICYmIGZuLl9faXNTcHlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNweU9uPFQsIFMgZXh0ZW5kcyBQcm9wZXJ0aWVzPFJlcXVpcmVkPFQ+Pj4oXG4gIG9iajogVCxcbiAgbWV0aG9kTmFtZTogUyxcbiAgYWNjZXNUeXBlOiAnZ2V0Jyxcbik6IFNweUluc3RhbmNlPFtdLCBUW1NdPlxuZXhwb3J0IGZ1bmN0aW9uIHNweU9uPFQsIEcgZXh0ZW5kcyBQcm9wZXJ0aWVzPFJlcXVpcmVkPFQ+Pj4oXG4gIG9iajogVCxcbiAgbWV0aG9kTmFtZTogRyxcbiAgYWNjZXNUeXBlOiAnc2V0Jyxcbik6IFNweUluc3RhbmNlPFtUW0ddXSwgdm9pZD5cbmV4cG9ydCBmdW5jdGlvbiBzcHlPbjxULCBNIGV4dGVuZHMgKE1ldGhvZHM8UmVxdWlyZWQ8VD4+IHwgQ2xhc3NlczxSZXF1aXJlZDxUPj4pPihcbiAgb2JqOiBULFxuICBtZXRob2ROYW1lOiBNLFxuKTogUmVxdWlyZWQ8VD5bTV0gZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUiB8IChuZXcgKC4uLmFyZ3M6IGluZmVyIEEpID0+IGluZmVyIFIpID8gU3B5SW5zdGFuY2U8QSwgUj4gOiBuZXZlclxuZXhwb3J0IGZ1bmN0aW9uIHNweU9uPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPihcbiAgb2JqOiBULFxuICBtZXRob2Q6IEssXG4gIGFjY2Vzc1R5cGU/OiAnZ2V0JyB8ICdzZXQnLFxuKTogU3B5SW5zdGFuY2Uge1xuICBjb25zdCBkaWN0aW9uYXJ5ID0ge1xuICAgIGdldDogJ2dldHRlcicsXG4gICAgc2V0OiAnc2V0dGVyJyxcbiAgfSBhcyBjb25zdFxuICBjb25zdCBvYmpNZXRob2QgPSBhY2Nlc3NUeXBlID8geyBbZGljdGlvbmFyeVthY2Nlc3NUeXBlXV06IG1ldGhvZCB9IDogbWV0aG9kXG5cbiAgY29uc3Qgc3R1YiA9IHRpbnlzcHkuc3B5T24ob2JqLCBvYmpNZXRob2QgYXMgYW55KVxuXG4gIHJldHVybiBlbmhhbmNlU3B5KHN0dWIpIGFzIFNweUluc3RhbmNlXG59XG5cbmxldCBjYWxsT3JkZXIgPSAwXG5cbmZ1bmN0aW9uIGVuaGFuY2VTcHk8VEFyZ3MgZXh0ZW5kcyBhbnlbXSwgVFJldHVybnM+KFxuICBzcHk6IFNweUltcGw8VEFyZ3MsIFRSZXR1cm5zPixcbik6IFNweUluc3RhbmNlPFRBcmdzLCBUUmV0dXJucz4ge1xuICBjb25zdCBzdHViID0gc3B5IGFzIHVua25vd24gYXMgRW5oYW5jZWRTcHk8VEFyZ3MsIFRSZXR1cm5zPlxuXG4gIGxldCBpbXBsZW1lbnRhdGlvbjogKCguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybnMpIHwgdW5kZWZpbmVkXG5cbiAgbGV0IGluc3RhbmNlczogYW55W10gPSBbXVxuICBsZXQgaW52b2NhdGlvbnM6IG51bWJlcltdID0gW11cblxuICBjb25zdCBtb2NrQ29udGV4dCA9IHtcbiAgICBnZXQgY2FsbHMoKSB7XG4gICAgICByZXR1cm4gc3R1Yi5jYWxsc1xuICAgIH0sXG4gICAgZ2V0IGluc3RhbmNlcygpIHtcbiAgICAgIHJldHVybiBpbnN0YW5jZXNcbiAgICB9LFxuICAgIGdldCBpbnZvY2F0aW9uQ2FsbE9yZGVyKCkge1xuICAgICAgcmV0dXJuIGludm9jYXRpb25zXG4gICAgfSxcbiAgICBnZXQgcmVzdWx0cygpIHtcbiAgICAgIHJldHVybiBzdHViLnJlc3VsdHMubWFwKChbY2FsbFR5cGUsIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCB0eXBlID0gY2FsbFR5cGUgPT09ICdlcnJvcicgPyAndGhyb3cnIDogJ3JldHVybidcbiAgICAgICAgcmV0dXJuIHsgdHlwZSwgdmFsdWUgfVxuICAgICAgfSlcbiAgICB9LFxuICB9XG5cbiAgbGV0IG9uY2VJbXBsZW1lbnRhdGlvbnM6ICgoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm5zKVtdID0gW11cblxuICBsZXQgbmFtZTogc3RyaW5nID0gKHN0dWIgYXMgYW55KS5uYW1lXG5cbiAgc3R1Yi5nZXRNb2NrTmFtZSA9ICgpID0+IG5hbWUgfHwgJ3ZpLmZuKCknXG4gIHN0dWIubW9ja05hbWUgPSAobikgPT4ge1xuICAgIG5hbWUgPSBuXG4gICAgcmV0dXJuIHN0dWJcbiAgfVxuXG4gIHN0dWIubW9ja0NsZWFyID0gKCkgPT4ge1xuICAgIHN0dWIucmVzZXQoKVxuICAgIGluc3RhbmNlcyA9IFtdXG4gICAgaW52b2NhdGlvbnMgPSBbXVxuICAgIHJldHVybiBzdHViXG4gIH1cblxuICBzdHViLm1vY2tSZXNldCA9ICgpID0+IHtcbiAgICBzdHViLm1vY2tDbGVhcigpXG4gICAgaW1wbGVtZW50YXRpb24gPSAoKSA9PiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBUUmV0dXJuc1xuICAgIG9uY2VJbXBsZW1lbnRhdGlvbnMgPSBbXVxuICAgIHJldHVybiBzdHViXG4gIH1cblxuICBzdHViLm1vY2tSZXN0b3JlID0gKCkgPT4ge1xuICAgIHN0dWIubW9ja1Jlc2V0KClcbiAgICBpbXBsZW1lbnRhdGlvbiA9IHVuZGVmaW5lZFxuICAgIHJldHVybiBzdHViXG4gIH1cblxuICBzdHViLmdldE1vY2tJbXBsZW1lbnRhdGlvbiA9ICgpID0+IGltcGxlbWVudGF0aW9uXG4gIHN0dWIubW9ja0ltcGxlbWVudGF0aW9uID0gKGZuOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm5zKSA9PiB7XG4gICAgaW1wbGVtZW50YXRpb24gPSBmblxuICAgIHJldHVybiBzdHViXG4gIH1cblxuICBzdHViLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UgPSAoZm46ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybnMpID0+IHtcbiAgICBvbmNlSW1wbGVtZW50YXRpb25zLnB1c2goZm4pXG4gICAgcmV0dXJuIHN0dWJcbiAgfVxuXG4gIHN0dWIubW9ja1JldHVyblRoaXMgPSAoKSA9PlxuICAgIHN0dWIubW9ja0ltcGxlbWVudGF0aW9uKGZ1bmN0aW9uKHRoaXM6IFRSZXR1cm5zKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH0pXG5cbiAgc3R1Yi5tb2NrUmV0dXJuVmFsdWUgPSAodmFsOiBUUmV0dXJucykgPT4gc3R1Yi5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdmFsKVxuICBzdHViLm1vY2tSZXR1cm5WYWx1ZU9uY2UgPSAodmFsOiBUUmV0dXJucykgPT4gc3R1Yi5tb2NrSW1wbGVtZW50YXRpb25PbmNlKCgpID0+IHZhbClcblxuICBzdHViLm1vY2tSZXNvbHZlZFZhbHVlID0gKHZhbDogQXdhaXRlZDxUUmV0dXJucz4pID0+XG4gICAgc3R1Yi5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBUUmV0dXJucykpXG5cbiAgc3R1Yi5tb2NrUmVzb2x2ZWRWYWx1ZU9uY2UgPSAodmFsOiBBd2FpdGVkPFRSZXR1cm5zPikgPT5cbiAgICBzdHViLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBUUmV0dXJucykpXG5cbiAgc3R1Yi5tb2NrUmVqZWN0ZWRWYWx1ZSA9ICh2YWw6IHVua25vd24pID0+XG4gICAgc3R1Yi5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gUHJvbWlzZS5yZWplY3QodmFsKSlcblxuICBzdHViLm1vY2tSZWplY3RlZFZhbHVlT25jZSA9ICh2YWw6IHVua25vd24pID0+XG4gICAgc3R1Yi5tb2NrSW1wbGVtZW50YXRpb25PbmNlKCgpID0+IFByb21pc2UucmVqZWN0KHZhbCkpXG5cbiAgdXRpbC5hZGRQcm9wZXJ0eShzdHViLCAnbW9jaycsICgpID0+IG1vY2tDb250ZXh0KVxuXG4gIHN0dWIud2lsbENhbGwoZnVuY3Rpb24odGhpczogdW5rbm93biwgLi4uYXJncykge1xuICAgIGluc3RhbmNlcy5wdXNoKHRoaXMpXG4gICAgaW52b2NhdGlvbnMucHVzaCgrK2NhbGxPcmRlcilcbiAgICBjb25zdCBpbXBsID0gb25jZUltcGxlbWVudGF0aW9ucy5zaGlmdCgpIHx8IGltcGxlbWVudGF0aW9uIHx8IHN0dWIuZ2V0T3JpZ2luYWwoKSB8fCAoKCkgPT4ge30pXG4gICAgcmV0dXJuIGltcGwuYXBwbHkodGhpcywgYXJncylcbiAgfSlcblxuICBzcGllcy5hZGQoc3R1YilcblxuICByZXR1cm4gc3R1YiBhcyBhbnlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZuPFRBcmdzIGV4dGVuZHMgYW55W10gPSBhbnlbXSwgUiA9IGFueT4oKTogU3B5SW5zdGFuY2VGbjxUQXJncywgUj5cbmV4cG9ydCBmdW5jdGlvbiBmbjxUQXJncyBleHRlbmRzIGFueVtdID0gYW55W10sIFIgPSBhbnk+KFxuICBpbXBsZW1lbnRhdGlvbjogKC4uLmFyZ3M6IFRBcmdzKSA9PiBSXG4pOiBTcHlJbnN0YW5jZUZuPFRBcmdzLCBSPlxuZXhwb3J0IGZ1bmN0aW9uIGZuPFRBcmdzIGV4dGVuZHMgYW55W10gPSBhbnlbXSwgUiA9IGFueT4oXG4gIGltcGxlbWVudGF0aW9uPzogKC4uLmFyZ3M6IFRBcmdzKSA9PiBSLFxuKTogU3B5SW5zdGFuY2VGbjxUQXJncywgUj4ge1xuICByZXR1cm4gZW5oYW5jZVNweSh0aW55c3B5LnNweU9uKHsgZm46IGltcGxlbWVudGF0aW9uIHx8ICgoKSA9PiB7fSkgfSwgJ2ZuJykpIGFzIHVua25vd24gYXMgU3B5SW5zdGFuY2VGblxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVZLE1BQUMsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHO0FBQ3hCLFNBQVMsY0FBYyxDQUFDLEdBQUcsRUFBRTtBQUNwQyxFQUFFLE9BQU8sT0FBTyxHQUFHLEtBQUssVUFBVSxJQUFJLFNBQVMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQztBQUN0RSxDQUFDO0FBQ00sU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUU7QUFDL0MsRUFBRSxNQUFNLFVBQVUsR0FBRztBQUNyQixJQUFJLEdBQUcsRUFBRSxRQUFRO0FBQ2pCLElBQUksR0FBRyxFQUFFLFFBQVE7QUFDakIsR0FBRyxDQUFDO0FBQ0osRUFBRSxNQUFNLFNBQVMsR0FBRyxVQUFVLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxNQUFN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
package/dist/node.d.ts CHANGED
@@ -1,11 +1,5 @@
1
- import { Profiler } from 'inspector';
2
1
  import { ViteDevServer, TransformResult, CommonServerOptions, UserConfig as UserConfig$1, Plugin as Plugin$1 } from 'vite';
3
2
 
4
- interface FetchResult {
5
- code?: string;
6
- externalize?: string;
7
- }
8
-
9
3
  interface DepsHandlingOptions {
10
4
  external?: (string | RegExp)[];
11
5
  inline?: (string | RegExp)[];
@@ -15,6 +9,22 @@ interface DepsHandlingOptions {
15
9
  */
16
10
  fallbackCJS?: boolean;
17
11
  }
12
+ interface StartOfSourceMap {
13
+ file?: string;
14
+ sourceRoot?: string;
15
+ }
16
+ interface RawSourceMap extends StartOfSourceMap {
17
+ version: string;
18
+ sources: string[];
19
+ names: string[];
20
+ sourcesContent?: string[];
21
+ mappings: string;
22
+ }
23
+ interface FetchResult {
24
+ code?: string;
25
+ externalize?: string;
26
+ map?: RawSourceMap;
27
+ }
18
28
  interface ViteNodeResolveId {
19
29
  external?: boolean | 'absolute' | 'relative';
20
30
  id: string;
@@ -25,9 +35,9 @@ interface ViteNodeResolveId {
25
35
  interface ViteNodeServerOptions {
26
36
  /**
27
37
  * Inject inline sourcemap to modules
28
- * @default true
38
+ * @default 'inline'
29
39
  */
30
- sourcemap?: boolean;
40
+ sourcemap?: 'inline' | boolean;
31
41
  /**
32
42
  * Deps handling
33
43
  */
@@ -46,7 +56,10 @@ declare class ViteNodeServer {
46
56
  options: ViteNodeServerOptions;
47
57
  private fetchPromiseMap;
48
58
  private transformPromiseMap;
49
- private fetchCache;
59
+ fetchCache: Map<string, {
60
+ timestamp: number;
61
+ result: FetchResult;
62
+ }>;
50
63
  constructor(server: ViteDevServer, options?: ViteNodeServerOptions);
51
64
  shouldExternalize(id: string): Promise<string | false>;
52
65
  resolveId(id: string, importer?: string): Promise<ViteNodeResolveId | null>;
@@ -251,6 +264,38 @@ declare const ReportersMap: {
251
264
  };
252
265
  declare type BuiltinReporters = keyof typeof ReportersMap;
253
266
 
267
+ declare type Awaitable<T> = T | PromiseLike<T>;
268
+ declare type Arrayable<T> = T | Array<T>;
269
+ declare type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
270
+ interface UserConsoleLog {
271
+ content: string;
272
+ type: 'stdout' | 'stderr';
273
+ taskId?: string;
274
+ time: number;
275
+ }
276
+ interface Position {
277
+ line: number;
278
+ column: number;
279
+ }
280
+ interface ParsedStack {
281
+ method: string;
282
+ file: string;
283
+ line: number;
284
+ column: number;
285
+ sourcePos?: Position;
286
+ }
287
+ interface ErrorWithDiff extends Error {
288
+ name: string;
289
+ nameStr?: string;
290
+ stack?: string;
291
+ stackStr?: string;
292
+ stacks?: ParsedStack[];
293
+ showDiff?: boolean;
294
+ actual?: any;
295
+ expected?: any;
296
+ operator?: string;
297
+ }
298
+
254
299
  declare type CoverageReporter = 'clover' | 'cobertura' | 'html-spa' | 'html' | 'json-summary' | 'json' | 'lcov' | 'lcovonly' | 'none' | 'teamcity' | 'text-lcov' | 'text-summary' | 'text';
255
300
  interface C8Options {
256
301
  /**
@@ -300,6 +345,7 @@ interface C8Options {
300
345
  all?: boolean;
301
346
  }
302
347
  interface ResolvedC8Options extends Required<C8Options> {
348
+ tempDirectory: string;
303
349
  }
304
350
 
305
351
  interface JSDOMOptions {
@@ -382,49 +428,6 @@ interface JSDOMOptions {
382
428
  resources?: 'usable' | any;
383
429
  }
384
430
 
385
- declare type Awaitable<T> = T | PromiseLike<T>;
386
- declare type Arrayable<T> = T | Array<T>;
387
- declare type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
388
- interface UserConsoleLog {
389
- content: string;
390
- type: 'stdout' | 'stderr';
391
- taskId?: string;
392
- time: number;
393
- }
394
- interface Position {
395
- line: number;
396
- column: number;
397
- }
398
- interface ParsedStack {
399
- method: string;
400
- file: string;
401
- line: number;
402
- column: number;
403
- sourcePos?: Position;
404
- }
405
- interface ErrorWithDiff extends Error {
406
- name: string;
407
- nameStr?: string;
408
- stack?: string;
409
- stackStr?: string;
410
- stacks?: ParsedStack[];
411
- showDiff?: boolean;
412
- actual?: any;
413
- expected?: any;
414
- operator?: string;
415
- }
416
- interface StartOfSourceMap {
417
- file?: string;
418
- sourceRoot?: string;
419
- }
420
- interface RawSourceMap extends StartOfSourceMap {
421
- version: string;
422
- sources: string[];
423
- names: string[];
424
- sourcesContent?: string[];
425
- mappings: string;
426
- }
427
-
428
431
  declare type RunMode = 'run' | 'skip' | 'only' | 'todo';
429
432
  declare type TaskState = RunMode | 'pass' | 'fail';
430
433
  interface TaskBase {
@@ -593,7 +596,7 @@ interface InlineConfig {
593
596
  /**
594
597
  * Watch mode
595
598
  *
596
- * @default false
599
+ * @default true
597
600
  */
598
601
  watch?: boolean;
599
602
  /**
@@ -637,7 +640,7 @@ interface InlineConfig {
637
640
  /**
638
641
  * Default timeout of a hook in milliseconds
639
642
  *
640
- * @default 5000
643
+ * @default 10000
641
644
  */
642
645
  hookTimeout?: number;
643
646
  /**
@@ -762,6 +765,10 @@ interface UserConfig extends InlineConfig {
762
765
  * Pass with no tests
763
766
  */
764
767
  passWithNoTests?: boolean;
768
+ /**
769
+ * Allow tests and suites that are marked as only
770
+ */
771
+ allowOnly?: boolean;
765
772
  /**
766
773
  * Run tests that cover a list of source files
767
774
  */
@@ -812,7 +819,6 @@ declare class Vitest {
812
819
  server: ViteDevServer;
813
820
  state: StateManager;
814
821
  snapshot: SnapshotManager;
815
- coverage: Profiler.TakePreciseCoverageReturnType[];
816
822
  reporters: Reporter[];
817
823
  console: Console;
818
824
  pool: WorkerPool | undefined;
@@ -825,7 +831,6 @@ declare class Vitest {
825
831
  vitenode: ViteNodeServer;
826
832
  invalidates: Set<string>;
827
833
  changedTests: Set<string>;
828
- visitedFilesMap: Map<string, RawSourceMap>;
829
834
  runningPromise?: Promise<void>;
830
835
  closingPromise?: Promise<void>;
831
836
  isFirstRun: boolean;