vitest-auto-spy 1.5.0 β 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -7
- package/dist/angular.js +1 -1
- package/dist/bun.js +1 -1
- package/dist/chunk-BCLT4UUA.js +1 -0
- package/dist/chunk-CUVWIHH5.js +1 -0
- package/dist/chunk-PEAFUJBQ.js +1 -0
- package/dist/console.cjs +1 -0
- package/dist/console.d.cts +39 -0
- package/dist/console.d.ts +39 -0
- package/dist/console.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/nestjs.cjs +1 -1
- package/dist/nestjs.js +1 -1
- package/dist/node.js +1 -1
- package/dist/react.cjs +1 -1
- package/dist/react.js +1 -1
- package/dist/svelte.cjs +1 -1
- package/dist/svelte.js +1 -1
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +1 -1
- package/package.json +9 -2
- package/dist/chunk-ACSYU277.js +0 -1
- package/dist/chunk-VLNCYBUN.js +0 -1
package/README.md
CHANGED
|
@@ -37,6 +37,8 @@ replacement for [`jest-auto-spies`](https://www.npmjs.com/package/jest-auto-spie
|
|
|
37
37
|
- π `calledWith` / `mustBeCalledWith` argument dispatch
|
|
38
38
|
- π‘ First-class RxJS `Observable` spying (`nextWith`, `nextWithValues`, `throwWith`, β¦)
|
|
39
39
|
- βοΈ Getter / setter spies via `accessorSpies`
|
|
40
|
+
- π§° DI & mocking utilities β `provideAutoSpy` / `injectSpy` (Angular, NestJS, Vue), `createFunctionSpy`, `mockReadonlyProp` for signals
|
|
41
|
+
- π Console spies β `import { consoleInfoSpy } from 'vitest-auto-spy/console'` silences `console` and asserts its calls
|
|
40
42
|
- π’ 100% test coverage, **zero runtime dependencies** (in-tree arg serializer, no `javascript-stringify`)
|
|
41
43
|
|
|
42
44
|
## Table of contents
|
|
@@ -60,6 +62,7 @@ replacement for [`jest-auto-spies`](https://www.npmjs.com/package/jest-auto-spie
|
|
|
60
62
|
- [Vue / Pinia](#vue--pinia)
|
|
61
63
|
- [Svelte](#svelte)
|
|
62
64
|
- [Angular](#angular)
|
|
65
|
+
- [Utilities](#utilities)
|
|
63
66
|
- [API reference](#api-reference)
|
|
64
67
|
- [FAQ & troubleshooting](#faq--troubleshooting)
|
|
65
68
|
- [Versioning](#versioning)
|
|
@@ -97,15 +100,15 @@ them only for the matching entry point. The package itself has **zero runtime de
|
|
|
97
100
|
|
|
98
101
|
## Availability
|
|
99
102
|
|
|
100
|
-
> **All entry points are published.**
|
|
101
|
-
>
|
|
102
|
-
>
|
|
103
|
+
> **All entry points are published.** The **Vitest / Bun / `node:test`** runtimes, the **RxJS** layer,
|
|
104
|
+
> and the **Angular / NestJS / React / VueΒ·Pinia / Svelte** recipes all ship as importable entry points β
|
|
105
|
+
> one identical API across every runner and framework.
|
|
103
106
|
|
|
104
107
|
| Entry point | Status |
|
|
105
108
|
| --- | --- |
|
|
106
|
-
| `vitest-auto-spy` Β· `vitest-auto-spy/rxjs` Β· `vitest-auto-spy/angular` | β
**Published**
|
|
107
|
-
| `vitest-auto-spy/bun` Β· `vitest-auto-spy/node` | β
**Published**
|
|
108
|
-
| `vitest-auto-spy/nestjs` Β· `/react` Β· `/vue` Β· `/svelte` | β
**Published**
|
|
109
|
+
| `vitest-auto-spy` Β· `vitest-auto-spy/rxjs` Β· `vitest-auto-spy/angular` | β
**Published** |
|
|
110
|
+
| `vitest-auto-spy/bun` Β· `vitest-auto-spy/node` | β
**Published** |
|
|
111
|
+
| `vitest-auto-spy/nestjs` Β· `/react` Β· `/vue` Β· `/svelte` Β· `/console` | β
**Published** |
|
|
109
112
|
|
|
110
113
|
## Quick start
|
|
111
114
|
|
|
@@ -210,8 +213,9 @@ Node / Bun / React / Vue project pulls **neither rxjs nor Angular into its runti
|
|
|
210
213
|
| `vitest-auto-spy/react` | the core, with a natural import for React Testing Library suites | β (your `react`) | β
|
|
|
211
214
|
| `vitest-auto-spy/vue` | `provideAutoSpy` for `global.provide` + Pinia store spying | β (your `vue`/`pinia`) | β
|
|
|
212
215
|
| `vitest-auto-spy/svelte` | the core, with a natural import for Svelte suites | β (your `svelte`) | β
|
|
|
216
|
+
| `vitest-auto-spy/console` | `consoleInfoSpy` & friends β silent typed spies over the global `console`, installed on import | `vitest` | β
|
|
|
213
217
|
|
|
214
|
-
β
all entry points published
|
|
218
|
+
β
all entry points published (see [Availability](#availability)).
|
|
215
219
|
|
|
216
220
|
> The framework subpaths import **nothing** from their framework β the helpers are structural, so
|
|
217
221
|
> `@nestjs/*`, `react`, `vue`/`pinia` and `svelte` stay your own (already-present) dev dependencies and
|
|
@@ -625,6 +629,79 @@ mockReadonlyPropGetter(service, 'label', () => 'A'); // dynamic getter
|
|
|
625
629
|
mockAccessorsProp(service, 'theme'); // spied get + set
|
|
626
630
|
```
|
|
627
631
|
|
|
632
|
+
## Utilities
|
|
633
|
+
|
|
634
|
+
Beyond the spy factories, the package ships a set of small standalone helpers. Each one is a
|
|
635
|
+
single-purpose utility you can pick up independently β they all ride on the same core:
|
|
636
|
+
|
|
637
|
+
| Utility | Entry point | What it's for |
|
|
638
|
+
| --- | --- | --- |
|
|
639
|
+
| `injectSpy(token)` / `injectSpy(moduleRef, token)` | `/angular`, `/nestjs` | Pull a provided spy out of the DI container, already typed as `Spy<T>` β no casting |
|
|
640
|
+
| `provideAutoSpy(Class, config?)` | `/angular`, `/nestjs`, `/vue` | One-liner `{ provide, useValue }` (or Vue `global.provide`) that builds the spy for you |
|
|
641
|
+
| `createFunctionSpy(name)` | core | A single standalone function spy with the full helper set (`calledWith`, `resolveWith`, `nextWith`, β¦) β no class needed |
|
|
642
|
+
| `createAutoMock<T>(overrides?)` | core | Proxy-based spy from a **type/interface** alone ([details](#auto-mock-by-type-no-class-needed)) |
|
|
643
|
+
| `createObservableWithValues(configs, opts?)` | `/rxjs` | Build a fake `Observable` emitting a precise sequence of values / errors / completion |
|
|
644
|
+
| `consoleInfoSpy` / `consoleWarnSpy` / β¦ | `/console` | Silent typed spies over the global `console`, installed on import ([details](#console-spies--vitest-auto-spyconsole)) |
|
|
645
|
+
| `mockReadonlyProp(obj, prop, value)` | `/angular` | Overwrite a `readonly` property (incl. Angular signals) with a static value |
|
|
646
|
+
| `mockReadonlyPropGetter(obj, prop, getter)` | `/angular` | Same, but backed by a dynamic getter |
|
|
647
|
+
| `mockAccessorsProp(obj, prop)` | `/angular` | Redefine a property with spied `get` + `set` |
|
|
648
|
+
| `errorHandler` | core | The `mustBeCalledWith` argument-mismatch reporter β swap it to customize failure output |
|
|
649
|
+
|
|
650
|
+
A taste of the DI pair β provide the spy, inject it back fully typed:
|
|
651
|
+
|
|
652
|
+
```ts
|
|
653
|
+
import { provideAutoSpy, injectSpy } from 'vitest-auto-spy/angular';
|
|
654
|
+
|
|
655
|
+
TestBed.configureTestingModule({ providers: [provideAutoSpy(UserService)] });
|
|
656
|
+
const userService = injectSpy(UserService); // Spy<UserService>, no `as` cast
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
And a standalone function spy, when there's no class or interface at all:
|
|
660
|
+
|
|
661
|
+
```ts
|
|
662
|
+
import { createFunctionSpy } from 'vitest-auto-spy';
|
|
663
|
+
|
|
664
|
+
const onSave = createFunctionSpy<(id: number) => Promise<void>>('onSave');
|
|
665
|
+
onSave.calledWith(1).resolveWith();
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
### Console spies β `vitest-auto-spy/console`
|
|
669
|
+
|
|
670
|
+
Importing the entry replaces `console.debug` / `error` / `info` / `log` / `time` / `timeEnd` /
|
|
671
|
+
`trace` / `warn` with **silent, fully-typed spies** and exports each one ready to assert β no
|
|
672
|
+
`vi.spyOn(console, 'info')` boilerplate in every suite, no log output polluting the test run:
|
|
673
|
+
|
|
674
|
+
```ts
|
|
675
|
+
import { consoleInfoSpy, consoleWarnSpy } from 'vitest-auto-spy/console';
|
|
676
|
+
|
|
677
|
+
service.doWork();
|
|
678
|
+
|
|
679
|
+
expect(consoleInfoSpy).toHaveBeenCalledWith('done');
|
|
680
|
+
expect(consoleWarnSpy).not.toHaveBeenCalled();
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
Housekeeping: `resetConsoleSpies()` clears the recorded calls between tests (Vitest's
|
|
684
|
+
`clearMocks: true` already does that automatically), `restoreConsole()` puts the original
|
|
685
|
+
methods back, and `installConsoleSpies()` re-installs after a restore.
|
|
686
|
+
|
|
687
|
+
> The spies use the registered `MockAdapter` β import your runtime entry
|
|
688
|
+
> (`vitest-auto-spy/bun`, `β¦/node`) **before** `vitest-auto-spy/console` and the console spies
|
|
689
|
+
> are driven by that runner's mocks; with no prior runtime entry the default Vitest adapter is used.
|
|
690
|
+
|
|
691
|
+
Prefer a fully detached fake instead of touching the real global? `createAutoMock<Console>()`
|
|
692
|
+
gives you a typed, in-memory console to inject into code that takes a logger:
|
|
693
|
+
|
|
694
|
+
```ts
|
|
695
|
+
import { createAutoMock } from 'vitest-auto-spy';
|
|
696
|
+
|
|
697
|
+
const fakeConsole = createAutoMock<Console>();
|
|
698
|
+
const service = new ReportService(fakeConsole);
|
|
699
|
+
|
|
700
|
+
service.doWork();
|
|
701
|
+
|
|
702
|
+
expect(fakeConsole.info).toHaveBeenCalledWith('done');
|
|
703
|
+
```
|
|
704
|
+
|
|
628
705
|
## API reference
|
|
629
706
|
|
|
630
707
|
| Export | Description |
|
|
@@ -637,6 +714,8 @@ mockAccessorsProp(service, 'theme'); // spied get + set
|
|
|
637
714
|
| `createFunctionSpy(name)` | A single standalone function spy with all helpers |
|
|
638
715
|
| `createObservableWithValues(configs, opts?)` | Build an Observable from value configs |
|
|
639
716
|
| `mockReadonlyProp` / `mockReadonlyPropGetter` / `mockAccessorsProp` | Mock readonly / accessor / signal props |
|
|
717
|
+
| `consoleDebugSpy` β¦ `consoleWarnSpy` _(`/console`)_ | Silent typed spies replacing the global `console` methods on import |
|
|
718
|
+
| `installConsoleSpies()` / `resetConsoleSpies()` / `restoreConsole()` | Install / clear / undo the console spies |
|
|
640
719
|
| `errorHandler` | The `mustBeCalledWith` argument-mismatch error helper |
|
|
641
720
|
|
|
642
721
|
**Spied sync method:** `mockReturnValue`, `calledWith(...)`, `mustBeCalledWith(...)`
|
|
@@ -712,3 +791,5 @@ the Vitest, Bun, RxJS and Angular communities whose tooling this builds on.
|
|
|
712
791
|
## License
|
|
713
792
|
|
|
714
793
|
[MIT](./LICENSE) Β© [Alexey Popov](https://github.com/ASDAlexey)
|
|
794
|
+
|
|
795
|
+
Get in touch: [asdalexey.github.io](https://asdalexey.github.io/ru/)
|
package/dist/angular.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-6LFQMHSX.js';import {a,
|
|
1
|
+
import {a as a$1}from'./chunk-6LFQMHSX.js';import {a as a$2}from'./chunk-CUVWIHH5.js';import {a,c as c$1}from'./chunk-PEAFUJBQ.js';import'./chunk-7IUYJ6ZW.js';import {TestBed}from'@angular/core/testing';function c(e,o){return {provide:e,useValue:a$2(e,o)}}function s(e){return TestBed.inject(e)}function y(e,o,r){Object.defineProperty(e,o,{get:()=>r,configurable:true});}function d(e,o,r){Object.defineProperty(e,o,{get:r,configurable:true});}function u(e,o){let r=c$1();Object.defineProperty(e,o,{get:r.createMockFn(),set:r.createMockFn(),configurable:true});}a(a$1);export{s as injectSpy,u as mockAccessorsProp,y as mockReadonlyProp,d as mockReadonlyPropGetter,c as provideAutoSpy};
|
package/dist/bun.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-IPBQZ4JC.js';export{a as createAutoMock}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-IPBQZ4JC.js';export{a as createAutoMock}from'./chunk-BCLT4UUA.js';export{a as createSpyFromClass}from'./chunk-CUVWIHH5.js';import {a}from'./chunk-PEAFUJBQ.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-PEAFUJBQ.js';import'./chunk-7IUYJ6ZW.js';import {mock}from'bun:test';function r(k){return a$1({createMockFn:(o,n)=>{let e=k.mock(o??(()=>{}));return n!==void 0&&e.mockName&&e.mockName(n),e},getCalls:o=>o.mock.calls,reset:o=>o.mockReset()})}a(r({mock:mock}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {e}from'./chunk-PEAFUJBQ.js';function s(u={}){let r=new Map;for(let t of Reflect.ownKeys(u))r.set(t,Reflect.get(u,t));let a={get(t,e$1){if(r.has(e$1))return r.get(e$1);if(typeof e$1=="symbol"||e$1==="then"||e$1==="constructor")return;let n=e(String(e$1));return r.set(e$1,n),n},set(t,e,n){return r.set(e,n),true},has(t,e){return r.has(e)},ownKeys(){return [...r.keys()]},getOwnPropertyDescriptor(t,e){if(r.has(e))return {configurable:true,enumerable:true,value:r.get(e),writable:true}}};return new Proxy({},a)}export{s as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {e,c as c$1}from'./chunk-PEAFUJBQ.js';import {c}from'./chunk-7IUYJ6ZW.js';function g(e,r){Object.defineProperty(e,r,{get(){},set(t){},configurable:true});}function u(e,r,t){let o=c$1();return t==="setter"?o.spyOnSetter(e,r):o.spyOnGetter(e,r)}function a(e,r,t){let o={getters:{},setters:{}};e.accessorSpies=o,r.forEach(s=>{g(e,s),o.getters[s]=u(e,s,"getter");}),t.forEach(s=>{Object.prototype.hasOwnProperty.call(e,s)||g(e,s),o.setters[s]=u(e,s,"setter");});}var f={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function S(e){let r=Object.getOwnPropertyDescriptors(e);return Object.keys(r).filter(t=>t!=="constructor"&&!r[t]?.get)}function T(e){let r=new Set,t=e;for(;t;){let o=Object.getPrototypeOf(t);o&&S(t).forEach(s=>r.add(s)),t=o;}return [...r]}function d(e){return e?Array.isArray(e)?{...f,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[]}:{...f}}function k(e$1,r){let{methodsToSpyOn:t,observablePropsToSpyOn:o,settersToSpyOn:s,gettersToSpyOn:l}=d(r),O=t.length>0?t:T(e$1.prototype),n={};return o.forEach(c$1=>{n[c$1]=c().createPropSpy();}),a(n,l,s),O.forEach(c=>{n[c]=e(c);}),n}export{k as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {b as b$1,d as d$1}from'./chunk-7IUYJ6ZW.js';var c;function W(e){c=e;}function x(){return c!==void 0}var b="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function d(){if(!c)throw new Error(b);return c}function j(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function M(e,t){return Object.entries(e).map(([n,r])=>`${n}:${o(r,t)}`).join(",")}function T(e,t){return `new Map([${[...e.entries()].map(([r,i])=>`[${o(r,t)},${o(i,t)}]`).join(",")}])`}function S(e,t){if(t.has(e))return "[Circular]";t.add(e);let n;return e instanceof Date?n=`new Date(${e.getTime()})`:e instanceof Map?n=T(e,t):e instanceof Set?n=`new Set([${[...e].map(r=>o(r,t)).join(",")}])`:Array.isArray(e)?n=`[${e.map(r=>o(r,t)).join(",")}]`:n=`{${M(e,t)}}`,t.delete(e),n}function o(e,t=new WeakSet){return typeof e=="string"?j(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?S(e,t):Object.is(e,-0)?"-0":String(e)}var V=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,F="But the function was called without any arguments.",P=e=>{let t=o(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},f={throwArgumentsError(e,t){let n=e.length===0?F:P(e);throw new Error(V(t)+n)}};var l=class{#e={};set(t,n){this.#e[this.#t(t)]=n;}get(t){return this.#e[this.#t(t)]}#t(t){return o(t)}};function A(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(n=>setTimeout(()=>n(t.value),t.delay))}))}function m(e,t){d$1(e,{resolveWith:n=>{t({value:Promise.resolve(n)});},rejectWith:n=>{t({value:n,_isRejectedPromise:true});},resolveWithPerCall:n=>{n.length!==0&&t({value:void 0,valuesPerCalls:A(n)});}});}function g(e,t){m(e,n=>{t.value=n.value,t._isRejectedPromise=n._isRejectedPromise??false,t.valuesPerCalls=n.valuesPerCalls??[];});}function y(e,t){m(e,n=>{e.argsToValuesMap.set(t,n);});}function O(e){return typeof e=="object"&&e!==null&&"value"in e}function h(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function k(e,t){let n=e.argsToValuesMap.get(t);return O(n)?{found:true,value:h(n)}:{found:false,value:void 0}}function R(e,t,n,r,i){if(e.wasConfigured){let u=k(e,r);if(u.found)return u.value}if(t.wasConfigured){let u=k(t,r);if(u.found)return u.value;f.throwArgumentsError(r,i);}return h(n)}function w(e,t){return e.wasConfigured=true,d$1(e,{mockReturnValue:n=>{e.argsToValuesMap.set(t,{value:n});}}),y(e,t),b$1()?.addToCalledWithObject(e,t),e}function C(){return {wasConfigured:false,argsToValuesMap:new l}}function K(e){let t=C(),n=C(),r={value:void 0},i=d().createMockFn((...a)=>R(t,n,r,a,e),e);g(i,r),b$1()?.addToFunctionSpy(i,r);let u=d$1(i,{calledWith:(...a)=>w(t,a),mustBeCalledWith:(...a)=>w(n,a)});return u}export{W as a,x as b,d as c,f as d,K as e};
|
package/dist/console.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var vitest=require('vitest');function V(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function W(e,o){return Object.entries(e).map(([t,n])=>`${t}:${r(n,o)}`).join(",")}function P(e,o){return `new Map([${[...e.entries()].map(([n,s])=>`[${r(n,o)},${r(s,o)}]`).join(",")}])`}function E(e,o){if(o.has(e))return "[Circular]";o.add(e);let t;return e instanceof Date?t=`new Date(${e.getTime()})`:e instanceof Map?t=P(e,o):e instanceof Set?t=`new Set([${[...e].map(n=>r(n,o)).join(",")}])`:Array.isArray(e)?t=`[${e.map(n=>r(n,o)).join(",")}]`:t=`{${W(e,o)}}`,o.delete(e),t}function r(e,o=new WeakSet){return typeof e=="string"?V(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?E(e,o):Object.is(e,-0)?"-0":String(e)}var l=class{#e={};set(o,t){this.#e[this.#o(o)]=t;}get(o){return this.#e[this.#o(o)]}#o(o){return r(o)}};var $=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,_="But the function was called without any arguments.",H=e=>{let o=r(e);return `But the actual arguments were: ${o.substring(1,o.length-1)}`},M={throwArgumentsError(e,o){let t=e.length===0?_:H(e);throw new Error($(o)+t)}};var d;function k(e){d=e;}function b(){return d!==void 0}var B="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function f(){if(!d)throw new Error(B);return d}function u(e,o){return Object.assign(e,o)}function I(e){return e.map(o=>({wrappedValue:o.delay===void 0?Promise.resolve(o.value):new Promise(t=>setTimeout(()=>t(o.value),o.delay))}))}function h(e,o){u(e,{resolveWith:t=>{o({value:Promise.resolve(t)});},rejectWith:t=>{o({value:t,_isRejectedPromise:true});},resolveWithPerCall:t=>{t.length!==0&&o({value:void 0,valuesPerCalls:I(t)});}});}function w(e,o){h(e,t=>{o.value=t.value,o._isRejectedPromise=t._isRejectedPromise??false,o.valuesPerCalls=t.valuesPerCalls??[];});}function j(e,o){h(e,t=>{e.argsToValuesMap.set(o,t);});}function D(e){return typeof e=="object"&&e!==null&&"value"in e}function O(e){if(e._isRejectedPromise)return Promise.reject(e.value);let o=e.valuesPerCalls?.shift();return o?o.wrappedValue:e.value}function T(e,o){let t=e.argsToValuesMap.get(o);return D(t)?{found:true,value:O(t)}:{found:false,value:void 0}}function G(e,o,t,n,s){if(e.wasConfigured){let p=T(e,n);if(p.found)return p.value}if(o.wasConfigured){let p=T(o,n);if(p.found)return p.value;M.throwArgumentsError(n,s);}return O(t)}function F(e,o){return e.wasConfigured=true,u(e,{mockReturnValue:t=>{e.argsToValuesMap.set(o,{value:t});}}),j(e,o),e}function v(){return {wasConfigured:false,argsToValuesMap:new l}}function x(e){let o=v(),t=v(),n={value:void 0},s=f().createMockFn((...a)=>G(o,t,n,a,e),e);w(s,n);let p=u(s,{calledWith:(...a)=>F(o,a),mustBeCalledWith:(...a)=>F(t,a)});return p}var S=new Map,C=new Map,c;function L(e){return console[e]}function A(e,o){console[e]=o;}function i(e){S.set(e,L(e));let o=x(`console.${e}`);return A(e,o),C.set(e,o),o}function g(){return c||(c={consoleDebugSpy:i("debug"),consoleErrorSpy:i("error"),consoleInfoSpy:i("info"),consoleLogSpy:i("log"),consoleTimeEndSpy:i("timeEnd"),consoleTimeSpy:i("time"),consoleTraceSpy:i("trace"),consoleWarnSpy:i("warn")},c)}function N(){let e=f();for(let o of C.values())e.reset(o);}function q(){for(let[e,o]of S)A(e,o);S.clear(),C.clear(),c=void 0;}var R={createMockFn(e,o){let t=e?vitest.vi.fn(e):vitest.vi.fn();return o!==void 0&&t.mockName(o),t},spyOnGetter(e,o){return vitest.vi.spyOn(e,o,"get")},spyOnSetter(e,o){return vitest.vi.spyOn(e,o,"set")},getCalls(e){return e.mock.calls},reset(e){e.mockReset();}};b()||k(R);var {consoleDebugSpy:ge,consoleErrorSpy:Me,consoleInfoSpy:ke,consoleLogSpy:be,consoleTimeEndSpy:he,consoleTimeSpy:we,consoleTraceSpy:je,consoleWarnSpy:Te}=g();exports.consoleDebugSpy=ge;exports.consoleErrorSpy=Me;exports.consoleInfoSpy=ke;exports.consoleLogSpy=be;exports.consoleTimeEndSpy=he;exports.consoleTimeSpy=we;exports.consoleTraceSpy=je;exports.consoleWarnSpy=Te;exports.installConsoleSpies=g;exports.resetConsoleSpies=N;exports.restoreConsole=q;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { i as AddSpyMethodsByReturnTypes } from './types-C84-zP_V.cjs';
|
|
2
|
+
import 'rxjs';
|
|
3
|
+
import 'vitest';
|
|
4
|
+
|
|
5
|
+
/** The call shape shared by every spied console method. */
|
|
6
|
+
type ConsoleMethodFn = (...data: unknown[]) => void;
|
|
7
|
+
/** A spy standing in for one `console` method: silent, with all sync helpers attached. */
|
|
8
|
+
type ConsoleMethodSpy = AddSpyMethodsByReturnTypes<ConsoleMethodFn>;
|
|
9
|
+
/** The bag of installed console spies, one per spied method. */
|
|
10
|
+
interface ConsoleSpies {
|
|
11
|
+
consoleDebugSpy: ConsoleMethodSpy;
|
|
12
|
+
consoleErrorSpy: ConsoleMethodSpy;
|
|
13
|
+
consoleInfoSpy: ConsoleMethodSpy;
|
|
14
|
+
consoleLogSpy: ConsoleMethodSpy;
|
|
15
|
+
consoleTimeEndSpy: ConsoleMethodSpy;
|
|
16
|
+
consoleTimeSpy: ConsoleMethodSpy;
|
|
17
|
+
consoleTraceSpy: ConsoleMethodSpy;
|
|
18
|
+
consoleWarnSpy: ConsoleMethodSpy;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Replace the spied console methods with silent typed spies. Idempotent:
|
|
22
|
+
* repeated calls return the already-installed bag.
|
|
23
|
+
*/
|
|
24
|
+
declare function installConsoleSpies(): ConsoleSpies;
|
|
25
|
+
/** Clear the recorded calls of every installed console spy (the spies stay installed). */
|
|
26
|
+
declare function resetConsoleSpies(): void;
|
|
27
|
+
/** Put the original console methods back and forget the installed spies. */
|
|
28
|
+
declare function restoreConsole(): void;
|
|
29
|
+
|
|
30
|
+
declare const consoleDebugSpy: ConsoleMethodSpy;
|
|
31
|
+
declare const consoleErrorSpy: ConsoleMethodSpy;
|
|
32
|
+
declare const consoleInfoSpy: ConsoleMethodSpy;
|
|
33
|
+
declare const consoleLogSpy: ConsoleMethodSpy;
|
|
34
|
+
declare const consoleTimeEndSpy: ConsoleMethodSpy;
|
|
35
|
+
declare const consoleTimeSpy: ConsoleMethodSpy;
|
|
36
|
+
declare const consoleTraceSpy: ConsoleMethodSpy;
|
|
37
|
+
declare const consoleWarnSpy: ConsoleMethodSpy;
|
|
38
|
+
|
|
39
|
+
export { type ConsoleMethodSpy, type ConsoleSpies, consoleDebugSpy, consoleErrorSpy, consoleInfoSpy, consoleLogSpy, consoleTimeEndSpy, consoleTimeSpy, consoleTraceSpy, consoleWarnSpy, installConsoleSpies, resetConsoleSpies, restoreConsole };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { i as AddSpyMethodsByReturnTypes } from './types-C84-zP_V.js';
|
|
2
|
+
import 'rxjs';
|
|
3
|
+
import 'vitest';
|
|
4
|
+
|
|
5
|
+
/** The call shape shared by every spied console method. */
|
|
6
|
+
type ConsoleMethodFn = (...data: unknown[]) => void;
|
|
7
|
+
/** A spy standing in for one `console` method: silent, with all sync helpers attached. */
|
|
8
|
+
type ConsoleMethodSpy = AddSpyMethodsByReturnTypes<ConsoleMethodFn>;
|
|
9
|
+
/** The bag of installed console spies, one per spied method. */
|
|
10
|
+
interface ConsoleSpies {
|
|
11
|
+
consoleDebugSpy: ConsoleMethodSpy;
|
|
12
|
+
consoleErrorSpy: ConsoleMethodSpy;
|
|
13
|
+
consoleInfoSpy: ConsoleMethodSpy;
|
|
14
|
+
consoleLogSpy: ConsoleMethodSpy;
|
|
15
|
+
consoleTimeEndSpy: ConsoleMethodSpy;
|
|
16
|
+
consoleTimeSpy: ConsoleMethodSpy;
|
|
17
|
+
consoleTraceSpy: ConsoleMethodSpy;
|
|
18
|
+
consoleWarnSpy: ConsoleMethodSpy;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Replace the spied console methods with silent typed spies. Idempotent:
|
|
22
|
+
* repeated calls return the already-installed bag.
|
|
23
|
+
*/
|
|
24
|
+
declare function installConsoleSpies(): ConsoleSpies;
|
|
25
|
+
/** Clear the recorded calls of every installed console spy (the spies stay installed). */
|
|
26
|
+
declare function resetConsoleSpies(): void;
|
|
27
|
+
/** Put the original console methods back and forget the installed spies. */
|
|
28
|
+
declare function restoreConsole(): void;
|
|
29
|
+
|
|
30
|
+
declare const consoleDebugSpy: ConsoleMethodSpy;
|
|
31
|
+
declare const consoleErrorSpy: ConsoleMethodSpy;
|
|
32
|
+
declare const consoleInfoSpy: ConsoleMethodSpy;
|
|
33
|
+
declare const consoleLogSpy: ConsoleMethodSpy;
|
|
34
|
+
declare const consoleTimeEndSpy: ConsoleMethodSpy;
|
|
35
|
+
declare const consoleTimeSpy: ConsoleMethodSpy;
|
|
36
|
+
declare const consoleTraceSpy: ConsoleMethodSpy;
|
|
37
|
+
declare const consoleWarnSpy: ConsoleMethodSpy;
|
|
38
|
+
|
|
39
|
+
export { type ConsoleMethodSpy, type ConsoleSpies, consoleDebugSpy, consoleErrorSpy, consoleInfoSpy, consoleLogSpy, consoleTimeEndSpy, consoleTimeSpy, consoleTraceSpy, consoleWarnSpy, installConsoleSpies, resetConsoleSpies, restoreConsole };
|
package/dist/console.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {a as a$2}from'./chunk-6LFQMHSX.js';import {b as b$1,a as a$1,e,c}from'./chunk-PEAFUJBQ.js';import'./chunk-7IUYJ6ZW.js';var t=new Map,p=new Map,s;function a(o){return console[o]}function y(o,e){console[o]=e;}function n(o){t.set(o,a(o));let e$1=e(`console.${o}`);return y(o,e$1),p.set(o,e$1),e$1}function l(){return s||(s={consoleDebugSpy:n("debug"),consoleErrorSpy:n("error"),consoleInfoSpy:n("info"),consoleLogSpy:n("log"),consoleTimeEndSpy:n("timeEnd"),consoleTimeSpy:n("time"),consoleTraceSpy:n("trace"),consoleWarnSpy:n("warn")},s)}function C(){let o=c();for(let e of p.values())o.reset(e);}function M(){for(let[o,e]of t)y(o,e);t.clear(),p.clear(),s=void 0;}b$1()||a$1(a$2);var {consoleDebugSpy:x,consoleErrorSpy:E,consoleInfoSpy:F,consoleLogSpy:v,consoleTimeEndSpy:b,consoleTimeSpy:A,consoleTraceSpy:k,consoleWarnSpy:w}=l();export{x as consoleDebugSpy,E as consoleErrorSpy,F as consoleInfoSpy,v as consoleLogSpy,b as consoleTimeEndSpy,A as consoleTimeSpy,k as consoleTraceSpy,w as consoleWarnSpy,l as installConsoleSpies,C as resetConsoleSpies,M as restoreConsole};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var vitest=require('vitest');var g;function S(e){g=e;}var V="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function d(){if(!g)throw new Error(V);return g}var w={createMockFn(e,t){let r=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&r.mockName(t),r},spyOnGetter(e,t){return vitest.vi.spyOn(e,t,"get")},spyOnSetter(e,t){return vitest.vi.spyOn(e,t,"set")},getCalls(e){return e.mock.calls},reset(e){e.mockReset();}};function
|
|
1
|
+
'use strict';var vitest=require('vitest');var g;function S(e){g=e;}var V="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function d(){if(!g)throw new Error(V);return g}var w={createMockFn(e,t){let r=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&r.mockName(t),r},spyOnGetter(e,t){return vitest.vi.spyOn(e,t,"get")},spyOnSetter(e,t){return vitest.vi.spyOn(e,t,"set")},getCalls(e){return e.mock.calls},reset(e){e.mockReset();}};function h(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function O(e,t,r){let o=d();return r==="setter"?o.spyOnSetter(e,t):o.spyOnGetter(e,t)}function T(e,t,r){let o={getters:{},setters:{}};e.accessorSpies=o,t.forEach(n=>{h(e,n),o.getters[n]=O(e,n,"getter");}),r.forEach(n=>{Object.prototype.hasOwnProperty.call(e,n)||h(e,n),o.setters[n]=O(e,n,"setter");});}function W(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function E(e,t){return Object.entries(e).map(([r,o])=>`${r}:${i(o,t)}`).join(",")}function _(e,t){return `new Map([${[...e.entries()].map(([o,n])=>`[${i(o,t)},${i(n,t)}]`).join(",")}])`}function H(e,t){if(t.has(e))return "[Circular]";t.add(e);let r;return e instanceof Date?r=`new Date(${e.getTime()})`:e instanceof Map?r=_(e,t):e instanceof Set?r=`new Set([${[...e].map(o=>i(o,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(o=>i(o,t)).join(",")}]`:r=`{${E(e,t)}}`,t.delete(e),r}function i(e,t=new WeakSet){return typeof e=="string"?W(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?H(e,t):Object.is(e,-0)?"-0":String(e)}var y=class{#e={};set(t,r){this.#e[this.#t(t)]=r;}get(t){return this.#e[this.#t(t)]}#t(t){return i(t)}};var $=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,z="But the function was called without any arguments.",B=e=>{let t=i(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},m={throwArgumentsError(e,t){let r=e.length===0?z:B(e);throw new Error($(t)+r)}};var I="Observable spies require rxjs. Import 'vitest-auto-spy/rxjs' once (e.g. in your test setup) to enable observablePropsToSpyOn / nextWith / nextWithValues / throwWith / complete / returnSubject.";function M(){throw new Error(I);}function c(e,t){return Object.assign(e,t)}function G(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(r=>setTimeout(()=>r(t.value),t.delay))}))}function j(e,t){c(e,{resolveWith:r=>{t({value:Promise.resolve(r)});},rejectWith:r=>{t({value:r,_isRejectedPromise:true});},resolveWithPerCall:r=>{r.length!==0&&t({value:void 0,valuesPerCalls:G(r)});}});}function C(e,t){j(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function v(e,t){j(e,r=>{e.argsToValuesMap.set(t,r);});}function K(e){return typeof e=="object"&&e!==null&&"value"in e}function A(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function F(e,t){let r=e.argsToValuesMap.get(t);return K(r)?{found:true,value:A(r)}:{found:false,value:void 0}}function D(e,t,r,o,n){if(e.wasConfigured){let s=F(e,o);if(s.found)return s.value}if(t.wasConfigured){let s=F(t,o);if(s.found)return s.value;m.throwArgumentsError(o,n);}return A(r)}function P(e,t){return e.wasConfigured=true,c(e,{mockReturnValue:r=>{e.argsToValuesMap.set(t,{value:r});}}),v(e,t),e}function R(){return {wasConfigured:false,argsToValuesMap:new y}}function a(e){let t=R(),r=R(),o={value:void 0},n=d().createMockFn((...u)=>D(t,r,o,u,e),e);C(n,o);let s=c(n,{calledWith:(...u)=>P(t,u),mustBeCalledWith:(...u)=>P(r,u)});return s}var x={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function q(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(r=>r!=="constructor"&&!t[r]?.get)}function U(e){let t=new Set,r=e;for(;r;){let o=Object.getPrototypeOf(r);o&&q(r).forEach(n=>t.add(n)),r=o;}return [...t]}function L(e){return e?Array.isArray(e)?{...x,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[]}:{...x}}function N(e,t){let{methodsToSpyOn:r,observablePropsToSpyOn:o,settersToSpyOn:n,gettersToSpyOn:s}=L(t),u=r.length>0?r:U(e.prototype),p={};return o.forEach(l=>{p[l]=M().createPropSpy();}),T(p,s,n),u.forEach(l=>{p[l]=a(l);}),p}function J(e={}){let t=new Map;for(let o of Reflect.ownKeys(e))t.set(o,Reflect.get(e,o));let r={get(o,n){if(t.has(n))return t.get(n);if(typeof n=="symbol"||n==="then"||n==="constructor")return;let s=a(String(n));return t.set(n,s),s},set(o,n,s){return t.set(n,s),true},has(o,n){return t.has(n)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(o,n){if(t.has(n))return {configurable:true,enumerable:true,value:t.get(n),writable:true}}};return new Proxy({},r)}S(w);exports.createAutoMock=J;exports.createFunctionSpy=a;exports.createSpyFromClass=N;exports.errorHandler=m;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-BCLT4UUA.js';export{a as createSpyFromClass}from'./chunk-CUVWIHH5.js';import {a}from'./chunk-PEAFUJBQ.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-PEAFUJBQ.js';import'./chunk-7IUYJ6ZW.js';a(a$1);
|
package/dist/nestjs.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var vitest=require('vitest');var y;function b(e){y=e;}var W="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function l(){if(!y)throw new Error(W);return y}var k={createMockFn(e,t){let r=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&r.mockName(t),r},spyOnGetter(e,t){return vitest.vi.spyOn(e,t,"get")},spyOnSetter(e,t){return vitest.vi.spyOn(e,t,"set")},getCalls(e){return e.mock.calls},reset(e){e.mockReset();}};function S(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function T(e,t,r){let n=l();return r==="setter"?n.spyOnSetter(e,t):n.spyOnGetter(e,t)}function O(e,t,r){let n={getters:{},setters:{}};e.accessorSpies=n,t.forEach(o=>{S(e,o),n.getters[o]=T(e,o,"getter");}),r.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||S(e,o),n.setters[o]=T(e,o,"setter");});}function E(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function _(e,t){return Object.entries(e).map(([r,n])=>`${r}:${i(n,t)}`).join(",")}function $(e,t){return `new Map([${[...e.entries()].map(([n,o])=>`[${i(n,t)},${i(o,t)}]`).join(",")}])`}function H(e,t){if(t.has(e))return "[Circular]";t.add(e);let r;return e instanceof Date?r=`new Date(${e.getTime()})`:e instanceof Map?r=$(e,t):e instanceof Set?r=`new Set([${[...e].map(n=>i(n,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(n=>i(n,t)).join(",")}]`:r=`{${_(e,t)}}`,t.delete(e),r}function i(e,t=new WeakSet){return typeof e=="string"?E(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?H(e,t):Object.is(e,-0)?"-0":String(e)}var f=class{#e={};set(t,r){this.#e[this.#t(t)]=r;}get(t){return this.#e[this.#t(t)]}#t(t){return i(t)}};var z=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,B="But the function was called without any arguments.",I=e=>{let t=i(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},C={throwArgumentsError(e,t){let r=e.length===0?B:I(e);throw new Error(z(t)+r)}};var N="Observable spies require rxjs. Import 'vitest-auto-spy/rxjs' once (e.g. in your test setup) to enable observablePropsToSpyOn / nextWith / nextWithValues / throwWith / complete / returnSubject.";function w(){throw new Error(N);}function
|
|
1
|
+
'use strict';var vitest=require('vitest');var y;function b(e){y=e;}var W="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function l(){if(!y)throw new Error(W);return y}var k={createMockFn(e,t){let r=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&r.mockName(t),r},spyOnGetter(e,t){return vitest.vi.spyOn(e,t,"get")},spyOnSetter(e,t){return vitest.vi.spyOn(e,t,"set")},getCalls(e){return e.mock.calls},reset(e){e.mockReset();}};function S(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function T(e,t,r){let n=l();return r==="setter"?n.spyOnSetter(e,t):n.spyOnGetter(e,t)}function O(e,t,r){let n={getters:{},setters:{}};e.accessorSpies=n,t.forEach(o=>{S(e,o),n.getters[o]=T(e,o,"getter");}),r.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||S(e,o),n.setters[o]=T(e,o,"setter");});}function E(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function _(e,t){return Object.entries(e).map(([r,n])=>`${r}:${i(n,t)}`).join(",")}function $(e,t){return `new Map([${[...e.entries()].map(([n,o])=>`[${i(n,t)},${i(o,t)}]`).join(",")}])`}function H(e,t){if(t.has(e))return "[Circular]";t.add(e);let r;return e instanceof Date?r=`new Date(${e.getTime()})`:e instanceof Map?r=$(e,t):e instanceof Set?r=`new Set([${[...e].map(n=>i(n,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(n=>i(n,t)).join(",")}]`:r=`{${_(e,t)}}`,t.delete(e),r}function i(e,t=new WeakSet){return typeof e=="string"?E(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?H(e,t):Object.is(e,-0)?"-0":String(e)}var f=class{#e={};set(t,r){this.#e[this.#t(t)]=r;}get(t){return this.#e[this.#t(t)]}#t(t){return i(t)}};var z=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,B="But the function was called without any arguments.",I=e=>{let t=i(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},C={throwArgumentsError(e,t){let r=e.length===0?B:I(e);throw new Error(z(t)+r)}};var N="Observable spies require rxjs. Import 'vitest-auto-spy/rxjs' once (e.g. in your test setup) to enable observablePropsToSpyOn / nextWith / nextWithValues / throwWith / complete / returnSubject.";function w(){throw new Error(N);}function p(e,t){return Object.assign(e,t)}function G(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(r=>setTimeout(()=>r(t.value),t.delay))}))}function h(e,t){p(e,{resolveWith:r=>{t({value:Promise.resolve(r)});},rejectWith:r=>{t({value:r,_isRejectedPromise:true});},resolveWithPerCall:r=>{r.length!==0&&t({value:void 0,valuesPerCalls:G(r)});}});}function j(e,t){h(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function M(e,t){h(e,r=>{e.argsToValuesMap.set(t,r);});}function K(e){return typeof e=="object"&&e!==null&&"value"in e}function P(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function v(e,t){let r=e.argsToValuesMap.get(t);return K(r)?{found:true,value:P(r)}:{found:false,value:void 0}}function D(e,t,r,n,o){if(e.wasConfigured){let s=v(e,n);if(s.found)return s.value}if(t.wasConfigured){let s=v(t,n);if(s.found)return s.value;C.throwArgumentsError(n,o);}return P(r)}function F(e,t){return e.wasConfigured=true,p(e,{mockReturnValue:r=>{e.argsToValuesMap.set(t,{value:r});}}),M(e,t),e}function A(){return {wasConfigured:false,argsToValuesMap:new f}}function R(e){let t=A(),r=A(),n={value:void 0},o=l().createMockFn((...u)=>D(t,r,n,u,e),e);j(o,n);let s=p(o,{calledWith:(...u)=>F(t,u),mustBeCalledWith:(...u)=>F(r,u)});return s}var x={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function q(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(r=>r!=="constructor"&&!t[r]?.get)}function U(e){let t=new Set,r=e;for(;r;){let n=Object.getPrototypeOf(r);n&&q(r).forEach(o=>t.add(o)),r=n;}return [...t]}function L(e){return e?Array.isArray(e)?{...x,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[]}:{...x}}function V(e,t){let{methodsToSpyOn:r,observablePropsToSpyOn:n,settersToSpyOn:o,gettersToSpyOn:s}=L(t),u=r.length>0?r:U(e.prototype),a={};return n.forEach(c=>{a[c]=w().createPropSpy();}),O(a,s,o),u.forEach(c=>{a[c]=R(c);}),a}function J(e,t){return {provide:e,useValue:V(e,t)}}function X(e,t){return e.get(t)}b(k);exports.injectSpy=X;exports.provideAutoSpy=J;
|
package/dist/nestjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-6LFQMHSX.js';import {a
|
|
1
|
+
import {a as a$1}from'./chunk-6LFQMHSX.js';import {a as a$2}from'./chunk-CUVWIHH5.js';import {a}from'./chunk-PEAFUJBQ.js';import'./chunk-7IUYJ6ZW.js';function s(e,t){return {provide:e,useValue:a$2(e,t)}}function n(e,t){return e.get(t)}a(a$1);export{n as injectSpy,s as provideAutoSpy};
|
package/dist/node.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-IPBQZ4JC.js';export{a as createAutoMock}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-IPBQZ4JC.js';export{a as createAutoMock}from'./chunk-BCLT4UUA.js';export{a as createSpyFromClass}from'./chunk-CUVWIHH5.js';import {a}from'./chunk-PEAFUJBQ.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-PEAFUJBQ.js';import'./chunk-7IUYJ6ZW.js';import {mock}from'node:test';function t(n){return a$1({createMockFn:e=>n.fn(e??(()=>{})),getCalls:e=>e.mock.calls.map(c=>c.arguments),reset:e=>e.mock.resetCalls()})}a(t(mock));
|
package/dist/react.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var vitest=require('vitest');var g;function S(e){g=e;}var V="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function d(){if(!g)throw new Error(V);return g}var w={createMockFn(e,t){let r=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&r.mockName(t),r},spyOnGetter(e,t){return vitest.vi.spyOn(e,t,"get")},spyOnSetter(e,t){return vitest.vi.spyOn(e,t,"set")},getCalls(e){return e.mock.calls},reset(e){e.mockReset();}};function
|
|
1
|
+
'use strict';var vitest=require('vitest');var g;function S(e){g=e;}var V="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function d(){if(!g)throw new Error(V);return g}var w={createMockFn(e,t){let r=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&r.mockName(t),r},spyOnGetter(e,t){return vitest.vi.spyOn(e,t,"get")},spyOnSetter(e,t){return vitest.vi.spyOn(e,t,"set")},getCalls(e){return e.mock.calls},reset(e){e.mockReset();}};function h(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function O(e,t,r){let o=d();return r==="setter"?o.spyOnSetter(e,t):o.spyOnGetter(e,t)}function T(e,t,r){let o={getters:{},setters:{}};e.accessorSpies=o,t.forEach(n=>{h(e,n),o.getters[n]=O(e,n,"getter");}),r.forEach(n=>{Object.prototype.hasOwnProperty.call(e,n)||h(e,n),o.setters[n]=O(e,n,"setter");});}function W(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function E(e,t){return Object.entries(e).map(([r,o])=>`${r}:${i(o,t)}`).join(",")}function _(e,t){return `new Map([${[...e.entries()].map(([o,n])=>`[${i(o,t)},${i(n,t)}]`).join(",")}])`}function H(e,t){if(t.has(e))return "[Circular]";t.add(e);let r;return e instanceof Date?r=`new Date(${e.getTime()})`:e instanceof Map?r=_(e,t):e instanceof Set?r=`new Set([${[...e].map(o=>i(o,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(o=>i(o,t)).join(",")}]`:r=`{${E(e,t)}}`,t.delete(e),r}function i(e,t=new WeakSet){return typeof e=="string"?W(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?H(e,t):Object.is(e,-0)?"-0":String(e)}var y=class{#e={};set(t,r){this.#e[this.#t(t)]=r;}get(t){return this.#e[this.#t(t)]}#t(t){return i(t)}};var $=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,z="But the function was called without any arguments.",B=e=>{let t=i(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},m={throwArgumentsError(e,t){let r=e.length===0?z:B(e);throw new Error($(t)+r)}};var I="Observable spies require rxjs. Import 'vitest-auto-spy/rxjs' once (e.g. in your test setup) to enable observablePropsToSpyOn / nextWith / nextWithValues / throwWith / complete / returnSubject.";function M(){throw new Error(I);}function c(e,t){return Object.assign(e,t)}function G(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(r=>setTimeout(()=>r(t.value),t.delay))}))}function j(e,t){c(e,{resolveWith:r=>{t({value:Promise.resolve(r)});},rejectWith:r=>{t({value:r,_isRejectedPromise:true});},resolveWithPerCall:r=>{r.length!==0&&t({value:void 0,valuesPerCalls:G(r)});}});}function C(e,t){j(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function v(e,t){j(e,r=>{e.argsToValuesMap.set(t,r);});}function K(e){return typeof e=="object"&&e!==null&&"value"in e}function A(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function F(e,t){let r=e.argsToValuesMap.get(t);return K(r)?{found:true,value:A(r)}:{found:false,value:void 0}}function D(e,t,r,o,n){if(e.wasConfigured){let s=F(e,o);if(s.found)return s.value}if(t.wasConfigured){let s=F(t,o);if(s.found)return s.value;m.throwArgumentsError(o,n);}return A(r)}function P(e,t){return e.wasConfigured=true,c(e,{mockReturnValue:r=>{e.argsToValuesMap.set(t,{value:r});}}),v(e,t),e}function R(){return {wasConfigured:false,argsToValuesMap:new y}}function a(e){let t=R(),r=R(),o={value:void 0},n=d().createMockFn((...u)=>D(t,r,o,u,e),e);C(n,o);let s=c(n,{calledWith:(...u)=>P(t,u),mustBeCalledWith:(...u)=>P(r,u)});return s}var x={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function q(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(r=>r!=="constructor"&&!t[r]?.get)}function U(e){let t=new Set,r=e;for(;r;){let o=Object.getPrototypeOf(r);o&&q(r).forEach(n=>t.add(n)),r=o;}return [...t]}function L(e){return e?Array.isArray(e)?{...x,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[]}:{...x}}function N(e,t){let{methodsToSpyOn:r,observablePropsToSpyOn:o,settersToSpyOn:n,gettersToSpyOn:s}=L(t),u=r.length>0?r:U(e.prototype),p={};return o.forEach(l=>{p[l]=M().createPropSpy();}),T(p,s,n),u.forEach(l=>{p[l]=a(l);}),p}function J(e={}){let t=new Map;for(let o of Reflect.ownKeys(e))t.set(o,Reflect.get(e,o));let r={get(o,n){if(t.has(n))return t.get(n);if(typeof n=="symbol"||n==="then"||n==="constructor")return;let s=a(String(n));return t.set(n,s),s},set(o,n,s){return t.set(n,s),true},has(o,n){return t.has(n)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(o,n){if(t.has(n))return {configurable:true,enumerable:true,value:t.get(n),writable:true}}};return new Proxy({},r)}S(w);exports.createAutoMock=J;exports.createFunctionSpy=a;exports.createSpyFromClass=N;exports.errorHandler=m;
|
package/dist/react.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-BCLT4UUA.js';export{a as createSpyFromClass}from'./chunk-CUVWIHH5.js';import {a}from'./chunk-PEAFUJBQ.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-PEAFUJBQ.js';import'./chunk-7IUYJ6ZW.js';a(a$1);
|
package/dist/svelte.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var vitest=require('vitest');var g;function S(e){g=e;}var V="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function d(){if(!g)throw new Error(V);return g}var w={createMockFn(e,t){let r=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&r.mockName(t),r},spyOnGetter(e,t){return vitest.vi.spyOn(e,t,"get")},spyOnSetter(e,t){return vitest.vi.spyOn(e,t,"set")},getCalls(e){return e.mock.calls},reset(e){e.mockReset();}};function
|
|
1
|
+
'use strict';var vitest=require('vitest');var g;function S(e){g=e;}var V="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function d(){if(!g)throw new Error(V);return g}var w={createMockFn(e,t){let r=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&r.mockName(t),r},spyOnGetter(e,t){return vitest.vi.spyOn(e,t,"get")},spyOnSetter(e,t){return vitest.vi.spyOn(e,t,"set")},getCalls(e){return e.mock.calls},reset(e){e.mockReset();}};function h(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function O(e,t,r){let o=d();return r==="setter"?o.spyOnSetter(e,t):o.spyOnGetter(e,t)}function T(e,t,r){let o={getters:{},setters:{}};e.accessorSpies=o,t.forEach(n=>{h(e,n),o.getters[n]=O(e,n,"getter");}),r.forEach(n=>{Object.prototype.hasOwnProperty.call(e,n)||h(e,n),o.setters[n]=O(e,n,"setter");});}function W(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function E(e,t){return Object.entries(e).map(([r,o])=>`${r}:${i(o,t)}`).join(",")}function _(e,t){return `new Map([${[...e.entries()].map(([o,n])=>`[${i(o,t)},${i(n,t)}]`).join(",")}])`}function H(e,t){if(t.has(e))return "[Circular]";t.add(e);let r;return e instanceof Date?r=`new Date(${e.getTime()})`:e instanceof Map?r=_(e,t):e instanceof Set?r=`new Set([${[...e].map(o=>i(o,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(o=>i(o,t)).join(",")}]`:r=`{${E(e,t)}}`,t.delete(e),r}function i(e,t=new WeakSet){return typeof e=="string"?W(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?H(e,t):Object.is(e,-0)?"-0":String(e)}var y=class{#e={};set(t,r){this.#e[this.#t(t)]=r;}get(t){return this.#e[this.#t(t)]}#t(t){return i(t)}};var $=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,z="But the function was called without any arguments.",B=e=>{let t=i(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},m={throwArgumentsError(e,t){let r=e.length===0?z:B(e);throw new Error($(t)+r)}};var I="Observable spies require rxjs. Import 'vitest-auto-spy/rxjs' once (e.g. in your test setup) to enable observablePropsToSpyOn / nextWith / nextWithValues / throwWith / complete / returnSubject.";function M(){throw new Error(I);}function c(e,t){return Object.assign(e,t)}function G(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(r=>setTimeout(()=>r(t.value),t.delay))}))}function j(e,t){c(e,{resolveWith:r=>{t({value:Promise.resolve(r)});},rejectWith:r=>{t({value:r,_isRejectedPromise:true});},resolveWithPerCall:r=>{r.length!==0&&t({value:void 0,valuesPerCalls:G(r)});}});}function C(e,t){j(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function v(e,t){j(e,r=>{e.argsToValuesMap.set(t,r);});}function K(e){return typeof e=="object"&&e!==null&&"value"in e}function A(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function F(e,t){let r=e.argsToValuesMap.get(t);return K(r)?{found:true,value:A(r)}:{found:false,value:void 0}}function D(e,t,r,o,n){if(e.wasConfigured){let s=F(e,o);if(s.found)return s.value}if(t.wasConfigured){let s=F(t,o);if(s.found)return s.value;m.throwArgumentsError(o,n);}return A(r)}function P(e,t){return e.wasConfigured=true,c(e,{mockReturnValue:r=>{e.argsToValuesMap.set(t,{value:r});}}),v(e,t),e}function R(){return {wasConfigured:false,argsToValuesMap:new y}}function a(e){let t=R(),r=R(),o={value:void 0},n=d().createMockFn((...u)=>D(t,r,o,u,e),e);C(n,o);let s=c(n,{calledWith:(...u)=>P(t,u),mustBeCalledWith:(...u)=>P(r,u)});return s}var x={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function q(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(r=>r!=="constructor"&&!t[r]?.get)}function U(e){let t=new Set,r=e;for(;r;){let o=Object.getPrototypeOf(r);o&&q(r).forEach(n=>t.add(n)),r=o;}return [...t]}function L(e){return e?Array.isArray(e)?{...x,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[]}:{...x}}function N(e,t){let{methodsToSpyOn:r,observablePropsToSpyOn:o,settersToSpyOn:n,gettersToSpyOn:s}=L(t),u=r.length>0?r:U(e.prototype),p={};return o.forEach(l=>{p[l]=M().createPropSpy();}),T(p,s,n),u.forEach(l=>{p[l]=a(l);}),p}function J(e={}){let t=new Map;for(let o of Reflect.ownKeys(e))t.set(o,Reflect.get(e,o));let r={get(o,n){if(t.has(n))return t.get(n);if(typeof n=="symbol"||n==="then"||n==="constructor")return;let s=a(String(n));return t.set(n,s),s},set(o,n,s){return t.set(n,s),true},has(o,n){return t.has(n)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(o,n){if(t.has(n))return {configurable:true,enumerable:true,value:t.get(n),writable:true}}};return new Proxy({},r)}S(w);exports.createAutoMock=J;exports.createFunctionSpy=a;exports.createSpyFromClass=N;exports.errorHandler=m;
|
package/dist/svelte.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-BCLT4UUA.js';export{a as createSpyFromClass}from'./chunk-CUVWIHH5.js';import {a}from'./chunk-PEAFUJBQ.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-PEAFUJBQ.js';import'./chunk-7IUYJ6ZW.js';a(a$1);
|
package/dist/vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var vitest=require('vitest');var g;function T(e){g=e;}var W="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function d(){if(!g)throw new Error(W);return g}var w={createMockFn(e,t){let r=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&r.mockName(t),r},spyOnGetter(e,t){return vitest.vi.spyOn(e,t,"get")},spyOnSetter(e,t){return vitest.vi.spyOn(e,t,"set")},getCalls(e){return e.mock.calls},reset(e){e.mockReset();}};function O(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function h(e,t,r){let o=d();return r==="setter"?o.spyOnSetter(e,t):o.spyOnGetter(e,t)}function C(e,t,r){let o={getters:{},setters:{}};e.accessorSpies=o,t.forEach(n=>{O(e,n),o.getters[n]=h(e,n,"getter");}),r.forEach(n=>{Object.prototype.hasOwnProperty.call(e,n)||O(e,n),o.setters[n]=h(e,n,"setter");});}function E(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function _(e,t){return Object.entries(e).map(([r,o])=>`${r}:${i(o,t)}`).join(",")}function H(e,t){return `new Map([${[...e.entries()].map(([o,n])=>`[${i(o,t)},${i(n,t)}]`).join(",")}])`}function $(e,t){if(t.has(e))return "[Circular]";t.add(e);let r;return e instanceof Date?r=`new Date(${e.getTime()})`:e instanceof Map?r=H(e,t):e instanceof Set?r=`new Set([${[...e].map(o=>i(o,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(o=>i(o,t)).join(",")}]`:r=`{${_(e,t)}}`,t.delete(e),r}function i(e,t=new WeakSet){return typeof e=="string"?E(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?$(e,t):Object.is(e,-0)?"-0":String(e)}var y=class{#e={};set(t,r){this.#e[this.#t(t)]=r;}get(t){return this.#e[this.#t(t)]}#t(t){return i(t)}};var I=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,z="But the function was called without any arguments.",K=e=>{let t=i(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},m={throwArgumentsError(e,t){let r=e.length===0?z:K(e);throw new Error(I(t)+r)}};var B="Observable spies require rxjs. Import 'vitest-auto-spy/rxjs' once (e.g. in your test setup) to enable observablePropsToSpyOn / nextWith / nextWithValues / throwWith / complete / returnSubject.";function j(){throw new Error(B);}function p(e,t){return Object.assign(e,t)}function G(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(r=>setTimeout(()=>r(t.value),t.delay))}))}function M(e,t){p(e,{resolveWith:r=>{t({value:Promise.resolve(r)});},rejectWith:r=>{t({value:r,_isRejectedPromise:true});},resolveWithPerCall:r=>{r.length!==0&&t({value:void 0,valuesPerCalls:G(r)});}});}function v(e,t){M(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function F(e,t){M(e,r=>{e.argsToValuesMap.set(t,r);});}function D(e){return typeof e=="object"&&e!==null&&"value"in e}function
|
|
1
|
+
'use strict';var vitest=require('vitest');var g;function T(e){g=e;}var W="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function d(){if(!g)throw new Error(W);return g}var w={createMockFn(e,t){let r=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&r.mockName(t),r},spyOnGetter(e,t){return vitest.vi.spyOn(e,t,"get")},spyOnSetter(e,t){return vitest.vi.spyOn(e,t,"set")},getCalls(e){return e.mock.calls},reset(e){e.mockReset();}};function O(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function h(e,t,r){let o=d();return r==="setter"?o.spyOnSetter(e,t):o.spyOnGetter(e,t)}function C(e,t,r){let o={getters:{},setters:{}};e.accessorSpies=o,t.forEach(n=>{O(e,n),o.getters[n]=h(e,n,"getter");}),r.forEach(n=>{Object.prototype.hasOwnProperty.call(e,n)||O(e,n),o.setters[n]=h(e,n,"setter");});}function E(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function _(e,t){return Object.entries(e).map(([r,o])=>`${r}:${i(o,t)}`).join(",")}function H(e,t){return `new Map([${[...e.entries()].map(([o,n])=>`[${i(o,t)},${i(n,t)}]`).join(",")}])`}function $(e,t){if(t.has(e))return "[Circular]";t.add(e);let r;return e instanceof Date?r=`new Date(${e.getTime()})`:e instanceof Map?r=H(e,t):e instanceof Set?r=`new Set([${[...e].map(o=>i(o,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(o=>i(o,t)).join(",")}]`:r=`{${_(e,t)}}`,t.delete(e),r}function i(e,t=new WeakSet){return typeof e=="string"?E(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?$(e,t):Object.is(e,-0)?"-0":String(e)}var y=class{#e={};set(t,r){this.#e[this.#t(t)]=r;}get(t){return this.#e[this.#t(t)]}#t(t){return i(t)}};var I=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,z="But the function was called without any arguments.",K=e=>{let t=i(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},m={throwArgumentsError(e,t){let r=e.length===0?z:K(e);throw new Error(I(t)+r)}};var B="Observable spies require rxjs. Import 'vitest-auto-spy/rxjs' once (e.g. in your test setup) to enable observablePropsToSpyOn / nextWith / nextWithValues / throwWith / complete / returnSubject.";function j(){throw new Error(B);}function p(e,t){return Object.assign(e,t)}function G(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(r=>setTimeout(()=>r(t.value),t.delay))}))}function M(e,t){p(e,{resolveWith:r=>{t({value:Promise.resolve(r)});},rejectWith:r=>{t({value:r,_isRejectedPromise:true});},resolveWithPerCall:r=>{r.length!==0&&t({value:void 0,valuesPerCalls:G(r)});}});}function v(e,t){M(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function F(e,t){M(e,r=>{e.argsToValuesMap.set(t,r);});}function D(e){return typeof e=="object"&&e!==null&&"value"in e}function R(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function P(e,t){let r=e.argsToValuesMap.get(t);return D(r)?{found:true,value:R(r)}:{found:false,value:void 0}}function q(e,t,r,o,n){if(e.wasConfigured){let s=P(e,o);if(s.found)return s.value}if(t.wasConfigured){let s=P(t,o);if(s.found)return s.value;m.throwArgumentsError(o,n);}return R(r)}function x(e,t){return e.wasConfigured=true,p(e,{mockReturnValue:r=>{e.argsToValuesMap.set(t,{value:r});}}),F(e,t),e}function A(){return {wasConfigured:false,argsToValuesMap:new y}}function a(e){let t=A(),r=A(),o={value:void 0},n=d().createMockFn((...u)=>q(t,r,o,u,e),e);v(n,o);let s=p(n,{calledWith:(...u)=>x(t,u),mustBeCalledWith:(...u)=>x(r,u)});return s}var V={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function U(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(r=>r!=="constructor"&&!t[r]?.get)}function L(e){let t=new Set,r=e;for(;r;){let o=Object.getPrototypeOf(r);o&&U(r).forEach(n=>t.add(n)),r=o;}return [...t]}function N(e){return e?Array.isArray(e)?{...V,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[]}:{...V}}function S(e,t){let{methodsToSpyOn:r,observablePropsToSpyOn:o,settersToSpyOn:n,gettersToSpyOn:s}=N(t),u=r.length>0?r:L(e.prototype),c={};return o.forEach(l=>{c[l]=j().createPropSpy();}),C(c,s,n),u.forEach(l=>{c[l]=a(l);}),c}function J(e,t,r){return {[e]:S(t,r)}}function X(e={}){let t=new Map;for(let o of Reflect.ownKeys(e))t.set(o,Reflect.get(e,o));let r={get(o,n){if(t.has(n))return t.get(n);if(typeof n=="symbol"||n==="then"||n==="constructor")return;let s=a(String(n));return t.set(n,s),s},set(o,n,s){return t.set(n,s),true},has(o,n){return t.has(n)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(o,n){if(t.has(n))return {configurable:true,enumerable:true,value:t.get(n),writable:true}}};return new Proxy({},r)}T(w);exports.createAutoMock=X;exports.createFunctionSpy=a;exports.createSpyFromClass=S;exports.errorHandler=m;exports.provideAutoSpy=J;
|
package/dist/vue.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-BCLT4UUA.js';import {a as a$2}from'./chunk-CUVWIHH5.js';export{a as createSpyFromClass}from'./chunk-CUVWIHH5.js';import {a}from'./chunk-PEAFUJBQ.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-PEAFUJBQ.js';import'./chunk-7IUYJ6ZW.js';function y(r,p,n){return {[r]:a$2(p,n)}}a(a$1);export{y as provideAutoSpy};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vitest-auto-spy",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Auto-generate fully-typed test spies from a class β across Vitest, Bun and node:test, with NestJS/React/Vue/Svelte/Angular recipes. Drop-in replacement for jest-auto-spies.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"auto-mock",
|
|
@@ -67,6 +67,11 @@
|
|
|
67
67
|
"import": "./dist/rxjs.js",
|
|
68
68
|
"require": "./dist/rxjs.cjs"
|
|
69
69
|
},
|
|
70
|
+
"./console": {
|
|
71
|
+
"types": "./dist/console.d.ts",
|
|
72
|
+
"import": "./dist/console.js",
|
|
73
|
+
"require": "./dist/console.cjs"
|
|
74
|
+
},
|
|
70
75
|
"./angular": {
|
|
71
76
|
"types": "./dist/angular.d.ts",
|
|
72
77
|
"import": "./dist/angular.js",
|
|
@@ -116,7 +121,9 @@
|
|
|
116
121
|
"**/svelte.js",
|
|
117
122
|
"**/svelte.cjs",
|
|
118
123
|
"**/rxjs.js",
|
|
119
|
-
"**/rxjs.cjs"
|
|
124
|
+
"**/rxjs.cjs",
|
|
125
|
+
"**/console.js",
|
|
126
|
+
"**/console.cjs"
|
|
120
127
|
],
|
|
121
128
|
"engines": {
|
|
122
129
|
"node": ">=18"
|
package/dist/chunk-ACSYU277.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {d}from'./chunk-VLNCYBUN.js';function s(u={}){let r=new Map;for(let t of Reflect.ownKeys(u))r.set(t,Reflect.get(u,t));let a={get(t,e){if(r.has(e))return r.get(e);if(typeof e=="symbol"||e==="then"||e==="constructor")return;let n=d(String(e));return r.set(e,n),n},set(t,e,n){return r.set(e,n),true},has(t,e){return r.has(e)},ownKeys(){return [...r.keys()]},getOwnPropertyDescriptor(t,e){if(r.has(e))return {configurable:true,enumerable:true,value:r.get(e),writable:true}}};return new Proxy({},a)}export{s as a};
|
package/dist/chunk-VLNCYBUN.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {b as b$1,d as d$1,c}from'./chunk-7IUYJ6ZW.js';var y;function D(e){y=e;}var F="No mock adapter registered. Import a runtime entry once before creating spies \u2014 'vitest-auto-spy' (default, Vitest) or a runtime variant such as 'vitest-auto-spy/bun'.";function l(){if(!y)throw new Error(F);return y}function R(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function v(e,t){return Object.entries(e).map(([n,r])=>`${n}:${i(r,t)}`).join(",")}function V(e,t){return `new Map([${[...e.entries()].map(([r,o])=>`[${i(r,t)},${i(o,t)}]`).join(",")}])`}function W(e,t){if(t.has(e))return "[Circular]";t.add(e);let n;return e instanceof Date?n=`new Date(${e.getTime()})`:e instanceof Map?n=V(e,t):e instanceof Set?n=`new Set([${[...e].map(r=>i(r,t)).join(",")}])`:Array.isArray(e)?n=`[${e.map(r=>i(r,t)).join(",")}]`:n=`{${v(e,t)}}`,t.delete(e),n}function i(e,t=new WeakSet){return typeof e=="string"?R(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?W(e,t):Object.is(e,-0)?"-0":String(e)}var E=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,x="But the function was called without any arguments.",_=e=>{let t=i(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},m={throwArgumentsError(e,t){let n=e.length===0?x:_(e);throw new Error(E(t)+n)}};var d=class{#e={};set(t,n){this.#e[this.#t(t)]=n;}get(t){return this.#e[this.#t(t)]}#t(t){return i(t)}};function $(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(n=>setTimeout(()=>n(t.value),t.delay))}))}function b(e,t){d$1(e,{resolveWith:n=>{t({value:Promise.resolve(n)});},rejectWith:n=>{t({value:n,_isRejectedPromise:true});},resolveWithPerCall:n=>{n.length!==0&&t({value:void 0,valuesPerCalls:$(n)});}});}function T(e,t){b(e,n=>{t.value=n.value,t._isRejectedPromise=n._isRejectedPromise??false,t.valuesPerCalls=n.valuesPerCalls??[];});}function k(e,t){b(e,n=>{e.argsToValuesMap.set(t,n);});}function z(e){return typeof e=="object"&&e!==null&&"value"in e}function h(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function S(e,t){let n=e.argsToValuesMap.get(t);return z(n)?{found:true,value:h(n)}:{found:false,value:void 0}}function B(e,t,n,r,o){if(e.wasConfigured){let s=S(e,r);if(s.found)return s.value}if(t.wasConfigured){let s=S(t,r);if(s.found)return s.value;m.throwArgumentsError(r,o);}return h(n)}function w(e,t){return e.wasConfigured=true,d$1(e,{mockReturnValue:n=>{e.argsToValuesMap.set(t,{value:n});}}),k(e,t),b$1()?.addToCalledWithObject(e,t),e}function C(){return {wasConfigured:false,argsToValuesMap:new d}}function O(e){let t=C(),n=C(),r={value:void 0},o=l().createMockFn((...u)=>B(t,n,r,u,e),e);T(o,r),b$1()?.addToFunctionSpy(o,r);let s=d$1(o,{calledWith:(...u)=>w(t,u),mustBeCalledWith:(...u)=>w(n,u)});return s}function j(e,t){Object.defineProperty(e,t,{get(){},set(n){},configurable:true});}function M(e,t,n){let r=l();return n==="setter"?r.spyOnSetter(e,t):r.spyOnGetter(e,t)}function P(e,t,n){let r={getters:{},setters:{}};e.accessorSpies=r,t.forEach(o=>{j(e,o),r.getters[o]=M(e,o,"getter");}),n.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||j(e,o),r.setters[o]=M(e,o,"setter");});}var A={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function H(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(n=>n!=="constructor"&&!t[n]?.get)}function G(e){let t=new Set,n=e;for(;n;){let r=Object.getPrototypeOf(n);r&&H(n).forEach(o=>t.add(o)),n=r;}return [...t]}function I(e){return e?Array.isArray(e)?{...A,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[]}:{...A}}function pe(e,t){let{methodsToSpyOn:n,observablePropsToSpyOn:r,settersToSpyOn:o,gettersToSpyOn:s}=I(t),u=n.length>0?n:G(e.prototype),c$1={};return r.forEach(p=>{c$1[p]=c().createPropSpy();}),P(c$1,s,o),u.forEach(p=>{c$1[p]=O(p);}),c$1}export{D as a,l as b,m as c,O as d,pe as e};
|