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 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.** As of `vitest-auto-spy@1.4.0`, the **Vitest / Bun / `node:test`**
101
- > runtimes, the **RxJS** layer, and the **Angular / NestJS / React / VueΒ·Pinia / Svelte** recipes all
102
- > ship as importable entry points β€” one identical API across every runner and framework.
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** (1.4.0) |
107
- | `vitest-auto-spy/bun` Β· `vitest-auto-spy/node` | βœ… **Published** (1.4.0) |
108
- | `vitest-auto-spy/nestjs` Β· `/react` Β· `/vue` Β· `/svelte` | βœ… **Published** (1.4.0) |
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 in 1.4.0 (see [Availability](#availability)).
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,e,b}from'./chunk-VLNCYBUN.js';import'./chunk-7IUYJ6ZW.js';import {TestBed}from'@angular/core/testing';function c(e$1,o){return {provide:e$1,useValue:e(e$1,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=b();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};
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-ACSYU277.js';import {a}from'./chunk-VLNCYBUN.js';export{d as createFunctionSpy,e as createSpyFromClass,c as errorHandler}from'./chunk-VLNCYBUN.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}));
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};
@@ -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 };
@@ -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 O(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function T(e,t,r){let o=d();return r==="setter"?o.spyOnSetter(e,t):o.spyOnGetter(e,t)}function h(e,t,r){let o={getters:{},setters:{}};e.accessorSpies=o,t.forEach(n=>{O(e,n),o.getters[n]=T(e,n,"getter");}),r.forEach(n=>{Object.prototype.hasOwnProperty.call(e,n)||O(e,n),o.setters[n]=T(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 j(){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 C(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 M(e,t){C(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function v(e,t){C(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);M(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]=j().createPropSpy();}),h(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;
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-ACSYU277.js';import {a}from'./chunk-VLNCYBUN.js';export{d as createFunctionSpy,e as createSpyFromClass,c as errorHandler}from'./chunk-VLNCYBUN.js';import'./chunk-7IUYJ6ZW.js';a(a$1);
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 u(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){u(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 R(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:R(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 R(r)}function F(e,t){return e.wasConfigured=true,u(e,{mockReturnValue:r=>{e.argsToValuesMap.set(t,{value:r});}}),M(e,t),e}function P(){return {wasConfigured:false,argsToValuesMap:new f}}function A(e){let t=P(),r=P(),n={value:void 0},o=l().createMockFn((...p)=>D(t,r,n,p,e),e);j(o,n);let s=u(o,{calledWith:(...p)=>F(t,p),mustBeCalledWith:(...p)=>F(r,p)});return s}var V={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)?{...V,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[]}:{...V}}function x(e,t){let{methodsToSpyOn:r,observablePropsToSpyOn:n,settersToSpyOn:o,gettersToSpyOn:s}=L(t),p=r.length>0?r:U(e.prototype),a={};return n.forEach(c=>{a[c]=w().createPropSpy();}),O(a,s,o),p.forEach(c=>{a[c]=A(c);}),a}function J(e,t){return {provide:e,useValue:x(e,t)}}function X(e,t){return e.get(t)}b(k);exports.injectSpy=X;exports.provideAutoSpy=J;
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,e}from'./chunk-VLNCYBUN.js';import'./chunk-7IUYJ6ZW.js';function s(e$1,t){return {provide:e$1,useValue:e(e$1,t)}}function n(e,t){return e.get(t)}a(a$1);export{n as injectSpy,s as provideAutoSpy};
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-ACSYU277.js';import {a}from'./chunk-VLNCYBUN.js';export{d as createFunctionSpy,e as createSpyFromClass,c as errorHandler}from'./chunk-VLNCYBUN.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));
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 O(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function T(e,t,r){let o=d();return r==="setter"?o.spyOnSetter(e,t):o.spyOnGetter(e,t)}function h(e,t,r){let o={getters:{},setters:{}};e.accessorSpies=o,t.forEach(n=>{O(e,n),o.getters[n]=T(e,n,"getter");}),r.forEach(n=>{Object.prototype.hasOwnProperty.call(e,n)||O(e,n),o.setters[n]=T(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 j(){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 C(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 M(e,t){C(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function v(e,t){C(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);M(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]=j().createPropSpy();}),h(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;
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-ACSYU277.js';import {a}from'./chunk-VLNCYBUN.js';export{d as createFunctionSpy,e as createSpyFromClass,c as errorHandler}from'./chunk-VLNCYBUN.js';import'./chunk-7IUYJ6ZW.js';a(a$1);
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 O(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function T(e,t,r){let o=d();return r==="setter"?o.spyOnSetter(e,t):o.spyOnGetter(e,t)}function h(e,t,r){let o={getters:{},setters:{}};e.accessorSpies=o,t.forEach(n=>{O(e,n),o.getters[n]=T(e,n,"getter");}),r.forEach(n=>{Object.prototype.hasOwnProperty.call(e,n)||O(e,n),o.setters[n]=T(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 j(){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 C(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 M(e,t){C(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function v(e,t){C(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);M(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]=j().createPropSpy();}),h(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;
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-ACSYU277.js';import {a}from'./chunk-VLNCYBUN.js';export{d as createFunctionSpy,e as createSpyFromClass,c as errorHandler}from'./chunk-VLNCYBUN.js';import'./chunk-7IUYJ6ZW.js';a(a$1);
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 A(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:A(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 A(r)}function x(e,t){return e.wasConfigured=true,p(e,{mockReturnValue:r=>{e.argsToValuesMap.set(t,{value:r});}}),F(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)=>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;
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-ACSYU277.js';import {a,e}from'./chunk-VLNCYBUN.js';export{d as createFunctionSpy,e as createSpyFromClass,c as errorHandler}from'./chunk-VLNCYBUN.js';import'./chunk-7IUYJ6ZW.js';function y(r,p,n){return {[r]:e(p,n)}}a(a$1);export{y as provideAutoSpy};
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.5.0",
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"
@@ -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};
@@ -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};