vitest-auto-spy 1.8.2 → 1.9.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.
Files changed (55) hide show
  1. package/README.md +19 -4
  2. package/assets/one-api-three-runtimes.svg +40 -22
  3. package/dist/angular.cjs +1 -1
  4. package/dist/angular.d.cts +2 -2
  5. package/dist/angular.d.ts +2 -2
  6. package/dist/angular.js +1 -1
  7. package/dist/bun.cjs +1 -1
  8. package/dist/bun.d.cts +15 -4
  9. package/dist/bun.d.ts +15 -4
  10. package/dist/bun.js +1 -1
  11. package/dist/chunk-HDCUMVHT.js +1 -0
  12. package/dist/chunk-N724W7OZ.js +1 -0
  13. package/dist/chunk-Q4FBVCJO.js +1 -0
  14. package/dist/chunk-RTGT5WHR.js +1 -0
  15. package/dist/chunk-T3N4PY2U.js +1 -0
  16. package/dist/console.cjs +1 -1
  17. package/dist/console.d.cts +1 -1
  18. package/dist/console.d.ts +1 -1
  19. package/dist/console.js +1 -1
  20. package/dist/index.cjs +1 -1
  21. package/dist/index.d.cts +2 -2
  22. package/dist/index.d.ts +2 -2
  23. package/dist/index.js +1 -1
  24. package/dist/nestjs.cjs +1 -1
  25. package/dist/nestjs.d.cts +1 -1
  26. package/dist/nestjs.d.ts +1 -1
  27. package/dist/nestjs.js +1 -1
  28. package/dist/node.cjs +1 -1
  29. package/dist/node.d.cts +2 -2
  30. package/dist/node.d.ts +2 -2
  31. package/dist/node.js +1 -1
  32. package/dist/react.cjs +1 -1
  33. package/dist/react.d.cts +2 -2
  34. package/dist/react.d.ts +2 -2
  35. package/dist/react.js +1 -1
  36. package/dist/rxjs.cjs +1 -1
  37. package/dist/rxjs.d.cts +2 -2
  38. package/dist/rxjs.d.ts +2 -2
  39. package/dist/rxjs.js +1 -1
  40. package/dist/svelte.cjs +1 -1
  41. package/dist/svelte.d.cts +2 -2
  42. package/dist/svelte.d.ts +2 -2
  43. package/dist/svelte.js +1 -1
  44. package/dist/{types-Cv3L71P0.d.cts → types-BKS6JdLv.d.cts} +13 -1
  45. package/dist/{types-Cv3L71P0.d.ts → types-BKS6JdLv.d.ts} +13 -1
  46. package/dist/vue.cjs +1 -1
  47. package/dist/vue.d.cts +3 -3
  48. package/dist/vue.d.ts +3 -3
  49. package/dist/vue.js +1 -1
  50. package/package.json +1 -1
  51. package/dist/chunk-6LFQMHSX.js +0 -1
  52. package/dist/chunk-HVN6A3AX.js +0 -1
  53. package/dist/chunk-IPBQZ4JC.js +0 -1
  54. package/dist/chunk-MQCVIN2A.js +0 -1
  55. package/dist/chunk-WP2TFS53.js +0 -1
package/README.md CHANGED
@@ -635,6 +635,12 @@ beforeEach(() => {
635
635
  > [`@analogjs/vite-plugin-angular`](https://www.npmjs.com/package/@analogjs/vite-plugin-angular)
636
636
  > plus a TestBed setup file (e.g. `@analogjs/vitest-angular`'s `setupTestBed()`).
637
637
 
638
+ > **Lazy by default.** `provideAutoSpy` builds each method spy on first access
639
+ > (`lazySpies: true`), since Angular tests typically spy a wide service but call
640
+ > only a few of its methods — roughly **4× faster** spy assembly (≈8× on a
641
+ > 20-method service). Behaviour is unchanged; pass `{ lazySpies: false }` to build
642
+ > every spy eagerly.
643
+
638
644
  #### Signal / readonly property mocking (bonus)
639
645
 
640
646
  ```ts
@@ -724,6 +730,8 @@ expect(fakeConsole.info).toHaveBeenCalledWith('done');
724
730
  | --- | --- |
725
731
  | `createSpyFromClass(Class, methodsOrConfig?)` | Build a fully-typed `Spy<T>` from a class |
726
732
  | `createAutoMock<T>(overrides?)` | Build a `Spy<T>` from a **type/interface** alone (Proxy, no class) |
733
+ | `mockDeep<T>(overrides?)` | Build a **recursive** auto-mock — `mock.repo.user.find()` chains without seeding |
734
+ | `resetAutoSpy(spy)` / `clearAutoSpy(spy)` | Reset every spy in an auto-spy at once — `reset` also reverts return-value config (`calledWith` **and** a bare `mockReturnValue`); `clear` keeps it |
727
735
  | `provideAutoSpy(Class, methodsOrConfig?)` | Angular / NestJS `{ provide, useValue }` shorthand |
728
736
  | `provideAutoSpy(token, Class, methodsOrConfig?)` | Vue `{ [token]: Spy<T> }` for `global.provide` |
729
737
  | `injectSpy(token)` _(Angular)_ / `injectSpy(moduleRef, token)` _(NestJS)_ | Inject typed as `Spy<T>` |
@@ -734,7 +742,8 @@ expect(fakeConsole.info).toHaveBeenCalledWith('done');
734
742
  | `installConsoleSpies()` / `resetConsoleSpies()` / `restoreConsole()` | Install / clear / undo the console spies |
735
743
  | `errorHandler` | The `mustBeCalledWith` argument-mismatch error helper |
736
744
 
737
- **Spied sync method:** `mockReturnValue`, `calledWith(...)`, `mustBeCalledWith(...)`
745
+ **Spied sync method:** `mockReturnValue`, `calledWith(...)`, `mustBeCalledWith(...)` — `calledWith`
746
+ also matches **asymmetric matchers** (`calledWith(expect.any(Number))`, `expect.objectContaining({...})`)
738
747
 
739
748
  **Spied Promise method:** `resolveWith`, `rejectWith`, `resolveWithPerCall`
740
749
 
@@ -742,7 +751,8 @@ expect(fakeConsole.info).toHaveBeenCalledWith('done');
742
751
  `nextWithPerCall`, `throwWith`, `complete`, `returnSubject`
743
752
 
744
753
  **Config (`ClassSpyConfiguration`):** `methodsToSpyOn`, `observablePropsToSpyOn`,
745
- `gettersToSpyOn`, `settersToSpyOn`
754
+ `gettersToSpyOn`, `settersToSpyOn`, `autoSpyAccessors` (discover every getter/setter),
755
+ `lazySpies` (materialize method spies on first access — cheaper for wide classes; the `provideAutoSpy` default on Angular)
746
756
 
747
757
  `ValueConfig` (for `nextWithValues`): `{ value, delay? }` | `{ errorValue, delay? }` | `{ complete?, delay? }`.
748
758
 
@@ -785,11 +795,16 @@ Contributions are welcome! Please read [CONTRIBUTING.md](./CONTRIBUTING.md) and
785
795
 
786
796
  ```bash
787
797
  npm ci
788
- npm test # run the suite
789
- npm run test:coverage # 100% thresholds enforced
798
+ npm test # run the suite once
799
+ npm run test:watch # fast local loop — no v8 coverage instrumentation
800
+ npm run test:coverage # 100% thresholds enforced (slower; for CI / pre-push)
790
801
  npm run build
791
802
  ```
792
803
 
804
+ > **Tip:** develop against `npm run test:watch` — it skips the v8 coverage
805
+ > instrumentation that `test:coverage` adds, so the feedback loop is noticeably
806
+ > faster. Run `test:coverage` before pushing to confirm the 100% thresholds.
807
+
793
808
  Releases are automated: merging a PR into `master` bumps the version from the
794
809
  Conventional Commit types and publishes to npm — see
795
810
  [CONTRIBUTING.md → Releasing](./CONTRIBUTING.md#releasing).
@@ -1,9 +1,24 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="840" height="300" viewBox="0 0 840 300" font-family="ui-sans-serif, -apple-system, Segoe UI, Roboto, sans-serif" role="img" aria-label="One class-based API, three Vitest-compatible runtimes: Vitest, Bun, node:test">
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="840" height="320" viewBox="0 0 840 320" font-family="ui-sans-serif, -apple-system, Segoe UI, Roboto, sans-serif" role="img" aria-label="One class-based API, three Vitest-compatible runtimes: Vitest, Bun, node:test">
2
2
  <defs>
3
+ <linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
4
+ <stop offset="0" stop-color="#ffffff"/>
5
+ <stop offset="1" stop-color="#eef2fb"/>
6
+ </linearGradient>
3
7
  <linearGradient id="card" x1="0" y1="0" x2="0" y2="1">
4
8
  <stop offset="0" stop-color="#ffffff"/>
5
- <stop offset="1" stop-color="#f4f6fb"/>
9
+ <stop offset="1" stop-color="#f5f7fc"/>
10
+ </linearGradient>
11
+ <linearGradient id="brand" x1="0" y1="0" x2="1" y2="0">
12
+ <stop offset="0" stop-color="#6E9F18"/>
13
+ <stop offset="1" stop-color="#1f6feb"/>
14
+ </linearGradient>
15
+ <linearGradient id="arrow" x1="0" y1="0" x2="1" y2="0">
16
+ <stop offset="0" stop-color="#8c959f"/>
17
+ <stop offset="1" stop-color="#1f6feb"/>
6
18
  </linearGradient>
19
+ <filter id="shadow" x="-20%" y="-20%" width="140%" height="160%">
20
+ <feDropShadow dx="0" dy="6" stdDeviation="10" flood-color="#1f2a44" flood-opacity="0.14"/>
21
+ </filter>
7
22
  <style>
8
23
  @media (prefers-color-scheme: dark) {
9
24
  .bg { fill: #0d1117; }
@@ -11,41 +26,44 @@
11
26
  .title { fill: #e6edf3; }
12
27
  .sub { fill: #8b949e; }
13
28
  .code { fill: #e6edf3; }
14
- .arrow { stroke: #6e7681; }
15
- .chip { fill: #1f6feb22; stroke: #388bfd; }
16
- .chipText { fill: #58a6ff; }
29
+ .fn { fill: #d2a8ff; }
30
+ .type { fill: #7ee787; }
31
+ .punct { fill: #8b949e; }
32
+ .arrow { stroke: url(#arrow); }
17
33
  }
18
34
  </style>
19
35
  </defs>
20
36
 
21
- <rect class="bg" width="840" height="300" fill="#ffffff" rx="16"/>
37
+ <rect class="bg" width="840" height="320" fill="url(#bg)" rx="18"/>
22
38
 
23
- <text class="title" x="40" y="56" font-size="30" font-weight="700" fill="#0d1117">vitest-auto-spy</text>
24
- <text class="sub" x="40" y="84" font-size="16" fill="#57606a">One class-based API. Every Vitest-compatible runtime.</text>
39
+ <text class="title" x="40" y="58" font-size="30" font-weight="700" fill="#0d1117">vitest-auto-spy</text>
40
+ <text class="sub" x="40" y="86" font-size="16" fill="#57606a">One class-based API. Every Vitest-compatible runtime.</text>
25
41
 
26
42
  <!-- source call -->
27
- <rect class="card" x="40" y="120" width="330" height="70" rx="12" fill="url(#card)" stroke="#d0d7de"/>
28
- <text class="code" x="62" y="153" font-size="16" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" fill="#0d1117">createSpyFromClass(</text>
29
- <text class="code" x="62" y="176" font-size="16" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" fill="#0d1117">&#160;&#160;UserService)</text>
43
+ <rect class="card" x="40" y="126" width="330" height="76" rx="14" fill="url(#card)" stroke="#d0d7de" filter="url(#shadow)"/>
44
+ <text x="64" y="170" font-size="15" font-family="ui-monospace, SFMono-Regular, Menlo, monospace"><tspan class="fn" fill="#8250df">createSpyFromClass</tspan><tspan class="punct" fill="#6e7781">(</tspan><tspan class="type" fill="#0550ae">UserService</tspan><tspan class="punct" fill="#6e7781">)</tspan></text>
30
45
 
31
46
  <!-- arrow -->
32
- <line class="arrow" x1="378" y1="155" x2="470" y2="155" stroke="#8c959f" stroke-width="2"/>
33
- <polygon points="470,150 482,155 470,160" fill="#8c959f"/>
47
+ <line class="arrow" x1="378" y1="164" x2="474" y2="164" stroke="url(#arrow)" stroke-width="2.5" stroke-linecap="round"/>
48
+ <polygon points="474,158 488,164 474,170" fill="#1f6feb"/>
34
49
 
35
50
  <!-- fully-typed spy -->
36
- <rect class="card" x="490" y="120" width="310" height="70" rx="12" fill="url(#card)" stroke="#d0d7de"/>
37
- <text class="title" x="512" y="150" font-size="16" font-weight="600" fill="#0d1117">Spy&lt;UserService&gt;</text>
38
- <text class="sub" x="512" y="174" font-size="13" fill="#57606a">typed methods + resolveWith / nextWith / calledWith</text>
51
+ <rect class="card" x="490" y="126" width="330" height="76" rx="14" fill="url(#card)" stroke="#d0d7de" filter="url(#shadow)"/>
52
+ <text class="title" x="514" y="158" font-size="16" font-weight="600" fill="#0d1117">Spy&lt;UserService&gt;</text>
53
+ <text class="sub" x="514" y="182" font-size="12" fill="#57606a">typed methods + resolveWith / nextWith / calledWith</text>
39
54
 
40
55
  <!-- runtime chips -->
41
56
  <g>
42
- <rect class="chip" x="40" y="228" width="240" height="46" rx="23" fill="#ddf4ff" stroke="#54aeff"/>
43
- <text class="chipText" x="160" y="257" font-size="17" font-weight="600" text-anchor="middle" fill="#0969da">Vitest</text>
57
+ <rect x="40" y="244" width="240" height="48" rx="24" fill="#ddf4ff" stroke="#54aeff"/>
58
+ <circle cx="70" cy="268" r="6" fill="#6E9F18"/>
59
+ <text x="164" y="273" font-size="17" font-weight="600" text-anchor="middle" fill="#0969da">Vitest</text>
44
60
 
45
- <rect class="chip" x="300" y="228" width="240" height="46" rx="23" fill="#ddf4ff" stroke="#54aeff"/>
46
- <text class="chipText" x="420" y="257" font-size="17" font-weight="600" text-anchor="middle" fill="#0969da">Bun&#160;&#160;(bun:test)</text>
61
+ <rect x="300" y="244" width="240" height="48" rx="24" fill="#fbe9f4" stroke="#f472b6"/>
62
+ <circle cx="330" cy="268" r="6" fill="#fbf0df" stroke="#e0a96d" stroke-width="1.5"/>
63
+ <text x="424" y="273" font-size="17" font-weight="600" text-anchor="middle" fill="#be185d">Bun&#160;&#160;(bun:test)</text>
47
64
 
48
- <rect class="chip" x="560" y="228" width="240" height="46" rx="23" fill="#ddf4ff" stroke="#54aeff"/>
49
- <text class="chipText" x="680" y="257" font-size="17" font-weight="600" text-anchor="middle" fill="#0969da">node:test</text>
65
+ <rect x="560" y="244" width="240" height="48" rx="24" fill="#e6f4ea" stroke="#5aa469"/>
66
+ <circle cx="590" cy="268" r="6" fill="#539e43"/>
67
+ <text x="684" y="273" font-size="17" font-weight="600" text-anchor="middle" fill="#2f7d32">node:test</text>
50
68
  </g>
51
69
  </svg>
package/dist/angular.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var vitest=require('vitest'),testing=require('@angular/core/testing');var y;function b(e){y=e;}var E="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 a(){if(!y)throw new Error(E);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 T(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function S(e,t,r){let n=a();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=>{T(e,o),n.getters[o]=S(e,o,"getter");}),r.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||T(e,o),n.setters[o]=S(e,o,"setter");});}function _(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function $(e,t){return Object.entries(e).map(([r,n])=>`${r}:${c(n,t)}`).join(",")}function H(e,t){return `new Map([${[...e.entries()].map(([n,o])=>`[${c(n,t)},${c(o,t)}]`).join(",")}])`}function K(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(n=>c(n,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(n=>c(n,t)).join(",")}]`:r=`{${$(e,t)}}`,t.delete(e),r}function c(e,t=new WeakSet){return typeof e=="string"?_(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?K(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 c(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.",G=e=>{let t=c(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},j={throwArgumentsError(e,t){let r=e.length===0?B:G(e);throw new Error(z(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 C(){throw new Error(I);}function u(e,t){return Object.assign(e,t)}function D(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:D(r)});}});}function w(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 q(e){return typeof e=="object"&&e!==null&&"value"in e}function F(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 q(r)?{found:true,value:F(r)}:{found:false,value:void 0}}function N(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;j.throwArgumentsError(n,o);}return F(r)}function P(e,t){e.wasConfigured=true;let r=n=>{e.argsToValuesMap.set(t,{value:n});};return u(e,{mockReturnValue:r,returnValue: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=a().createMockFn((...i)=>N(t,r,n,i,e),e);w(o,n);let s=u(o,{calledWith:(...i)=>P(t,i),mustBeCalledWith:(...i)=>P(r,i)});return s}var x={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function U(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(r=>r!=="constructor"&&!t[r]?.get)}var V=new WeakMap;function L(e){let t=V.get(e);if(t)return t;let r=new Set,n=e;for(;n;){let s=Object.getPrototypeOf(n);s&&U(n).forEach(i=>r.add(i)),n=s;}let o=[...r];return V.set(e,o),o}function J(e){return e?Array.isArray(e)?{...x,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[]}:{...x}}function W(e,t){let{methodsToSpyOn:r,observablePropsToSpyOn:n,settersToSpyOn:o,gettersToSpyOn:s}=J(t),i=r.length>0?r:L(e.prototype),p={};return n.forEach(l=>{p[l]=C().createPropSpy();}),O(p,s,o),i.forEach(l=>{p[l]=R(l);}),p}function Y(e,t){return {provide:e,useValue:W(e,t)}}function Q(e){return testing.TestBed.inject(e)}function Z(e,t,r){Object.defineProperty(e,t,{get:()=>r,configurable:true});}function ee(e,t,r){Object.defineProperty(e,t,{get:r,configurable:true});}function te(e,t){let r=a();Object.defineProperty(e,t,{get:r.createMockFn(),set:r.createMockFn(),configurable:true});}b(k);exports.injectSpy=Q;exports.mockAccessorsProp=te;exports.mockReadonlyProp=Z;exports.mockReadonlyPropGetter=ee;exports.provideAutoSpy=Y;
1
+ 'use strict';var vitest=require('vitest'),testing=require('@angular/core/testing');var m;function w(e){m=e;}var L="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 u(){if(!m)throw new Error(L);return m}var h={createMockFn(e,t){let n=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&n.mockName(t),n},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();},clear(e){e.mockClear();},restoreImplementation(e,t){e.mockImplementation(t);}};var N=Symbol.for("vitest-auto-spy.mock"),U=Symbol.for("vitest-auto-spy.resetConfig"),q=Symbol.for("vitest-auto-spy.clearHook");function y(e){Object.defineProperty(e,N,{value:true,enumerable:false,configurable:true});}function T(e,t){Object.defineProperty(e,U,{value:t,enumerable:false,configurable:true});}function v(e,t){Object.defineProperty(e,q,{value:t,enumerable:false,configurable:true});}function j(e,t){Object.defineProperty(e,t,{get(){},set(n){},configurable:true});}function M(e,t,n){let r=u(),o=n==="setter"?r.spyOnSetter(e,t):r.spyOnGetter(e,t);return y(o),o}function C(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");});}function Y(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function J(e,t){return Object.entries(e).map(([n,r])=>`${n}:${i(r,t)}`).join(",")}function X(e,t){return `new Map([${[...e.entries()].map(([r,o])=>`[${i(r,t)},${i(o,t)}]`).join(",")}])`}function Q(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=X(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=`{${J(e,t)}}`,t.delete(e),n}function g(e){return typeof e=="string"?Y(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:Object.is(e,-0)?"-0":String(e)}function O(e){return typeof e=="object"&&e!==null}function i(e,t=new WeakSet){return typeof e=="object"&&e!==null?Q(e,t):g(e)}function R(e){return typeof e=="object"&&e!==null&&"asymmetricMatch"in e&&typeof e.asymmetricMatch=="function"}function Z(e){return e.some(R)}var l=class{#t=Object.create(null);#n=[];set(t,n){if(Array.isArray(t)&&Z(t)){this.#n.push({args:t,value:n});return}this.#t[this.#e(t)]=n;}get(t){let n=this.#e(t);return n in this.#t?this.#t[n]:this.#r(t)}#e(t){return Array.isArray(t)&&!t.some(O)?`[${t.map(n=>g(n)).join(",")}]`:i(t)}#r(t){return Array.isArray(t)?this.#n.find(r=>this.#o(r.args,t))?.value:void 0}#o(t,n){return t.length!==n.length?false:t.every((r,o)=>this.#s(r,n[o]))}#s(t,n){return R(t)?t.asymmetricMatch(n):this.#e([t])===this.#e([n])}};var ee=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,te="But the function was called without any arguments.",ne=e=>{let t=i(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},A={throwArgumentsError(e,t){let n=e.length===0?te:ne(e);throw new Error(ee(t)+n)}};var re="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 P(){throw new Error(re);}function p(e,t){return Object.assign(e,t)}function oe(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(n=>setTimeout(()=>n(t.value),t.delay))}))}function F(e,t){p(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:oe(n)});}});}function x(e,t){F(e,n=>{t.value=n.value,t._isRejectedPromise=n._isRejectedPromise??false,t.valuesPerCalls=n.valuesPerCalls??[];});}function V(e,t){F(e,n=>{e.argsToValuesMap.set(t,n);});}var se={record:e=>e,clear:()=>{}};function ie(e){return typeof e!="object"&&typeof e!="function"||e===null?false:typeof Reflect.get(e,"then")=="function"}function E(e){let t=Reflect.get(e,"mock");if(typeof t!="object"||t===null||"settledResults"in t)return se;let n=[];return Object.defineProperty(t,"settledResults",{value:n,enumerable:true,configurable:true,writable:true}),{record(r){let o={type:"incomplete",value:void 0};return n.push(o),ie(r)?r.then(s=>{o.type="fulfilled",o.value=s;},s=>{o.type="rejected",o.value=s;}):(o.type="fulfilled",o.value=r),r},clear(){n.length=0;}}}function ce(e){return typeof e=="object"&&e!==null&&"value"in e}function $(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function W(e,t){let n=e.argsToValuesMap.get(t);return ce(n)?{found:true,value:$(n)}:{found:false,value:void 0}}function ue(e,t,n,r,o){if(e.wasConfigured){let s=W(e,r);if(s.found)return s.value}if(t.wasConfigured){let s=W(t,r);if(s.found)return s.value;A.throwArgumentsError(r,o);}return $(n)}function z(e,t){e.wasConfigured=true;let n=r=>{e.argsToValuesMap.set(t,{value:r});};return p(e,{mockReturnValue:n,returnValue:n}),V(e,t),e}function _(){return {wasConfigured:false,argsToValuesMap:new l}}function H(e){e.wasConfigured=false,e.argsToValuesMap=new l;}function S(e){let t=_(),n=_(),r={value:void 0},o=(...a)=>c.record(ue(t,n,r,a,e)),s=u().createMockFn(o,e),c=E(s);x(s,r);let d=p(s,{calledWith:(...a)=>z(t,a),mustBeCalledWith:(...a)=>z(n,a)});return T(d,()=>{H(t),H(n),r.value=void 0,delete r._isRejectedPromise,delete r.valuesPerCalls,u().restoreImplementation(s,o);}),v(d,()=>c.clear()),y(d),d}var K={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[],autoSpyAccessors:false,lazySpies:false};function ae(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(n=>n!=="constructor"&&!t[n]?.get)}function B(e,t){let n=e;for(;n;){let r=Object.getPrototypeOf(n);r&&t(n),n=r;}}var I=new WeakMap;function G(e){let t=I.get(e);if(t)return t;let n=new Set;B(e,o=>ae(o).forEach(s=>n.add(s)));let r=[...n];return I.set(e,r),r}function le(e){let t=new Set,n=new Set;return B(e,r=>{let o=Object.getOwnPropertyDescriptors(r);Object.keys(o).forEach(s=>{s!=="constructor"&&(o[s]?.get&&t.add(s),o[s]?.set&&n.add(s));});}),{getters:[...t],setters:[...n]}}function pe(e,t){if(!t.autoSpyAccessors)return {getters:t.gettersToSpyOn,setters:t.settersToSpyOn};let n=le(e);return {getters:[...new Set([...t.gettersToSpyOn,...n.getters])],setters:[...new Set([...t.settersToSpyOn,...n.setters])]}}function de(e,t){let n=new Set(G(e.prototype)),r=t.filter(o=>!n.has(o));r.length!==0&&console.warn(`[vitest-auto-spy] createSpyFromClass(${e.name}): requested method(s) not found on the class prototype: ${r.join(", ")}. A spy was still created, but the real code will never call it \u2014 check for typos.`);}function fe(e,t){Object.defineProperty(e,t,{configurable:true,enumerable:true,get(){let n=S(t);return Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:n}),n}});}function ye(e){return e?Array.isArray(e)?{...K,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[],autoSpyAccessors:e.autoSpyAccessors??false,lazySpies:e.lazySpies??false}:{...K}}function D(e,t){let n=ye(t),r=n.methodsToSpyOn.length>0?n.methodsToSpyOn:G(e.prototype);n.methodsToSpyOn.length>0&&de(e,n.methodsToSpyOn);let o={};n.observablePropsToSpyOn.forEach(c=>{o[c]=P().createPropSpy();});let s=pe(e.prototype,n);return C(o,s.getters,s.setters),r.forEach(c=>{n.lazySpies?fe(o,c):o[c]=S(c);}),o}function ge(e){return e?Array.isArray(e)?{methodsToSpyOn:e,lazySpies:true}:{...e,lazySpies:e.lazySpies??true}:{lazySpies:true}}function ke(e,t){return {provide:e,useValue:D(e,ge(t))}}function be(e){return testing.TestBed.inject(e)}function Se(e,t,n){Object.defineProperty(e,t,{get:()=>n,configurable:true});}function we(e,t,n){Object.defineProperty(e,t,{get:n,configurable:true});}function he(e,t){let n=u();Object.defineProperty(e,t,{get:n.createMockFn(),set:n.createMockFn(),configurable:true});}w(h);exports.injectSpy=be;exports.mockAccessorsProp=he;exports.mockReadonlyProp=Se;exports.mockReadonlyPropGetter=we;exports.provideAutoSpy=ke;
@@ -1,4 +1,4 @@
1
- import { C as ClassType, S as Spy, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-Cv3L71P0.cjs';
1
+ import { C as ClassType, S as Spy, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-BKS6JdLv.cjs';
2
2
  import 'rxjs';
3
3
  import 'vitest';
4
4
 
@@ -7,7 +7,7 @@ type AngularValueProvider<T> = {
7
7
  provide: ClassType<T>;
8
8
  useValue: Spy<T>;
9
9
  };
10
- /** Shorthand Angular provider: `{ provide, useValue: createSpyFromClass(...) }`. */
10
+ /** Shorthand Angular provider: `{ provide, useValue: createSpyFromClass(...) }` (lazy spies by default). */
11
11
  declare function provideAutoSpy<T>(ObjectClass: ClassType<T>, methodsToSpyOnOrConfig?: ClassSpyConfiguration<T> | OnlyMethodKeysOf<T>[]): AngularValueProvider<T>;
12
12
  /** Inject a service from Angular's `TestBed`, already typed as `Spy<T>`. */
13
13
  declare function injectSpy<T>(token: ClassType<T> | (abstract new (...args: never[]) => T)): Spy<T>;
package/dist/angular.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { C as ClassType, S as Spy, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-Cv3L71P0.js';
1
+ import { C as ClassType, S as Spy, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-BKS6JdLv.js';
2
2
  import 'rxjs';
3
3
  import 'vitest';
4
4
 
@@ -7,7 +7,7 @@ type AngularValueProvider<T> = {
7
7
  provide: ClassType<T>;
8
8
  useValue: Spy<T>;
9
9
  };
10
- /** Shorthand Angular provider: `{ provide, useValue: createSpyFromClass(...) }`. */
10
+ /** Shorthand Angular provider: `{ provide, useValue: createSpyFromClass(...) }` (lazy spies by default). */
11
11
  declare function provideAutoSpy<T>(ObjectClass: ClassType<T>, methodsToSpyOnOrConfig?: ClassSpyConfiguration<T> | OnlyMethodKeysOf<T>[]): AngularValueProvider<T>;
12
12
  /** Inject a service from Angular's `TestBed`, already typed as `Spy<T>`. */
13
13
  declare function injectSpy<T>(token: ClassType<T> | (abstract new (...args: never[]) => T)): Spy<T>;
package/dist/angular.js CHANGED
@@ -1 +1 @@
1
- import {a as a$1}from'./chunk-6LFQMHSX.js';import {a as a$2}from'./chunk-WP2TFS53.js';import {a,c as c$1}from'./chunk-MQCVIN2A.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};
1
+ import {a as a$1}from'./chunk-HDCUMVHT.js';import {a as a$2}from'./chunk-Q4FBVCJO.js';import {a,c as c$1}from'./chunk-RTGT5WHR.js';import'./chunk-7IUYJ6ZW.js';import {TestBed}from'@angular/core/testing';function s(e){return e?Array.isArray(e)?{methodsToSpyOn:e,lazySpies:true}:{...e,lazySpies:e.lazySpies??true}:{lazySpies:true}}function y(e,r){return {provide:e,useValue:a$2(e,s(r))}}function u(e){return TestBed.inject(e)}function c(e,r,t){Object.defineProperty(e,r,{get:()=>t,configurable:true});}function l(e,r,t){Object.defineProperty(e,r,{get:t,configurable:true});}function T(e,r){let t=c$1();Object.defineProperty(e,r,{get:t.createMockFn(),set:t.createMockFn(),configurable:true});}a(a$1);export{u as injectSpy,T as mockAccessorsProp,c as mockReadonlyProp,l as mockReadonlyPropGetter,y as provideAutoSpy};
package/dist/bun.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var bun_test=require('bun:test');function S({createMockFn:e,getCalls:t,reset:r}){return {createMockFn:e,spyOnGetter:(o,n)=>b(e,o,n,"get"),spyOnSetter:(o,n)=>b(e,o,n,"set"),getCalls:t,reset:r}}function b(e,t,r,o){let n=Object.getOwnPropertyDescriptor(t,r),s=o==="get"?n?.get:n?.set,i=e(s),c={configurable:true,enumerable:n?.enumerable??true};return n?.get&&(c.get=n.get),n?.set&&(c.set=n.set),o==="get"?c.get=i:c.set=i,Object.defineProperty(t,r,c),i}function w(e){return S({createMockFn:(r,o)=>{let n=e.mock(r??(()=>{}));return o!==void 0&&n.mockName&&n.mockName(o),n},getCalls:r=>r.mock.calls,reset:r=>r.mockReset()})}var y;function M(e){y=e;}var E="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(!y)throw new Error(E);return y}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 _(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function B(e,t){return Object.entries(e).map(([r,o])=>`${r}:${a(o,t)}`).join(",")}function H(e,t){return `new Map([${[...e.entries()].map(([o,n])=>`[${a(o,t)},${a(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=>a(o,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(o=>a(o,t)).join(",")}]`:r=`{${B(e,t)}}`,t.delete(e),r}function a(e,t=new WeakSet){return typeof e=="string"?_(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 f=class{#e={};set(t,r){this.#e[this.#t(t)]=r;}get(t){return this.#e[this.#t(t)]}#t(t){return a(t)}};var z=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,D="But the function was called without any arguments.",I=e=>{let t=a(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},m={throwArgumentsError(e,t){let r=e.length===0?D:I(e);throw new Error(z(t)+r)}};var G="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 C(){throw new Error(G);}function u(e,t){return Object.assign(e,t)}function K(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){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:K(r)});}});}function F(e,t){j(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function A(e,t){j(e,r=>{e.argsToValuesMap.set(t,r);});}function N(e){return typeof e=="object"&&e!==null&&"value"in e}function x(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 N(r)?{found:true,value:x(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 x(r)}function R(e,t){e.wasConfigured=true;let r=o=>{e.argsToValuesMap.set(t,{value:o});};return u(e,{mockReturnValue:r,returnValue:r}),A(e,t),e}function v(){return {wasConfigured:false,argsToValuesMap:new f}}function p(e){let t=v(),r=v(),o={value:void 0},n=d().createMockFn((...i)=>q(t,r,o,i,e),e);F(n,o);let s=u(n,{calledWith:(...i)=>R(t,i),mustBeCalledWith:(...i)=>R(r,i)});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)}var W=new WeakMap;function L(e){let t=W.get(e);if(t)return t;let r=new Set,o=e;for(;o;){let s=Object.getPrototypeOf(o);s&&U(o).forEach(i=>r.add(i)),o=s;}let n=[...r];return W.set(e,n),n}function J(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:o,settersToSpyOn:n,gettersToSpyOn:s}=J(t),i=r.length>0?r:L(e.prototype),c={};return o.forEach(l=>{c[l]=C().createPropSpy();}),T(c,s,n),i.forEach(l=>{c[l]=p(l);}),c}function Y(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=p(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)}M(w({mock:bun_test.mock}));exports.createAutoMock=Y;exports.createFunctionSpy=p;exports.createSpyFromClass=X;exports.errorHandler=m;
1
+ 'use strict';var bun_test=require('bun:test');function v({createMockFn:e,getCalls:t,reset:n,clear:r,restoreImplementation:o}){return {createMockFn:e,spyOnGetter:(s,i)=>O(e,s,i,"get"),spyOnSetter:(s,i)=>O(e,s,i,"set"),getCalls:t,reset:n,clear:r,restoreImplementation:o}}function O(e,t,n,r){let o=Object.getOwnPropertyDescriptor(t,n),s=r==="get"?o?.get:o?.set,i=e(s),c={configurable:true,enumerable:o?.enumerable??true};return o?.get&&(c.get=o.get),o?.set&&(c.set=o.set),r==="get"?c.get=i:c.set=i,Object.defineProperty(t,n,c),i}function A(e){return v({createMockFn:(n,r)=>{let o=e.mock(n??(()=>{}));return r!==void 0&&o.mockName&&o.mockName(r),o},getCalls:n=>n.mock.calls,reset:n=>n.mockReset(),clear:n=>n.mockClear(),restoreImplementation:(n,r)=>n.mockImplementation(r)})}var m;function C(e){m=e;}var Z="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 p(){if(!m)throw new Error(Z);return m}var T=Symbol.for("vitest-auto-spy.mock"),g=Symbol.for("vitest-auto-spy.resetConfig"),k=Symbol.for("vitest-auto-spy.clearHook");function y(e){Object.defineProperty(e,T,{value:true,enumerable:false,configurable:true});}function b(e){return typeof e=="function"&&T in e}function R(e,t){Object.defineProperty(e,g,{value:t,enumerable:false,configurable:true});}function F(e){if(!(g in e))return;let t=Reflect.get(e,g);typeof t=="function"&&t();}function P(e,t){Object.defineProperty(e,k,{value:t,enumerable:false,configurable:true});}function w(e){if(!(k in e))return;let t=Reflect.get(e,k);typeof t=="function"&&t();}function x(e,t){Object.defineProperty(e,t,{get(){},set(n){},configurable:true});}function V(e,t,n){let r=p(),o=n==="setter"?r.spyOnSetter(e,t):r.spyOnGetter(e,t);return y(o),o}function E(e,t,n){let r={getters:{},setters:{}};e.accessorSpies=r,t.forEach(o=>{x(e,o),r.getters[o]=V(e,o,"getter");}),n.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||x(e,o),r.setters[o]=V(e,o,"setter");});}function ee(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function te(e,t){return Object.entries(e).map(([n,r])=>`${n}:${a(r,t)}`).join(",")}function ne(e,t){return `new Map([${[...e.entries()].map(([r,o])=>`[${a(r,t)},${a(o,t)}]`).join(",")}])`}function re(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=ne(e,t):e instanceof Set?n=`new Set([${[...e].map(r=>a(r,t)).join(",")}])`:Array.isArray(e)?n=`[${e.map(r=>a(r,t)).join(",")}]`:n=`{${te(e,t)}}`,t.delete(e),n}function h(e){return typeof e=="string"?ee(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:Object.is(e,-0)?"-0":String(e)}function W(e){return typeof e=="object"&&e!==null}function a(e,t=new WeakSet){return typeof e=="object"&&e!==null?re(e,t):h(e)}function _(e){return typeof e=="object"&&e!==null&&"asymmetricMatch"in e&&typeof e.asymmetricMatch=="function"}function oe(e){return e.some(_)}var f=class{#t=Object.create(null);#n=[];set(t,n){if(Array.isArray(t)&&oe(t)){this.#n.push({args:t,value:n});return}this.#t[this.#e(t)]=n;}get(t){let n=this.#e(t);return n in this.#t?this.#t[n]:this.#r(t)}#e(t){return Array.isArray(t)&&!t.some(W)?`[${t.map(n=>h(n)).join(",")}]`:a(t)}#r(t){return Array.isArray(t)?this.#n.find(r=>this.#o(r.args,t))?.value:void 0}#o(t,n){return t.length!==n.length?false:t.every((r,o)=>this.#s(r,n[o]))}#s(t,n){return _(t)?t.asymmetricMatch(n):this.#e([t])===this.#e([n])}};var se=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,ie="But the function was called without any arguments.",ce=e=>{let t=a(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},S={throwArgumentsError(e,t){let n=e.length===0?ie:ce(e);throw new Error(se(t)+n)}};var ue="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 B(){throw new Error(ue);}function d(e,t){return Object.assign(e,t)}function ae(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(n=>setTimeout(()=>n(t.value),t.delay))}))}function D(e,t){d(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:ae(n)});}});}function H(e,t){D(e,n=>{t.value=n.value,t._isRejectedPromise=n._isRejectedPromise??false,t.valuesPerCalls=n.valuesPerCalls??[];});}function z(e,t){D(e,n=>{e.argsToValuesMap.set(t,n);});}var pe={record:e=>e,clear:()=>{}};function le(e){return typeof e!="object"&&typeof e!="function"||e===null?false:typeof Reflect.get(e,"then")=="function"}function $(e){let t=Reflect.get(e,"mock");if(typeof t!="object"||t===null||"settledResults"in t)return pe;let n=[];return Object.defineProperty(t,"settledResults",{value:n,enumerable:true,configurable:true,writable:true}),{record(r){let o={type:"incomplete",value:void 0};return n.push(o),le(r)?r.then(s=>{o.type="fulfilled",o.value=s;},s=>{o.type="rejected",o.value=s;}):(o.type="fulfilled",o.value=r),r},clear(){n.length=0;}}}function fe(e){return typeof e=="object"&&e!==null&&"value"in e}function L(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function I(e,t){let n=e.argsToValuesMap.get(t);return fe(n)?{found:true,value:L(n)}:{found:false,value:void 0}}function de(e,t,n,r,o){if(e.wasConfigured){let s=I(e,r);if(s.found)return s.value}if(t.wasConfigured){let s=I(t,r);if(s.found)return s.value;S.throwArgumentsError(r,o);}return L(n)}function K(e,t){e.wasConfigured=true;let n=r=>{e.argsToValuesMap.set(t,{value:r});};return d(e,{mockReturnValue:n,returnValue:n}),z(e,t),e}function N(){return {wasConfigured:false,argsToValuesMap:new f}}function G(e){e.wasConfigured=false,e.argsToValuesMap=new f;}function l(e){let t=N(),n=N(),r={value:void 0},o=(...u)=>i.record(de(t,n,r,u,e)),s=p().createMockFn(o,e),i=$(s);H(s,r);let c=d(s,{calledWith:(...u)=>K(t,u),mustBeCalledWith:(...u)=>K(n,u)});return R(c,()=>{G(t),G(n),r.value=void 0,delete r._isRejectedPromise,delete r.valuesPerCalls,p().restoreImplementation(s,o);}),P(c,()=>i.clear()),y(c),c}var U={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[],autoSpyAccessors:false,lazySpies:false};function ye(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(n=>n!=="constructor"&&!t[n]?.get)}function Y(e,t){let n=e;for(;n;){let r=Object.getPrototypeOf(n);r&&t(n),n=r;}}var q=new WeakMap;function J(e){let t=q.get(e);if(t)return t;let n=new Set;Y(e,o=>ye(o).forEach(s=>n.add(s)));let r=[...n];return q.set(e,r),r}function me(e){let t=new Set,n=new Set;return Y(e,r=>{let o=Object.getOwnPropertyDescriptors(r);Object.keys(o).forEach(s=>{s!=="constructor"&&(o[s]?.get&&t.add(s),o[s]?.set&&n.add(s));});}),{getters:[...t],setters:[...n]}}function ge(e,t){if(!t.autoSpyAccessors)return {getters:t.gettersToSpyOn,setters:t.settersToSpyOn};let n=me(e);return {getters:[...new Set([...t.gettersToSpyOn,...n.getters])],setters:[...new Set([...t.settersToSpyOn,...n.setters])]}}function ke(e,t){let n=new Set(J(e.prototype)),r=t.filter(o=>!n.has(o));r.length!==0&&console.warn(`[vitest-auto-spy] createSpyFromClass(${e.name}): requested method(s) not found on the class prototype: ${r.join(", ")}. A spy was still created, but the real code will never call it \u2014 check for typos.`);}function be(e,t){Object.defineProperty(e,t,{configurable:true,enumerable:true,get(){let n=l(t);return Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:n}),n}});}function we(e){return e?Array.isArray(e)?{...U,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[],autoSpyAccessors:e.autoSpyAccessors??false,lazySpies:e.lazySpies??false}:{...U}}function he(e,t){let n=we(t),r=n.methodsToSpyOn.length>0?n.methodsToSpyOn:J(e.prototype);n.methodsToSpyOn.length>0&&ke(e,n.methodsToSpyOn);let o={};n.observablePropsToSpyOn.forEach(i=>{o[i]=B().createPropSpy();});let s=ge(e.prototype,n);return E(o,s.getters,s.setters),r.forEach(i=>{n.lazySpies?be(o,i):o[i]=l(i);}),o}function Se(e={}){let t=new Map;for(let r of Reflect.ownKeys(e))t.set(r,Reflect.get(e,r));let n={get(r,o){if(t.has(o))return t.get(o);if(typeof o=="symbol"||o==="then"||o==="constructor")return;let s=l(String(o));return t.set(o,s),s},set(r,o,s){return t.set(o,s),true},has(r,o){return t.has(o)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(r,o){if(t.has(o))return {configurable:true,enumerable:true,value:t.get(o),writable:true}}};return new Proxy({},n)}function X(e,t){let n=l(e),r=new Map,o=new Map;for(let i of Reflect.ownKeys(t))o.set(i,Reflect.get(t,i));let s={get(i,c,u){if(o.has(c))return o.get(c);if(c!=="then"){if(c in i)return Reflect.get(i,c,u);if(typeof c!="symbol")return r.has(c)||r.set(c,X(`${e}.${String(c)}`,{})),r.get(c)}},set(i,c,u){return o.set(c,u),true}};return new Proxy(n,s)}function Me(e={}){return X("mockDeep",e)}function je(e){return typeof e=="object"&&e!==null&&"getters"in e&&"setters"in e}function Oe(e){let t=Object.getOwnPropertyDescriptor(e,"accessorSpies")?.value;return je(t)?[...Object.values(t.getters),...Object.values(t.setters)].filter(b):[]}function Q(e){let t=[];return Object.keys(e).forEach(n=>{let r=Object.getOwnPropertyDescriptor(e,n);!r||r.get||r.set||b(r.value)&&t.push(r.value);}),[...t,...Oe(e)]}function ve(e){let t=p();Q(e).forEach(n=>{t.clear(n),w(n);});}function Ae(e){let t=p();Q(e).forEach(n=>{t.clear(n),w(n),F(n);});}C(A({mock:bun_test.mock}));exports.clearAutoSpy=ve;exports.createAutoMock=Se;exports.createFunctionSpy=l;exports.createSpyFromClass=he;exports.errorHandler=S;exports.mockDeep=Me;exports.resetAutoSpy=Ae;
package/dist/bun.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as ClassType, a as ClassSpyConfiguration, O as OnlyMethodKeysOf, S as Spy, F as Func, i as AddSpyMethodsByReturnTypes } from './types-Cv3L71P0.cjs';
2
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, b as CompleteValueConfig, E as ErrorValueConfig, N as NextValueConfig, j as OnlyObservablePropsOf, k as OnlyPropsOf, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.cjs';
1
+ import { C as ClassType, a as ClassSpyConfiguration, O as OnlyMethodKeysOf, S as Spy, D as DeepMockProxy, F as Func, i as AddSpyMethodsByReturnTypes } from './types-BKS6JdLv.cjs';
2
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, b as CompleteValueConfig, E as ErrorValueConfig, N as NextValueConfig, j as OnlyObservablePropsOf, k as OnlyPropsOf, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.cjs';
3
3
  import 'rxjs';
4
4
  import 'vitest';
5
5
 
@@ -17,11 +17,22 @@ declare function createSpyFromClass<T>(ObjectClass: ClassType<T>, methodsToSpyOn
17
17
  */
18
18
  declare function createAutoMock<T>(overrides?: Partial<T>): Spy<T>;
19
19
 
20
- /** Create a single Vitest-backed function spy with all return-type helpers attached. */
20
+ /**
21
+ * Create a recursively-mocked `T` from its type alone (no class). Nested object
22
+ * access auto-creates chainable spies; seed concrete values via `overrides`.
23
+ */
24
+ declare function mockDeep<T>(overrides?: Partial<T>): DeepMockProxy<T>;
25
+
26
+ /** Create a single host-runner-backed function spy with all return-type helpers attached. */
21
27
  declare function createFunctionSpy<FunctionType extends Func>(name: string): AddSpyMethodsByReturnTypes<FunctionType>;
22
28
 
29
+ /** Clear recorded calls on every spy inside `spy` (configured return values are kept). */
30
+ declare function clearAutoSpy(spy: object): void;
31
+ /** Reset every spy inside `spy`: clears recorded calls and reverts all `calledWith`/return-value configuration. */
32
+ declare function resetAutoSpy(spy: object): void;
33
+
23
34
  declare const errorHandler: {
24
35
  throwArgumentsError(actualArgs: unknown[], functionName: string): never;
25
36
  };
26
37
 
27
- export { AddSpyMethodsByReturnTypes, ClassSpyConfiguration, ClassType, Func, OnlyMethodKeysOf, Spy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler };
38
+ export { AddSpyMethodsByReturnTypes, ClassSpyConfiguration, ClassType, DeepMockProxy, Func, OnlyMethodKeysOf, Spy, clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy };
package/dist/bun.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as ClassType, a as ClassSpyConfiguration, O as OnlyMethodKeysOf, S as Spy, F as Func, i as AddSpyMethodsByReturnTypes } from './types-Cv3L71P0.js';
2
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, b as CompleteValueConfig, E as ErrorValueConfig, N as NextValueConfig, j as OnlyObservablePropsOf, k as OnlyPropsOf, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.js';
1
+ import { C as ClassType, a as ClassSpyConfiguration, O as OnlyMethodKeysOf, S as Spy, D as DeepMockProxy, F as Func, i as AddSpyMethodsByReturnTypes } from './types-BKS6JdLv.js';
2
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, b as CompleteValueConfig, E as ErrorValueConfig, N as NextValueConfig, j as OnlyObservablePropsOf, k as OnlyPropsOf, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.js';
3
3
  import 'rxjs';
4
4
  import 'vitest';
5
5
 
@@ -17,11 +17,22 @@ declare function createSpyFromClass<T>(ObjectClass: ClassType<T>, methodsToSpyOn
17
17
  */
18
18
  declare function createAutoMock<T>(overrides?: Partial<T>): Spy<T>;
19
19
 
20
- /** Create a single Vitest-backed function spy with all return-type helpers attached. */
20
+ /**
21
+ * Create a recursively-mocked `T` from its type alone (no class). Nested object
22
+ * access auto-creates chainable spies; seed concrete values via `overrides`.
23
+ */
24
+ declare function mockDeep<T>(overrides?: Partial<T>): DeepMockProxy<T>;
25
+
26
+ /** Create a single host-runner-backed function spy with all return-type helpers attached. */
21
27
  declare function createFunctionSpy<FunctionType extends Func>(name: string): AddSpyMethodsByReturnTypes<FunctionType>;
22
28
 
29
+ /** Clear recorded calls on every spy inside `spy` (configured return values are kept). */
30
+ declare function clearAutoSpy(spy: object): void;
31
+ /** Reset every spy inside `spy`: clears recorded calls and reverts all `calledWith`/return-value configuration. */
32
+ declare function resetAutoSpy(spy: object): void;
33
+
23
34
  declare const errorHandler: {
24
35
  throwArgumentsError(actualArgs: unknown[], functionName: string): never;
25
36
  };
26
37
 
27
- export { AddSpyMethodsByReturnTypes, ClassSpyConfiguration, ClassType, Func, OnlyMethodKeysOf, Spy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler };
38
+ export { AddSpyMethodsByReturnTypes, ClassSpyConfiguration, ClassType, DeepMockProxy, Func, OnlyMethodKeysOf, Spy, clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy };
package/dist/bun.js CHANGED
@@ -1 +1 @@
1
- import {a as a$1}from'./chunk-IPBQZ4JC.js';export{a as createAutoMock}from'./chunk-HVN6A3AX.js';export{a as createSpyFromClass}from'./chunk-WP2TFS53.js';import {a}from'./chunk-MQCVIN2A.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-MQCVIN2A.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-T3N4PY2U.js';export{c as clearAutoSpy,a as createAutoMock,b as mockDeep,d as resetAutoSpy}from'./chunk-N724W7OZ.js';export{a as createSpyFromClass}from'./chunk-Q4FBVCJO.js';import {a}from'./chunk-RTGT5WHR.js';export{i as createFunctionSpy,h as errorHandler}from'./chunk-RTGT5WHR.js';import'./chunk-7IUYJ6ZW.js';import {mock}from'bun:test';function r(m){return a$1({createMockFn:(o,e)=>{let n=m.mock(o??(()=>{}));return e!==void 0&&n.mockName&&n.mockName(e),n},getCalls:o=>o.mock.calls,reset:o=>o.mockReset(),clear:o=>o.mockClear(),restoreImplementation:(o,e)=>o.mockImplementation(e)})}a(r({mock:mock}));
@@ -0,0 +1 @@
1
+ import {vi}from'vitest';var c={createMockFn(n,e){let t=n?vi.fn(n):vi.fn();return e!==void 0&&t.mockName(e),t},spyOnGetter(n,e){return vi.spyOn(n,e,"get")},spyOnSetter(n,e){return vi.spyOn(n,e,"set")},getCalls(n){return n.mock.calls},reset(n){n.mockReset();},clear(n){n.mockClear();},restoreImplementation(n,e){n.mockImplementation(e);}};export{c as a};
@@ -0,0 +1 @@
1
+ import {c,g as g$1,f,i,e}from'./chunk-RTGT5WHR.js';function m(t={}){let e=new Map;for(let o of Reflect.ownKeys(t))e.set(o,Reflect.get(t,o));let n={get(o,r){if(e.has(r))return e.get(r);if(typeof r=="symbol"||r==="then"||r==="constructor")return;let s=i(String(r));return e.set(r,s),s},set(o,r,s){return e.set(r,s),true},has(o,r){return e.has(r)},ownKeys(){return [...e.keys()]},getOwnPropertyDescriptor(o,r){if(e.has(r))return {configurable:true,enumerable:true,value:e.get(r),writable:true}}};return new Proxy({},n)}function g(t,e){let n=i(t),o=new Map,r=new Map;for(let u of Reflect.ownKeys(e))r.set(u,Reflect.get(e,u));let s={get(u,c,i){if(r.has(c))return r.get(c);if(c!=="then"){if(c in u)return Reflect.get(u,c,i);if(typeof c!="symbol")return o.has(c)||o.set(c,g(`${t}.${String(c)}`,{})),o.get(c)}},set(u,c,i){return r.set(c,i),true}};return new Proxy(n,s)}function b(t={}){return g("mockDeep",t)}function w(t){return typeof t=="object"&&t!==null&&"getters"in t&&"setters"in t}function M(t){let e$1=Object.getOwnPropertyDescriptor(t,"accessorSpies")?.value;return w(e$1)?[...Object.values(e$1.getters),...Object.values(e$1.setters)].filter(e):[]}function d(t){let e$1=[];return Object.keys(t).forEach(n=>{let o=Object.getOwnPropertyDescriptor(t,n);!o||o.get||o.set||e(o.value)&&e$1.push(o.value);}),[...e$1,...M(t)]}function x(t){let e=c();d(t).forEach(n=>{e.clear(n),g$1(n);});}function P(t){let e=c();d(t).forEach(n=>{e.clear(n),g$1(n),f(n);});}export{m as a,b,x as c,P as d};
@@ -0,0 +1 @@
1
+ import {i,c as c$1,d as d$1}from'./chunk-RTGT5WHR.js';import {c}from'./chunk-7IUYJ6ZW.js';function u(e,s){Object.defineProperty(e,s,{get(){},set(t){},configurable:true});}function l(e,s,t){let o=c$1(),r=t==="setter"?o.spyOnSetter(e,s):o.spyOnGetter(e,s);return d$1(r),r}function f(e,s,t){let o={getters:{},setters:{}};e.accessorSpies=o,s.forEach(r=>{u(e,r),o.getters[r]=l(e,r,"getter");}),t.forEach(r=>{Object.prototype.hasOwnProperty.call(e,r)||u(e,r),o.setters[r]=l(e,r,"setter");});}var g={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[],autoSpyAccessors:false,lazySpies:false};function O(e){let s=Object.getOwnPropertyDescriptors(e);return Object.keys(s).filter(t=>t!=="constructor"&&!s[t]?.get)}function S(e,s){let t=e;for(;t;){let o=Object.getPrototypeOf(t);o&&s(t),t=o;}}var d=new WeakMap;function b(e){let s=d.get(e);if(s)return s;let t=new Set;S(e,r=>O(r).forEach(n=>t.add(n)));let o=[...t];return d.set(e,o),o}function T(e){let s=new Set,t=new Set;return S(e,o=>{let r=Object.getOwnPropertyDescriptors(o);Object.keys(r).forEach(n=>{n!=="constructor"&&(r[n]?.get&&s.add(n),r[n]?.set&&t.add(n));});}),{getters:[...s],setters:[...t]}}function w(e,s){if(!s.autoSpyAccessors)return {getters:s.gettersToSpyOn,setters:s.settersToSpyOn};let t=T(e);return {getters:[...new Set([...s.gettersToSpyOn,...t.getters])],setters:[...new Set([...s.settersToSpyOn,...t.setters])]}}function h(e,s){let t=new Set(b(e.prototype)),o=s.filter(r=>!t.has(r));o.length!==0&&console.warn(`[vitest-auto-spy] createSpyFromClass(${e.name}): requested method(s) not found on the class prototype: ${o.join(", ")}. A spy was still created, but the real code will never call it \u2014 check for typos.`);}function A(e,s){Object.defineProperty(e,s,{configurable:true,enumerable:true,get(){let t=i(s);return Object.defineProperty(e,s,{configurable:true,enumerable:true,writable:true,value:t}),t}});}function v(e){return e?Array.isArray(e)?{...g,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[],autoSpyAccessors:e.autoSpyAccessors??false,lazySpies:e.lazySpies??false}:{...g}}function F(e,s){let t=v(s),o=t.methodsToSpyOn.length>0?t.methodsToSpyOn:b(e.prototype);t.methodsToSpyOn.length>0&&h(e,t.methodsToSpyOn);let r={};t.observablePropsToSpyOn.forEach(c$1=>{r[c$1]=c().createPropSpy();});let n=w(e.prototype,t);return f(r,n.getters,n.setters),o.forEach(c=>{t.lazySpies?A(r,c):r[c]=i(c);}),r}export{F as a};
@@ -0,0 +1 @@
1
+ import {b as b$1,d}from'./chunk-7IUYJ6ZW.js';var f;function q(e){f=e;}function Y(){return f!==void 0}var E="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 p(){if(!f)throw new Error(E);return f}function W(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function _(e,t){return Object.entries(e).map(([n,r])=>`${n}:${u(r,t)}`).join(",")}function $(e,t){return `new Map([${[...e.entries()].map(([r,o])=>`[${u(r,t)},${u(o,t)}]`).join(",")}])`}function z(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=$(e,t):e instanceof Set?n=`new Set([${[...e].map(r=>u(r,t)).join(",")}])`:Array.isArray(e)?n=`[${e.map(r=>u(r,t)).join(",")}]`:n=`{${_(e,t)}}`,t.delete(e),n}function m(e){return typeof e=="string"?W(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:Object.is(e,-0)?"-0":String(e)}function w(e){return typeof e=="object"&&e!==null}function u(e,t=new WeakSet){return typeof e=="object"&&e!==null?z(e,t):m(e)}var H=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=u(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},b={throwArgumentsError(e,t){let n=e.length===0?B:I(e);throw new Error(H(t)+n)}};function g(e){return typeof e=="object"&&e!==null&&"asymmetricMatch"in e&&typeof e.asymmetricMatch=="function"}function D(e){return e.some(g)}var l=class{#t=Object.create(null);#n=[];set(t,n){if(Array.isArray(t)&&D(t)){this.#n.push({args:t,value:n});return}this.#t[this.#e(t)]=n;}get(t){let n=this.#e(t);return n in this.#t?this.#t[n]:this.#r(t)}#e(t){return Array.isArray(t)&&!t.some(w)?`[${t.map(n=>m(n)).join(",")}]`:u(t)}#r(t){return Array.isArray(t)?this.#n.find(r=>this.#o(r.args,t))?.value:void 0}#o(t,n){return t.length!==n.length?false:t.every((r,o)=>this.#i(r,n[o]))}#i(t,n){return g(t)?t.asymmetricMatch(n):this.#e([t])===this.#e([n])}};function N(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(n=>setTimeout(()=>n(t.value),t.delay))}))}function C(e,t){d(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(n)});}});}function j(e,t){C(e,n=>{t.value=n.value,t._isRejectedPromise=n._isRejectedPromise??false,t.valuesPerCalls=n.valuesPerCalls??[];});}function M(e,t){C(e,n=>{e.argsToValuesMap.set(t,n);});}var G={record:e=>e,clear:()=>{}};function L(e){return typeof e!="object"&&typeof e!="function"||e===null?false:typeof Reflect.get(e,"then")=="function"}function R(e){let t=Reflect.get(e,"mock");if(typeof t!="object"||t===null||"settledResults"in t)return G;let n=[];return Object.defineProperty(t,"settledResults",{value:n,enumerable:true,configurable:true,writable:true}),{record(r){let o={type:"incomplete",value:void 0};return n.push(o),L(r)?r.then(i=>{o.type="fulfilled",o.value=i;},i=>{o.type="rejected",o.value=i;}):(o.type="fulfilled",o.value=r),r},clear(){n.length=0;}}}var v=Symbol.for("vitest-auto-spy.mock"),y=Symbol.for("vitest-auto-spy.resetConfig"),k=Symbol.for("vitest-auto-spy.clearHook");function S(e){Object.defineProperty(e,v,{value:true,enumerable:false,configurable:true});}function ie(e){return typeof e=="function"&&v in e}function T(e,t){Object.defineProperty(e,y,{value:t,enumerable:false,configurable:true});}function ue(e){if(!(y in e))return;let t=Reflect.get(e,y);typeof t=="function"&&t();}function P(e,t){Object.defineProperty(e,k,{value:t,enumerable:false,configurable:true});}function ae(e){if(!(k in e))return;let t=Reflect.get(e,k);typeof t=="function"&&t();}function K(e){return typeof e=="object"&&e!==null&&"value"in e}function x(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function O(e,t){let n=e.argsToValuesMap.get(t);return K(n)?{found:true,value:x(n)}:{found:false,value:void 0}}function U(e,t,n,r,o){if(e.wasConfigured){let i=O(e,r);if(i.found)return i.value}if(t.wasConfigured){let i=O(t,r);if(i.found)return i.value;b.throwArgumentsError(r,o);}return x(n)}function V(e,t){e.wasConfigured=true;let n=r=>{e.argsToValuesMap.set(t,{value:r});};return d(e,{mockReturnValue:n,returnValue:n}),M(e,t),b$1()?.addToCalledWithObject(e,t),e}function A(){return {wasConfigured:false,argsToValuesMap:new l}}function F(e){e.wasConfigured=false,e.argsToValuesMap=new l;}function he(e){let t=A(),n=A(),r={value:void 0},o=(...a)=>h.record(U(t,n,r,a,e)),i=p().createMockFn(o,e),h=R(i);j(i,r),b$1()?.addToFunctionSpy(i,r);let c=d(i,{calledWith:(...a)=>V(t,a),mustBeCalledWith:(...a)=>V(n,a)});return T(c,()=>{F(t),F(n),r.value=void 0,delete r._isRejectedPromise,delete r.valuesPerCalls,p().restoreImplementation(i,o);}),P(c,()=>h.clear()),S(c),c}export{q as a,Y as b,p as c,S as d,ie as e,ue as f,ae as g,b as h,he as i};
@@ -0,0 +1 @@
1
+ function p({createMockFn:r,getCalls:c,reset:s,clear:a,restoreImplementation:e}){return {createMockFn:r,spyOnGetter:(o,t)=>i(r,o,t,"get"),spyOnSetter:(o,t)=>i(r,o,t,"set"),getCalls:c,reset:s,clear:a,restoreImplementation:e}}function i(r,c,s,a){let e=Object.getOwnPropertyDescriptor(c,s),o=a==="get"?e?.get:e?.set,t=r(o),n={configurable:true,enumerable:e?.enumerable??true};return e?.get&&(n.get=e.get),e?.set&&(n.set=e.set),a==="get"?n.get=t:n.set=t,Object.defineProperty(c,s,n),t}export{p as a};
package/dist/console.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var vitest=require('vitest');function A(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"?A(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){e.wasConfigured=true;let t=n=>{e.argsToValuesMap.set(o,{value:n});};return u(e,{mockReturnValue:t,returnValue: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 R(e,o){console[e]=o;}function i(e){S.set(e,L(e));let o=x(`console.${e}`);return R(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)R(e,o);S.clear(),C.clear(),c=void 0;}var V={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(V);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;
1
+ 'use strict';var vitest=require('vitest');function D(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function L(e,t){return Object.entries(e).map(([n,o])=>`${n}:${s(o,t)}`).join(",")}function N(e,t){return `new Map([${[...e.entries()].map(([o,r])=>`[${s(o,t)},${s(r,t)}]`).join(",")}])`}function G(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=N(e,t):e instanceof Set?n=`new Set([${[...e].map(o=>s(o,t)).join(",")}])`:Array.isArray(e)?n=`[${e.map(o=>s(o,t)).join(",")}]`:n=`{${L(e,t)}}`,t.delete(e),n}function k(e){return typeof e=="string"?D(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:Object.is(e,-0)?"-0":String(e)}function g(e){return typeof e=="object"&&e!==null}function s(e,t=new WeakSet){return typeof e=="object"&&e!==null?G(e,t):k(e)}function w(e){return typeof e=="object"&&e!==null&&"asymmetricMatch"in e&&typeof e.asymmetricMatch=="function"}function U(e){return e.some(w)}var l=class{#t=Object.create(null);#n=[];set(t,n){if(Array.isArray(t)&&U(t)){this.#n.push({args:t,value:n});return}this.#t[this.#e(t)]=n;}get(t){let n=this.#e(t);return n in this.#t?this.#t[n]:this.#o(t)}#e(t){return Array.isArray(t)&&!t.some(g)?`[${t.map(n=>k(n)).join(",")}]`:s(t)}#o(t){return Array.isArray(t)?this.#n.find(o=>this.#r(o.args,t))?.value:void 0}#r(t,n){return t.length!==n.length?false:t.every((o,r)=>this.#i(o,n[r]))}#i(t,n){return w(t)?t.asymmetricMatch(n):this.#e([t])===this.#e([n])}};var q=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,K="But the function was called without any arguments.",J=e=>{let t=s(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},j={throwArgumentsError(e,t){let n=e.length===0?K:J(e);throw new Error(q(t)+n)}};var y;function v(e){y=e;}function R(){return y!==void 0}var X="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 c(){if(!y)throw new Error(X);return y}function p(e,t){return Object.assign(e,t)}function Q(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(n=>setTimeout(()=>n(t.value),t.delay))}))}function T(e,t){p(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:Q(n)});}});}function F(e,t){T(e,n=>{t.value=n.value,t._isRejectedPromise=n._isRejectedPromise??false,t.valuesPerCalls=n.valuesPerCalls??[];});}function O(e,t){T(e,n=>{e.argsToValuesMap.set(t,n);});}var Z={record:e=>e,clear:()=>{}};function ee(e){return typeof e!="object"&&typeof e!="function"||e===null?false:typeof Reflect.get(e,"then")=="function"}function x(e){let t=Reflect.get(e,"mock");if(typeof t!="object"||t===null||"settledResults"in t)return Z;let n=[];return Object.defineProperty(t,"settledResults",{value:n,enumerable:true,configurable:true,writable:true}),{record(o){let r={type:"incomplete",value:void 0};return n.push(r),ee(o)?o.then(i=>{r.type="fulfilled",r.value=i;},i=>{r.type="rejected",r.value=i;}):(r.type="fulfilled",r.value=o),o},clear(){n.length=0;}}}var te=Symbol.for("vitest-auto-spy.mock"),ne=Symbol.for("vitest-auto-spy.resetConfig"),oe=Symbol.for("vitest-auto-spy.clearHook");function A(e){Object.defineProperty(e,te,{value:true,enumerable:false,configurable:true});}function P(e,t){Object.defineProperty(e,ne,{value:t,enumerable:false,configurable:true});}function V(e,t){Object.defineProperty(e,oe,{value:t,enumerable:false,configurable:true});}function re(e){return typeof e=="object"&&e!==null&&"value"in e}function I(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function W(e,t){let n=e.argsToValuesMap.get(t);return re(n)?{found:true,value:I(n)}:{found:false,value:void 0}}function ie(e,t,n,o,r){if(e.wasConfigured){let i=W(e,o);if(i.found)return i.value}if(t.wasConfigured){let i=W(t,o);if(i.found)return i.value;j.throwArgumentsError(o,r);}return I(n)}function E(e,t){e.wasConfigured=true;let n=o=>{e.argsToValuesMap.set(t,{value:o});};return p(e,{mockReturnValue:n,returnValue:n}),O(e,t),e}function _(){return {wasConfigured:false,argsToValuesMap:new l}}function H(e){e.wasConfigured=false,e.argsToValuesMap=new l;}function $(e){let t=_(),n=_(),o={value:void 0},r=(...a)=>M.record(ie(t,n,o,a,e)),i=c().createMockFn(r,e),M=x(i);F(i,o);let f=p(i,{calledWith:(...a)=>E(t,a),mustBeCalledWith:(...a)=>E(n,a)});return P(f,()=>{H(t),H(n),o.value=void 0,delete o._isRejectedPromise,delete o.valuesPerCalls,c().restoreImplementation(i,r);}),V(f,()=>M.clear()),A(f),f}var h=new Map,b=new Map,d;function se(e){return console[e]}function z(e,t){console[e]=t;}function u(e){h.set(e,se(e));let t=$(`console.${e}`);return z(e,t),b.set(e,t),t}function C(){return d||(d={consoleDebugSpy:u("debug"),consoleErrorSpy:u("error"),consoleInfoSpy:u("info"),consoleLogSpy:u("log"),consoleTimeEndSpy:u("timeEnd"),consoleTimeSpy:u("time"),consoleTraceSpy:u("trace"),consoleWarnSpy:u("warn")},d)}function ue(){let e=c();for(let t of b.values())e.reset(t);}function ae(){for(let[e,t]of h)z(e,t);h.clear(),b.clear(),d=void 0;}var B={createMockFn(e,t){let n=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&n.mockName(t),n},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();},clear(e){e.mockClear();},restoreImplementation(e,t){e.mockImplementation(t);}};R()||v(B);var {consoleDebugSpy:Ie,consoleErrorSpy:$e,consoleInfoSpy:ze,consoleLogSpy:Be,consoleTimeEndSpy:De,consoleTimeSpy:Le,consoleTraceSpy:Ne,consoleWarnSpy:Ge}=C();exports.consoleDebugSpy=Ie;exports.consoleErrorSpy=$e;exports.consoleInfoSpy=ze;exports.consoleLogSpy=Be;exports.consoleTimeEndSpy=De;exports.consoleTimeSpy=Le;exports.consoleTraceSpy=Ne;exports.consoleWarnSpy=Ge;exports.installConsoleSpies=C;exports.resetConsoleSpies=ue;exports.restoreConsole=ae;
@@ -1,4 +1,4 @@
1
- import { i as AddSpyMethodsByReturnTypes } from './types-Cv3L71P0.cjs';
1
+ import { i as AddSpyMethodsByReturnTypes } from './types-BKS6JdLv.cjs';
2
2
  import 'rxjs';
3
3
  import 'vitest';
4
4
 
package/dist/console.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { i as AddSpyMethodsByReturnTypes } from './types-Cv3L71P0.js';
1
+ import { i as AddSpyMethodsByReturnTypes } from './types-BKS6JdLv.js';
2
2
  import 'rxjs';
3
3
  import 'vitest';
4
4
 
package/dist/console.js CHANGED
@@ -1 +1 @@
1
- import {a as a$2}from'./chunk-6LFQMHSX.js';import {b as b$1,a as a$1,e,c}from'./chunk-MQCVIN2A.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};
1
+ import {a as a$2}from'./chunk-HDCUMVHT.js';import {b as b$1,a as a$1,i,c}from'./chunk-RTGT5WHR.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=i(`console.${o}`);return y(o,e),p.set(o,e),e}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 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 h(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function O(e,t,r){let n=d();return r==="setter"?n.spyOnSetter(e,t):n.spyOnGetter(e,t)}function T(e,t,r){let n={getters:{},setters:{}};e.accessorSpies=n,t.forEach(o=>{h(e,o),n.getters[o]=O(e,o,"getter");}),r.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||h(e,o),n.setters[o]=O(e,o,"setter");});}function E(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function _(e,t){return Object.entries(e).map(([r,n])=>`${r}:${u(n,t)}`).join(",")}function H(e,t){return `new Map([${[...e.entries()].map(([n,o])=>`[${u(n,t)},${u(o,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(n=>u(n,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(n=>u(n,t)).join(",")}]`:r=`{${_(e,t)}}`,t.delete(e),r}function u(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 u(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=u(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},m={throwArgumentsError(e,t){let r=e.length===0?B:I(e);throw new Error(z(t)+r)}};var G="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(G);}function c(e,t){return Object.assign(e,t)}function K(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:K(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 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 F(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,n,o){if(e.wasConfigured){let s=F(e,n);if(s.found)return s.value}if(t.wasConfigured){let s=F(t,n);if(s.found)return s.value;m.throwArgumentsError(n,o);}return A(r)}function P(e,t){e.wasConfigured=true;let r=n=>{e.argsToValuesMap.set(t,{value:n});};return c(e,{mockReturnValue:r,returnValue:r}),v(e,t),e}function R(){return {wasConfigured:false,argsToValuesMap:new y}}function a(e){let t=R(),r=R(),n={value:void 0},o=d().createMockFn((...i)=>q(t,r,n,i,e),e);C(o,n);let s=c(o,{calledWith:(...i)=>P(t,i),mustBeCalledWith:(...i)=>P(r,i)});return s}var x={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function N(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(r=>r!=="constructor"&&!t[r]?.get)}var V=new WeakMap;function U(e){let t=V.get(e);if(t)return t;let r=new Set,n=e;for(;n;){let s=Object.getPrototypeOf(n);s&&N(n).forEach(i=>r.add(i)),n=s;}let o=[...r];return V.set(e,o),o}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 J(e,t){let{methodsToSpyOn:r,observablePropsToSpyOn:n,settersToSpyOn:o,gettersToSpyOn:s}=L(t),i=r.length>0?r:U(e.prototype),p={};return n.forEach(l=>{p[l]=M().createPropSpy();}),T(p,s,o),i.forEach(l=>{p[l]=a(l);}),p}function X(e={}){let t=new Map;for(let n of Reflect.ownKeys(e))t.set(n,Reflect.get(e,n));let r={get(n,o){if(t.has(o))return t.get(o);if(typeof o=="symbol"||o==="then"||o==="constructor")return;let s=a(String(o));return t.set(o,s),s},set(n,o,s){return t.set(o,s),true},has(n,o){return t.has(o)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(n,o){if(t.has(o))return {configurable:true,enumerable:true,value:t.get(o),writable:true}}};return new Proxy({},r)}S(w);exports.createAutoMock=X;exports.createFunctionSpy=a;exports.createSpyFromClass=J;exports.errorHandler=m;
1
+ 'use strict';var vitest=require('vitest');var g;function O(e){g=e;}var Q="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 p(){if(!g)throw new Error(Q);return g}var T={createMockFn(e,t){let n=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&n.mockName(t),n},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();},clear(e){e.mockClear();},restoreImplementation(e,t){e.mockImplementation(t);}};var C=Symbol.for("vitest-auto-spy.mock"),b=Symbol.for("vitest-auto-spy.resetConfig"),k=Symbol.for("vitest-auto-spy.clearHook");function m(e){Object.defineProperty(e,C,{value:true,enumerable:false,configurable:true});}function w(e){return typeof e=="function"&&C in e}function R(e,t){Object.defineProperty(e,b,{value:t,enumerable:false,configurable:true});}function A(e){if(!(b in e))return;let t=Reflect.get(e,b);typeof t=="function"&&t();}function P(e,t){Object.defineProperty(e,k,{value:t,enumerable:false,configurable:true});}function h(e){if(!(k in e))return;let t=Reflect.get(e,k);typeof t=="function"&&t();}function F(e,t){Object.defineProperty(e,t,{get(){},set(n){},configurable:true});}function x(e,t,n){let r=p(),o=n==="setter"?r.spyOnSetter(e,t):r.spyOnGetter(e,t);return m(o),o}function V(e,t,n){let r={getters:{},setters:{}};e.accessorSpies=r,t.forEach(o=>{F(e,o),r.getters[o]=x(e,o,"getter");}),n.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||F(e,o),r.setters[o]=x(e,o,"setter");});}function Z(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function ee(e,t){return Object.entries(e).map(([n,r])=>`${n}:${a(r,t)}`).join(",")}function te(e,t){return `new Map([${[...e.entries()].map(([r,o])=>`[${a(r,t)},${a(o,t)}]`).join(",")}])`}function ne(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=te(e,t):e instanceof Set?n=`new Set([${[...e].map(r=>a(r,t)).join(",")}])`:Array.isArray(e)?n=`[${e.map(r=>a(r,t)).join(",")}]`:n=`{${ee(e,t)}}`,t.delete(e),n}function S(e){return typeof e=="string"?Z(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:Object.is(e,-0)?"-0":String(e)}function E(e){return typeof e=="object"&&e!==null}function a(e,t=new WeakSet){return typeof e=="object"&&e!==null?ne(e,t):S(e)}function W(e){return typeof e=="object"&&e!==null&&"asymmetricMatch"in e&&typeof e.asymmetricMatch=="function"}function re(e){return e.some(W)}var f=class{#t=Object.create(null);#n=[];set(t,n){if(Array.isArray(t)&&re(t)){this.#n.push({args:t,value:n});return}this.#t[this.#e(t)]=n;}get(t){let n=this.#e(t);return n in this.#t?this.#t[n]:this.#r(t)}#e(t){return Array.isArray(t)&&!t.some(E)?`[${t.map(n=>S(n)).join(",")}]`:a(t)}#r(t){return Array.isArray(t)?this.#n.find(r=>this.#o(r.args,t))?.value:void 0}#o(t,n){return t.length!==n.length?false:t.every((r,o)=>this.#s(r,n[o]))}#s(t,n){return W(t)?t.asymmetricMatch(n):this.#e([t])===this.#e([n])}};var oe=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,se="But the function was called without any arguments.",ie=e=>{let t=a(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},M={throwArgumentsError(e,t){let n=e.length===0?se:ie(e);throw new Error(oe(t)+n)}};var ce="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 _(){throw new Error(ce);}function d(e,t){return Object.assign(e,t)}function ue(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(n=>setTimeout(()=>n(t.value),t.delay))}))}function H(e,t){d(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:ue(n)});}});}function D(e,t){H(e,n=>{t.value=n.value,t._isRejectedPromise=n._isRejectedPromise??false,t.valuesPerCalls=n.valuesPerCalls??[];});}function z(e,t){H(e,n=>{e.argsToValuesMap.set(t,n);});}var ae={record:e=>e,clear:()=>{}};function pe(e){return typeof e!="object"&&typeof e!="function"||e===null?false:typeof Reflect.get(e,"then")=="function"}function $(e){let t=Reflect.get(e,"mock");if(typeof t!="object"||t===null||"settledResults"in t)return ae;let n=[];return Object.defineProperty(t,"settledResults",{value:n,enumerable:true,configurable:true,writable:true}),{record(r){let o={type:"incomplete",value:void 0};return n.push(o),pe(r)?r.then(s=>{o.type="fulfilled",o.value=s;},s=>{o.type="rejected",o.value=s;}):(o.type="fulfilled",o.value=r),r},clear(){n.length=0;}}}function le(e){return typeof e=="object"&&e!==null&&"value"in e}function N(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function I(e,t){let n=e.argsToValuesMap.get(t);return le(n)?{found:true,value:N(n)}:{found:false,value:void 0}}function fe(e,t,n,r,o){if(e.wasConfigured){let s=I(e,r);if(s.found)return s.value}if(t.wasConfigured){let s=I(t,r);if(s.found)return s.value;M.throwArgumentsError(r,o);}return N(n)}function B(e,t){e.wasConfigured=true;let n=r=>{e.argsToValuesMap.set(t,{value:r});};return d(e,{mockReturnValue:n,returnValue:n}),z(e,t),e}function K(){return {wasConfigured:false,argsToValuesMap:new f}}function G(e){e.wasConfigured=false,e.argsToValuesMap=new f;}function l(e){let t=K(),n=K(),r={value:void 0},o=(...u)=>c.record(fe(t,n,r,u,e)),s=p().createMockFn(o,e),c=$(s);D(s,r);let i=d(s,{calledWith:(...u)=>B(t,u),mustBeCalledWith:(...u)=>B(n,u)});return R(i,()=>{G(t),G(n),r.value=void 0,delete r._isRejectedPromise,delete r.valuesPerCalls,p().restoreImplementation(s,o);}),P(i,()=>c.clear()),m(i),i}var L={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[],autoSpyAccessors:false,lazySpies:false};function de(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(n=>n!=="constructor"&&!t[n]?.get)}function q(e,t){let n=e;for(;n;){let r=Object.getPrototypeOf(n);r&&t(n),n=r;}}var U=new WeakMap;function Y(e){let t=U.get(e);if(t)return t;let n=new Set;q(e,o=>de(o).forEach(s=>n.add(s)));let r=[...n];return U.set(e,r),r}function ye(e){let t=new Set,n=new Set;return q(e,r=>{let o=Object.getOwnPropertyDescriptors(r);Object.keys(o).forEach(s=>{s!=="constructor"&&(o[s]?.get&&t.add(s),o[s]?.set&&n.add(s));});}),{getters:[...t],setters:[...n]}}function me(e,t){if(!t.autoSpyAccessors)return {getters:t.gettersToSpyOn,setters:t.settersToSpyOn};let n=ye(e);return {getters:[...new Set([...t.gettersToSpyOn,...n.getters])],setters:[...new Set([...t.settersToSpyOn,...n.setters])]}}function ge(e,t){let n=new Set(Y(e.prototype)),r=t.filter(o=>!n.has(o));r.length!==0&&console.warn(`[vitest-auto-spy] createSpyFromClass(${e.name}): requested method(s) not found on the class prototype: ${r.join(", ")}. A spy was still created, but the real code will never call it \u2014 check for typos.`);}function be(e,t){Object.defineProperty(e,t,{configurable:true,enumerable:true,get(){let n=l(t);return Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:n}),n}});}function ke(e){return e?Array.isArray(e)?{...L,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[],autoSpyAccessors:e.autoSpyAccessors??false,lazySpies:e.lazySpies??false}:{...L}}function we(e,t){let n=ke(t),r=n.methodsToSpyOn.length>0?n.methodsToSpyOn:Y(e.prototype);n.methodsToSpyOn.length>0&&ge(e,n.methodsToSpyOn);let o={};n.observablePropsToSpyOn.forEach(c=>{o[c]=_().createPropSpy();});let s=me(e.prototype,n);return V(o,s.getters,s.setters),r.forEach(c=>{n.lazySpies?be(o,c):o[c]=l(c);}),o}function he(e={}){let t=new Map;for(let r of Reflect.ownKeys(e))t.set(r,Reflect.get(e,r));let n={get(r,o){if(t.has(o))return t.get(o);if(typeof o=="symbol"||o==="then"||o==="constructor")return;let s=l(String(o));return t.set(o,s),s},set(r,o,s){return t.set(o,s),true},has(r,o){return t.has(o)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(r,o){if(t.has(o))return {configurable:true,enumerable:true,value:t.get(o),writable:true}}};return new Proxy({},n)}function J(e,t){let n=l(e),r=new Map,o=new Map;for(let c of Reflect.ownKeys(t))o.set(c,Reflect.get(t,c));let s={get(c,i,u){if(o.has(i))return o.get(i);if(i!=="then"){if(i in c)return Reflect.get(c,i,u);if(typeof i!="symbol")return r.has(i)||r.set(i,J(`${e}.${String(i)}`,{})),r.get(i)}},set(c,i,u){return o.set(i,u),true}};return new Proxy(n,s)}function Se(e={}){return J("mockDeep",e)}function Me(e){return typeof e=="object"&&e!==null&&"getters"in e&&"setters"in e}function je(e){let t=Object.getOwnPropertyDescriptor(e,"accessorSpies")?.value;return Me(t)?[...Object.values(t.getters),...Object.values(t.setters)].filter(w):[]}function X(e){let t=[];return Object.keys(e).forEach(n=>{let r=Object.getOwnPropertyDescriptor(e,n);!r||r.get||r.set||w(r.value)&&t.push(r.value);}),[...t,...je(e)]}function ve(e){let t=p();X(e).forEach(n=>{t.clear(n),h(n);});}function Oe(e){let t=p();X(e).forEach(n=>{t.clear(n),h(n),A(n);});}O(T);exports.clearAutoSpy=ve;exports.createAutoMock=he;exports.createFunctionSpy=l;exports.createSpyFromClass=we;exports.errorHandler=M;exports.mockDeep=Se;exports.resetAutoSpy=Oe;
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.cjs';
2
- export { createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler } from './bun.cjs';
1
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, D as DeepMockProxy, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.cjs';
2
+ export { clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy } from './bun.cjs';
3
3
  import 'rxjs';
4
4
  import 'vitest';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.js';
2
- export { createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler } from './bun.js';
1
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, D as DeepMockProxy, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.js';
2
+ export { clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy } from './bun.js';
3
3
  import 'rxjs';
4
4
  import 'vitest';
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-HVN6A3AX.js';export{a as createSpyFromClass}from'./chunk-WP2TFS53.js';import {a}from'./chunk-MQCVIN2A.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-MQCVIN2A.js';import'./chunk-7IUYJ6ZW.js';a(a$1);
1
+ import {a as a$1}from'./chunk-HDCUMVHT.js';export{c as clearAutoSpy,a as createAutoMock,b as mockDeep,d as resetAutoSpy}from'./chunk-N724W7OZ.js';export{a as createSpyFromClass}from'./chunk-Q4FBVCJO.js';import {a}from'./chunk-RTGT5WHR.js';export{i as createFunctionSpy,h as errorHandler}from'./chunk-RTGT5WHR.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 E="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(E);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){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function $(e,t){return Object.entries(e).map(([r,n])=>`${r}:${u(n,t)}`).join(",")}function H(e,t){return `new Map([${[...e.entries()].map(([n,o])=>`[${u(n,t)},${u(o,t)}]`).join(",")}])`}function z(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(n=>u(n,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(n=>u(n,t)).join(",")}]`:r=`{${$(e,t)}}`,t.delete(e),r}function u(e,t=new WeakSet){return typeof e=="string"?_(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?z(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 u(t)}};var N=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=u(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(N(t)+r)}};var G="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 h(){throw new Error(G);}function a(e,t){return Object.assign(e,t)}function K(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(r=>setTimeout(()=>r(t.value),t.delay))}))}function w(e,t){a(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:K(r)});}});}function j(e,t){w(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function M(e,t){w(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 v(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,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 A(r)}function F(e,t){e.wasConfigured=true;let r=n=>{e.argsToValuesMap.set(t,{value:n});};return a(e,{mockReturnValue:r,returnValue:r}),M(e,t),e}function R(){return {wasConfigured:false,argsToValuesMap:new f}}function P(e){let t=R(),r=R(),n={value:void 0},o=l().createMockFn((...i)=>q(t,r,n,i,e),e);j(o,n);let s=a(o,{calledWith:(...i)=>F(t,i),mustBeCalledWith:(...i)=>F(r,i)});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)}var x=new WeakMap;function L(e){let t=x.get(e);if(t)return t;let r=new Set,n=e;for(;n;){let s=Object.getPrototypeOf(n);s&&U(n).forEach(i=>r.add(i)),n=s;}let o=[...r];return x.set(e,o),o}function J(e){return e?Array.isArray(e)?{...V,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[]}:{...V}}function W(e,t){let{methodsToSpyOn:r,observablePropsToSpyOn:n,settersToSpyOn:o,gettersToSpyOn:s}=J(t),i=r.length>0?r:L(e.prototype),c={};return n.forEach(p=>{c[p]=h().createPropSpy();}),O(c,s,o),i.forEach(p=>{c[p]=P(p);}),c}function X(e,t){return {provide:e,useValue:W(e,t)}}function Y(e,t){return e.get(t)}b(k);exports.injectSpy=Y;exports.provideAutoSpy=X;
1
+ 'use strict';var vitest=require('vitest');var m;function h(e){m=e;}var K="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 a(){if(!m)throw new Error(K);return m}var w={createMockFn(e,t){let n=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&n.mockName(t),n},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();},clear(e){e.mockClear();},restoreImplementation(e,t){e.mockImplementation(t);}};var L=Symbol.for("vitest-auto-spy.mock"),U=Symbol.for("vitest-auto-spy.resetConfig"),q=Symbol.for("vitest-auto-spy.clearHook");function y(e){Object.defineProperty(e,L,{value:true,enumerable:false,configurable:true});}function v(e,t){Object.defineProperty(e,U,{value:t,enumerable:false,configurable:true});}function M(e,t){Object.defineProperty(e,q,{value:t,enumerable:false,configurable:true});}function T(e,t){Object.defineProperty(e,t,{get(){},set(n){},configurable:true});}function j(e,t,n){let r=a(),o=n==="setter"?r.spyOnSetter(e,t):r.spyOnGetter(e,t);return y(o),o}function O(e,t,n){let r={getters:{},setters:{}};e.accessorSpies=r,t.forEach(o=>{T(e,o),r.getters[o]=j(e,o,"getter");}),n.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||T(e,o),r.setters[o]=j(e,o,"setter");});}function Y(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function J(e,t){return Object.entries(e).map(([n,r])=>`${n}:${i(r,t)}`).join(",")}function X(e,t){return `new Map([${[...e.entries()].map(([r,o])=>`[${i(r,t)},${i(o,t)}]`).join(",")}])`}function Q(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=X(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=`{${J(e,t)}}`,t.delete(e),n}function g(e){return typeof e=="string"?Y(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:Object.is(e,-0)?"-0":String(e)}function C(e){return typeof e=="object"&&e!==null}function i(e,t=new WeakSet){return typeof e=="object"&&e!==null?Q(e,t):g(e)}function R(e){return typeof e=="object"&&e!==null&&"asymmetricMatch"in e&&typeof e.asymmetricMatch=="function"}function Z(e){return e.some(R)}var l=class{#t=Object.create(null);#n=[];set(t,n){if(Array.isArray(t)&&Z(t)){this.#n.push({args:t,value:n});return}this.#t[this.#e(t)]=n;}get(t){let n=this.#e(t);return n in this.#t?this.#t[n]:this.#r(t)}#e(t){return Array.isArray(t)&&!t.some(C)?`[${t.map(n=>g(n)).join(",")}]`:i(t)}#r(t){return Array.isArray(t)?this.#n.find(r=>this.#o(r.args,t))?.value:void 0}#o(t,n){return t.length!==n.length?false:t.every((r,o)=>this.#s(r,n[o]))}#s(t,n){return R(t)?t.asymmetricMatch(n):this.#e([t])===this.#e([n])}};var ee=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,te="But the function was called without any arguments.",ne=e=>{let t=i(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},A={throwArgumentsError(e,t){let n=e.length===0?te:ne(e);throw new Error(ee(t)+n)}};var re="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 P(){throw new Error(re);}function p(e,t){return Object.assign(e,t)}function oe(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(n=>setTimeout(()=>n(t.value),t.delay))}))}function F(e,t){p(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:oe(n)});}});}function x(e,t){F(e,n=>{t.value=n.value,t._isRejectedPromise=n._isRejectedPromise??false,t.valuesPerCalls=n.valuesPerCalls??[];});}function V(e,t){F(e,n=>{e.argsToValuesMap.set(t,n);});}var se={record:e=>e,clear:()=>{}};function ie(e){return typeof e!="object"&&typeof e!="function"||e===null?false:typeof Reflect.get(e,"then")=="function"}function E(e){let t=Reflect.get(e,"mock");if(typeof t!="object"||t===null||"settledResults"in t)return se;let n=[];return Object.defineProperty(t,"settledResults",{value:n,enumerable:true,configurable:true,writable:true}),{record(r){let o={type:"incomplete",value:void 0};return n.push(o),ie(r)?r.then(s=>{o.type="fulfilled",o.value=s;},s=>{o.type="rejected",o.value=s;}):(o.type="fulfilled",o.value=r),r},clear(){n.length=0;}}}function ce(e){return typeof e=="object"&&e!==null&&"value"in e}function $(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function W(e,t){let n=e.argsToValuesMap.get(t);return ce(n)?{found:true,value:$(n)}:{found:false,value:void 0}}function ue(e,t,n,r,o){if(e.wasConfigured){let s=W(e,r);if(s.found)return s.value}if(t.wasConfigured){let s=W(t,r);if(s.found)return s.value;A.throwArgumentsError(r,o);}return $(n)}function _(e,t){e.wasConfigured=true;let n=r=>{e.argsToValuesMap.set(t,{value:r});};return p(e,{mockReturnValue:n,returnValue:n}),V(e,t),e}function z(){return {wasConfigured:false,argsToValuesMap:new l}}function H(e){e.wasConfigured=false,e.argsToValuesMap=new l;}function S(e){let t=z(),n=z(),r={value:void 0},o=(...u)=>c.record(ue(t,n,r,u,e)),s=a().createMockFn(o,e),c=E(s);x(s,r);let d=p(s,{calledWith:(...u)=>_(t,u),mustBeCalledWith:(...u)=>_(n,u)});return v(d,()=>{H(t),H(n),r.value=void 0,delete r._isRejectedPromise,delete r.valuesPerCalls,a().restoreImplementation(s,o);}),M(d,()=>c.clear()),y(d),d}var I={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[],autoSpyAccessors:false,lazySpies:false};function ae(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(n=>n!=="constructor"&&!t[n]?.get)}function B(e,t){let n=e;for(;n;){let r=Object.getPrototypeOf(n);r&&t(n),n=r;}}var N=new WeakMap;function D(e){let t=N.get(e);if(t)return t;let n=new Set;B(e,o=>ae(o).forEach(s=>n.add(s)));let r=[...n];return N.set(e,r),r}function le(e){let t=new Set,n=new Set;return B(e,r=>{let o=Object.getOwnPropertyDescriptors(r);Object.keys(o).forEach(s=>{s!=="constructor"&&(o[s]?.get&&t.add(s),o[s]?.set&&n.add(s));});}),{getters:[...t],setters:[...n]}}function pe(e,t){if(!t.autoSpyAccessors)return {getters:t.gettersToSpyOn,setters:t.settersToSpyOn};let n=le(e);return {getters:[...new Set([...t.gettersToSpyOn,...n.getters])],setters:[...new Set([...t.settersToSpyOn,...n.setters])]}}function de(e,t){let n=new Set(D(e.prototype)),r=t.filter(o=>!n.has(o));r.length!==0&&console.warn(`[vitest-auto-spy] createSpyFromClass(${e.name}): requested method(s) not found on the class prototype: ${r.join(", ")}. A spy was still created, but the real code will never call it \u2014 check for typos.`);}function fe(e,t){Object.defineProperty(e,t,{configurable:true,enumerable:true,get(){let n=S(t);return Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:n}),n}});}function ye(e){return e?Array.isArray(e)?{...I,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[],autoSpyAccessors:e.autoSpyAccessors??false,lazySpies:e.lazySpies??false}:{...I}}function G(e,t){let n=ye(t),r=n.methodsToSpyOn.length>0?n.methodsToSpyOn:D(e.prototype);n.methodsToSpyOn.length>0&&de(e,n.methodsToSpyOn);let o={};n.observablePropsToSpyOn.forEach(c=>{o[c]=P().createPropSpy();});let s=pe(e.prototype,n);return O(o,s.getters,s.setters),r.forEach(c=>{n.lazySpies?fe(o,c):o[c]=S(c);}),o}function me(e,t){return {provide:e,useValue:G(e,t)}}function ge(e,t){return e.get(t)}h(w);exports.injectSpy=ge;exports.provideAutoSpy=me;
package/dist/nestjs.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { C as ClassType, S as Spy, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-Cv3L71P0.cjs';
1
+ import { C as ClassType, S as Spy, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-BKS6JdLv.cjs';
2
2
  import 'rxjs';
3
3
  import 'vitest';
4
4
 
package/dist/nestjs.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { C as ClassType, S as Spy, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-Cv3L71P0.js';
1
+ import { C as ClassType, S as Spy, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-BKS6JdLv.js';
2
2
  import 'rxjs';
3
3
  import 'vitest';
4
4
 
package/dist/nestjs.js CHANGED
@@ -1 +1 @@
1
- import {a as a$1}from'./chunk-6LFQMHSX.js';import {a as a$2}from'./chunk-WP2TFS53.js';import {a}from'./chunk-MQCVIN2A.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};
1
+ import {a as a$1}from'./chunk-HDCUMVHT.js';import {a as a$2}from'./chunk-Q4FBVCJO.js';import {a}from'./chunk-RTGT5WHR.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.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var node_test=require('node:test');var y;function k(e){y=e;}var E="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(!y)throw new Error(E);return y}function w({createMockFn:e,getCalls:t,reset:r}){return {createMockFn:e,spyOnGetter:(o,n)=>S(e,o,n,"get"),spyOnSetter:(o,n)=>S(e,o,n,"set"),getCalls:t,reset:r}}function S(e,t,r,o){let n=Object.getOwnPropertyDescriptor(t,r),s=o==="get"?n?.get:n?.set,i=e(s),c={configurable:true,enumerable:n?.enumerable??true};return n?.get&&(c.get=n.get),n?.set&&(c.set=n.set),o==="get"?c.get=i:c.set=i,Object.defineProperty(t,r,c),i}function M(e){return w({createMockFn:t=>e.fn(t??(()=>{})),getCalls:t=>t.mock.calls.map(r=>r.arguments),reset:t=>t.mock.resetCalls()})}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 _(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function H(e,t){return Object.entries(e).map(([r,o])=>`${r}:${a(o,t)}`).join(",")}function $(e,t){return `new Map([${[...e.entries()].map(([o,n])=>`[${a(o,t)},${a(n,t)}]`).join(",")}])`}function N(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=>a(o,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(o=>a(o,t)).join(",")}]`:r=`{${H(e,t)}}`,t.delete(e),r}function a(e,t=new WeakSet){return typeof e=="string"?_(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?N(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 a(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.",D=e=>{let t=a(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},g={throwArgumentsError(e,t){let r=e.length===0?B:D(e);throw new Error(z(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 C(){throw new Error(I);}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 j(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 F(e,t){j(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function A(e,t){j(e,r=>{e.argsToValuesMap.set(t,r);});}function K(e){return typeof e=="object"&&e!==null&&"value"in e}function x(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 K(r)?{found:true,value:x(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;g.throwArgumentsError(o,n);}return x(r)}function v(e,t){e.wasConfigured=true;let r=o=>{e.argsToValuesMap.set(t,{value:o});};return u(e,{mockReturnValue:r,returnValue:r}),A(e,t),e}function R(){return {wasConfigured:false,argsToValuesMap:new f}}function p(e){let t=R(),r=R(),o={value:void 0},n=d().createMockFn((...i)=>q(t,r,o,i,e),e);F(n,o);let s=u(n,{calledWith:(...i)=>v(t,i),mustBeCalledWith:(...i)=>v(r,i)});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)}var W=new WeakMap;function L(e){let t=W.get(e);if(t)return t;let r=new Set,o=e;for(;o;){let s=Object.getPrototypeOf(o);s&&U(o).forEach(i=>r.add(i)),o=s;}let n=[...r];return W.set(e,n),n}function J(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:o,settersToSpyOn:n,gettersToSpyOn:s}=J(t),i=r.length>0?r:L(e.prototype),c={};return o.forEach(l=>{c[l]=C().createPropSpy();}),T(c,s,n),i.forEach(l=>{c[l]=p(l);}),c}function Y(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=p(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)}k(M(node_test.mock));exports.createAutoMock=Y;exports.createFunctionSpy=p;exports.createSpyFromClass=X;exports.errorHandler=g;
1
+ 'use strict';var node_test=require('node:test');var m;function O(e){m=e;}var Z="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 p(){if(!m)throw new Error(Z);return m}function C({createMockFn:e,getCalls:t,reset:r,clear:o,restoreImplementation:n}){return {createMockFn:e,spyOnGetter:(s,i)=>v(e,s,i,"get"),spyOnSetter:(s,i)=>v(e,s,i,"set"),getCalls:t,reset:r,clear:o,restoreImplementation:n}}function v(e,t,r,o){let n=Object.getOwnPropertyDescriptor(t,r),s=o==="get"?n?.get:n?.set,i=e(s),c={configurable:true,enumerable:n?.enumerable??true};return n?.get&&(c.get=n.get),n?.set&&(c.set=n.set),o==="get"?c.get=i:c.set=i,Object.defineProperty(t,r,c),i}function ee(e,t){return t!==void 0&&Object.defineProperty(e,"displayName",{value:t,configurable:true}),e}function A(e){return C({createMockFn:(t,r)=>ee(e.fn(t??(()=>{})),r),getCalls:t=>t.mock.calls.map(r=>r.arguments),reset:t=>t.mock.resetCalls(),clear:t=>t.mock.resetCalls(),restoreImplementation:(t,r)=>t.mock.mockImplementation(r)})}var T=Symbol.for("vitest-auto-spy.mock"),g=Symbol.for("vitest-auto-spy.resetConfig"),k=Symbol.for("vitest-auto-spy.clearHook");function y(e){Object.defineProperty(e,T,{value:true,enumerable:false,configurable:true});}function b(e){return typeof e=="function"&&T in e}function R(e,t){Object.defineProperty(e,g,{value:t,enumerable:false,configurable:true});}function F(e){if(!(g in e))return;let t=Reflect.get(e,g);typeof t=="function"&&t();}function P(e,t){Object.defineProperty(e,k,{value:t,enumerable:false,configurable:true});}function w(e){if(!(k in e))return;let t=Reflect.get(e,k);typeof t=="function"&&t();}function x(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function V(e,t,r){let o=p(),n=r==="setter"?o.spyOnSetter(e,t):o.spyOnGetter(e,t);return y(n),n}function E(e,t,r){let o={getters:{},setters:{}};e.accessorSpies=o,t.forEach(n=>{x(e,n),o.getters[n]=V(e,n,"getter");}),r.forEach(n=>{Object.prototype.hasOwnProperty.call(e,n)||x(e,n),o.setters[n]=V(e,n,"setter");});}function te(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function re(e,t){return Object.entries(e).map(([r,o])=>`${r}:${u(o,t)}`).join(",")}function ne(e,t){return `new Map([${[...e.entries()].map(([o,n])=>`[${u(o,t)},${u(n,t)}]`).join(",")}])`}function oe(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=ne(e,t):e instanceof Set?r=`new Set([${[...e].map(o=>u(o,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(o=>u(o,t)).join(",")}]`:r=`{${re(e,t)}}`,t.delete(e),r}function h(e){return typeof e=="string"?te(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:Object.is(e,-0)?"-0":String(e)}function W(e){return typeof e=="object"&&e!==null}function u(e,t=new WeakSet){return typeof e=="object"&&e!==null?oe(e,t):h(e)}function _(e){return typeof e=="object"&&e!==null&&"asymmetricMatch"in e&&typeof e.asymmetricMatch=="function"}function se(e){return e.some(_)}var f=class{#t=Object.create(null);#r=[];set(t,r){if(Array.isArray(t)&&se(t)){this.#r.push({args:t,value:r});return}this.#t[this.#e(t)]=r;}get(t){let r=this.#e(t);return r in this.#t?this.#t[r]:this.#n(t)}#e(t){return Array.isArray(t)&&!t.some(W)?`[${t.map(r=>h(r)).join(",")}]`:u(t)}#n(t){return Array.isArray(t)?this.#r.find(o=>this.#o(o.args,t))?.value:void 0}#o(t,r){return t.length!==r.length?false:t.every((o,n)=>this.#s(o,r[n]))}#s(t,r){return _(t)?t.asymmetricMatch(r):this.#e([t])===this.#e([r])}};var ie=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,ce="But the function was called without any arguments.",ae=e=>{let t=u(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},M={throwArgumentsError(e,t){let r=e.length===0?ce:ae(e);throw new Error(ie(t)+r)}};var ue="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 D(){throw new Error(ue);}function d(e,t){return Object.assign(e,t)}function pe(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){d(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:pe(r)});}});}function z(e,t){H(e,r=>{t.value=r.value,t._isRejectedPromise=r._isRejectedPromise??false,t.valuesPerCalls=r.valuesPerCalls??[];});}function $(e,t){H(e,r=>{e.argsToValuesMap.set(t,r);});}var le={record:e=>e,clear:()=>{}};function fe(e){return typeof e!="object"&&typeof e!="function"||e===null?false:typeof Reflect.get(e,"then")=="function"}function I(e){let t=Reflect.get(e,"mock");if(typeof t!="object"||t===null||"settledResults"in t)return le;let r=[];return Object.defineProperty(t,"settledResults",{value:r,enumerable:true,configurable:true,writable:true}),{record(o){let n={type:"incomplete",value:void 0};return r.push(n),fe(o)?o.then(s=>{n.type="fulfilled",n.value=s;},s=>{n.type="rejected",n.value=s;}):(n.type="fulfilled",n.value=o),o},clear(){r.length=0;}}}function de(e){return typeof e=="object"&&e!==null&&"value"in e}function L(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function N(e,t){let r=e.argsToValuesMap.get(t);return de(r)?{found:true,value:L(r)}:{found:false,value:void 0}}function ye(e,t,r,o,n){if(e.wasConfigured){let s=N(e,o);if(s.found)return s.value}if(t.wasConfigured){let s=N(t,o);if(s.found)return s.value;M.throwArgumentsError(o,n);}return L(r)}function B(e,t){e.wasConfigured=true;let r=o=>{e.argsToValuesMap.set(t,{value:o});};return d(e,{mockReturnValue:r,returnValue:r}),$(e,t),e}function K(){return {wasConfigured:false,argsToValuesMap:new f}}function G(e){e.wasConfigured=false,e.argsToValuesMap=new f;}function l(e){let t=K(),r=K(),o={value:void 0},n=(...a)=>i.record(ye(t,r,o,a,e)),s=p().createMockFn(n,e),i=I(s);z(s,o);let c=d(s,{calledWith:(...a)=>B(t,a),mustBeCalledWith:(...a)=>B(r,a)});return R(c,()=>{G(t),G(r),o.value=void 0,delete o._isRejectedPromise,delete o.valuesPerCalls,p().restoreImplementation(s,n);}),P(c,()=>i.clear()),y(c),c}var U={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[],autoSpyAccessors:false,lazySpies:false};function me(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(r=>r!=="constructor"&&!t[r]?.get)}function Y(e,t){let r=e;for(;r;){let o=Object.getPrototypeOf(r);o&&t(r),r=o;}}var q=new WeakMap;function J(e){let t=q.get(e);if(t)return t;let r=new Set;Y(e,n=>me(n).forEach(s=>r.add(s)));let o=[...r];return q.set(e,o),o}function ge(e){let t=new Set,r=new Set;return Y(e,o=>{let n=Object.getOwnPropertyDescriptors(o);Object.keys(n).forEach(s=>{s!=="constructor"&&(n[s]?.get&&t.add(s),n[s]?.set&&r.add(s));});}),{getters:[...t],setters:[...r]}}function ke(e,t){if(!t.autoSpyAccessors)return {getters:t.gettersToSpyOn,setters:t.settersToSpyOn};let r=ge(e);return {getters:[...new Set([...t.gettersToSpyOn,...r.getters])],setters:[...new Set([...t.settersToSpyOn,...r.setters])]}}function be(e,t){let r=new Set(J(e.prototype)),o=t.filter(n=>!r.has(n));o.length!==0&&console.warn(`[vitest-auto-spy] createSpyFromClass(${e.name}): requested method(s) not found on the class prototype: ${o.join(", ")}. A spy was still created, but the real code will never call it \u2014 check for typos.`);}function we(e,t){Object.defineProperty(e,t,{configurable:true,enumerable:true,get(){let r=l(t);return Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:r}),r}});}function he(e){return e?Array.isArray(e)?{...U,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[],autoSpyAccessors:e.autoSpyAccessors??false,lazySpies:e.lazySpies??false}:{...U}}function Me(e,t){let r=he(t),o=r.methodsToSpyOn.length>0?r.methodsToSpyOn:J(e.prototype);r.methodsToSpyOn.length>0&&be(e,r.methodsToSpyOn);let n={};r.observablePropsToSpyOn.forEach(i=>{n[i]=D().createPropSpy();});let s=ke(e.prototype,r);return E(n,s.getters,s.setters),o.forEach(i=>{r.lazySpies?we(n,i):n[i]=l(i);}),n}function Se(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=l(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)}function X(e,t){let r=l(e),o=new Map,n=new Map;for(let i of Reflect.ownKeys(t))n.set(i,Reflect.get(t,i));let s={get(i,c,a){if(n.has(c))return n.get(c);if(c!=="then"){if(c in i)return Reflect.get(i,c,a);if(typeof c!="symbol")return o.has(c)||o.set(c,X(`${e}.${String(c)}`,{})),o.get(c)}},set(i,c,a){return n.set(c,a),true}};return new Proxy(r,s)}function je(e={}){return X("mockDeep",e)}function Oe(e){return typeof e=="object"&&e!==null&&"getters"in e&&"setters"in e}function ve(e){let t=Object.getOwnPropertyDescriptor(e,"accessorSpies")?.value;return Oe(t)?[...Object.values(t.getters),...Object.values(t.setters)].filter(b):[]}function Q(e){let t=[];return Object.keys(e).forEach(r=>{let o=Object.getOwnPropertyDescriptor(e,r);!o||o.get||o.set||b(o.value)&&t.push(o.value);}),[...t,...ve(e)]}function Ce(e){let t=p();Q(e).forEach(r=>{t.clear(r),w(r);});}function Ae(e){let t=p();Q(e).forEach(r=>{t.clear(r),w(r),F(r);});}O(A(node_test.mock));exports.clearAutoSpy=Ce;exports.createAutoMock=Se;exports.createFunctionSpy=l;exports.createSpyFromClass=Me;exports.errorHandler=M;exports.mockDeep=je;exports.resetAutoSpy=Ae;
package/dist/node.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.cjs';
2
- export { createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler } from './bun.cjs';
1
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, D as DeepMockProxy, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.cjs';
2
+ export { clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy } from './bun.cjs';
3
3
  import 'rxjs';
4
4
  import 'vitest';
package/dist/node.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.js';
2
- export { createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler } from './bun.js';
1
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, D as DeepMockProxy, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.js';
2
+ export { clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy } from './bun.js';
3
3
  import 'rxjs';
4
4
  import 'vitest';
package/dist/node.js CHANGED
@@ -1 +1 @@
1
- import {a as a$1}from'./chunk-IPBQZ4JC.js';export{a as createAutoMock}from'./chunk-HVN6A3AX.js';export{a as createSpyFromClass}from'./chunk-WP2TFS53.js';import {a}from'./chunk-MQCVIN2A.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-MQCVIN2A.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$2}from'./chunk-T3N4PY2U.js';export{c as clearAutoSpy,a as createAutoMock,b as mockDeep,d as resetAutoSpy}from'./chunk-N724W7OZ.js';export{a as createSpyFromClass}from'./chunk-Q4FBVCJO.js';import {a as a$1}from'./chunk-RTGT5WHR.js';export{i as createFunctionSpy,h as errorHandler}from'./chunk-RTGT5WHR.js';import'./chunk-7IUYJ6ZW.js';import {mock}from'node:test';function a(n,e){return e!==void 0&&Object.defineProperty(n,"displayName",{value:e,configurable:true}),n}function c(n){return a$2({createMockFn:(e,o)=>a(n.fn(e??(()=>{})),o),getCalls:e=>e.mock.calls.map(o=>o.arguments),reset:e=>e.mock.resetCalls(),clear:e=>e.mock.resetCalls(),restoreImplementation:(e,o)=>e.mock.mockImplementation(o)})}a$1(c(mock));
package/dist/react.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var vitest=require('vitest');var g;function S(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 h(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function O(e,t,r){let n=d();return r==="setter"?n.spyOnSetter(e,t):n.spyOnGetter(e,t)}function T(e,t,r){let n={getters:{},setters:{}};e.accessorSpies=n,t.forEach(o=>{h(e,o),n.getters[o]=O(e,o,"getter");}),r.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||h(e,o),n.setters[o]=O(e,o,"setter");});}function E(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function _(e,t){return Object.entries(e).map(([r,n])=>`${r}:${u(n,t)}`).join(",")}function H(e,t){return `new Map([${[...e.entries()].map(([n,o])=>`[${u(n,t)},${u(o,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(n=>u(n,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(n=>u(n,t)).join(",")}]`:r=`{${_(e,t)}}`,t.delete(e),r}function u(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 u(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=u(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},m={throwArgumentsError(e,t){let r=e.length===0?B:I(e);throw new Error(z(t)+r)}};var G="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(G);}function c(e,t){return Object.assign(e,t)}function K(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:K(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 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 F(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,n,o){if(e.wasConfigured){let s=F(e,n);if(s.found)return s.value}if(t.wasConfigured){let s=F(t,n);if(s.found)return s.value;m.throwArgumentsError(n,o);}return A(r)}function P(e,t){e.wasConfigured=true;let r=n=>{e.argsToValuesMap.set(t,{value:n});};return c(e,{mockReturnValue:r,returnValue:r}),v(e,t),e}function R(){return {wasConfigured:false,argsToValuesMap:new y}}function a(e){let t=R(),r=R(),n={value:void 0},o=d().createMockFn((...i)=>q(t,r,n,i,e),e);C(o,n);let s=c(o,{calledWith:(...i)=>P(t,i),mustBeCalledWith:(...i)=>P(r,i)});return s}var x={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function N(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(r=>r!=="constructor"&&!t[r]?.get)}var V=new WeakMap;function U(e){let t=V.get(e);if(t)return t;let r=new Set,n=e;for(;n;){let s=Object.getPrototypeOf(n);s&&N(n).forEach(i=>r.add(i)),n=s;}let o=[...r];return V.set(e,o),o}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 J(e,t){let{methodsToSpyOn:r,observablePropsToSpyOn:n,settersToSpyOn:o,gettersToSpyOn:s}=L(t),i=r.length>0?r:U(e.prototype),p={};return n.forEach(l=>{p[l]=M().createPropSpy();}),T(p,s,o),i.forEach(l=>{p[l]=a(l);}),p}function X(e={}){let t=new Map;for(let n of Reflect.ownKeys(e))t.set(n,Reflect.get(e,n));let r={get(n,o){if(t.has(o))return t.get(o);if(typeof o=="symbol"||o==="then"||o==="constructor")return;let s=a(String(o));return t.set(o,s),s},set(n,o,s){return t.set(o,s),true},has(n,o){return t.has(o)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(n,o){if(t.has(o))return {configurable:true,enumerable:true,value:t.get(o),writable:true}}};return new Proxy({},r)}S(w);exports.createAutoMock=X;exports.createFunctionSpy=a;exports.createSpyFromClass=J;exports.errorHandler=m;
1
+ 'use strict';var vitest=require('vitest');var g;function O(e){g=e;}var Q="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 p(){if(!g)throw new Error(Q);return g}var T={createMockFn(e,t){let n=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&n.mockName(t),n},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();},clear(e){e.mockClear();},restoreImplementation(e,t){e.mockImplementation(t);}};var C=Symbol.for("vitest-auto-spy.mock"),b=Symbol.for("vitest-auto-spy.resetConfig"),k=Symbol.for("vitest-auto-spy.clearHook");function m(e){Object.defineProperty(e,C,{value:true,enumerable:false,configurable:true});}function w(e){return typeof e=="function"&&C in e}function R(e,t){Object.defineProperty(e,b,{value:t,enumerable:false,configurable:true});}function A(e){if(!(b in e))return;let t=Reflect.get(e,b);typeof t=="function"&&t();}function P(e,t){Object.defineProperty(e,k,{value:t,enumerable:false,configurable:true});}function h(e){if(!(k in e))return;let t=Reflect.get(e,k);typeof t=="function"&&t();}function F(e,t){Object.defineProperty(e,t,{get(){},set(n){},configurable:true});}function x(e,t,n){let r=p(),o=n==="setter"?r.spyOnSetter(e,t):r.spyOnGetter(e,t);return m(o),o}function V(e,t,n){let r={getters:{},setters:{}};e.accessorSpies=r,t.forEach(o=>{F(e,o),r.getters[o]=x(e,o,"getter");}),n.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||F(e,o),r.setters[o]=x(e,o,"setter");});}function Z(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function ee(e,t){return Object.entries(e).map(([n,r])=>`${n}:${a(r,t)}`).join(",")}function te(e,t){return `new Map([${[...e.entries()].map(([r,o])=>`[${a(r,t)},${a(o,t)}]`).join(",")}])`}function ne(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=te(e,t):e instanceof Set?n=`new Set([${[...e].map(r=>a(r,t)).join(",")}])`:Array.isArray(e)?n=`[${e.map(r=>a(r,t)).join(",")}]`:n=`{${ee(e,t)}}`,t.delete(e),n}function S(e){return typeof e=="string"?Z(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:Object.is(e,-0)?"-0":String(e)}function E(e){return typeof e=="object"&&e!==null}function a(e,t=new WeakSet){return typeof e=="object"&&e!==null?ne(e,t):S(e)}function W(e){return typeof e=="object"&&e!==null&&"asymmetricMatch"in e&&typeof e.asymmetricMatch=="function"}function re(e){return e.some(W)}var f=class{#t=Object.create(null);#n=[];set(t,n){if(Array.isArray(t)&&re(t)){this.#n.push({args:t,value:n});return}this.#t[this.#e(t)]=n;}get(t){let n=this.#e(t);return n in this.#t?this.#t[n]:this.#r(t)}#e(t){return Array.isArray(t)&&!t.some(E)?`[${t.map(n=>S(n)).join(",")}]`:a(t)}#r(t){return Array.isArray(t)?this.#n.find(r=>this.#o(r.args,t))?.value:void 0}#o(t,n){return t.length!==n.length?false:t.every((r,o)=>this.#s(r,n[o]))}#s(t,n){return W(t)?t.asymmetricMatch(n):this.#e([t])===this.#e([n])}};var oe=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,se="But the function was called without any arguments.",ie=e=>{let t=a(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},M={throwArgumentsError(e,t){let n=e.length===0?se:ie(e);throw new Error(oe(t)+n)}};var ce="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 _(){throw new Error(ce);}function d(e,t){return Object.assign(e,t)}function ue(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(n=>setTimeout(()=>n(t.value),t.delay))}))}function H(e,t){d(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:ue(n)});}});}function D(e,t){H(e,n=>{t.value=n.value,t._isRejectedPromise=n._isRejectedPromise??false,t.valuesPerCalls=n.valuesPerCalls??[];});}function z(e,t){H(e,n=>{e.argsToValuesMap.set(t,n);});}var ae={record:e=>e,clear:()=>{}};function pe(e){return typeof e!="object"&&typeof e!="function"||e===null?false:typeof Reflect.get(e,"then")=="function"}function $(e){let t=Reflect.get(e,"mock");if(typeof t!="object"||t===null||"settledResults"in t)return ae;let n=[];return Object.defineProperty(t,"settledResults",{value:n,enumerable:true,configurable:true,writable:true}),{record(r){let o={type:"incomplete",value:void 0};return n.push(o),pe(r)?r.then(s=>{o.type="fulfilled",o.value=s;},s=>{o.type="rejected",o.value=s;}):(o.type="fulfilled",o.value=r),r},clear(){n.length=0;}}}function le(e){return typeof e=="object"&&e!==null&&"value"in e}function N(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function I(e,t){let n=e.argsToValuesMap.get(t);return le(n)?{found:true,value:N(n)}:{found:false,value:void 0}}function fe(e,t,n,r,o){if(e.wasConfigured){let s=I(e,r);if(s.found)return s.value}if(t.wasConfigured){let s=I(t,r);if(s.found)return s.value;M.throwArgumentsError(r,o);}return N(n)}function B(e,t){e.wasConfigured=true;let n=r=>{e.argsToValuesMap.set(t,{value:r});};return d(e,{mockReturnValue:n,returnValue:n}),z(e,t),e}function K(){return {wasConfigured:false,argsToValuesMap:new f}}function G(e){e.wasConfigured=false,e.argsToValuesMap=new f;}function l(e){let t=K(),n=K(),r={value:void 0},o=(...u)=>c.record(fe(t,n,r,u,e)),s=p().createMockFn(o,e),c=$(s);D(s,r);let i=d(s,{calledWith:(...u)=>B(t,u),mustBeCalledWith:(...u)=>B(n,u)});return R(i,()=>{G(t),G(n),r.value=void 0,delete r._isRejectedPromise,delete r.valuesPerCalls,p().restoreImplementation(s,o);}),P(i,()=>c.clear()),m(i),i}var L={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[],autoSpyAccessors:false,lazySpies:false};function de(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(n=>n!=="constructor"&&!t[n]?.get)}function q(e,t){let n=e;for(;n;){let r=Object.getPrototypeOf(n);r&&t(n),n=r;}}var U=new WeakMap;function Y(e){let t=U.get(e);if(t)return t;let n=new Set;q(e,o=>de(o).forEach(s=>n.add(s)));let r=[...n];return U.set(e,r),r}function ye(e){let t=new Set,n=new Set;return q(e,r=>{let o=Object.getOwnPropertyDescriptors(r);Object.keys(o).forEach(s=>{s!=="constructor"&&(o[s]?.get&&t.add(s),o[s]?.set&&n.add(s));});}),{getters:[...t],setters:[...n]}}function me(e,t){if(!t.autoSpyAccessors)return {getters:t.gettersToSpyOn,setters:t.settersToSpyOn};let n=ye(e);return {getters:[...new Set([...t.gettersToSpyOn,...n.getters])],setters:[...new Set([...t.settersToSpyOn,...n.setters])]}}function ge(e,t){let n=new Set(Y(e.prototype)),r=t.filter(o=>!n.has(o));r.length!==0&&console.warn(`[vitest-auto-spy] createSpyFromClass(${e.name}): requested method(s) not found on the class prototype: ${r.join(", ")}. A spy was still created, but the real code will never call it \u2014 check for typos.`);}function be(e,t){Object.defineProperty(e,t,{configurable:true,enumerable:true,get(){let n=l(t);return Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:n}),n}});}function ke(e){return e?Array.isArray(e)?{...L,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[],autoSpyAccessors:e.autoSpyAccessors??false,lazySpies:e.lazySpies??false}:{...L}}function we(e,t){let n=ke(t),r=n.methodsToSpyOn.length>0?n.methodsToSpyOn:Y(e.prototype);n.methodsToSpyOn.length>0&&ge(e,n.methodsToSpyOn);let o={};n.observablePropsToSpyOn.forEach(c=>{o[c]=_().createPropSpy();});let s=me(e.prototype,n);return V(o,s.getters,s.setters),r.forEach(c=>{n.lazySpies?be(o,c):o[c]=l(c);}),o}function he(e={}){let t=new Map;for(let r of Reflect.ownKeys(e))t.set(r,Reflect.get(e,r));let n={get(r,o){if(t.has(o))return t.get(o);if(typeof o=="symbol"||o==="then"||o==="constructor")return;let s=l(String(o));return t.set(o,s),s},set(r,o,s){return t.set(o,s),true},has(r,o){return t.has(o)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(r,o){if(t.has(o))return {configurable:true,enumerable:true,value:t.get(o),writable:true}}};return new Proxy({},n)}function J(e,t){let n=l(e),r=new Map,o=new Map;for(let c of Reflect.ownKeys(t))o.set(c,Reflect.get(t,c));let s={get(c,i,u){if(o.has(i))return o.get(i);if(i!=="then"){if(i in c)return Reflect.get(c,i,u);if(typeof i!="symbol")return r.has(i)||r.set(i,J(`${e}.${String(i)}`,{})),r.get(i)}},set(c,i,u){return o.set(i,u),true}};return new Proxy(n,s)}function Se(e={}){return J("mockDeep",e)}function Me(e){return typeof e=="object"&&e!==null&&"getters"in e&&"setters"in e}function je(e){let t=Object.getOwnPropertyDescriptor(e,"accessorSpies")?.value;return Me(t)?[...Object.values(t.getters),...Object.values(t.setters)].filter(w):[]}function X(e){let t=[];return Object.keys(e).forEach(n=>{let r=Object.getOwnPropertyDescriptor(e,n);!r||r.get||r.set||w(r.value)&&t.push(r.value);}),[...t,...je(e)]}function ve(e){let t=p();X(e).forEach(n=>{t.clear(n),h(n);});}function Oe(e){let t=p();X(e).forEach(n=>{t.clear(n),h(n),A(n);});}O(T);exports.clearAutoSpy=ve;exports.createAutoMock=he;exports.createFunctionSpy=l;exports.createSpyFromClass=we;exports.errorHandler=M;exports.mockDeep=Se;exports.resetAutoSpy=Oe;
package/dist/react.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.cjs';
2
- export { createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler } from './bun.cjs';
1
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, D as DeepMockProxy, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.cjs';
2
+ export { clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy } from './bun.cjs';
3
3
  import 'rxjs';
4
4
  import 'vitest';
package/dist/react.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.js';
2
- export { createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler } from './bun.js';
1
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, D as DeepMockProxy, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.js';
2
+ export { clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy } from './bun.js';
3
3
  import 'rxjs';
4
4
  import 'vitest';
package/dist/react.js CHANGED
@@ -1 +1 @@
1
- import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-HVN6A3AX.js';export{a as createSpyFromClass}from'./chunk-WP2TFS53.js';import {a}from'./chunk-MQCVIN2A.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-MQCVIN2A.js';import'./chunk-7IUYJ6ZW.js';a(a$1);
1
+ import {a as a$1}from'./chunk-HDCUMVHT.js';export{c as clearAutoSpy,a as createAutoMock,b as mockDeep,d as resetAutoSpy}from'./chunk-N724W7OZ.js';export{a as createSpyFromClass}from'./chunk-Q4FBVCJO.js';import {a}from'./chunk-RTGT5WHR.js';export{i as createFunctionSpy,h as errorHandler}from'./chunk-RTGT5WHR.js';import'./chunk-7IUYJ6ZW.js';a(a$1);
package/dist/rxjs.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var rxjs=require('rxjs'),operators=require('rxjs/operators');function i(t){return "complete"in t}function v(t){return "value"in t}function f(t){return "errorValue"in t}function o(){return new rxjs.ReplaySubject(1)}function y(t,e){let a=new rxjs.ReplaySubject(1),l=rxjs.from(e).pipe(operators.concatMap(r=>i(r)&&r.complete&&r.delay?rxjs.of(r).pipe(operators.delay(r.delay)):rxjs.of(r)),operators.takeWhile(r=>i(r)&&r.complete?(a.next(),false):true),operators.concatMap(r=>v(r)&&r.value?r.delay?rxjs.of(r.value).pipe(operators.delay(r.delay)):rxjs.of(r.value):f(r)&&r.errorValue?r.delay?rxjs.timer(r.delay).pipe(operators.switchMap(()=>rxjs.throwError(()=>r.errorValue))):rxjs.throwError(()=>r.errorValue):rxjs.EMPTY));return rxjs.merge(l,t.pipe(operators.takeUntil(a)))}function F(t,e){let a=o(),l=y(a,t);return e?.returnSubject?{values$:l,subject:a}:l}exports.createObservableWithValues=F;
1
+ 'use strict';var rxjs=require('rxjs'),operators=require('rxjs/operators');function i(t){return "complete"in t}function v(t){return "value"in t}function T(t){return "errorValue"in t}function n(){return new rxjs.ReplaySubject(1)}function O(t,a){let r=new rxjs.ReplaySubject(1),o=rxjs.from(a).pipe(operators.concatMap(e=>i(e)&&e.complete&&e.delay?rxjs.of(e).pipe(operators.delay(e.delay)):rxjs.of(e)),operators.takeWhile(e=>i(e)&&e.complete?(r.next(),false):true),operators.concatMap(e=>v(e)&&e.value?e.delay?rxjs.of(e.value).pipe(operators.delay(e.delay)):rxjs.of(e.value):T(e)&&e.errorValue?e.delay?rxjs.timer(e.delay).pipe(operators.switchMap(()=>rxjs.throwError(()=>e.errorValue))):rxjs.throwError(()=>e.errorValue):rxjs.EMPTY));return rxjs.merge(o,t.pipe(operators.takeUntil(r)))}function A(t,a){let r=n(),o=O(r,t);return a?.returnSubject?{values$:o,subject:r}:o}exports.createObservableWithValues=A;
package/dist/rxjs.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Observable, ReplaySubject } from 'rxjs';
2
- import { V as ValueConfig } from './types-Cv3L71P0.cjs';
3
- export { A as AddObservableSpyMethods, b as CompleteValueConfig, E as ErrorValueConfig, N as NextValueConfig, c as ValueConfigPerCall } from './types-Cv3L71P0.cjs';
2
+ import { V as ValueConfig } from './types-BKS6JdLv.cjs';
3
+ export { A as AddObservableSpyMethods, b as CompleteValueConfig, E as ErrorValueConfig, N as NextValueConfig, c as ValueConfigPerCall } from './types-BKS6JdLv.cjs';
4
4
  import 'vitest';
5
5
 
6
6
  /**
package/dist/rxjs.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Observable, ReplaySubject } from 'rxjs';
2
- import { V as ValueConfig } from './types-Cv3L71P0.js';
3
- export { A as AddObservableSpyMethods, b as CompleteValueConfig, E as ErrorValueConfig, N as NextValueConfig, c as ValueConfigPerCall } from './types-Cv3L71P0.js';
2
+ import { V as ValueConfig } from './types-BKS6JdLv.js';
3
+ export { A as AddObservableSpyMethods, b as CompleteValueConfig, E as ErrorValueConfig, N as NextValueConfig, c as ValueConfigPerCall } from './types-BKS6JdLv.js';
4
4
  import 'vitest';
5
5
 
6
6
  /**
package/dist/rxjs.js CHANGED
@@ -1 +1 @@
1
- import {a,d as d$1}from'./chunk-7IUYJ6ZW.js';import {defer,ReplaySubject,from,of,EMPTY,timer,throwError,merge}from'rxjs';import {concatMap,delay,takeWhile,switchMap,takeUntil,take}from'rxjs/operators';function i(l){return "complete"in l}function v(l){return "value"in l}function V(l){return "errorValue"in l}function o(){return new ReplaySubject(1)}function d(l,e){let t=new ReplaySubject(1),a=from(e).pipe(concatMap(r=>i(r)&&r.complete&&r.delay?of(r).pipe(delay(r.delay)):of(r)),takeWhile(r=>i(r)&&r.complete?(t.next(),false):true),concatMap(r=>v(r)&&r.value?r.delay?of(r.value).pipe(delay(r.delay)):of(r.value):V(r)&&r.errorValue?r.delay?timer(r.delay).pipe(switchMap(()=>throwError(()=>r.errorValue))):throwError(()=>r.errorValue):EMPTY));return merge(a,l.pipe(takeUntil(t)))}function b(l,e,t){d$1(l,{nextWith:a=>{e.next(a),t(e);},nextOneTimeWith:a=>{e.next(a),e.complete(),t(e);},nextWithValues:a=>{a.length!==0&&t(d(e,a));},throwWith:a=>{e.error(a),t(e);},complete:()=>{e.complete(),t(e);},returnSubject:()=>(t(e),e)});}function H(l,e){let t=l.asObservable();return e.delay&&(t=t.pipe(delay(e.delay))),e.doNotComplete||(t=t.pipe(take(1))),t}function O(l,e,t=()=>{}){d$1(l,{nextWithPerCall:a=>{let r=[];if(a.length===0)return r;let T=[];return a.forEach(f=>{let n=o();n.next(f.value),r.push(n),T.push({wrappedValue:H(n,f)});}),e.valuesPerCalls=T,t(e),r}});}function h(l,e){let t=o();b(l,t,a=>{e.value=a;}),O(l,e);}function x(l,e){let t=o(),a={value:void 0};b(l,t,r=>{a.value=r,l.argsToValuesMap.set(e,a);}),O(l,a,r=>{l.argsToValuesMap.set(e,r);});}function $(l,e){let t=o(),a=d(t,l);return e?.returnSubject?{values$:a,subject:t}:a}function R(){let l=o(),e=l,t=defer(()=>e);return b(t,l,a=>{e=a;}),t}a({addToFunctionSpy:h,addToCalledWithObject:x,createPropSpy:R});export{$ as createObservableWithValues};
1
+ import {a,d}from'./chunk-7IUYJ6ZW.js';import {defer,ReplaySubject,from,of,EMPTY,timer,throwError,merge}from'rxjs';import {concatMap,delay,takeWhile,switchMap,takeUntil,take}from'rxjs/operators';function i(t){return "complete"in t}function v(t){return "value"in t}function f(t){return "errorValue"in t}function u(){return new ReplaySubject(1)}function m(t,a){let r=new ReplaySubject(1),l=from(a).pipe(concatMap(e=>i(e)&&e.complete&&e.delay?of(e).pipe(delay(e.delay)):of(e)),takeWhile(e=>i(e)&&e.complete?(r.next(),false):true),concatMap(e=>v(e)&&e.value?e.delay?of(e.value).pipe(delay(e.delay)):of(e.value):f(e)&&e.errorValue?e.delay?timer(e.delay).pipe(switchMap(()=>throwError(()=>e.errorValue))):throwError(()=>e.errorValue):EMPTY));return merge(l,t.pipe(takeUntil(r)))}function b(t,a,r){d(t,{nextWith:l=>{let e=a();e.next(l),r(e);},nextOneTimeWith:l=>{let e=a();e.next(l),e.complete(),r(e);},nextWithValues:l=>{l.length!==0&&r(m(a(),l));},throwWith:l=>{let e=a();e.error(l),r(e);},complete:()=>{let l=a();l.complete(),r(l);},returnSubject:()=>{let l=a();return r(l),l}});}function O(){let t;return ()=>t??=u()}function $(t,a){let r=t.asObservable();return a.delay&&(r=r.pipe(delay(a.delay))),a.doNotComplete||(r=r.pipe(take(1))),r}function j(t,a,r=()=>{}){d(t,{nextWithPerCall:l=>{let e=[];if(l.length===0)return e;let T=[];return l.forEach(c=>{let n=u();n.next(c.value),e.push(n),T.push({wrappedValue:$(n,c)});}),a.valuesPerCalls=T,r(a),e}});}function S(t,a){b(t,O(),r=>{a.value=r;}),j(t,a);}function h(t,a){let r={value:void 0};b(t,O(),l=>{r.value=l,t.argsToValuesMap.set(a,r);}),j(t,r,l=>{t.argsToValuesMap.set(a,l);});}function A(t,a){let r=u(),l=m(r,t);return a?.returnSubject?{values$:l,subject:r}:l}function x(){let t=u(),a=t,r=defer(()=>a);return b(r,()=>t,l=>{a=l;}),r}a({addToFunctionSpy:S,addToCalledWithObject:h,createPropSpy:x});export{A as createObservableWithValues};
package/dist/svelte.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var vitest=require('vitest');var g;function S(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 h(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function O(e,t,r){let n=d();return r==="setter"?n.spyOnSetter(e,t):n.spyOnGetter(e,t)}function T(e,t,r){let n={getters:{},setters:{}};e.accessorSpies=n,t.forEach(o=>{h(e,o),n.getters[o]=O(e,o,"getter");}),r.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||h(e,o),n.setters[o]=O(e,o,"setter");});}function E(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function _(e,t){return Object.entries(e).map(([r,n])=>`${r}:${u(n,t)}`).join(",")}function H(e,t){return `new Map([${[...e.entries()].map(([n,o])=>`[${u(n,t)},${u(o,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(n=>u(n,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(n=>u(n,t)).join(",")}]`:r=`{${_(e,t)}}`,t.delete(e),r}function u(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 u(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=u(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},m={throwArgumentsError(e,t){let r=e.length===0?B:I(e);throw new Error(z(t)+r)}};var G="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(G);}function c(e,t){return Object.assign(e,t)}function K(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:K(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 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 F(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,n,o){if(e.wasConfigured){let s=F(e,n);if(s.found)return s.value}if(t.wasConfigured){let s=F(t,n);if(s.found)return s.value;m.throwArgumentsError(n,o);}return A(r)}function P(e,t){e.wasConfigured=true;let r=n=>{e.argsToValuesMap.set(t,{value:n});};return c(e,{mockReturnValue:r,returnValue:r}),v(e,t),e}function R(){return {wasConfigured:false,argsToValuesMap:new y}}function a(e){let t=R(),r=R(),n={value:void 0},o=d().createMockFn((...i)=>q(t,r,n,i,e),e);C(o,n);let s=c(o,{calledWith:(...i)=>P(t,i),mustBeCalledWith:(...i)=>P(r,i)});return s}var x={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function N(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(r=>r!=="constructor"&&!t[r]?.get)}var V=new WeakMap;function U(e){let t=V.get(e);if(t)return t;let r=new Set,n=e;for(;n;){let s=Object.getPrototypeOf(n);s&&N(n).forEach(i=>r.add(i)),n=s;}let o=[...r];return V.set(e,o),o}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 J(e,t){let{methodsToSpyOn:r,observablePropsToSpyOn:n,settersToSpyOn:o,gettersToSpyOn:s}=L(t),i=r.length>0?r:U(e.prototype),p={};return n.forEach(l=>{p[l]=M().createPropSpy();}),T(p,s,o),i.forEach(l=>{p[l]=a(l);}),p}function X(e={}){let t=new Map;for(let n of Reflect.ownKeys(e))t.set(n,Reflect.get(e,n));let r={get(n,o){if(t.has(o))return t.get(o);if(typeof o=="symbol"||o==="then"||o==="constructor")return;let s=a(String(o));return t.set(o,s),s},set(n,o,s){return t.set(o,s),true},has(n,o){return t.has(o)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(n,o){if(t.has(o))return {configurable:true,enumerable:true,value:t.get(o),writable:true}}};return new Proxy({},r)}S(w);exports.createAutoMock=X;exports.createFunctionSpy=a;exports.createSpyFromClass=J;exports.errorHandler=m;
1
+ 'use strict';var vitest=require('vitest');var g;function O(e){g=e;}var Q="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 p(){if(!g)throw new Error(Q);return g}var T={createMockFn(e,t){let n=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&n.mockName(t),n},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();},clear(e){e.mockClear();},restoreImplementation(e,t){e.mockImplementation(t);}};var C=Symbol.for("vitest-auto-spy.mock"),b=Symbol.for("vitest-auto-spy.resetConfig"),k=Symbol.for("vitest-auto-spy.clearHook");function m(e){Object.defineProperty(e,C,{value:true,enumerable:false,configurable:true});}function w(e){return typeof e=="function"&&C in e}function R(e,t){Object.defineProperty(e,b,{value:t,enumerable:false,configurable:true});}function A(e){if(!(b in e))return;let t=Reflect.get(e,b);typeof t=="function"&&t();}function P(e,t){Object.defineProperty(e,k,{value:t,enumerable:false,configurable:true});}function h(e){if(!(k in e))return;let t=Reflect.get(e,k);typeof t=="function"&&t();}function F(e,t){Object.defineProperty(e,t,{get(){},set(n){},configurable:true});}function x(e,t,n){let r=p(),o=n==="setter"?r.spyOnSetter(e,t):r.spyOnGetter(e,t);return m(o),o}function V(e,t,n){let r={getters:{},setters:{}};e.accessorSpies=r,t.forEach(o=>{F(e,o),r.getters[o]=x(e,o,"getter");}),n.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||F(e,o),r.setters[o]=x(e,o,"setter");});}function Z(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function ee(e,t){return Object.entries(e).map(([n,r])=>`${n}:${a(r,t)}`).join(",")}function te(e,t){return `new Map([${[...e.entries()].map(([r,o])=>`[${a(r,t)},${a(o,t)}]`).join(",")}])`}function ne(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=te(e,t):e instanceof Set?n=`new Set([${[...e].map(r=>a(r,t)).join(",")}])`:Array.isArray(e)?n=`[${e.map(r=>a(r,t)).join(",")}]`:n=`{${ee(e,t)}}`,t.delete(e),n}function S(e){return typeof e=="string"?Z(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:Object.is(e,-0)?"-0":String(e)}function E(e){return typeof e=="object"&&e!==null}function a(e,t=new WeakSet){return typeof e=="object"&&e!==null?ne(e,t):S(e)}function W(e){return typeof e=="object"&&e!==null&&"asymmetricMatch"in e&&typeof e.asymmetricMatch=="function"}function re(e){return e.some(W)}var f=class{#t=Object.create(null);#n=[];set(t,n){if(Array.isArray(t)&&re(t)){this.#n.push({args:t,value:n});return}this.#t[this.#e(t)]=n;}get(t){let n=this.#e(t);return n in this.#t?this.#t[n]:this.#r(t)}#e(t){return Array.isArray(t)&&!t.some(E)?`[${t.map(n=>S(n)).join(",")}]`:a(t)}#r(t){return Array.isArray(t)?this.#n.find(r=>this.#o(r.args,t))?.value:void 0}#o(t,n){return t.length!==n.length?false:t.every((r,o)=>this.#s(r,n[o]))}#s(t,n){return W(t)?t.asymmetricMatch(n):this.#e([t])===this.#e([n])}};var oe=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,se="But the function was called without any arguments.",ie=e=>{let t=a(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},M={throwArgumentsError(e,t){let n=e.length===0?se:ie(e);throw new Error(oe(t)+n)}};var ce="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 _(){throw new Error(ce);}function d(e,t){return Object.assign(e,t)}function ue(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(n=>setTimeout(()=>n(t.value),t.delay))}))}function H(e,t){d(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:ue(n)});}});}function D(e,t){H(e,n=>{t.value=n.value,t._isRejectedPromise=n._isRejectedPromise??false,t.valuesPerCalls=n.valuesPerCalls??[];});}function z(e,t){H(e,n=>{e.argsToValuesMap.set(t,n);});}var ae={record:e=>e,clear:()=>{}};function pe(e){return typeof e!="object"&&typeof e!="function"||e===null?false:typeof Reflect.get(e,"then")=="function"}function $(e){let t=Reflect.get(e,"mock");if(typeof t!="object"||t===null||"settledResults"in t)return ae;let n=[];return Object.defineProperty(t,"settledResults",{value:n,enumerable:true,configurable:true,writable:true}),{record(r){let o={type:"incomplete",value:void 0};return n.push(o),pe(r)?r.then(s=>{o.type="fulfilled",o.value=s;},s=>{o.type="rejected",o.value=s;}):(o.type="fulfilled",o.value=r),r},clear(){n.length=0;}}}function le(e){return typeof e=="object"&&e!==null&&"value"in e}function N(e){if(e._isRejectedPromise)return Promise.reject(e.value);let t=e.valuesPerCalls?.shift();return t?t.wrappedValue:e.value}function I(e,t){let n=e.argsToValuesMap.get(t);return le(n)?{found:true,value:N(n)}:{found:false,value:void 0}}function fe(e,t,n,r,o){if(e.wasConfigured){let s=I(e,r);if(s.found)return s.value}if(t.wasConfigured){let s=I(t,r);if(s.found)return s.value;M.throwArgumentsError(r,o);}return N(n)}function B(e,t){e.wasConfigured=true;let n=r=>{e.argsToValuesMap.set(t,{value:r});};return d(e,{mockReturnValue:n,returnValue:n}),z(e,t),e}function K(){return {wasConfigured:false,argsToValuesMap:new f}}function G(e){e.wasConfigured=false,e.argsToValuesMap=new f;}function l(e){let t=K(),n=K(),r={value:void 0},o=(...u)=>c.record(fe(t,n,r,u,e)),s=p().createMockFn(o,e),c=$(s);D(s,r);let i=d(s,{calledWith:(...u)=>B(t,u),mustBeCalledWith:(...u)=>B(n,u)});return R(i,()=>{G(t),G(n),r.value=void 0,delete r._isRejectedPromise,delete r.valuesPerCalls,p().restoreImplementation(s,o);}),P(i,()=>c.clear()),m(i),i}var L={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[],autoSpyAccessors:false,lazySpies:false};function de(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(n=>n!=="constructor"&&!t[n]?.get)}function q(e,t){let n=e;for(;n;){let r=Object.getPrototypeOf(n);r&&t(n),n=r;}}var U=new WeakMap;function Y(e){let t=U.get(e);if(t)return t;let n=new Set;q(e,o=>de(o).forEach(s=>n.add(s)));let r=[...n];return U.set(e,r),r}function ye(e){let t=new Set,n=new Set;return q(e,r=>{let o=Object.getOwnPropertyDescriptors(r);Object.keys(o).forEach(s=>{s!=="constructor"&&(o[s]?.get&&t.add(s),o[s]?.set&&n.add(s));});}),{getters:[...t],setters:[...n]}}function me(e,t){if(!t.autoSpyAccessors)return {getters:t.gettersToSpyOn,setters:t.settersToSpyOn};let n=ye(e);return {getters:[...new Set([...t.gettersToSpyOn,...n.getters])],setters:[...new Set([...t.settersToSpyOn,...n.setters])]}}function ge(e,t){let n=new Set(Y(e.prototype)),r=t.filter(o=>!n.has(o));r.length!==0&&console.warn(`[vitest-auto-spy] createSpyFromClass(${e.name}): requested method(s) not found on the class prototype: ${r.join(", ")}. A spy was still created, but the real code will never call it \u2014 check for typos.`);}function be(e,t){Object.defineProperty(e,t,{configurable:true,enumerable:true,get(){let n=l(t);return Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:n}),n}});}function ke(e){return e?Array.isArray(e)?{...L,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[],autoSpyAccessors:e.autoSpyAccessors??false,lazySpies:e.lazySpies??false}:{...L}}function we(e,t){let n=ke(t),r=n.methodsToSpyOn.length>0?n.methodsToSpyOn:Y(e.prototype);n.methodsToSpyOn.length>0&&ge(e,n.methodsToSpyOn);let o={};n.observablePropsToSpyOn.forEach(c=>{o[c]=_().createPropSpy();});let s=me(e.prototype,n);return V(o,s.getters,s.setters),r.forEach(c=>{n.lazySpies?be(o,c):o[c]=l(c);}),o}function he(e={}){let t=new Map;for(let r of Reflect.ownKeys(e))t.set(r,Reflect.get(e,r));let n={get(r,o){if(t.has(o))return t.get(o);if(typeof o=="symbol"||o==="then"||o==="constructor")return;let s=l(String(o));return t.set(o,s),s},set(r,o,s){return t.set(o,s),true},has(r,o){return t.has(o)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(r,o){if(t.has(o))return {configurable:true,enumerable:true,value:t.get(o),writable:true}}};return new Proxy({},n)}function J(e,t){let n=l(e),r=new Map,o=new Map;for(let c of Reflect.ownKeys(t))o.set(c,Reflect.get(t,c));let s={get(c,i,u){if(o.has(i))return o.get(i);if(i!=="then"){if(i in c)return Reflect.get(c,i,u);if(typeof i!="symbol")return r.has(i)||r.set(i,J(`${e}.${String(i)}`,{})),r.get(i)}},set(c,i,u){return o.set(i,u),true}};return new Proxy(n,s)}function Se(e={}){return J("mockDeep",e)}function Me(e){return typeof e=="object"&&e!==null&&"getters"in e&&"setters"in e}function je(e){let t=Object.getOwnPropertyDescriptor(e,"accessorSpies")?.value;return Me(t)?[...Object.values(t.getters),...Object.values(t.setters)].filter(w):[]}function X(e){let t=[];return Object.keys(e).forEach(n=>{let r=Object.getOwnPropertyDescriptor(e,n);!r||r.get||r.set||w(r.value)&&t.push(r.value);}),[...t,...je(e)]}function ve(e){let t=p();X(e).forEach(n=>{t.clear(n),h(n);});}function Oe(e){let t=p();X(e).forEach(n=>{t.clear(n),h(n),A(n);});}O(T);exports.clearAutoSpy=ve;exports.createAutoMock=he;exports.createFunctionSpy=l;exports.createSpyFromClass=we;exports.errorHandler=M;exports.mockDeep=Se;exports.resetAutoSpy=Oe;
package/dist/svelte.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.cjs';
2
- export { createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler } from './bun.cjs';
1
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, D as DeepMockProxy, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.cjs';
2
+ export { clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy } from './bun.cjs';
3
3
  import 'rxjs';
4
4
  import 'vitest';
package/dist/svelte.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.js';
2
- export { createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler } from './bun.js';
1
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, a as ClassSpyConfiguration, C as ClassType, b as CompleteValueConfig, D as DeepMockProxy, E as ErrorValueConfig, F as Func, N as NextValueConfig, O as OnlyMethodKeysOf, j as OnlyObservablePropsOf, k as OnlyPropsOf, S as Spy, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.js';
2
+ export { clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy } from './bun.js';
3
3
  import 'rxjs';
4
4
  import 'vitest';
package/dist/svelte.js CHANGED
@@ -1 +1 @@
1
- import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-HVN6A3AX.js';export{a as createSpyFromClass}from'./chunk-WP2TFS53.js';import {a}from'./chunk-MQCVIN2A.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-MQCVIN2A.js';import'./chunk-7IUYJ6ZW.js';a(a$1);
1
+ import {a as a$1}from'./chunk-HDCUMVHT.js';export{c as clearAutoSpy,a as createAutoMock,b as mockDeep,d as resetAutoSpy}from'./chunk-N724W7OZ.js';export{a as createSpyFromClass}from'./chunk-Q4FBVCJO.js';import {a}from'./chunk-RTGT5WHR.js';export{i as createFunctionSpy,h as errorHandler}from'./chunk-RTGT5WHR.js';import'./chunk-7IUYJ6ZW.js';a(a$1);
@@ -104,6 +104,14 @@ type AddAccessorsSpies<T> = {
104
104
  };
105
105
  };
106
106
  };
107
+ /**
108
+ * A recursively-mocked `T`: object properties become nested deep mocks (so
109
+ * `mock.repo.user.find()` works without seeding), methods become spies, and
110
+ * primitive properties keep their type (seed them via `overrides`/assignment).
111
+ */
112
+ type DeepMockProxy<T> = {
113
+ [K in keyof T]: T[K] extends Func ? AddSpyMethodsByReturnTypes<T[K]> : T[K] extends object ? DeepMockProxy<T[K]> : T[K];
114
+ };
107
115
  /** Fully-typed spy of `T`. */
108
116
  type Spy<T> = AddAccessorsSpies<T> & {
109
117
  [K in keyof T]: T[K] extends Func ? AddSpyMethodsByReturnTypes<T[K]> : T[K] extends Observable<infer O> ? AddObservableSpyMethods<O> & T[K] : T[K];
@@ -114,6 +122,10 @@ interface ClassSpyConfiguration<T> {
114
122
  observablePropsToSpyOn?: OnlyObservablePropsOf<T>[];
115
123
  settersToSpyOn?: OnlyPropsOf<T>[];
116
124
  gettersToSpyOn?: OnlyPropsOf<T>[];
125
+ /** Auto-discover and spy every getter/setter on the prototype chain (merged with the explicit lists). */
126
+ autoSpyAccessors?: boolean;
127
+ /** Materialize each method spy lazily, on first access, instead of eagerly up-front (cheaper for large classes). */
128
+ lazySpies?: boolean;
117
129
  }
118
130
 
119
- export type { AddObservableSpyMethods as A, ClassType as C, ErrorValueConfig as E, Func as F, NextValueConfig as N, OnlyMethodKeysOf as O, Spy as S, ValueConfig as V, WithMockReturnValue as W, ClassSpyConfiguration as a, CompleteValueConfig as b, ValueConfigPerCall as c, AddAccessorsSpies as d, AddCalledWithObservable as e, AddCalledWithPromise as f, AddCalledWithSpyMethods as g, AddPromiseSpyMethods as h, AddSpyMethodsByReturnTypes as i, OnlyObservablePropsOf as j, OnlyPropsOf as k };
131
+ export type { AddObservableSpyMethods as A, ClassType as C, DeepMockProxy as D, ErrorValueConfig as E, Func as F, NextValueConfig as N, OnlyMethodKeysOf as O, Spy as S, ValueConfig as V, WithMockReturnValue as W, ClassSpyConfiguration as a, CompleteValueConfig as b, ValueConfigPerCall as c, AddAccessorsSpies as d, AddCalledWithObservable as e, AddCalledWithPromise as f, AddCalledWithSpyMethods as g, AddPromiseSpyMethods as h, AddSpyMethodsByReturnTypes as i, OnlyObservablePropsOf as j, OnlyPropsOf as k };
@@ -104,6 +104,14 @@ type AddAccessorsSpies<T> = {
104
104
  };
105
105
  };
106
106
  };
107
+ /**
108
+ * A recursively-mocked `T`: object properties become nested deep mocks (so
109
+ * `mock.repo.user.find()` works without seeding), methods become spies, and
110
+ * primitive properties keep their type (seed them via `overrides`/assignment).
111
+ */
112
+ type DeepMockProxy<T> = {
113
+ [K in keyof T]: T[K] extends Func ? AddSpyMethodsByReturnTypes<T[K]> : T[K] extends object ? DeepMockProxy<T[K]> : T[K];
114
+ };
107
115
  /** Fully-typed spy of `T`. */
108
116
  type Spy<T> = AddAccessorsSpies<T> & {
109
117
  [K in keyof T]: T[K] extends Func ? AddSpyMethodsByReturnTypes<T[K]> : T[K] extends Observable<infer O> ? AddObservableSpyMethods<O> & T[K] : T[K];
@@ -114,6 +122,10 @@ interface ClassSpyConfiguration<T> {
114
122
  observablePropsToSpyOn?: OnlyObservablePropsOf<T>[];
115
123
  settersToSpyOn?: OnlyPropsOf<T>[];
116
124
  gettersToSpyOn?: OnlyPropsOf<T>[];
125
+ /** Auto-discover and spy every getter/setter on the prototype chain (merged with the explicit lists). */
126
+ autoSpyAccessors?: boolean;
127
+ /** Materialize each method spy lazily, on first access, instead of eagerly up-front (cheaper for large classes). */
128
+ lazySpies?: boolean;
117
129
  }
118
130
 
119
- export type { AddObservableSpyMethods as A, ClassType as C, ErrorValueConfig as E, Func as F, NextValueConfig as N, OnlyMethodKeysOf as O, Spy as S, ValueConfig as V, WithMockReturnValue as W, ClassSpyConfiguration as a, CompleteValueConfig as b, ValueConfigPerCall as c, AddAccessorsSpies as d, AddCalledWithObservable as e, AddCalledWithPromise as f, AddCalledWithSpyMethods as g, AddPromiseSpyMethods as h, AddSpyMethodsByReturnTypes as i, OnlyObservablePropsOf as j, OnlyPropsOf as k };
131
+ export type { AddObservableSpyMethods as A, ClassType as C, DeepMockProxy as D, ErrorValueConfig as E, Func as F, NextValueConfig as N, OnlyMethodKeysOf as O, Spy as S, ValueConfig as V, WithMockReturnValue as W, ClassSpyConfiguration as a, CompleteValueConfig as b, ValueConfigPerCall as c, AddAccessorsSpies as d, AddCalledWithObservable as e, AddCalledWithPromise as f, AddCalledWithSpyMethods as g, AddPromiseSpyMethods as h, AddSpyMethodsByReturnTypes as i, OnlyObservablePropsOf as j, OnlyPropsOf as k };
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var vitest=require('vitest');var g;function T(e){g=e;}var E="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(E);return g}var h={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 w(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function O(e,t,r){let n=d();return r==="setter"?n.spyOnSetter(e,t):n.spyOnGetter(e,t)}function C(e,t,r){let n={getters:{},setters:{}};e.accessorSpies=n,t.forEach(o=>{w(e,o),n.getters[o]=O(e,o,"getter");}),r.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||w(e,o),n.setters[o]=O(e,o,"setter");});}function _(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function H(e,t){return Object.entries(e).map(([r,n])=>`${r}:${u(n,t)}`).join(",")}function $(e,t){return `new Map([${[...e.entries()].map(([n,o])=>`[${u(n,t)},${u(o,t)}]`).join(",")}])`}function I(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=>u(n,t)).join(",")}])`:Array.isArray(e)?r=`[${e.map(n=>u(n,t)).join(",")}]`:r=`{${H(e,t)}}`,t.delete(e),r}function u(e,t=new WeakSet){return typeof e=="string"?_(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:typeof e=="object"&&e!==null?I(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 u(t)}};var z=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,K="But the function was called without any arguments.",B=e=>{let t=u(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},m={throwArgumentsError(e,t){let r=e.length===0?K:B(e);throw new Error(z(t)+r)}};var G="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(G);}function a(e,t){return Object.assign(e,t)}function D(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){a(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:D(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 q(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 q(r)?{found:true,value:A(r)}:{found:false,value:void 0}}function N(e,t,r,n,o){if(e.wasConfigured){let s=P(e,n);if(s.found)return s.value}if(t.wasConfigured){let s=P(t,n);if(s.found)return s.value;m.throwArgumentsError(n,o);}return A(r)}function x(e,t){e.wasConfigured=true;let r=n=>{e.argsToValuesMap.set(t,{value:n});};return a(e,{mockReturnValue:r,returnValue:r}),F(e,t),e}function R(){return {wasConfigured:false,argsToValuesMap:new y}}function c(e){let t=R(),r=R(),n={value:void 0},o=d().createMockFn((...i)=>N(t,r,n,i,e),e);v(o,n);let s=a(o,{calledWith:(...i)=>x(t,i),mustBeCalledWith:(...i)=>x(r,i)});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)}var W=new WeakMap;function L(e){let t=W.get(e);if(t)return t;let r=new Set,n=e;for(;n;){let s=Object.getPrototypeOf(n);s&&U(n).forEach(i=>r.add(i)),n=s;}let o=[...r];return W.set(e,o),o}function J(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:n,settersToSpyOn:o,gettersToSpyOn:s}=J(t),i=r.length>0?r:L(e.prototype),p={};return n.forEach(l=>{p[l]=j().createPropSpy();}),C(p,s,o),i.forEach(l=>{p[l]=c(l);}),p}function X(e,t,r){return {[e]:S(t,r)}}function Y(e={}){let t=new Map;for(let n of Reflect.ownKeys(e))t.set(n,Reflect.get(e,n));let r={get(n,o){if(t.has(o))return t.get(o);if(typeof o=="symbol"||o==="then"||o==="constructor")return;let s=c(String(o));return t.set(o,s),s},set(n,o,s){return t.set(o,s),true},has(n,o){return t.has(o)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(n,o){if(t.has(o))return {configurable:true,enumerable:true,value:t.get(o),writable:true}}};return new Proxy({},r)}T(h);exports.createAutoMock=Y;exports.createFunctionSpy=c;exports.createSpyFromClass=S;exports.errorHandler=m;exports.provideAutoSpy=X;
1
+ 'use strict';var vitest=require('vitest');var g;function O(e){g=e;}var Z="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 p(){if(!g)throw new Error(Z);return g}var C={createMockFn(e,t){let n=e?vitest.vi.fn(e):vitest.vi.fn();return t!==void 0&&n.mockName(t),n},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();},clear(e){e.mockClear();},restoreImplementation(e,t){e.mockImplementation(t);}};var R=Symbol.for("vitest-auto-spy.mock"),b=Symbol.for("vitest-auto-spy.resetConfig"),k=Symbol.for("vitest-auto-spy.clearHook");function m(e){Object.defineProperty(e,R,{value:true,enumerable:false,configurable:true});}function S(e){return typeof e=="function"&&R in e}function A(e,t){Object.defineProperty(e,b,{value:t,enumerable:false,configurable:true});}function P(e){if(!(b in e))return;let t=Reflect.get(e,b);typeof t=="function"&&t();}function F(e,t){Object.defineProperty(e,k,{value:t,enumerable:false,configurable:true});}function w(e){if(!(k in e))return;let t=Reflect.get(e,k);typeof t=="function"&&t();}function x(e,t){Object.defineProperty(e,t,{get(){},set(n){},configurable:true});}function V(e,t,n){let r=p(),o=n==="setter"?r.spyOnSetter(e,t):r.spyOnGetter(e,t);return m(o),o}function E(e,t,n){let r={getters:{},setters:{}};e.accessorSpies=r,t.forEach(o=>{x(e,o),r.getters[o]=V(e,o,"getter");}),n.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||x(e,o),r.setters[o]=V(e,o,"setter");});}function ee(e){return `'${e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function te(e,t){return Object.entries(e).map(([n,r])=>`${n}:${a(r,t)}`).join(",")}function ne(e,t){return `new Map([${[...e.entries()].map(([r,o])=>`[${a(r,t)},${a(o,t)}]`).join(",")}])`}function re(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=ne(e,t):e instanceof Set?n=`new Set([${[...e].map(r=>a(r,t)).join(",")}])`:Array.isArray(e)?n=`[${e.map(r=>a(r,t)).join(",")}]`:n=`{${te(e,t)}}`,t.delete(e),n}function h(e){return typeof e=="string"?ee(e):typeof e=="bigint"?`${e}n`:typeof e=="symbol"?e.toString():typeof e=="function"?`[Function: ${e.name}]`:Object.is(e,-0)?"-0":String(e)}function W(e){return typeof e=="object"&&e!==null}function a(e,t=new WeakSet){return typeof e=="object"&&e!==null?re(e,t):h(e)}function _(e){return typeof e=="object"&&e!==null&&"asymmetricMatch"in e&&typeof e.asymmetricMatch=="function"}function oe(e){return e.some(_)}var f=class{#t=Object.create(null);#n=[];set(t,n){if(Array.isArray(t)&&oe(t)){this.#n.push({args:t,value:n});return}this.#t[this.#e(t)]=n;}get(t){let n=this.#e(t);return n in this.#t?this.#t[n]:this.#r(t)}#e(t){return Array.isArray(t)&&!t.some(W)?`[${t.map(n=>h(n)).join(",")}]`:a(t)}#r(t){return Array.isArray(t)?this.#n.find(r=>this.#o(r.args,t))?.value:void 0}#o(t,n){return t.length!==n.length?false:t.every((r,o)=>this.#s(r,n[o]))}#s(t,n){return _(t)?t.asymmetricMatch(n):this.#e([t])===this.#e([n])}};var se=e=>`The function '${e}' was configured with 'mustBeCalledWith' and expects to be called with specific arguments. `,ie="But the function was called without any arguments.",ce=e=>{let t=a(e);return `But the actual arguments were: ${t.substring(1,t.length-1)}`},M={throwArgumentsError(e,t){let n=e.length===0?ie:ce(e);throw new Error(se(t)+n)}};var ue="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 H(){throw new Error(ue);}function d(e,t){return Object.assign(e,t)}function ae(e){return e.map(t=>({wrappedValue:t.delay===void 0?Promise.resolve(t.value):new Promise(n=>setTimeout(()=>n(t.value),t.delay))}))}function D(e,t){d(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:ae(n)});}});}function z(e,t){D(e,n=>{t.value=n.value,t._isRejectedPromise=n._isRejectedPromise??false,t.valuesPerCalls=n.valuesPerCalls??[];});}function I(e,t){D(e,n=>{e.argsToValuesMap.set(t,n);});}var pe={record:e=>e,clear:()=>{}};function le(e){return typeof e!="object"&&typeof e!="function"||e===null?false:typeof Reflect.get(e,"then")=="function"}function $(e){let t=Reflect.get(e,"mock");if(typeof t!="object"||t===null||"settledResults"in t)return pe;let n=[];return Object.defineProperty(t,"settledResults",{value:n,enumerable:true,configurable:true,writable:true}),{record(r){let o={type:"incomplete",value:void 0};return n.push(o),le(r)?r.then(s=>{o.type="fulfilled",o.value=s;},s=>{o.type="rejected",o.value=s;}):(o.type="fulfilled",o.value=r),r},clear(){n.length=0;}}}function fe(e){return typeof e=="object"&&e!==null&&"value"in e}function L(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 fe(n)?{found:true,value:L(n)}:{found:false,value:void 0}}function de(e,t,n,r,o){if(e.wasConfigured){let s=K(e,r);if(s.found)return s.value}if(t.wasConfigured){let s=K(t,r);if(s.found)return s.value;M.throwArgumentsError(r,o);}return L(n)}function B(e,t){e.wasConfigured=true;let n=r=>{e.argsToValuesMap.set(t,{value:r});};return d(e,{mockReturnValue:n,returnValue:n}),I(e,t),e}function G(){return {wasConfigured:false,argsToValuesMap:new f}}function N(e){e.wasConfigured=false,e.argsToValuesMap=new f;}function l(e){let t=G(),n=G(),r={value:void 0},o=(...u)=>c.record(de(t,n,r,u,e)),s=p().createMockFn(o,e),c=$(s);z(s,r);let i=d(s,{calledWith:(...u)=>B(t,u),mustBeCalledWith:(...u)=>B(n,u)});return A(i,()=>{N(t),N(n),r.value=void 0,delete r._isRejectedPromise,delete r.valuesPerCalls,p().restoreImplementation(s,o);}),F(i,()=>c.clear()),m(i),i}var U={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[],autoSpyAccessors:false,lazySpies:false};function ye(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(n=>n!=="constructor"&&!t[n]?.get)}function Y(e,t){let n=e;for(;n;){let r=Object.getPrototypeOf(n);r&&t(n),n=r;}}var q=new WeakMap;function J(e){let t=q.get(e);if(t)return t;let n=new Set;Y(e,o=>ye(o).forEach(s=>n.add(s)));let r=[...n];return q.set(e,r),r}function me(e){let t=new Set,n=new Set;return Y(e,r=>{let o=Object.getOwnPropertyDescriptors(r);Object.keys(o).forEach(s=>{s!=="constructor"&&(o[s]?.get&&t.add(s),o[s]?.set&&n.add(s));});}),{getters:[...t],setters:[...n]}}function ge(e,t){if(!t.autoSpyAccessors)return {getters:t.gettersToSpyOn,setters:t.settersToSpyOn};let n=me(e);return {getters:[...new Set([...t.gettersToSpyOn,...n.getters])],setters:[...new Set([...t.settersToSpyOn,...n.setters])]}}function be(e,t){let n=new Set(J(e.prototype)),r=t.filter(o=>!n.has(o));r.length!==0&&console.warn(`[vitest-auto-spy] createSpyFromClass(${e.name}): requested method(s) not found on the class prototype: ${r.join(", ")}. A spy was still created, but the real code will never call it \u2014 check for typos.`);}function ke(e,t){Object.defineProperty(e,t,{configurable:true,enumerable:true,get(){let n=l(t);return Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:n}),n}});}function Se(e){return e?Array.isArray(e)?{...U,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[],autoSpyAccessors:e.autoSpyAccessors??false,lazySpies:e.lazySpies??false}:{...U}}function v(e,t){let n=Se(t),r=n.methodsToSpyOn.length>0?n.methodsToSpyOn:J(e.prototype);n.methodsToSpyOn.length>0&&be(e,n.methodsToSpyOn);let o={};n.observablePropsToSpyOn.forEach(c=>{o[c]=H().createPropSpy();});let s=ge(e.prototype,n);return E(o,s.getters,s.setters),r.forEach(c=>{n.lazySpies?ke(o,c):o[c]=l(c);}),o}function we(e,t,n){return {[e]:v(t,n)}}function he(e={}){let t=new Map;for(let r of Reflect.ownKeys(e))t.set(r,Reflect.get(e,r));let n={get(r,o){if(t.has(o))return t.get(o);if(typeof o=="symbol"||o==="then"||o==="constructor")return;let s=l(String(o));return t.set(o,s),s},set(r,o,s){return t.set(o,s),true},has(r,o){return t.has(o)},ownKeys(){return [...t.keys()]},getOwnPropertyDescriptor(r,o){if(t.has(o))return {configurable:true,enumerable:true,value:t.get(o),writable:true}}};return new Proxy({},n)}function X(e,t){let n=l(e),r=new Map,o=new Map;for(let c of Reflect.ownKeys(t))o.set(c,Reflect.get(t,c));let s={get(c,i,u){if(o.has(i))return o.get(i);if(i!=="then"){if(i in c)return Reflect.get(c,i,u);if(typeof i!="symbol")return r.has(i)||r.set(i,X(`${e}.${String(i)}`,{})),r.get(i)}},set(c,i,u){return o.set(i,u),true}};return new Proxy(n,s)}function Me(e={}){return X("mockDeep",e)}function je(e){return typeof e=="object"&&e!==null&&"getters"in e&&"setters"in e}function Te(e){let t=Object.getOwnPropertyDescriptor(e,"accessorSpies")?.value;return je(t)?[...Object.values(t.getters),...Object.values(t.setters)].filter(S):[]}function Q(e){let t=[];return Object.keys(e).forEach(n=>{let r=Object.getOwnPropertyDescriptor(e,n);!r||r.get||r.set||S(r.value)&&t.push(r.value);}),[...t,...Te(e)]}function ve(e){let t=p();Q(e).forEach(n=>{t.clear(n),w(n);});}function Oe(e){let t=p();Q(e).forEach(n=>{t.clear(n),w(n),P(n);});}O(C);exports.clearAutoSpy=ve;exports.createAutoMock=he;exports.createFunctionSpy=l;exports.createSpyFromClass=v;exports.errorHandler=M;exports.mockDeep=Me;exports.provideAutoSpy=we;exports.resetAutoSpy=Oe;
package/dist/vue.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- import { S as Spy, C as ClassType, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-Cv3L71P0.cjs';
2
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, b as CompleteValueConfig, E as ErrorValueConfig, F as Func, N as NextValueConfig, j as OnlyObservablePropsOf, k as OnlyPropsOf, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.cjs';
3
- export { createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler } from './bun.cjs';
1
+ import { S as Spy, C as ClassType, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-BKS6JdLv.cjs';
2
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, b as CompleteValueConfig, D as DeepMockProxy, E as ErrorValueConfig, F as Func, N as NextValueConfig, j as OnlyObservablePropsOf, k as OnlyPropsOf, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.cjs';
3
+ export { clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy } from './bun.cjs';
4
4
  import 'rxjs';
5
5
  import 'vitest';
6
6
 
package/dist/vue.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { S as Spy, C as ClassType, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-Cv3L71P0.js';
2
- export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, b as CompleteValueConfig, E as ErrorValueConfig, F as Func, N as NextValueConfig, j as OnlyObservablePropsOf, k as OnlyPropsOf, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-Cv3L71P0.js';
3
- export { createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler } from './bun.js';
1
+ import { S as Spy, C as ClassType, a as ClassSpyConfiguration, O as OnlyMethodKeysOf } from './types-BKS6JdLv.js';
2
+ export { d as AddAccessorsSpies, e as AddCalledWithObservable, f as AddCalledWithPromise, g as AddCalledWithSpyMethods, A as AddObservableSpyMethods, h as AddPromiseSpyMethods, i as AddSpyMethodsByReturnTypes, b as CompleteValueConfig, D as DeepMockProxy, E as ErrorValueConfig, F as Func, N as NextValueConfig, j as OnlyObservablePropsOf, k as OnlyPropsOf, V as ValueConfig, c as ValueConfigPerCall, W as WithMockReturnValue } from './types-BKS6JdLv.js';
3
+ export { clearAutoSpy, createAutoMock, createFunctionSpy, createSpyFromClass, errorHandler, mockDeep, resetAutoSpy } from './bun.js';
4
4
  import 'rxjs';
5
5
  import 'vitest';
6
6
 
package/dist/vue.js CHANGED
@@ -1 +1 @@
1
- import {a as a$1}from'./chunk-6LFQMHSX.js';export{a as createAutoMock}from'./chunk-HVN6A3AX.js';import {a as a$2}from'./chunk-WP2TFS53.js';export{a as createSpyFromClass}from'./chunk-WP2TFS53.js';import {a}from'./chunk-MQCVIN2A.js';export{e as createFunctionSpy,d as errorHandler}from'./chunk-MQCVIN2A.js';import'./chunk-7IUYJ6ZW.js';function y(r,p,n){return {[r]:a$2(p,n)}}a(a$1);export{y as provideAutoSpy};
1
+ import {a as a$1}from'./chunk-HDCUMVHT.js';export{c as clearAutoSpy,a as createAutoMock,b as mockDeep,d as resetAutoSpy}from'./chunk-N724W7OZ.js';import {a as a$2}from'./chunk-Q4FBVCJO.js';export{a as createSpyFromClass}from'./chunk-Q4FBVCJO.js';import {a}from'./chunk-RTGT5WHR.js';export{i as createFunctionSpy,h as errorHandler}from'./chunk-RTGT5WHR.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.8.2",
3
+ "version": "1.9.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",
@@ -1 +0,0 @@
1
- import {vi}from'vitest';var c={createMockFn(n,t){let o=n?vi.fn(n):vi.fn();return t!==void 0&&o.mockName(t),o},spyOnGetter(n,t){return vi.spyOn(n,t,"get")},spyOnSetter(n,t){return vi.spyOn(n,t,"set")},getCalls(n){return n.mock.calls},reset(n){n.mockReset();}};export{c as a};
@@ -1 +0,0 @@
1
- import {e}from'./chunk-MQCVIN2A.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};
@@ -1 +0,0 @@
1
- function a({createMockFn:r,getCalls:o,reset:c}){return {createMockFn:r,spyOnGetter:(t,e)=>i(r,t,e,"get"),spyOnSetter:(t,e)=>i(r,t,e,"set"),getCalls:o,reset:c}}function i(r,o,c,t){let e=Object.getOwnPropertyDescriptor(o,c),p=t==="get"?e?.get:e?.set,s=r(p),n={configurable:true,enumerable:e?.enumerable??true};return e?.get&&(n.get=e.get),e?.set&&(n.set=e.set),t==="get"?n.get=s:n.set=s,Object.defineProperty(o,c,n),s}export{a};
@@ -1 +0,0 @@
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 R(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:R(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 A(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 A(n)?{found:true,value:h(n)}:{found:false,value:void 0}}function O(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){e.wasConfigured=true;let n=r=>{e.argsToValuesMap.set(t,{value:r});};return d$1(e,{mockReturnValue:n,returnValue: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)=>O(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};
@@ -1 +0,0 @@
1
- import {e,c as c$1}from'./chunk-MQCVIN2A.js';import {c}from'./chunk-7IUYJ6ZW.js';function u(e,t){Object.defineProperty(e,t,{get(){},set(r){},configurable:true});}function f(e,t,r){let s=c$1();return r==="setter"?s.spyOnSetter(e,t):s.spyOnGetter(e,t)}function l(e,t,r){let s={getters:{},setters:{}};e.accessorSpies=s,t.forEach(o=>{u(e,o),s.getters[o]=f(e,o,"getter");}),r.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o)||u(e,o),s.setters[o]=f(e,o,"setter");});}var d={methodsToSpyOn:[],observablePropsToSpyOn:[],settersToSpyOn:[],gettersToSpyOn:[]};function S(e){let t=Object.getOwnPropertyDescriptors(e);return Object.keys(t).filter(r=>r!=="constructor"&&!t[r]?.get)}var O=new WeakMap;function T(e){let t=O.get(e);if(t)return t;let r=new Set,s=e;for(;s;){let n=Object.getPrototypeOf(s);n&&S(s).forEach(p=>r.add(p)),s=n;}let o=[...r];return O.set(e,o),o}function b(e){return e?Array.isArray(e)?{...d,methodsToSpyOn:e}:{methodsToSpyOn:e.methodsToSpyOn??[],observablePropsToSpyOn:e.observablePropsToSpyOn??[],settersToSpyOn:e.settersToSpyOn??[],gettersToSpyOn:e.gettersToSpyOn??[]}:{...d}}function M(e$1,t){let{methodsToSpyOn:r,observablePropsToSpyOn:s,settersToSpyOn:o,gettersToSpyOn:n}=b(t),p=r.length>0?r:T(e$1.prototype),c$1={};return s.forEach(i=>{c$1[i]=c().createPropSpy();}),l(c$1,n,o),p.forEach(i=>{c$1[i]=e(i);}),c$1}export{M as a};