vitest 0.0.38 → 0.0.42
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.gh.md +30 -1
- package/bin/vitest.mjs +4 -0
- package/dist/chunk-2AYT2TPD.js +1 -0
- package/dist/chunk-64PJVUUV.js +1 -0
- package/dist/chunk-76F2Y2GL.js +1 -0
- package/dist/chunk-EKOPYC4R.js +1 -0
- package/dist/chunk-RMLIGPEN.js +1 -0
- package/dist/global-C6CIEELF.js +1 -0
- package/dist/happy-dom-EZVJENUI.js +1 -0
- package/dist/index.d.ts +65 -24
- package/dist/index.js +1 -1
- package/dist/jsdom-VHB26LUJ.js +1 -0
- package/dist/node/cli.d.ts +11 -2
- package/dist/node/cli.js +5 -5
- package/dist/node/entry.js +16 -17
- package/dist/{types-d3253f2d.d.ts → types-15d74511.d.ts} +41 -41
- package/package.json +7 -8
- package/dist/chunk-4OVO6RD6.js +0 -1
- package/dist/chunk-CUG6SVUZ.js +0 -1
- package/dist/chunk-F27UALKJ.js +0 -1
- package/dist/chunk-XPSQDVUG.js +0 -1
- package/dist/global-CKRMAXWF.js +0 -1
- package/dist/happy-dom-RNJZR3YC.js +0 -1
- package/dist/jsdom-6QAZGE6T.js +0 -1
package/README.gh.md
CHANGED
|
@@ -271,8 +271,36 @@ describe('suite', () => {
|
|
|
271
271
|
})
|
|
272
272
|
```
|
|
273
273
|
|
|
274
|
-
|
|
274
|
+
If you use `.concurrent` in a suite, every tasks in it will be run in parallel
|
|
275
|
+
```ts
|
|
276
|
+
// The two tasks marked with concurrent will be run in parallel
|
|
277
|
+
describe.concurrent('suite', () => {
|
|
278
|
+
it('concurrent task 1', () => {
|
|
279
|
+
assert.equal(Math.sqrt(4), 3)
|
|
280
|
+
})
|
|
281
|
+
it('concurrent task 2', () => {
|
|
282
|
+
assert.equal(Math.sqrt(4), 3)
|
|
283
|
+
})
|
|
284
|
+
// No effect, same as not using .concurrent
|
|
285
|
+
it.concurrent('concurrent task 3', () => {
|
|
286
|
+
assert.equal(Math.sqrt(4), 3)
|
|
287
|
+
})
|
|
288
|
+
})
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
You can also use `.skip`, `.only`, and `.todo` with concurrent suite and tasks. All the following combinations are valid:
|
|
275
292
|
```js
|
|
293
|
+
describe.concurrent(...)
|
|
294
|
+
|
|
295
|
+
describe.skip.concurrent(...)
|
|
296
|
+
describe.concurrent.skip(...)
|
|
297
|
+
|
|
298
|
+
describe.only.concurrent(...)
|
|
299
|
+
describe.concurrent.only(...)
|
|
300
|
+
|
|
301
|
+
describe.todo.concurrent(...)
|
|
302
|
+
describe.concurrent.todo(...)
|
|
303
|
+
|
|
276
304
|
it.concurrent(...)
|
|
277
305
|
|
|
278
306
|
it.skip.concurrent(...)
|
|
@@ -285,6 +313,7 @@ it.todo.concurrent(...)
|
|
|
285
313
|
it.concurrent.todo(...)
|
|
286
314
|
```
|
|
287
315
|
|
|
316
|
+
|
|
288
317
|
## Sponsors
|
|
289
318
|
|
|
290
319
|
<p align="center">
|
package/bin/vitest.mjs
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
import { fileURLToPath } from 'url'
|
|
4
4
|
import { resolve } from 'path'
|
|
5
5
|
|
|
6
|
+
// TODO: enable source map when public
|
|
7
|
+
// import { install } from 'source-map-support'
|
|
8
|
+
// install({ environment: 'node', hookRequire: true })
|
|
9
|
+
|
|
6
10
|
const argv = process.argv.slice(2)
|
|
7
11
|
const filename = fileURLToPath(import.meta.url)
|
|
8
12
|
const entry = resolve(filename, '../../dist/node/cli.js')
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{init_esm_shims}from"./chunk-64PJVUUV.js";init_esm_shims();var LIVING_KEYS=["DOMException","URL","URLSearchParams","EventTarget","NamedNodeMap","Node","Attr","Element","DocumentFragment","DOMImplementation","Document","XMLDocument","CharacterData","Text","CDATASection","ProcessingInstruction","Comment","DocumentType","NodeList","HTMLCollection","HTMLOptionsCollection","DOMStringMap","DOMTokenList","StyleSheetList","HTMLElement","HTMLHeadElement","HTMLTitleElement","HTMLBaseElement","HTMLLinkElement","HTMLMetaElement","HTMLStyleElement","HTMLBodyElement","HTMLHeadingElement","HTMLParagraphElement","HTMLHRElement","HTMLPreElement","HTMLUListElement","HTMLOListElement","HTMLLIElement","HTMLMenuElement","HTMLDListElement","HTMLDivElement","HTMLAnchorElement","HTMLAreaElement","HTMLBRElement","HTMLButtonElement","HTMLCanvasElement","HTMLDataElement","HTMLDataListElement","HTMLDetailsElement","HTMLDialogElement","HTMLDirectoryElement","HTMLFieldSetElement","HTMLFontElement","HTMLFormElement","HTMLHtmlElement","HTMLImageElement","HTMLInputElement","HTMLLabelElement","HTMLLegendElement","HTMLMapElement","HTMLMarqueeElement","HTMLMediaElement","HTMLMeterElement","HTMLModElement","HTMLOptGroupElement","HTMLOptionElement","HTMLOutputElement","HTMLPictureElement","HTMLProgressElement","HTMLQuoteElement","HTMLScriptElement","HTMLSelectElement","HTMLSlotElement","HTMLSourceElement","HTMLSpanElement","HTMLTableCaptionElement","HTMLTableCellElement","HTMLTableColElement","HTMLTableElement","HTMLTimeElement","HTMLTableRowElement","HTMLTableSectionElement","HTMLTemplateElement","HTMLTextAreaElement","HTMLUnknownElement","HTMLFrameElement","HTMLFrameSetElement","HTMLIFrameElement","HTMLEmbedElement","HTMLObjectElement","HTMLParamElement","HTMLVideoElement","HTMLAudioElement","HTMLTrackElement","SVGElement","SVGGraphicsElement","SVGSVGElement","SVGTitleElement","SVGAnimatedString","SVGNumber","SVGStringList","Event","CloseEvent","CustomEvent","MessageEvent","ErrorEvent","HashChangeEvent","PopStateEvent","StorageEvent","ProgressEvent","PageTransitionEvent","UIEvent","FocusEvent","InputEvent","MouseEvent","KeyboardEvent","TouchEvent","CompositionEvent","WheelEvent","BarProp","External","Location","History","Screen","Performance","Navigator","PluginArray","MimeTypeArray","Plugin","MimeType","FileReader","Blob","File","FileList","ValidityState","DOMParser","XMLSerializer","FormData","XMLHttpRequestEventTarget","XMLHttpRequestUpload","XMLHttpRequest","WebSocket","NodeFilter","NodeIterator","TreeWalker","AbstractRange","Range","StaticRange","Selection","Storage","CustomElementRegistry","ShadowRoot","MutationObserver","MutationRecord","Headers","AbortController","AbortSignal"],OTHER_KEYS=["addEventListener","alert","atob","blur","btoa","close","confirm","createPopup","dispatchEvent","document","focus","frames","getComputedStyle","history","innerHeight","innerWidth","length","location","moveBy","moveTo","name","navigator","open","outerHeight","outerWidth","pageXOffset","pageYOffset","parent","postMessage","print","prompt","removeEventListener","resizeBy","resizeTo","screen","screenLeft","screenTop","screenX","screenY","scroll","scrollBy","scrollLeft","scrollTo","scrollTop","scrollX","scrollY","self","stop","top","window"],KEYS=LIVING_KEYS.concat(OTHER_KEYS);export{KEYS};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var __create=Object.create;var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropSymbols=Object.getOwnPropertySymbols,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,__spreadValues=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp.call(b,prop)&&__defNormalProp(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b)),__markAsModule=target=>__defProp(target,"__esModule",{value:!0});var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[Object.keys(fn)[0]])(fn=0)),res};var __commonJS=(cb,mod)=>function(){return mod||(0,cb[Object.keys(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__reExport=(target,module,desc)=>{if(module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>__reExport(__markAsModule(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",module&&module.__esModule&&"default"in module?{get:()=>module.default,enumerable:!0}:{value:module,enumerable:!0})),module);import{fileURLToPath}from"url";import path from"path";var __filename,__dirname,init_esm_shims=__esm({"node_modules/.pnpm/tsup@5.10.3_typescript@4.5.2/node_modules/tsup/assets/esm_shims.js"(){__filename=fileURLToPath(import.meta.url),__dirname=path.dirname(__filename)}});export{__spreadValues,__spreadProps,__commonJS,__export,__toModule,init_esm_shims};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{init_esm_shims}from"./chunk-64PJVUUV.js";init_esm_shims();import{resolve}from"path";import{fileURLToPath}from"url";var distDir=resolve(fileURLToPath(import.meta.url),"../../dist"),defaultIncludes=["**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],defaultExcludes=["**/node_modules/**","**/dist/**"],globalApis=["suite","test","describe","it","chai","expect","assert","sinon","spy","mock","stub","beforeAll","afterAll","beforeEach","afterEach"];export{distDir,defaultIncludes,defaultExcludes,globalApis};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{afterAll,afterEach,beforeAll,beforeEach,clearContext,createSuiteHooks,defaultSuite,describe,it,suite,test}from"./chunk-RMLIGPEN.js";import{__export,init_esm_shims}from"./chunk-64PJVUUV.js";var src_exports={};__export(src_exports,{afterAll:()=>afterAll,afterEach:()=>afterEach,assert:()=>assert,beforeAll:()=>beforeAll,beforeEach:()=>beforeEach,chai:()=>chai,clearContext:()=>clearContext,createSuiteHooks:()=>createSuiteHooks,defaultSuite:()=>defaultSuite,describe:()=>describe,expect:()=>expect,it:()=>it,mock:()=>mock,should:()=>should,sinon:()=>sinon,spy:()=>spy,stub:()=>stub,suite:()=>suite,test:()=>test});init_esm_shims();init_esm_shims();init_esm_shims();import chai from"chai";import{assert,should,expect}from"chai";init_esm_shims();import sinon from"sinon";var{mock,spy,stub}=sinon;sinon.fn=sinon.spy;export{chai,assert,should,expect,sinon,mock,spy,stub,src_exports};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{init_esm_shims}from"./chunk-64PJVUUV.js";init_esm_shims();init_esm_shims();var context={children:[],currentSuite:null};init_esm_shims();var fnMap=new WeakMap,hooksMap=new WeakMap;function setFn(key,fn){fnMap.set(key,fn)}function getFn(key){return fnMap.get(key)}function setHooks(key,hooks){hooksMap.set(key,hooks)}function getHooks(key){return hooksMap.get(key)}var suite=createSuite(),defaultSuite=suite("");function getCurrentSuite(){return context.currentSuite||defaultSuite}function createSuiteHooks(){return{beforeAll:[],afterAll:[],beforeEach:[],afterEach:[]}}function createSuiteCollector(name,factory=()=>{},mode,suiteComputeMode){var _a;let children=[],factoryQueue=[],suite2;initSuite();let test2=createTestCollector((name2,fn,mode2,computeMode)=>{let task={type:"task",name:name2,mode:mode2,computeMode:computeMode??suiteComputeMode??"serial",suite:{}};setFn(task,fn),children.push(task)}),collector={type:"collector",name,mode,test:test2,children,collect,clear,on:addHook};function addHook(name2,...fn){getHooks(suite2)[name2].push(...fn)}function initSuite(){suite2={type:"suite",computeMode:"serial",name,mode,children:[]},setHooks(suite2,createSuiteHooks())}function clear(){children.length=0,factoryQueue.length=0,initSuite()}async function collect(file){if(factoryQueue.length=0,factory){let prev=context.currentSuite;context.currentSuite=collector,await factory(test2),context.currentSuite=prev}let allChildren=await Promise.all([...factoryQueue,...children].map(i=>i.type==="collector"?i.collect(file):i));return suite2.file=file,suite2.children=allChildren,allChildren.forEach(task=>{task.type==="task"&&(task.suite=suite2,file&&(task.file=file))}),suite2}return(_a=context.currentSuite)==null||_a.children.push(collector),collector}function createTestCollector(collectTask){function test2(name,fn){collectTask(name,fn,"run")}test2.concurrent=concurrent,test2.skip=skip,test2.only=only,test2.todo=todo;function concurrent(name,fn){collectTask(name,fn,"run","concurrent")}concurrent.skip=(name,fn)=>collectTask(name,fn,"skip","concurrent"),concurrent.only=(name,fn)=>collectTask(name,fn,"only","concurrent"),concurrent.todo=todo;function skip(name,fn){collectTask(name,fn,"skip")}skip.concurrent=concurrent.skip;function only(name,fn){collectTask(name,fn,"only")}only.concurrent=concurrent.only;function todo(name){collectTask(name,()=>{},"todo")}return todo.concurrent=todo,test2}var test=function(){function test2(name,fn){return getCurrentSuite().test(name,fn)}function concurrent(name,fn){return getCurrentSuite().test.concurrent(name,fn)}concurrent.skip=(name,fn)=>getCurrentSuite().test.concurrent.skip(name,fn),concurrent.only=(name,fn)=>getCurrentSuite().test.concurrent.only(name,fn),concurrent.todo=name=>getCurrentSuite().test.concurrent.todo(name);function skip(name,fn){return getCurrentSuite().test.skip(name,fn)}skip.concurrent=(name,fn)=>getCurrentSuite().test.skip.concurrent(name,fn);function only(name,fn){return getCurrentSuite().test.only(name,fn)}only.concurrent=(name,fn)=>getCurrentSuite().test.only.concurrent(name,fn);function todo(name){return getCurrentSuite().test.todo(name)}return todo.concurrent=name=>getCurrentSuite().test.todo.concurrent(name),test2.concurrent=concurrent,test2.skip=skip,test2.only=only,test2.todo=todo,test2}();function createSuite(){function suite2(suiteName,factory){return createSuiteCollector(suiteName,factory,"run")}function concurrent(suiteName,factory){return createSuiteCollector(suiteName,factory,"run","concurrent")}concurrent.skip=(suiteName,factory)=>createSuiteCollector(suiteName,factory,"skip","concurrent"),concurrent.only=(suiteName,factory)=>createSuiteCollector(suiteName,factory,"only","concurrent"),concurrent.todo=suiteName=>createSuiteCollector(suiteName,void 0,"todo");function skip(suiteName,factory){return createSuiteCollector(suiteName,factory,"skip")}skip.concurrent=concurrent.skip;function only(suiteName,factory){return createSuiteCollector(suiteName,factory,"only")}only.concurrent=concurrent.only;function todo(suiteName){return createSuiteCollector(suiteName,void 0,"todo")}return todo.concurrent=concurrent.todo,suite2.concurrent=concurrent,suite2.skip=skip,suite2.only=only,suite2.todo=todo,suite2}var describe=suite,it=test,beforeAll=fn=>getCurrentSuite().on("beforeAll",fn),afterAll=fn=>getCurrentSuite().on("afterAll",fn),beforeEach=fn=>getCurrentSuite().on("beforeEach",fn),afterEach=fn=>getCurrentSuite().on("afterEach",fn);function clearContext(){context.children.length=0,defaultSuite.clear(),context.currentSuite=defaultSuite}export{context,getFn,setHooks,getHooks,suite,defaultSuite,createSuiteHooks,test,describe,it,beforeAll,afterAll,beforeEach,afterEach,clearContext};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{src_exports}from"./chunk-EKOPYC4R.js";import"./chunk-RMLIGPEN.js";import{globalApis}from"./chunk-76F2Y2GL.js";import{init_esm_shims}from"./chunk-64PJVUUV.js";init_esm_shims();function registerApiGlobally(){globalApis.forEach(api=>{globalThis[api]=src_exports[api]})}export{registerApiGlobally};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{KEYS}from"./chunk-2AYT2TPD.js";import{init_esm_shims}from"./chunk-64PJVUUV.js";init_esm_shims();import{Window}from"happy-dom";function setupHappyDOM(global){let win=new Window,keys=KEYS.concat(Object.getOwnPropertyNames(win)).filter(k=>!k.startsWith("_")).filter(k=>!(k in global));for(let key of keys)global[key]=win[key];return{dom:win,restore(){win.happyDOM.cancelAsync(),keys.forEach(key=>delete global[key])}}}export{setupHappyDOM};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as pretty_format from 'pretty-format';
|
|
2
|
-
import {
|
|
3
|
-
export { C as
|
|
2
|
+
import { T as TestFactory, S as SuiteCollector, a as TestFunction, b as SuiteHooks, U as UserOptions } from './types-15d74511';
|
|
3
|
+
export { C as ComputeMode, F as File, G as GlobalContext, H as HookListener, l as Reporter, R as ResolvedConfig, c as RunMode, k as RunnerContext, j as Suite, S as SuiteCollector, b as SuiteHooks, e as SuiteState, f as Task, h as TaskOrSuite, g as TaskResult, d as TaskState, i as TestCollector, T as TestFactory, a as TestFunction, U as UserOptions } from './types-15d74511';
|
|
4
4
|
export { assert, default as chai, expect, should } from 'chai';
|
|
5
5
|
import sinon from 'sinon';
|
|
6
6
|
export { default as sinon } from 'sinon';
|
|
@@ -8,60 +8,101 @@ import '@antfu/utils';
|
|
|
8
8
|
import 'jest-snapshot';
|
|
9
9
|
import 'jest-snapshot/build/State';
|
|
10
10
|
|
|
11
|
+
declare const suite: {
|
|
12
|
+
(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
13
|
+
concurrent: {
|
|
14
|
+
(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
15
|
+
skip(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
16
|
+
only(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
17
|
+
todo(suiteName: string): SuiteCollector;
|
|
18
|
+
};
|
|
19
|
+
skip: {
|
|
20
|
+
(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
21
|
+
concurrent: (suiteName: string, factory?: TestFactory | undefined) => SuiteCollector;
|
|
22
|
+
};
|
|
23
|
+
only: {
|
|
24
|
+
(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
25
|
+
concurrent: (suiteName: string, factory?: TestFactory | undefined) => SuiteCollector;
|
|
26
|
+
};
|
|
27
|
+
todo: {
|
|
28
|
+
(suiteName: string): SuiteCollector;
|
|
29
|
+
concurrent: (suiteName: string) => SuiteCollector;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
11
32
|
declare const defaultSuite: SuiteCollector;
|
|
33
|
+
declare function createSuiteHooks(): {
|
|
34
|
+
beforeAll: never[];
|
|
35
|
+
afterAll: never[];
|
|
36
|
+
beforeEach: never[];
|
|
37
|
+
afterEach: never[];
|
|
38
|
+
};
|
|
12
39
|
declare const test: {
|
|
13
40
|
(name: string, fn: TestFunction): void;
|
|
14
41
|
concurrent: {
|
|
15
|
-
(name: string, fn: TestFunction
|
|
16
|
-
skip(name: string, fn: TestFunction
|
|
17
|
-
only(name: string, fn: TestFunction
|
|
42
|
+
(name: string, fn: TestFunction): void;
|
|
43
|
+
skip(name: string, fn: TestFunction): void;
|
|
44
|
+
only(name: string, fn: TestFunction): void;
|
|
18
45
|
todo(name: string): void;
|
|
19
46
|
};
|
|
20
47
|
skip: {
|
|
21
48
|
(name: string, fn: TestFunction): void;
|
|
22
|
-
concurrent(name: string, fn: TestFunction
|
|
49
|
+
concurrent(name: string, fn: TestFunction): void;
|
|
23
50
|
};
|
|
24
51
|
only: {
|
|
25
52
|
(name: string, fn: TestFunction): void;
|
|
26
|
-
concurrent(name: string, fn: TestFunction
|
|
53
|
+
concurrent(name: string, fn: TestFunction): void;
|
|
27
54
|
};
|
|
28
55
|
todo: {
|
|
29
56
|
(name: string): void;
|
|
30
57
|
concurrent(name: string): void;
|
|
31
58
|
};
|
|
32
59
|
};
|
|
33
|
-
declare
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
60
|
+
declare const describe: {
|
|
61
|
+
(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
62
|
+
concurrent: {
|
|
63
|
+
(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
64
|
+
skip(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
65
|
+
only(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
66
|
+
todo(suiteName: string): SuiteCollector;
|
|
67
|
+
};
|
|
68
|
+
skip: {
|
|
69
|
+
(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
70
|
+
concurrent: (suiteName: string, factory?: TestFactory | undefined) => SuiteCollector;
|
|
71
|
+
};
|
|
72
|
+
only: {
|
|
73
|
+
(suiteName: string, factory?: TestFactory | undefined): SuiteCollector;
|
|
74
|
+
concurrent: (suiteName: string, factory?: TestFactory | undefined) => SuiteCollector;
|
|
75
|
+
};
|
|
76
|
+
todo: {
|
|
77
|
+
(suiteName: string): SuiteCollector;
|
|
78
|
+
concurrent: (suiteName: string) => SuiteCollector;
|
|
79
|
+
};
|
|
80
|
+
};
|
|
40
81
|
declare const it: {
|
|
41
82
|
(name: string, fn: TestFunction): void;
|
|
42
83
|
concurrent: {
|
|
43
|
-
(name: string, fn: TestFunction
|
|
44
|
-
skip(name: string, fn: TestFunction
|
|
45
|
-
only(name: string, fn: TestFunction
|
|
84
|
+
(name: string, fn: TestFunction): void;
|
|
85
|
+
skip(name: string, fn: TestFunction): void;
|
|
86
|
+
only(name: string, fn: TestFunction): void;
|
|
46
87
|
todo(name: string): void;
|
|
47
88
|
};
|
|
48
89
|
skip: {
|
|
49
90
|
(name: string, fn: TestFunction): void;
|
|
50
|
-
concurrent(name: string, fn: TestFunction
|
|
91
|
+
concurrent(name: string, fn: TestFunction): void;
|
|
51
92
|
};
|
|
52
93
|
only: {
|
|
53
94
|
(name: string, fn: TestFunction): void;
|
|
54
|
-
concurrent(name: string, fn: TestFunction
|
|
95
|
+
concurrent(name: string, fn: TestFunction): void;
|
|
55
96
|
};
|
|
56
97
|
todo: {
|
|
57
98
|
(name: string): void;
|
|
58
99
|
concurrent(name: string): void;
|
|
59
100
|
};
|
|
60
101
|
};
|
|
61
|
-
declare const beforeAll: (fn:
|
|
62
|
-
declare const afterAll: (fn:
|
|
63
|
-
declare const beforeEach: (fn:
|
|
64
|
-
declare const afterEach: (fn:
|
|
102
|
+
declare const beforeAll: (fn: SuiteHooks['beforeAll'][0]) => void;
|
|
103
|
+
declare const afterAll: (fn: SuiteHooks['afterAll'][0]) => void;
|
|
104
|
+
declare const beforeEach: (fn: SuiteHooks['beforeEach'][0]) => void;
|
|
105
|
+
declare const afterEach: (fn: SuiteHooks['afterEach'][0]) => void;
|
|
65
106
|
declare function clearContext(): void;
|
|
66
107
|
|
|
67
108
|
declare const mock: sinon.SinonMockStatic;
|
|
@@ -105,4 +146,4 @@ declare global {
|
|
|
105
146
|
}
|
|
106
147
|
}
|
|
107
148
|
|
|
108
|
-
export { afterAll, afterEach, beforeAll, beforeEach, clearContext, defaultSuite, describe, it, mock, spy, stub, suite, test };
|
|
149
|
+
export { afterAll, afterEach, beforeAll, beforeEach, clearContext, createSuiteHooks, defaultSuite, describe, it, mock, spy, stub, suite, test };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{assert,chai,expect,mock,should,sinon,spy,stub}from"./chunk-EKOPYC4R.js";import{afterAll,afterEach,beforeAll,beforeEach,clearContext,createSuiteHooks,defaultSuite,describe,it,suite,test}from"./chunk-RMLIGPEN.js";import"./chunk-64PJVUUV.js";export{afterAll,afterEach,assert,beforeAll,beforeEach,chai,clearContext,createSuiteHooks,defaultSuite,describe,expect,it,mock,should,sinon,spy,stub,suite,test};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{KEYS}from"./chunk-2AYT2TPD.js";import{init_esm_shims}from"./chunk-64PJVUUV.js";init_esm_shims();import{JSDOM}from"jsdom";function setupJSDOM(global){let dom=new JSDOM("<!DOCTYPE html>",{pretendToBeVisual:!0,runScripts:"dangerously",url:"http://localhost:3000"}),keys=KEYS.concat(Object.getOwnPropertyNames(dom.window)).filter(k=>!k.startsWith("_")).filter(k=>!(k in global));for(let key of keys)global[key]=dom.window[key];return{dom,restore(){keys.forEach(key=>delete global[key])}}}export{setupJSDOM};
|
package/dist/node/cli.d.ts
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TransformResult, ViteDevServer } from 'vite';
|
|
2
|
+
import { R as ResolvedConfig } from '../types-15d74511';
|
|
2
3
|
import '@antfu/utils';
|
|
3
4
|
import 'jest-snapshot';
|
|
4
5
|
import 'jest-snapshot/build/State';
|
|
5
6
|
|
|
7
|
+
interface ModuleCache {
|
|
8
|
+
promise?: Promise<any>;
|
|
9
|
+
exports?: any;
|
|
10
|
+
transformResult?: TransformResult;
|
|
11
|
+
}
|
|
12
|
+
|
|
6
13
|
declare global {
|
|
7
14
|
namespace NodeJS {
|
|
8
15
|
interface Process {
|
|
9
16
|
__vitest__: {
|
|
10
|
-
|
|
17
|
+
config: ResolvedConfig;
|
|
18
|
+
server: ViteDevServer;
|
|
19
|
+
moduleCache: Map<string, ModuleCache>;
|
|
11
20
|
};
|
|
12
21
|
}
|
|
13
22
|
}
|
package/dist/node/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{distDir}from"../chunk-76F2Y2GL.js";import{__spreadProps,__spreadValues,init_esm_shims}from"../chunk-64PJVUUV.js";init_esm_shims();import{resolve as resolve3}from"path";import sade from"sade";import c from"picocolors";var version="0.0.42";init_esm_shims();init_esm_shims();import{builtinModules,createRequire}from"module";import{fileURLToPath,pathToFileURL}from"url";import{dirname,resolve}from"path";import vm from"vm";var isWindows=process.platform==="win32",stubRequests={"/@vite/client":{injectQuery:id=>id,createHotContext(){return{accept:()=>{},prune:()=>{}}},updateStyle(){}}};async function executeInViteNode({moduleCache,root,files,fetch,inline,external}){let result=[];for(let file of files)result.push(await cachedRequest(`/@fs/${slash(resolve(file))}`,[]));return result;async function directRequest(id,fsPath,callstack){callstack=[...callstack,id];let request=async dep=>{var _a;if(callstack.includes(dep)){let cacheKey=toFilePath(dep,root);if(!((_a=moduleCache.get(cacheKey))==null?void 0:_a.exports))throw new Error(`Circular dependency detected
|
|
2
2
|
Stack:
|
|
3
|
-
${[...
|
|
4
|
-
`)}`);return
|
|
5
|
-
Vitest is currently in closed beta exclusively for Sponsors`))),console.log(
|
|
3
|
+
${[...callstack,dep].reverse().map(p=>`- ${p}`).join(`
|
|
4
|
+
`)}`);return moduleCache.get(cacheKey).exports}return cachedRequest(dep,callstack)};if(id in stubRequests)return stubRequests[id];let result2=await fetch(id);if(!result2)throw new Error(`failed to load ${id}`);let url=pathToFileURL(fsPath).href,exports={};setCache(fsPath,{transformResult:result2,exports});let __filename2=fileURLToPath(url),context={require:createRequire(url),__filename:__filename2,__dirname:dirname(__filename2),__vite_ssr_import__:request,__vite_ssr_dynamic_import__:request,__vite_ssr_exports__:exports,__vite_ssr_exportAll__:obj=>exportAll(exports,obj),__vite_ssr_import_meta__:{url}};return await vm.runInThisContext(`async (${Object.keys(context).join(",")}) => { ${result2.code} }`,{filename:fsPath,lineOffset:0})(...Object.values(context)),exports}function setCache(id,mod){moduleCache.has(id)?Object.assign(moduleCache.get(id),mod):moduleCache.set(id,mod)}function shouldExternalize(id){for(let ex of inline)if(typeof ex=="string"){if(id.includes(`/node_modules/${ex}/`))return!1}else if(ex.test(id))return!1;for(let ex of external)if(typeof ex=="string"){if(id.includes(`/node_modules/${ex}/`))return!0}else if(ex.test(id))return!0;return id.includes("/node_modules/")}async function cachedRequest(rawId,callstack){var _a,_b;let id=normalizeId(rawId);if(builtinModules.includes(id))return import(id);let fsPath=toFilePath(id,root);if(shouldExternalize(fsPath))return fsPath.match(/^\w:\//)?import(`/${fsPath}`):import(fsPath);if((_a=moduleCache.get(fsPath))==null?void 0:_a.promise)return(_b=moduleCache.get(fsPath))==null?void 0:_b.promise;let promise=directRequest(id,fsPath,callstack);return setCache(fsPath,{promise}),await promise}function exportAll(exports,sourceModule){for(let key in sourceModule)if(key!=="default")try{Object.defineProperty(exports,key,{enumerable:!0,configurable:!0,get(){return sourceModule[key]}})}catch{}}}function normalizeId(id){return id&&id.startsWith("/@id/__x00__")&&(id=`\0${id.slice("/@id/__x00__".length)}`),id&&id.startsWith("/@id/")&&(id=id.slice("/@id/".length)),id.startsWith("__vite-browser-external:")&&(id=id.slice("__vite-browser-external:".length)),id}function toFilePath(id,root){id=slash(id);let absolute=id.startsWith("/@fs/")?id.slice(4):id.startsWith(dirname(root))?id:id.startsWith("/")?slash(resolve(root,id.slice(1))):id;return absolute.startsWith("//")&&(absolute=absolute.slice(1)),isWindows&&absolute.startsWith("/")?pathToFileURL(absolute.slice(1)).href:absolute}function slash(path){return path.replace(/\\/g,"/")}init_esm_shims();async function transformRequest(server,id){if(id.match(/\.(?:[cm]?[jt]sx?|json)$/))return await server.transformRequest(id,{ssr:!0});{let result=await server.transformRequest(id);return result?await server.ssrTransform(result.code,result.map,id):void 0}}async function run(server,config,moduleCache,files){let executeOptions={root:server.config.root,files,fetch:id=>transformRequest(server,id),inline:config.depsInline,external:config.depsExternal,moduleCache};try{await executeInViteNode(executeOptions)}catch(e){throw process.exitCode=1,e}finally{config.watch||await server.close()}}init_esm_shims();import{resolve as resolve2}from"path";import{findUp}from"find-up";import{createServer}from"vite";var configFiles=["vitest.config.ts","vitest.config.js","vitest.config.mjs","vite.config.ts","vite.config.js","vite.config.mjs"];async function initViteServer(options={}){var _a,_b,_c,_d;let{filters}=options,root=resolve2(options.root||process.cwd());process.chdir(root);let configPath=options.config?resolve2(root,options.config):await findUp(configFiles,{cwd:root}),resolved=__spreadValues({},options);resolved.config=configPath,resolved.root=root,resolved.filters=filters?Array.isArray(filters)?filters:[filters]:void 0;let server=await createServer({root,logLevel:"error",clearScreen:!1,configFile:resolved.config,optimizeDeps:{exclude:["vitest"]}});return await server.pluginContainer.buildStart({}),Object.assign(resolved,server.config.test),resolved.depsInline=["vitest/dist","vitest/src","@vue","@vueuse","diff","vue-demi","vue",...((_b=(_a=server.config.test)==null?void 0:_a.deps)==null?void 0:_b.inline)||[]],resolved.depsExternal=((_d=(_c=server.config.test)==null?void 0:_c.deps)==null?void 0:_d.external)||[],{server,config:resolved}}sade("vitest [filter]",!0).version(version).describe("A blazing fast unit test framework powered by Vite.").option("-r, --root","root path",process.cwd()).option("-c, --config","path to config file").option("-w, --watch","watch mode",!1).option("-u, --update","update snapshot",!1).option("--global","inject apis globally",!1).option("--dom","mock browser api using jsdom or happy-dom","").action(async(filters,argv)=>{process.env.VITEST="true",console.log(c.yellow(c.bold(`
|
|
5
|
+
Vitest is currently in closed beta exclusively for Sponsors`))),console.log(c.magenta(`Become a Sponsor of ${c.underline("https://github.com/sponsors/patak-js")} or ${c.underline("https://github.com/sponsors/antfu")}
|
|
6
6
|
to access the source code and issues tracker \u{1F496}
|
|
7
|
-
`));let
|
|
7
|
+
`));let{config,server}=await initViteServer(__spreadProps(__spreadValues({},argv),{filters})),moduleCache=new Map;process.__vitest__={server,config,moduleCache},await run(server,config,moduleCache,[resolve3(distDir,"./node/entry.js")])}).parse(process.argv);
|
package/dist/node/entry.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import{a as F,b as I,c as K,e as q,n as z}from"../chunk-4OVO6RD6.js";import{a as A,c as Se,e as ye,f as c}from"../chunk-XPSQDVUG.js";var Y=Se((it,V)=>{c();"use strict";V.exports=t=>{let e=/^\\\\\?\\/.test(t),n=/[^\u0000-\u0080]+/.test(t);return e||n?t:t.replace(/\\/g,"/")}});c();c();c();import ne from"jest-snapshot";c();import Me from"chai";import xe from"jest-snapshot";c();import we from"@jest/test-result";var{makeEmptyAggregatedTestResult:ke}=we,P=t=>{let e=ke().snapshot;return e.didUpdate=t.updateSnapshot==="all",e},G=t=>{let e={added:0,fileDeleted:!1,matched:0,unchecked:0,uncheckedKeys:[],unmatched:0,updated:0},n=t.getUncheckedCount(),o=t.getUncheckedKeys();n&&t.removeUncheckedKeys();let r=t.save();return e.fileDeleted=r.deleted,e.added=t.added,e.matched=t.matched,e.unmatched=t.unmatched,e.updated=t.updated,e.unchecked=r.deleted?0:n,e.uncheckedKeys=Array.from(o),e},J=(t,e,n)=>{e.added&&t.filesAdded++,e.fileDeleted&&t.filesRemoved++,e.unmatched&&t.filesUnmatched++,e.updated&&t.filesUpdated++,t.added+=e.added,t.matched+=e.matched,t.unchecked+=e.unchecked,e.uncheckedKeys&&e.uncheckedKeys.length>0&&t.uncheckedKeysByFile.push({filePath:n,keys:e.uncheckedKeys}),t.unmatched+=e.unmatched,t.updated+=e.updated,t.total+=e.added+e.matched+e.unmatched+e.updated};c();var Q=ye(Y());import C,{isAbsolute as $e}from"path";import{pluralize as m}from"jest-util";import g from"picocolors";var _=(t,e)=>{$e(e)&&(e=C.relative(t,e));let n=C.dirname(e),o=C.basename(e);return(0,Q.default)(g.dim(n+C.sep)+g.bold(o))},$=" \u203A ",X=" \u21B3 ",E=" \u2022 ",ve=t=>g.bold(g.red(t)),Z=t=>g.bold(g.yellow(t)),Ce=t=>g.bold(g.green(t)),j=g.dim,ee=t=>g.bold(g.green(t)),be=g.bold,Te=t=>g.bold(g.green(t)),B="re-run mocha with `--update` to update them",te=(t,e)=>{let n=[];if(n.push(be("Snapshot Summary")),e.added&&n.push(`${Ce(`${$+m("snapshot",e.added)} written `)}from ${m("test suite",e.filesAdded)}.`),e.unmatched&&n.push(`${ve(`${$}${m("snapshot",e.unmatched)} failed`)} from ${m("test suite",e.filesUnmatched)}. ${j(`Inspect your code changes or ${B} to update them.`)}`),e.updated&&n.push(`${Te(`${$+m("snapshot",e.updated)} updated `)}from ${m("test suite",e.filesUpdated)}.`),e.filesRemoved&&(e.didUpdate?n.push(`${ee(`${$}${m("snapshot file",e.filesRemoved)} removed `)}from ${m("test suite",e.filesRemoved)}.`):n.push(`${Z(`${$}${m("snapshot file",e.filesRemoved)} obsolete `)}from ${m("test suite",e.filesRemoved)}. ${j(`To remove ${e.filesRemoved===1?"it":"them all"}, ${B}.`)}`)),e.filesRemovedList&&e.filesRemovedList.length){let[o,...r]=e.filesRemovedList;n.push(` ${X} ${E}${_(t,o)}`),r.forEach(s=>{n.push(` ${E}${_(t,s)}`)})}return e.unchecked&&(e.didUpdate?n.push(`${ee(`${$}${m("snapshot",e.unchecked)} removed `)}from ${m("test suite",e.uncheckedKeysByFile.length)}.`):n.push(`${Z(`${$}${m("snapshot",e.unchecked)} obsolete `)}from ${m("test suite",e.uncheckedKeysByFile.length)}. ${j(`To remove ${e.unchecked===1?"it":"them all"}, ${B}.`)}`),e.uncheckedKeysByFile.forEach(o=>{n.push(` ${X}${_(t,o.filePath)}`),o.keys.forEach(r=>{n.push(` ${E}${r}`)})})),n};var{expect:Re}=Me,{SnapshotState:Oe}=xe,D=class{snapshotState=null;snapshotSummary;snapshotOptions;context=null;testFile="";snapshotResolver;rootDir;constructor({rootDir:e,update:n,snapshotResolver:o=null}){this.rootDir=e,this.snapshotResolver=o;let r=process.env,s=!!r.CI,i=n||r.UPDATE_SNAPSHOT;this.snapshotOptions={updateSnapshot:s&&!i?"none":i?"all":"new"},this.snapshotSummary=P(this.snapshotOptions)}onFileChanged(){!this.context||(this.snapshotState!==null&&this.saveSnap(),this.testFile=this.context.file,this.snapshotState=new Oe(this.snapshotResolver.resolveSnapshotPath(this.testFile),this.snapshotOptions))}setTask(e){var n;this.setContext({file:((n=e.file)==null?void 0:n.filepath)||e.name,title:e.name,fullTitle:[e.suite.name,e.name].filter(Boolean).join(" > ")})}setContext(e){!e.title||!e.file||(this.context=e,this.testFile!==e.file&&this.onFileChanged())}assert(e,n){if(!this.snapshotState||!this.context)return;let{actual:o,expected:r,key:s,pass:i}=this.snapshotState.match({testName:this.context.fullTitle||this.context.title||this.context.file,received:e,isInline:!1});i||Re(o.trim()).equals(r?r.trim():"",n||`Snapshot name: \`${s}\``)}clear(){this.snapshotSummary=P(this.snapshotOptions)}saveSnap(){if(!this.testFile||!this.snapshotState)return;let e=G(this.snapshotState);J(this.snapshotSummary,e,this.testFile),this.testFile="",this.snapshotState=null}report(){let e=te(this.rootDir,this.snapshotSummary);if(e.length>1)return e}};var{addSerializer:Ae}=ne,b;function T(){return b}async function oe(t){let{root:e}=t;return b=new D({rootDir:e,update:t.update}),b.snapshotResolver=await ne.buildSnapshotResolver({transform:[],rootDir:e}),function(n,o){for(let r of["matchSnapshot","toMatchSnapshot"])o.addMethod(n.Assertion.prototype,r,function(s){let i=o.flag(this,"object");b.assert(i,s)});n.expect.addSnapshotSerializer=Ae}}c();import{slash as Fe}from"@antfu/utils";c();async function M(t){let e={};for(let r of t){let s={filepath:r,suites:[],collected:!1};z();try{await import(r);let i=[q,...F.suites];for(let a of i)F.currentSuite=a,s.suites.push(await a.collect(s));s.collected=!0}catch(i){s.error=i,s.collected=!1,process.exitCode=1}e[r]=s}let o=Object.values(e).reduce((r,s)=>r.concat(s.suites),[]);return L(o),o.forEach(r=>{r.mode==="skip"?r.tasks.forEach(s=>s.mode==="run"&&(s.mode="skip")):L(r.tasks),r.tasks.forEach(s=>s.mode==="skip"&&(s.state="skip"))}),e}async function se(t){var w;let{reporter:e,snapshotManager:n,filesMap:o}=t;await((w=e.onWatcherStart)==null?void 0:w.call(e,t));let r,s=new Set,i=new Set,{server:a,moduleCache:d}=process.__vite_node__;a.watcher.on("change",async h=>{h=Fe(h),ie(h,t,s,i),i.forEach(S=>d.delete(S)),i.clear(),s.size!==0&&(clearTimeout(r),r=setTimeout(async()=>{var v,l,H;if(s.size===0)return;n.clear();let S=Array.from(s);s.clear(),await((v=e.onWatcherRerun)==null?void 0:v.call(e,S,h,t)),S.forEach(ge=>d.delete(ge));let k=await M(S);Object.assign(o,k),await N(k,t),n.saveSnap(),await((l=e.onFinished)==null?void 0:l.call(e,t,Object.values(k))),await((H=e.onWatcherStart)==null?void 0:H.call(e,t))},100))}),await new Promise(()=>{})}function ie(t,e,n=new Set,o=new Set){if(o.has(t)||n.has(t))return n;if(o.add(t),t in e.filesMap)return n.add(t),n;let r=process.__vite_node__.server.moduleGraph.getModuleById(t);return r&&r.importers.forEach(s=>{s.id&&ie(s.id,e,n,o)}),n}c();c();import x from"chai";import Pe from"sinon-chai";import _e from"chai-subset";c();function re(){return(t,e)=>{let n=t.Assertion.prototype;e.addMethod(n,"toEqual",function(o){return this.eql(o)}),e.addMethod(n,"toStrictEqual",function(o){return this.equal(o)}),e.addMethod(n,"toBe",function(o){return this.equal(o)}),e.addMethod(n,"toMatchObject",function(o){return this.containSubset(o)}),e.addMethod(n,"toMatch",function(o){return typeof o=="string"?this.include(o):this.match(o)}),e.addMethod(n,"toContain",function(o){return this.contain(o)}),e.addMethod(n,"toBeTruthy",function(){let o=e.flag(this,"object");this.assert(Boolean(o),"expected #{this} to be truthy","expected #{this} to not be truthy",o)}),e.addMethod(n,"toBeFalsy",function(){let o=e.flag(this,"object");this.assert(!o,"expected #{this} to be falsy","expected #{this} to not be falsy",o)}),e.addMethod(n,"toBeNaN",function(){return this.be.NaN}),e.addMethod(n,"toBeUndefined",function(){return this.be.undefined}),e.addMethod(n,"toBeNull",function(){return this.be.null}),e.addMethod(n,"toBeDefined",function(){return this.not.be.undefined}),e.addMethod(n,"toBeInstanceOf",function(o){return this.instanceOf(o)}),e.addMethod(n,"toHaveBeenCalledTimes",function(o){return this.callCount(o)}),e.addMethod(n,"toHaveBeenCalledOnce",function(){return this.callCount(1)}),e.addMethod(n,"toHaveBeenCalled",function(){return this.called}),e.addMethod(n,"toHaveBeenCalled",function(){return this.called}),e.addMethod(n,"toHaveBeenCalledWith",function(...o){return this.calledWith(...o)})}}async function ae(t){x.use(Pe),x.use(re()),x.use(_e),x.use(await oe(t))}c();import{performance as ue}from"perf_hooks";import{relative as Je}from"path";import u from"picocolors";import U from"listr";c();import{promises as Ee,existsSync as je}from"fs";import y from"picocolors";import{createPatch as Ge}from"diff";import{notNullish as Be}from"@antfu/utils";import{SourceMapConsumer as De}from"source-map";async function R(t){var i;if(!(t instanceof Error)){console.error(t);return}let{moduleCache:e}=process.__vite_node__,n=t,o=!1,s=Ie(n.stack||"").find(a=>e.has(a.file));if(s){let a=(i=e.get(s.file))==null?void 0:i.transformResult,d=await Le(a==null?void 0:a.map,s);if(d&&je(s.file)){let w=await Ee.readFile(s.file,"utf-8");console.error(`${y.red(`${y.bold(n.name)}: ${n.message}`)}`),console.log(y.gray(`${s.file}:${d.line}:${d.column}`)),console.log(y.yellow(Ue(w,d))),o=!0}}o||console.error(n),n.showDiff&&console.error(y.gray(Ke(ce(n.actual),ce(n.expected))))}function Le(t,{line:e,column:n}){return new Promise(o=>{if(!t)return o(null);De.with(t,null,r=>{let s=r.originalPositionFor({line:e,column:n});s.line!=null&&s.column!=null?o(s):o(null)})})}var le=/\r?\n/;function Ne(t,e){if(typeof e=="number")return e;let n=t.split(le),{line:o,column:r}=e,s=0;for(let i=0;i<o-1;i++)s+=n[i].length+1;return s+r}function Ue(t,e=0,n,o=2){e=Ne(t,e),n=n||e;let r=t.split(le),s=0,i=[];for(let a=0;a<r.length;a++)if(s+=r[a].length+1,s>=e){for(let d=a-o;d<=a+o||n>s;d++){if(d<0||d>=r.length)continue;let w=d+1;i.push(`${y.gray(`${w}${" ".repeat(Math.max(3-String(w).length,0))}|`)} ${r[d]}`);let h=r[d].length;if(d===a){let S=e-(s-h)+1,k=Math.max(1,n>s?h-S:n-e);i.push(`${y.gray(" |")} ${" ".repeat(S)}${"^".repeat(k)}`)}else if(d>a){if(n>s){let S=Math.max(Math.min(n-s,h),1);i.push(`${y.gray(" |")} ${"^".repeat(S)}`)}s+=h+1}}break}return i.join(`
|
|
2
|
-
`)}function
|
|
3
|
-
`).map(
|
|
1
|
+
import{clearContext,context,createSuiteHooks,defaultSuite,getFn,getHooks,setHooks}from"../chunk-RMLIGPEN.js";import{defaultExcludes,defaultIncludes}from"../chunk-76F2Y2GL.js";import{__commonJS,__toModule,init_esm_shims}from"../chunk-64PJVUUV.js";var require_slash=__commonJS({"node_modules/.pnpm/slash@3.0.0/node_modules/slash/index.js"(exports,module){init_esm_shims();"use strict";module.exports=path2=>{let isExtendedLengthPath=/^\\\\\?\\/.test(path2),hasNonAscii=/[^\u0000-\u0080]+/.test(path2);return isExtendedLengthPath||hasNonAscii?path2:path2.replace(/\\/g,"/")}}});init_esm_shims();init_esm_shims();init_esm_shims();import Snap2 from"jest-snapshot";init_esm_shims();import chai from"chai";import Snap from"jest-snapshot";init_esm_shims();import Test from"@jest/test-result";var{makeEmptyAggregatedTestResult}=Test,makeEmptySnapshotSummary=options=>{let summary=makeEmptyAggregatedTestResult().snapshot;return summary.didUpdate=options.updateSnapshot==="all",summary},packSnapshotState=snapshotState=>{let snapshot={added:0,fileDeleted:!1,matched:0,unchecked:0,uncheckedKeys:[],unmatched:0,updated:0},uncheckedCount=snapshotState.getUncheckedCount(),uncheckedKeys=snapshotState.getUncheckedKeys();uncheckedCount&&snapshotState.removeUncheckedKeys();let status=snapshotState.save();return snapshot.fileDeleted=status.deleted,snapshot.added=snapshotState.added,snapshot.matched=snapshotState.matched,snapshot.unmatched=snapshotState.unmatched,snapshot.updated=snapshotState.updated,snapshot.unchecked=status.deleted?0:uncheckedCount,snapshot.uncheckedKeys=Array.from(uncheckedKeys),snapshot},addSnapshotResult=(snapshotSummary,snapshotResult,testFilePath)=>{snapshotResult.added&&snapshotSummary.filesAdded++,snapshotResult.fileDeleted&&snapshotSummary.filesRemoved++,snapshotResult.unmatched&&snapshotSummary.filesUnmatched++,snapshotResult.updated&&snapshotSummary.filesUpdated++,snapshotSummary.added+=snapshotResult.added,snapshotSummary.matched+=snapshotResult.matched,snapshotSummary.unchecked+=snapshotResult.unchecked,snapshotResult.uncheckedKeys&&snapshotResult.uncheckedKeys.length>0&&snapshotSummary.uncheckedKeysByFile.push({filePath:testFilePath,keys:snapshotResult.uncheckedKeys}),snapshotSummary.unmatched+=snapshotResult.unmatched,snapshotSummary.updated+=snapshotResult.updated,snapshotSummary.total+=snapshotResult.added+snapshotResult.matched+snapshotResult.unmatched+snapshotResult.updated};init_esm_shims();var import_slash=__toModule(require_slash());import path,{isAbsolute}from"path";import{pluralize}from"jest-util";import c from"picocolors";var formatTestPath=(rootDir,testPath)=>{isAbsolute(testPath)&&(testPath=path.relative(rootDir,testPath));let dirname=path.dirname(testPath),basename2=path.basename(testPath);return(0,import_slash.default)(c.dim(dirname+path.sep)+c.bold(basename2))},ARROW=" \u203A ",DOWN_ARROW=" \u21B3 ",DOT=" \u2022 ",FAIL_COLOR=v=>c.bold(c.red(v)),OBSOLETE_COLOR=v=>c.bold(c.yellow(v)),SNAPSHOT_ADDED=v=>c.bold(c.green(v)),SNAPSHOT_NOTE=c.dim,SNAPSHOT_REMOVED=v=>c.bold(c.green(v)),SNAPSHOT_SUMMARY=c.bold,SNAPSHOT_UPDATED=v=>c.bold(c.green(v)),updateCommand="re-run mocha with `--update` to update them",getSnapshotSummaryOutput=(rootDir,snapshots)=>{let summary=[];if(summary.push(SNAPSHOT_SUMMARY("Snapshot Summary")),snapshots.added&&summary.push(`${SNAPSHOT_ADDED(`${ARROW+pluralize("snapshot",snapshots.added)} written `)}from ${pluralize("test suite",snapshots.filesAdded)}.`),snapshots.unmatched&&summary.push(`${FAIL_COLOR(`${ARROW}${pluralize("snapshot",snapshots.unmatched)} failed`)} from ${pluralize("test suite",snapshots.filesUnmatched)}. ${SNAPSHOT_NOTE(`Inspect your code changes or ${updateCommand} to update them.`)}`),snapshots.updated&&summary.push(`${SNAPSHOT_UPDATED(`${ARROW+pluralize("snapshot",snapshots.updated)} updated `)}from ${pluralize("test suite",snapshots.filesUpdated)}.`),snapshots.filesRemoved&&(snapshots.didUpdate?summary.push(`${SNAPSHOT_REMOVED(`${ARROW}${pluralize("snapshot file",snapshots.filesRemoved)} removed `)}from ${pluralize("test suite",snapshots.filesRemoved)}.`):summary.push(`${OBSOLETE_COLOR(`${ARROW}${pluralize("snapshot file",snapshots.filesRemoved)} obsolete `)}from ${pluralize("test suite",snapshots.filesRemoved)}. ${SNAPSHOT_NOTE(`To remove ${snapshots.filesRemoved===1?"it":"them all"}, ${updateCommand}.`)}`)),snapshots.filesRemovedList&&snapshots.filesRemovedList.length){let[head,...tail]=snapshots.filesRemovedList;summary.push(` ${DOWN_ARROW} ${DOT}${formatTestPath(rootDir,head)}`),tail.forEach(key=>{summary.push(` ${DOT}${formatTestPath(rootDir,key)}`)})}return snapshots.unchecked&&(snapshots.didUpdate?summary.push(`${SNAPSHOT_REMOVED(`${ARROW}${pluralize("snapshot",snapshots.unchecked)} removed `)}from ${pluralize("test suite",snapshots.uncheckedKeysByFile.length)}.`):summary.push(`${OBSOLETE_COLOR(`${ARROW}${pluralize("snapshot",snapshots.unchecked)} obsolete `)}from ${pluralize("test suite",snapshots.uncheckedKeysByFile.length)}. ${SNAPSHOT_NOTE(`To remove ${snapshots.unchecked===1?"it":"them all"}, ${updateCommand}.`)}`),snapshots.uncheckedKeysByFile.forEach(uncheckedFile=>{summary.push(` ${DOWN_ARROW}${formatTestPath(rootDir,uncheckedFile.filePath)}`),uncheckedFile.keys.forEach(key=>{summary.push(` ${DOT}${key}`)})})),summary};var{expect}=chai,{SnapshotState}=Snap,SnapshotManager=class{snapshotState=null;snapshotSummary;snapshotOptions;ctx=null;testFile="";snapshotResolver;rootDir;constructor({rootDir,update,snapshotResolver=null}){this.rootDir=rootDir,this.snapshotResolver=snapshotResolver;let env=process.env,CI=!!env.CI,UPDATE_SNAPSHOT=update||env.UPDATE_SNAPSHOT;this.snapshotOptions={updateSnapshot:CI&&!UPDATE_SNAPSHOT?"none":UPDATE_SNAPSHOT?"all":"new"},this.snapshotSummary=makeEmptySnapshotSummary(this.snapshotOptions)}onFileChanged(){!this.ctx||(this.snapshotState!==null&&this.saveSnap(),this.testFile=this.ctx.file,this.snapshotState=new SnapshotState(this.snapshotResolver.resolveSnapshotPath(this.testFile),this.snapshotOptions))}setTask(task){var _a;this.setContext({file:((_a=task.file)==null?void 0:_a.filepath)||task.name,title:task.name,fullTitle:[task.suite.name,task.name].filter(Boolean).join(" > ")})}setContext(context2){!context2.title||!context2.file||(this.ctx=context2,this.testFile!==context2.file&&this.onFileChanged())}assert(received,message){if(!this.snapshotState||!this.ctx)return;let{actual,expected,key,pass}=this.snapshotState.match({testName:this.ctx.fullTitle||this.ctx.title||this.ctx.file,received,isInline:!1});pass||expect(actual.trim()).equals(expected?expected.trim():"",message||`Snapshot name: \`${key}\``)}clear(){this.snapshotSummary=makeEmptySnapshotSummary(this.snapshotOptions)}saveSnap(){if(!this.testFile||!this.snapshotState)return;let packedSnapshotState=packSnapshotState(this.snapshotState);addSnapshotResult(this.snapshotSummary,packedSnapshotState,this.testFile),this.testFile="",this.snapshotState=null}report(){let outputs=getSnapshotSummaryOutput(this.rootDir,this.snapshotSummary);if(outputs.length>1)return outputs}};var{addSerializer}=Snap2,_manager;function getSnapshotManager(){return _manager}async function SnapshotPlugin(options){let{root:rootDir}=options;return _manager=new SnapshotManager({rootDir,update:options.update}),_manager.snapshotResolver=await Snap2.buildSnapshotResolver({transform:[],rootDir}),function(chai3,utils){for(let key of["matchSnapshot","toMatchSnapshot"])utils.addMethod(chai3.Assertion.prototype,key,function(message){let expected=utils.flag(this,"object");_manager.assert(expected,message)});chai3.expect.addSnapshotSerializer=addSerializer}}init_esm_shims();import{slash as slash2}from"@antfu/utils";init_esm_shims();import{basename}from"path";init_esm_shims();import{toArray}from"@antfu/utils";function partitionSuiteChildren(suite){let childrenGroup=[],childrenGroups=[];for(let c4 of suite.children)childrenGroup.length===0||c4.computeMode===childrenGroup[0].computeMode?childrenGroup.push(c4):(childrenGroups.push(childrenGroup),childrenGroup=[c4]);return childrenGroup.length>0&&childrenGroups.push(childrenGroup),childrenGroups}function interpretOnlyMode(items){items.some(i=>i.mode==="only")&&items.forEach(i=>{i.mode==="run"?i.mode="skip":i.mode==="only"&&(i.mode="run")})}function getTasks(suite){return toArray(suite).flatMap(s=>s.children.flatMap(c4=>c4.type==="task"?[c4]:getTasks(c4)))}function getSuites(suite){return toArray(suite).flatMap(s=>s.type==="suite"?[s,...getSuites(s.children)]:[])}function hasTasks(suite){return toArray(suite).some(s=>s.children.some(c4=>c4.type==="task"||hasTasks(c4)))}function hasFailed(suite){return toArray(suite).some(s=>s.children.some(c4=>{var _a;return((_a=c4.result)==null?void 0:_a.state)==="fail"}))}async function collectTests(paths){let files={};for(let filepath of paths){let file={name:basename(filepath),type:"suite",mode:"run",computeMode:"serial",filepath,children:[]};setHooks(file,createSuiteHooks()),clearContext();try{await import(filepath);for(let c4 of[defaultSuite,...context.children])if(c4.type==="task")file.children.push(c4);else{let suite=await c4.collect(file);(suite.name||suite.children.length)&&file.children.push(suite)}}catch(e){file.result={start:performance.now(),state:"fail",error:e},process.exitCode=1}files[filepath]=file}let allChildren=Object.values(files).reduce((children,file)=>children.concat(file.children),[]);return interpretOnlyMode(allChildren),allChildren.forEach(i=>{i.type==="suite"&&(i.mode==="skip"?i.children.forEach(c4=>c4.mode==="run"&&(c4.mode="skip")):interpretOnlyMode(i.children))}),files}async function startWatcher(ctx){var _a;let{reporter,snapshotManager,filesMap}=ctx;await((_a=reporter.onWatcherStart)==null?void 0:_a.call(reporter,ctx));let timer2,changedTests=new Set,seen=new Set,{server,moduleCache}=process.__vitest__;server.watcher.on("change",async id=>{id=slash2(id),getAffectedTests(id,ctx,changedTests,seen),seen.forEach(i=>moduleCache.delete(i)),seen.clear(),changedTests.size!==0&&(clearTimeout(timer2),timer2=setTimeout(async()=>{var _a2,_b,_c,_d;if(changedTests.size===0)return;snapshotManager.clear();let paths=Array.from(changedTests);changedTests.clear(),await((_a2=reporter.onWatcherRerun)==null?void 0:_a2.call(reporter,paths,id,ctx)),paths.forEach(i=>moduleCache.delete(i));let newFilesMap=await collectTests(paths);Object.assign(filesMap,newFilesMap);let files=Object.values(filesMap);(_b=reporter.onCollected)==null||_b.call(reporter,files,ctx),await runSuites(files,ctx),snapshotManager.saveSnap(),await((_c=reporter.onFinished)==null?void 0:_c.call(reporter,ctx,Object.values(newFilesMap))),await((_d=reporter.onWatcherStart)==null?void 0:_d.call(reporter,ctx))},100))}),await new Promise(()=>{})}function getAffectedTests(id,ctx,set=new Set,seen=new Set){if(seen.has(id)||set.has(id))return set;if(seen.add(id),id in ctx.filesMap)return set.add(id),set;let mod=process.__vitest__.server.moduleGraph.getModuleById(id);return mod&&mod.importers.forEach(i=>{i.id&&getAffectedTests(i.id,ctx,set,seen)}),set}init_esm_shims();import fg from"fast-glob";async function globTestFiles(config){var _a;let testFilepaths=await fg(config.includes||defaultIncludes,{absolute:!0,cwd:config.root,ignore:config.excludes||defaultExcludes});return((_a=config.filters)==null?void 0:_a.length)&&(testFilepaths=testFilepaths.filter(i=>config.filters.some(f=>i.includes(f)))),testFilepaths}init_esm_shims();init_esm_shims();import{performance as performance2}from"perf_hooks";import{relative}from"path";import c3 from"picocolors";import Listr from"listr";init_esm_shims();import{promises as fs,existsSync}from"fs";import c2 from"picocolors";import{createPatch}from"diff";import{notNullish}from"@antfu/utils";import{SourceMapConsumer}from"source-map";async function printError(error){var _a;if(!(error instanceof Error)){console.error(error);return}let{moduleCache}=process.__vitest__,e=error,codeFramePrinted=!1,nearest=parseStack(e.stack||"").find(stack=>moduleCache.has(stack.file));if(nearest){let transformResult=(_a=moduleCache.get(nearest.file))==null?void 0:_a.transformResult,pos=await getOriginalPos(transformResult==null?void 0:transformResult.map,nearest);if(pos&&existsSync(nearest.file)){let sourceCode=await fs.readFile(nearest.file,"utf-8");console.error(`${c2.red(`${c2.bold(e.name)}: ${e.message}`)}`),console.log(c2.gray(`${nearest.file}:${pos.line}:${pos.column}`)),console.log(c2.yellow(generateCodeFrame(sourceCode,pos))),codeFramePrinted=!0}}codeFramePrinted||console.error(e),e.showDiff&&console.error(c2.gray(generateDiff(stringify(e.actual),stringify(e.expected))))}function getOriginalPos(map,{line,column}){return new Promise(resolve=>{if(!map)return resolve(null);SourceMapConsumer.with(map,null,consumer=>{let pos=consumer.originalPositionFor({line,column});pos.line!=null&&pos.column!=null?resolve(pos):resolve(null)})})}var splitRE=/\r?\n/;function posToNumber(source,pos){if(typeof pos=="number")return pos;let lines=source.split(splitRE),{line,column}=pos,start=0;for(let i=0;i<line-1;i++)start+=lines[i].length+1;return start+column}function generateCodeFrame(source,start=0,end,range=2){start=posToNumber(source,start),end=end||start;let lines=source.split(splitRE),count=0,res=[];for(let i=0;i<lines.length;i++)if(count+=lines[i].length+1,count>=start){for(let j=i-range;j<=i+range||end>count;j++){if(j<0||j>=lines.length)continue;let line=j+1;res.push(`${c2.gray(`${line}${" ".repeat(Math.max(3-String(line).length,0))}|`)} ${lines[j]}`);let lineLength=lines[j].length;if(lineLength>200)return"";if(j===i){let pad=start-(count-lineLength)+1,length=Math.max(1,end>count?lineLength-pad:end-start);res.push(`${c2.gray(" |")} ${" ".repeat(pad)}${"^".repeat(length)}`)}else if(j>i){if(end>count){let length=Math.max(Math.min(end-count,lineLength),1);res.push(`${c2.gray(" |")} ${"^".repeat(length)}`)}count+=lineLength+1}}break}return res.join(`
|
|
2
|
+
`)}function stringify(obj){return String(obj)}var stackFnCallRE=/at (.*) \((.+):(\d+):(\d+)\)$/,stackBarePathRE=/at ()(.+):(\d+):(\d+)$/;function parseStack(stack){return stack.split(`
|
|
3
|
+
`).map(raw=>{let line=raw.trim(),match=line.match(stackFnCallRE)||line.match(stackBarePathRE);if(!match)return null;let file=match[2];return file.startsWith("file://")&&(file=file.slice(7)),{method:match[1],file:match[2],line:parseInt(match[3]),column:parseInt(match[4])}}).filter(notNullish)}function generateDiff(actual,expected){let diffSize=2048;return actual.length>diffSize&&(actual=`${actual.substring(0,diffSize)} ... Lines skipped`),expected.length>diffSize&&(expected=`${expected.substring(0,diffSize)} ... Lines skipped`),unifiedDiff(actual,expected)}function unifiedDiff(actual,expected){let indent=" ";function cleanUp(line){return line[0]==="+"?indent+c2.green(`${line[0]} ${line.slice(1)}`):line[0]==="-"?indent+c2.red(`${line[0]} ${line.slice(1)}`):line.match(/@@/)?"--":line.match(/\\ No newline/)?null:indent+line}let lines=createPatch("string",actual,expected).split(`
|
|
4
4
|
`).splice(5);return`
|
|
5
|
-
${
|
|
6
|
-
${
|
|
5
|
+
${indent}${c2.red("- actual")}
|
|
6
|
+
${indent}${c2.green("+ expected")}
|
|
7
7
|
|
|
8
|
-
${
|
|
9
|
-
`)}`}function
|
|
10
|
-
`))}onCollected(
|
|
11
|
-
`));let
|
|
12
|
-
Failed to
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Failed
|
|
16
|
-
${
|
|
17
|
-
${
|
|
18
|
-
|
|
19
|
-
`))}onSnapshotUpdate(){}};async function de(t){return await ae(t),t.global&&(await import("../global-CKRMAXWF.js")).registerApiGlobally(),t.dom==="happy-dom"?(await import("../happy-dom-RNJZR3YC.js")).setupHappyDOM(globalThis):t.dom&&(await import("../jsdom-6QAZGE6T.js")).setupJSDOM(globalThis),{filesMap:{},get files(){return Object.values(this.filesMap)},get suites(){return Object.values(this.filesMap).reduce((n,o)=>n.concat(o.suites),[])},get tasks(){return this.suites.reduce((n,o)=>n.concat(o.tasks),[])},config:t,reporter:t.reporter||new W,snapshotManager:T()}}c();import Ye from"fast-glob";async function he(t){var n;let e=await Ye(t.includes||I,{absolute:!0,cwd:t.root,ignore:t.excludes||K});return((n=t.filters)==null?void 0:n.length)&&(e=e.filter(o=>t.filters.some(r=>o.includes(r)))),e}async function O(t,e,n){await Promise.all(t.hooks[e].map(o=>o(...n)))}async function fe(t,e){var o,r,s;let{reporter:n}=e;if((o=T())==null||o.setTask(t),await((r=n.onTaskBegin)==null?void 0:r.call(n,t,e)),t.mode==="run"){try{await O(t.suite,"beforeEach",[t,t.suite]),await t.fn(),t.state="pass"}catch(i){t.state="fail",t.error=i,process.exitCode=1}try{await O(t.suite,"afterEach",[t,t.suite])}catch(i){t.state="fail",t.error=i,process.exitCode=1}}await((s=n.onTaskEnd)==null?void 0:s.call(n,t,e))}function L(t){t.some(e=>e.mode==="only")&&t.forEach(e=>{e.mode==="run"?e.mode="skip":e.mode==="only"&&(e.mode="run")})}async function pe(t,e){var o,r;let{reporter:n}=e;if(await((o=n.onSuiteBegin)==null?void 0:o.call(n,t,e)),t.mode==="skip")t.status="skip";else if(t.mode==="todo")t.status="todo";else try{await O(t,"beforeAll",[t]);for(let s of Qe(t.tasks))if(s[0].concurrent)await Promise.all(s.map(i=>fe(i,e)));else for(let i of s)await fe(i,e);await O(t,"afterAll",[t])}catch(s){t.error=s,t.status="fail",process.exitCode=1}await((r=n.onSuiteEnd)==null?void 0:r.call(n,t,e))}function Qe(t){let e=[],n=[];for(let o of t)e.length===0||!!o.concurrent==!!e[0].concurrent?e.push(o):(n.push(e),e=[o]);return e.length>0&&n.push(e),n}async function Xe(t,e){var r,s;let{reporter:n}=e;if(t.suites.filter(i=>i.mode==="run").length!==0){if(await((r=n.onFileBegin)==null?void 0:r.call(n,t,e)),e.config.parallel)await Promise.all(t.suites.map(i=>pe(i,e)));else for(let i of t.suites)await pe(i,e);await((s=n.onFileEnd)==null?void 0:s.call(n,t,e))}}async function N(t,e){var o;let{reporter:n}=e;await((o=n.onCollected)==null?void 0:o.call(n,Object.values(t),e));for(let r of Object.values(t))await Xe(r,e)}async function me(t){var a,d;t.watch&&(process.__vite_node__.watch=!0);let e=await he(t);if(!e.length){console.error("No test files found"),process.exitCode=1;return}let n=await de(t),{filesMap:o,snapshotManager:r,reporter:s}=n;await((a=s.onStart)==null?void 0:a.call(s,t));let i=await M(e);Object.assign(o,i),await N(o,n),r.saveSnap(),await((d=s.onFinished)==null?void 0:d.call(s,n)),t.watch&&await se(n)}if(!process.__vite_node__||!process.__vitest__)throw new Error("Vitest can only run in vite-node environment, please use the CLI to start the process");var Ze=process.__vite_node__.server.config.test||{},et=process.__vitest__.options||{},tt=A(A({},et),Ze);await me(tt);var nt=setTimeout(()=>{process.exit()},500);nt.unref();
|
|
8
|
+
${lines.map(cleanUp).filter(notBlank).join(`
|
|
9
|
+
`)}`}function notBlank(line){return typeof line!="undefined"&&line!==null}var DefaultReporter=class{start=0;end=0;listr=null;listrPromise=null;taskMap=new Map;cwd=process.cwd();relative(path2){return relative(this.cwd,path2)}onStart(config){this.cwd=config.root,console.log(c3.green(`Running tests under ${c3.gray(this.cwd)}
|
|
10
|
+
`))}onCollected(files){this.start=performance2.now(),this.taskMap=new Map,files.reduce((acc,file)=>acc.concat(getTasks(file)),[]).forEach(t=>{let obj={};obj.promise=new Promise((resolve,reject)=>{obj.resolve=resolve,obj.reject=reject}),this.taskMap.set(t,obj)});let listrOptions={exitOnError:!1},createListrTask=task=>({title:task.name,skip:()=>task.mode==="skip"||task.mode==="todo",task:async()=>{var _a;return await((_a=this.taskMap.get(task))==null?void 0:_a.promise)}});function createListrSuiteChildren(suite){return suite.children.map(c4=>c4.type==="task"?createListrTask(c4):createListrSuiteTask(c4))}function createSuiteListr(suite){var _a;if((_a=suite.result)==null?void 0:_a.error)throw suite.result.error;if(!hasTasks(suite))throw new Error("No tasks found");return new Listr(createListrSuiteChildren(suite),listrOptions)}function createListrSuiteTask(suite){return{title:suite.name,skip:()=>suite.mode!=="run",task:()=>createSuiteListr(suite)}}this.listr=new Listr(files.map(file=>({title:this.relative(file.filepath),task:()=>{var _a,_b;if((_a=file.result)==null?void 0:_a.error)throw(_b=file.result)==null?void 0:_b.error;return createSuiteListr(file)}})),listrOptions),this.listrPromise=this.listr.run().catch(()=>{})}onTaskEnd(task){var _a,_b,_c,_d;((_a=task.result)==null?void 0:_a.state)==="fail"?(_c=this.taskMap.get(task))==null||_c.reject((_b=task.result)==null?void 0:_b.error):(_d=this.taskMap.get(task))==null||_d.resolve()}async onFinished(ctx,files=ctx.files){var _a,_b,_c;await this.listrPromise,this.end=performance2.now(),console.log();let snapshot=ctx.snapshotManager.report();snapshot&&console.log(snapshot.join(`
|
|
11
|
+
`));let suites=getSuites(files),tasks=getTasks(files),failedSuites=suites.filter(i=>{var _a2;return(_a2=i.result)==null?void 0:_a2.error}),runnable=tasks.filter(i=>{var _a2,_b2;return((_a2=i.result)==null?void 0:_a2.state)==="pass"||((_b2=i.result)==null?void 0:_b2.state)==="fail"}),passed=tasks.filter(i=>{var _a2;return((_a2=i.result)==null?void 0:_a2.state)==="pass"}),failed=tasks.filter(i=>{var _a2;return((_a2=i.result)==null?void 0:_a2.state)==="fail"}),skipped=tasks.filter(i=>i.mode==="skip"),todo=tasks.filter(i=>i.mode==="todo");if(failedSuites.length){console.error(c3.bold(c3.red(`
|
|
12
|
+
Failed to run ${failedSuites.length} suites:`)));for(let suite of failedSuites)console.error(c3.red(`
|
|
13
|
+
- ${(_a=suite.file)==null?void 0:_a.filepath} > ${suite.name}`)),await printError((_b=suite.result)==null?void 0:_b.error),console.log()}if(failed.length){console.error(c3.bold(c3.red(`
|
|
14
|
+
Failed Tests (${failed.length})`)));for(let task of failed)console.error(`${c3.red(`
|
|
15
|
+
${c3.inverse(" FAIL ")}`)} ${[task.suite.name,task.name].filter(Boolean).join(" > ")}`),await printError((_c=task.result)==null?void 0:_c.error),console.log()}console.log(c3.bold(c3.green(`Passed ${passed.length} / ${runnable.length}`))),failed.length&&console.log(c3.bold(c3.red(`Failed ${failed.length} / ${runnable.length}`))),skipped.length&&console.log(c3.yellow(`Skipped ${skipped.length}`)),todo.length&&console.log(c3.dim(`Todo ${todo.length}`)),console.log(`Time ${(this.end-this.start).toFixed(2)}ms`)}async onWatcherStart(ctx){await this.listrPromise;let failed=ctx.tasks.filter(i=>{var _a;return((_a=i.result)==null?void 0:_a.state)==="fail"});failed.length?console.log(`
|
|
16
|
+
${c3.bold(c3.inverse(c3.red(" FAIL ")))}${c3.red(` ${failed.length} tests failed. Watching for file changes...`)}`):console.log(`
|
|
17
|
+
${c3.bold(c3.inverse(c3.green(" PASS ")))}${c3.green(" Watching for file changes...")}`)}async onWatcherRerun(files,trigger){await this.listrPromise,console.clear(),console.log(c3.blue("Re-running tests...")+c3.dim(` [ ${this.relative(trigger)} ]
|
|
18
|
+
`))}};init_esm_shims();init_esm_shims();import chai2 from"chai";import SinonChai from"sinon-chai";import Subset from"chai-subset";init_esm_shims();function JestChaiExpect(){return(chai3,utils)=>{let proto=chai3.Assertion.prototype;utils.addMethod(proto,"toEqual",function(expected){return this.eql(expected)}),utils.addMethod(proto,"toStrictEqual",function(expected){return this.equal(expected)}),utils.addMethod(proto,"toBe",function(expected){return this.equal(expected)}),utils.addMethod(proto,"toMatchObject",function(expected){return this.containSubset(expected)}),utils.addMethod(proto,"toMatch",function(expected){return typeof expected=="string"?this.include(expected):this.match(expected)}),utils.addMethod(proto,"toContain",function(item){return this.contain(item)}),utils.addMethod(proto,"toBeTruthy",function(){let obj=utils.flag(this,"object");this.assert(Boolean(obj),"expected #{this} to be truthy","expected #{this} to not be truthy",obj)}),utils.addMethod(proto,"toBeFalsy",function(){let obj=utils.flag(this,"object");this.assert(!obj,"expected #{this} to be falsy","expected #{this} to not be falsy",obj)}),utils.addMethod(proto,"toBeNaN",function(){return this.be.NaN}),utils.addMethod(proto,"toBeUndefined",function(){return this.be.undefined}),utils.addMethod(proto,"toBeNull",function(){return this.be.null}),utils.addMethod(proto,"toBeDefined",function(){return this.not.be.undefined}),utils.addMethod(proto,"toBeInstanceOf",function(obj){return this.instanceOf(obj)}),utils.addMethod(proto,"toHaveBeenCalledTimes",function(number){return this.callCount(number)}),utils.addMethod(proto,"toHaveBeenCalledOnce",function(){return this.callCount(1)}),utils.addMethod(proto,"toHaveBeenCalled",function(){return this.called}),utils.addMethod(proto,"toHaveBeenCalled",function(){return this.called}),utils.addMethod(proto,"toHaveBeenCalledWith",function(...args){return this.calledWith(...args)})}}async function setupChai(config){chai2.use(SinonChai),chai2.use(JestChaiExpect()),chai2.use(Subset),chai2.use(await SnapshotPlugin(config))}async function setupEnv(config){await setupChai(config),config.global&&(await import("../global-C6CIEELF.js")).registerApiGlobally(),config.dom==="happy-dom"?(await import("../happy-dom-EZVJENUI.js")).setupHappyDOM(globalThis):config.dom&&(await import("../jsdom-VHB26LUJ.js")).setupJSDOM(globalThis)}async function setupRunner(config){return await setupEnv(config),{filesMap:{},get files(){return Object.values(this.filesMap)},get tasks(){return getTasks(Object.values(this.filesMap))},config,reporter:config.reporter||new DefaultReporter,snapshotManager:getSnapshotManager()}}async function callHook(suite,name,args){await Promise.all(getHooks(suite)[name].map(fn=>fn(...args)))}async function runTask(task,ctx){var _a,_b,_c;if(task.mode!=="run")return;let{reporter}=ctx;(_a=getSnapshotManager())==null||_a.setTask(task),await((_b=reporter.onTaskBegin)==null?void 0:_b.call(reporter,task,ctx)),task.result={start:performance.now(),state:"run"};try{await callHook(task.suite,"beforeEach",[task,task.suite]),await getFn(task)(),task.result.state="pass"}catch(e){task.result.state="fail",task.result.error=e,process.exitCode=1}try{await callHook(task.suite,"afterEach",[task,task.suite])}catch(e){task.result.state="fail",task.result.error=e,process.exitCode=1}task.result.end=performance.now(),await((_c=reporter.onTaskEnd)==null?void 0:_c.call(reporter,task,ctx))}async function runSuite(suite,ctx){var _a,_b;let{reporter}=ctx;if(await((_a=reporter.onSuiteBegin)==null?void 0:_a.call(reporter,suite,ctx)),suite.result={start:performance.now(),state:"run"},suite.mode==="skip")suite.result.state="skip";else if(suite.mode==="todo")suite.result.state="todo";else try{await callHook(suite,"beforeAll",[suite]);for(let childrenGroup of partitionSuiteChildren(suite)){let computeMode=childrenGroup[0].computeMode;if(computeMode==="serial")for(let c4 of childrenGroup)await runSuiteChild(c4,ctx);else computeMode==="concurrent"&&await Promise.all(childrenGroup.map(c4=>runSuiteChild(c4,ctx)))}await callHook(suite,"afterAll",[suite])}catch(e){suite.result.state="fail",suite.result.error=e,process.exitCode=1}suite.result.end=performance.now(),suite.mode==="run"&&(hasTasks(suite)?hasFailed(suite)&&(suite.result.state="fail"):(suite.result.state="fail",suite.result.error=new Error(`No tests found in suite ${suite.name}`),process.exitCode=1)),await((_b=reporter.onSuiteEnd)==null?void 0:_b.call(reporter,suite,ctx))}async function runSuiteChild(c4,ctx){return c4.type==="task"?runTask(c4,ctx):runSuite(c4,ctx)}async function runSuites(suites,ctx){for(let suite of suites)await runSuite(suite,ctx)}async function run(config){var _a,_b,_c;let testFilepaths=await globTestFiles(config);if(!testFilepaths.length){console.error("No test files found"),process.exitCode=1;return}let ctx=await setupRunner(config),{filesMap,snapshotManager,reporter}=ctx;await((_a=reporter.onStart)==null?void 0:_a.call(reporter,config));let newFileMap=await collectTests(testFilepaths);Object.assign(filesMap,newFileMap);let files=Object.values(filesMap);await((_b=reporter.onCollected)==null?void 0:_b.call(reporter,files,ctx)),await runSuites(files,ctx),snapshotManager.saveSnap(),await((_c=reporter.onFinished)==null?void 0:_c.call(reporter,ctx)),config.watch&&await startWatcher(ctx)}if(!process.__vitest__)throw new Error("Vitest can only run in vite-node environment, please use the CLI to start the process");await run(process.__vitest__.config);var timer=setTimeout(()=>{process.exit()},500);timer.unref();
|
|
@@ -32,7 +32,7 @@ declare class SnapshotManager {
|
|
|
32
32
|
snapshotState: SnapshotStateType | null;
|
|
33
33
|
snapshotSummary: SnapshotSummary;
|
|
34
34
|
snapshotOptions: SnapshotStateOptions;
|
|
35
|
-
|
|
35
|
+
ctx: Context | null;
|
|
36
36
|
testFile: string;
|
|
37
37
|
snapshotResolver: SnapshotResolver | null;
|
|
38
38
|
rootDir: string;
|
|
@@ -81,12 +81,6 @@ interface UserOptions {
|
|
|
81
81
|
* @default false
|
|
82
82
|
*/
|
|
83
83
|
dom?: boolean | 'jsdom' | 'happy-dom';
|
|
84
|
-
/**
|
|
85
|
-
* Run tests files in parallel
|
|
86
|
-
*
|
|
87
|
-
* @default false
|
|
88
|
-
*/
|
|
89
|
-
parallel?: boolean;
|
|
90
84
|
/**
|
|
91
85
|
* Update snapshot files
|
|
92
86
|
*
|
|
@@ -107,40 +101,49 @@ interface UserOptions {
|
|
|
107
101
|
* Custom reporter for output
|
|
108
102
|
*/
|
|
109
103
|
reporter?: Reporter;
|
|
110
|
-
}
|
|
111
|
-
interface ResolvedConfig extends Required<UserOptions> {
|
|
112
104
|
filters?: string[];
|
|
105
|
+
config?: string | undefined;
|
|
106
|
+
}
|
|
107
|
+
interface ResolvedConfig extends Omit<Required<UserOptions>, 'config' | 'filters'> {
|
|
113
108
|
config?: string;
|
|
109
|
+
filters?: string[];
|
|
110
|
+
depsInline: (string | RegExp)[];
|
|
111
|
+
depsExternal: (string | RegExp)[];
|
|
114
112
|
}
|
|
115
113
|
declare type RunMode = 'run' | 'skip' | 'only' | 'todo';
|
|
116
114
|
declare type TaskState = RunMode | 'pass' | 'fail';
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
115
|
+
declare type SuiteState = RunMode | 'pass' | 'fail';
|
|
116
|
+
declare type ComputeMode = 'serial' | 'concurrent';
|
|
120
117
|
interface Task {
|
|
118
|
+
type: 'task';
|
|
121
119
|
name: string;
|
|
122
120
|
mode: RunMode;
|
|
123
|
-
|
|
121
|
+
computeMode: ComputeMode;
|
|
124
122
|
suite: Suite;
|
|
125
|
-
fn: () => Awaitable<void>;
|
|
126
123
|
file?: File;
|
|
127
|
-
|
|
124
|
+
result?: TaskResult;
|
|
125
|
+
}
|
|
126
|
+
interface TaskResult {
|
|
127
|
+
state: TaskState;
|
|
128
|
+
start: number;
|
|
129
|
+
end?: number;
|
|
128
130
|
error?: unknown;
|
|
129
131
|
}
|
|
132
|
+
declare type TaskOrSuite = Task | Suite;
|
|
130
133
|
declare type TestFunction = () => Awaitable<void>;
|
|
131
134
|
interface ConcurrentCollector {
|
|
132
|
-
(name: string, fn: TestFunction
|
|
133
|
-
only: (name: string, fn: TestFunction
|
|
134
|
-
skip: (name: string, fn: TestFunction
|
|
135
|
+
(name: string, fn: TestFunction): void;
|
|
136
|
+
only: (name: string, fn: TestFunction) => void;
|
|
137
|
+
skip: (name: string, fn: TestFunction) => void;
|
|
135
138
|
todo: (name: string) => void;
|
|
136
139
|
}
|
|
137
140
|
interface OnlyCollector {
|
|
138
141
|
(name: string, fn: TestFunction): void;
|
|
139
|
-
concurrent: (name: string, fn: TestFunction
|
|
142
|
+
concurrent: (name: string, fn: TestFunction) => void;
|
|
140
143
|
}
|
|
141
144
|
interface SkipCollector {
|
|
142
145
|
(name: string, fn: TestFunction): void;
|
|
143
|
-
concurrent: (name: string, fn: TestFunction
|
|
146
|
+
concurrent: (name: string, fn: TestFunction) => void;
|
|
144
147
|
}
|
|
145
148
|
interface TodoCollector {
|
|
146
149
|
(name: string): void;
|
|
@@ -154,60 +157,57 @@ interface TestCollector {
|
|
|
154
157
|
todo: TodoCollector;
|
|
155
158
|
}
|
|
156
159
|
declare type HookListener<T extends any[]> = (...args: T) => Awaitable<void>;
|
|
160
|
+
interface SuiteHooks {
|
|
161
|
+
beforeAll: HookListener<[Suite]>[];
|
|
162
|
+
afterAll: HookListener<[Suite]>[];
|
|
163
|
+
beforeEach: HookListener<[Task, Suite]>[];
|
|
164
|
+
afterEach: HookListener<[Task, Suite]>[];
|
|
165
|
+
}
|
|
157
166
|
interface Suite {
|
|
167
|
+
type: 'suite';
|
|
158
168
|
name: string;
|
|
159
169
|
mode: RunMode;
|
|
160
|
-
|
|
170
|
+
computeMode: ComputeMode;
|
|
171
|
+
children: TaskOrSuite[];
|
|
161
172
|
file?: File;
|
|
162
|
-
|
|
163
|
-
status?: TaskState;
|
|
164
|
-
hooks: {
|
|
165
|
-
beforeAll: HookListener<[Suite]>[];
|
|
166
|
-
afterAll: HookListener<[Suite]>[];
|
|
167
|
-
beforeEach: HookListener<[Task, Suite]>[];
|
|
168
|
-
afterEach: HookListener<[Task, Suite]>[];
|
|
169
|
-
};
|
|
173
|
+
result?: TaskResult;
|
|
170
174
|
}
|
|
171
175
|
interface SuiteCollector {
|
|
172
176
|
readonly name: string;
|
|
173
177
|
readonly mode: RunMode;
|
|
178
|
+
type: 'collector';
|
|
174
179
|
test: TestCollector;
|
|
180
|
+
children: (Suite | Task | SuiteCollector)[];
|
|
175
181
|
collect: (file?: File) => Promise<Suite>;
|
|
176
182
|
clear: () => void;
|
|
177
|
-
on: <T extends keyof
|
|
183
|
+
on: <T extends keyof SuiteHooks>(name: T, ...fn: SuiteHooks[T]) => void;
|
|
178
184
|
}
|
|
179
185
|
declare type TestFactory = (test: (name: string, fn: TestFunction) => void) => Awaitable<void>;
|
|
180
|
-
interface File {
|
|
186
|
+
interface File extends Suite {
|
|
181
187
|
filepath: string;
|
|
182
|
-
suites: Suite[];
|
|
183
|
-
collected: boolean;
|
|
184
|
-
error?: unknown;
|
|
185
188
|
}
|
|
186
189
|
interface RunnerContext {
|
|
187
190
|
filesMap: Record<string, File>;
|
|
188
191
|
files: File[];
|
|
189
|
-
suites: Suite[];
|
|
190
192
|
tasks: Task[];
|
|
191
193
|
config: ResolvedConfig;
|
|
192
194
|
reporter: Reporter;
|
|
193
195
|
snapshotManager: SnapshotManager;
|
|
194
196
|
}
|
|
195
197
|
interface GlobalContext {
|
|
196
|
-
|
|
198
|
+
children: (SuiteCollector | Task)[];
|
|
197
199
|
currentSuite: SuiteCollector | null;
|
|
198
200
|
}
|
|
199
201
|
interface Reporter {
|
|
200
202
|
onStart?: (config: ResolvedConfig) => Awaitable<void>;
|
|
201
203
|
onCollected?: (files: File[], ctx: RunnerContext) => Awaitable<void>;
|
|
202
204
|
onFinished?: (ctx: RunnerContext, files?: File[]) => Awaitable<void>;
|
|
203
|
-
onSuiteBegin?: (suite: Suite, ctx: RunnerContext) => Awaitable<void>;
|
|
204
|
-
onSuiteEnd?: (suite: Suite, ctx: RunnerContext) => Awaitable<void>;
|
|
205
|
-
onFileBegin?: (file: File, ctx: RunnerContext) => Awaitable<void>;
|
|
206
|
-
onFileEnd?: (file: File, ctx: RunnerContext) => Awaitable<void>;
|
|
207
205
|
onTaskBegin?: (task: Task, ctx: RunnerContext) => Awaitable<void>;
|
|
208
206
|
onTaskEnd?: (task: Task, ctx: RunnerContext) => Awaitable<void>;
|
|
207
|
+
onSuiteBegin?: (suite: Suite, ctx: RunnerContext) => Awaitable<void>;
|
|
208
|
+
onSuiteEnd?: (suite: Suite, ctx: RunnerContext) => Awaitable<void>;
|
|
209
209
|
onWatcherStart?: (ctx: RunnerContext) => Awaitable<void>;
|
|
210
210
|
onWatcherRerun?: (files: string[], trigger: string, ctx: RunnerContext) => Awaitable<void>;
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
export {
|
|
213
|
+
export { ComputeMode as C, File as F, GlobalContext as G, HookListener as H, ResolvedConfig as R, SuiteCollector as S, TestFactory as T, UserOptions as U, TestFunction as a, SuiteHooks as b, RunMode as c, TaskState as d, SuiteState as e, Task as f, TaskResult as g, TaskOrSuite as h, TestCollector as i, Suite as j, RunnerContext as k, Reporter as l };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vitest",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.42",
|
|
4
4
|
"description": "A blazing fast unit test framework powered by Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vite",
|
|
@@ -43,16 +43,14 @@
|
|
|
43
43
|
],
|
|
44
44
|
"scripts": {
|
|
45
45
|
"prepare": "esmo scripts/generate-types.ts",
|
|
46
|
-
"build": "tsup --dts --minify",
|
|
46
|
+
"build": "tsup --dts --minify-whitespace --minify-syntax",
|
|
47
47
|
"dev": "tsup --watch src",
|
|
48
48
|
"lint": "eslint \"{src,test}/**/*.ts\"",
|
|
49
49
|
"prepublishOnly": "nr build",
|
|
50
50
|
"release": "bumpp --commit --push --tag && esmo scripts/publish.ts",
|
|
51
|
-
"test": "
|
|
52
|
-
"test
|
|
53
|
-
"
|
|
54
|
-
"test:react": "node bin/vitest.mjs --dev -r test/react",
|
|
55
|
-
"coverage": "node bin/vitest.mjs --dev -r test/core --coverage"
|
|
51
|
+
"test:all": "pnpm -r --stream --filter !vitest run test --",
|
|
52
|
+
"test": "node bin/vitest.mjs -r test/core",
|
|
53
|
+
"coverage": "node bin/vitest.mjs -r test/core --coverage"
|
|
56
54
|
},
|
|
57
55
|
"dependencies": {
|
|
58
56
|
"@antfu/utils": "^0.3.0",
|
|
@@ -74,7 +72,8 @@
|
|
|
74
72
|
"sade": "^1.7.4",
|
|
75
73
|
"sinon": "^12.0.1",
|
|
76
74
|
"sinon-chai": "^3.7.0",
|
|
77
|
-
"source-map": "^0.7.3"
|
|
75
|
+
"source-map": "^0.7.3",
|
|
76
|
+
"source-map-support": "^0.5.21"
|
|
78
77
|
},
|
|
79
78
|
"peerDependencies": {
|
|
80
79
|
"vite": "^2.7.1"
|
package/dist/chunk-4OVO6RD6.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as k,b as F,f as d}from"./chunk-XPSQDVUG.js";d();var O=["**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],R=["**/node_modules/**","**/dist/**"],G=["suite","test","describe","it","chai","expect","assert","sinon","spy","mock","stub","beforeAll","afterAll","beforeEach","afterEach"],C=5e3;d();d();var g={suites:[],currentSuite:null};var y=h("");function s(){return g.currentSuite||y}function x(t,r=()=>{},u){let c=[],i=[],e={name:t,mode:u,hooks:{beforeAll:[],afterAll:[],beforeEach:[],afterEach:[]}},n=j((f,p,a,T)=>{c.push({name:f,mode:a,concurrent:T,suite:{},state:a!=="run"&&a!=="only"?a:void 0,fn:p})}),o={name:t,mode:u,test:n,collect:A,clear:E,on:l};function l(f,...p){e.hooks[f].push(...p)}function E(){c.length=0,i.length=0}async function A(f){i.length=0,r&&await r(n);let p=[...i,...c],a=F(k({},e),{tasks:p,file:f});return p.forEach(T=>{T.suite=a,f&&(T.file=f)}),a}return g.currentSuite=o,g.suites.push(o),o}function b(t){return{timeout:t??C}}function j(t){function r(n,o){t(n,o,"run")}r.concurrent=u,r.skip=c,r.only=i,r.todo=e;function u(n,o,l){t(n,o,"run",b(l))}u.skip=(n,o,l)=>t(n,o,"skip",b(l)),u.only=(n,o,l)=>t(n,o,"only",b(l)),u.todo=e;function c(n,o){t(n,o,"skip")}c.concurrent=u.skip;function i(n,o){t(n,o,"only")}i.concurrent=u.only;function e(n){t(n,()=>{},"todo")}return e.concurrent=e,r}var M=function(){function t(e,n){return s().test(e,n)}function r(e,n,o){return s().test.concurrent(e,n,o)}r.skip=(e,n,o)=>s().test.concurrent.skip(e,n,o),r.only=(e,n,o)=>s().test.concurrent.only(e,n,o),r.todo=e=>s().test.concurrent.todo(e);function u(e,n){return s().test.skip(e,n)}u.concurrent=(e,n,o)=>s().test.skip.concurrent(e,n,o);function c(e,n){return s().test.only(e,n)}c.concurrent=(e,n,o)=>s().test.only.concurrent(e,n,o);function i(e){return s().test.todo(e)}return i.concurrent=e=>s().test.todo.concurrent(e),t.concurrent=r,t.skip=u,t.only=c,t.todo=i,t}();function h(t,r){return x(t,r,"run")}h.skip=(t,r)=>x(t,r,"skip");h.only=(t,r)=>x(t,r,"only");h.todo=t=>x(t,void 0,"todo");var H=h,I=M,P=t=>s().on("beforeAll",t),Q=t=>s().on("afterAll",t),_=t=>s().on("beforeEach",t),z=t=>s().on("afterEach",t);function D(){g.suites.length=0,y.clear(),g.currentSuite=y}export{g as a,O as b,R as c,G as d,y as e,M as f,h as g,H as h,I as i,P as j,Q as k,_ as l,z as m,D as n};
|
package/dist/chunk-CUG6SVUZ.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{e as r,f as a,g as s,h as l,i as c,j as d,k as u,l as p,m as f,n as m}from"./chunk-4OVO6RD6.js";import{d as i,f as e}from"./chunk-XPSQDVUG.js";var T={};i(T,{afterAll:()=>u,afterEach:()=>f,assert:()=>g,beforeAll:()=>d,beforeEach:()=>p,chai:()=>x,clearContext:()=>m,defaultSuite:()=>r,describe:()=>l,expect:()=>C,it:()=>c,mock:()=>b,should:()=>v,sinon:()=>t,spy:()=>k,stub:()=>S,suite:()=>s,test:()=>a});e();e();e();import x from"chai";import{assert as g,should as v,expect as C}from"chai";e();import t from"sinon";var{mock:b,spy:k,stub:S}=t;t.fn=t.spy;export{x as a,g as b,v as c,C as d,t as e,b as f,k as g,S as h,T as i};
|
package/dist/chunk-F27UALKJ.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as e}from"./chunk-XPSQDVUG.js";e();var t=["DOMException","URL","URLSearchParams","EventTarget","NamedNodeMap","Node","Attr","Element","DocumentFragment","DOMImplementation","Document","XMLDocument","CharacterData","Text","CDATASection","ProcessingInstruction","Comment","DocumentType","NodeList","HTMLCollection","HTMLOptionsCollection","DOMStringMap","DOMTokenList","StyleSheetList","HTMLElement","HTMLHeadElement","HTMLTitleElement","HTMLBaseElement","HTMLLinkElement","HTMLMetaElement","HTMLStyleElement","HTMLBodyElement","HTMLHeadingElement","HTMLParagraphElement","HTMLHRElement","HTMLPreElement","HTMLUListElement","HTMLOListElement","HTMLLIElement","HTMLMenuElement","HTMLDListElement","HTMLDivElement","HTMLAnchorElement","HTMLAreaElement","HTMLBRElement","HTMLButtonElement","HTMLCanvasElement","HTMLDataElement","HTMLDataListElement","HTMLDetailsElement","HTMLDialogElement","HTMLDirectoryElement","HTMLFieldSetElement","HTMLFontElement","HTMLFormElement","HTMLHtmlElement","HTMLImageElement","HTMLInputElement","HTMLLabelElement","HTMLLegendElement","HTMLMapElement","HTMLMarqueeElement","HTMLMediaElement","HTMLMeterElement","HTMLModElement","HTMLOptGroupElement","HTMLOptionElement","HTMLOutputElement","HTMLPictureElement","HTMLProgressElement","HTMLQuoteElement","HTMLScriptElement","HTMLSelectElement","HTMLSlotElement","HTMLSourceElement","HTMLSpanElement","HTMLTableCaptionElement","HTMLTableCellElement","HTMLTableColElement","HTMLTableElement","HTMLTimeElement","HTMLTableRowElement","HTMLTableSectionElement","HTMLTemplateElement","HTMLTextAreaElement","HTMLUnknownElement","HTMLFrameElement","HTMLFrameSetElement","HTMLIFrameElement","HTMLEmbedElement","HTMLObjectElement","HTMLParamElement","HTMLVideoElement","HTMLAudioElement","HTMLTrackElement","SVGElement","SVGGraphicsElement","SVGSVGElement","SVGTitleElement","SVGAnimatedString","SVGNumber","SVGStringList","Event","CloseEvent","CustomEvent","MessageEvent","ErrorEvent","HashChangeEvent","PopStateEvent","StorageEvent","ProgressEvent","PageTransitionEvent","UIEvent","FocusEvent","InputEvent","MouseEvent","KeyboardEvent","TouchEvent","CompositionEvent","WheelEvent","BarProp","External","Location","History","Screen","Performance","Navigator","PluginArray","MimeTypeArray","Plugin","MimeType","FileReader","Blob","File","FileList","ValidityState","DOMParser","XMLSerializer","FormData","XMLHttpRequestEventTarget","XMLHttpRequestUpload","XMLHttpRequest","WebSocket","NodeFilter","NodeIterator","TreeWalker","AbstractRange","Range","StaticRange","Selection","Storage","CustomElementRegistry","ShadowRoot","MutationObserver","MutationRecord","Headers","AbortController","AbortSignal"],n=["addEventListener","alert","atob","blur","btoa","close","confirm","createPopup","dispatchEvent","document","focus","frames","getComputedStyle","history","innerHeight","innerWidth","length","location","moveBy","moveTo","name","navigator","open","outerHeight","outerWidth","pageXOffset","pageYOffset","parent","postMessage","print","prompt","removeEventListener","resizeBy","resizeTo","screen","screenLeft","screenTop","screenX","screenY","scroll","scrollBy","scrollLeft","scrollTo","scrollTop","scrollX","scrollY","self","stop","top","window"],m=t.concat(n);export{m as a};
|
package/dist/chunk-XPSQDVUG.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var f=Object.create;var a=Object.defineProperty,l=Object.defineProperties,_=Object.getOwnPropertyDescriptor,h=Object.getOwnPropertyDescriptors,c=Object.getOwnPropertyNames,e=Object.getOwnPropertySymbols,d=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable;var p=(r,t,m)=>t in r?a(r,t,{enumerable:!0,configurable:!0,writable:!0,value:m}):r[t]=m,U=(r,t)=>{for(var m in t||(t={}))i.call(t,m)&&p(r,m,t[m]);if(e)for(var m of e(t))s.call(t,m)&&p(r,m,t[m]);return r},b=(r,t)=>l(r,h(t)),n=r=>a(r,"__esModule",{value:!0});var u=(r,t)=>()=>(r&&(t=r(r=0)),t);var g=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),j=(r,t)=>{n(r);for(var m in t)a(r,m,{get:t[m],enumerable:!0})},x=(r,t,m)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of c(t))!i.call(r,o)&&o!=="default"&&a(r,o,{get:()=>t[o],enumerable:!(m=_(t,o))||m.enumerable});return r},k=r=>x(n(a(r!=null?f(d(r)):{},"default",r&&r.__esModule&&"default"in r?{get:()=>r.default,enumerable:!0}:{value:r,enumerable:!0})),r);import{fileURLToPath as L}from"url";import P from"path";var R,y,T=u(()=>{R=L(import.meta.url),y=P.dirname(R)});export{U as a,b,g as c,j as d,k as e,T as f};
|
package/dist/global-CKRMAXWF.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as l}from"./chunk-CUG6SVUZ.js";import{d as r}from"./chunk-4OVO6RD6.js";import{f as i}from"./chunk-XPSQDVUG.js";i();function a(){r.forEach(o=>{globalThis[o]=l[o]})}export{a as registerApiGlobally};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as c}from"./chunk-F27UALKJ.js";import{f as n}from"./chunk-XPSQDVUG.js";n();import{Window as p}from"happy-dom";function a(o){let e=new p,r=c.concat(Object.getOwnPropertyNames(e)).filter(t=>!t.startsWith("_")).filter(t=>!(t in o));for(let t of r)o[t]=e[t];return{dom:e,restore(){e.happyDOM.cancelAsync(),r.forEach(t=>delete o[t])}}}export{a as setupHappyDOM};
|
package/dist/jsdom-6QAZGE6T.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as s}from"./chunk-F27UALKJ.js";import{f as n}from"./chunk-XPSQDVUG.js";n();import{JSDOM as i}from"jsdom";function u(e){let r=new i("<!DOCTYPE html>",{pretendToBeVisual:!0,runScripts:"dangerously",url:"http://localhost:3000"}),o=s.concat(Object.getOwnPropertyNames(r.window)).filter(t=>!t.startsWith("_")).filter(t=>!(t in e));for(let t of o)e[t]=r.window[t];return{dom:r,restore(){o.forEach(t=>delete e[t])}}}export{u as setupJSDOM};
|