vitest-auto-spy 5.58.0 → 5.59.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 (50) hide show
  1. package/AGENTS.md +2 -1
  2. package/CHANGELOG.md +28 -1
  3. package/README.md +12 -12
  4. package/agent-docs/configuration.md +1 -1
  5. package/agent-docs/factories.md +4 -1
  6. package/dist/angular-diagnostics.js +2 -2
  7. package/dist/angular-doubles.d.ts +1 -1
  8. package/dist/angular-doubles.js +1 -1
  9. package/dist/angular-router.d.ts +1 -1
  10. package/dist/angular.d.ts +7 -7
  11. package/dist/bun-angular.d.ts +6 -6
  12. package/dist/bun-angular.js +7 -7
  13. package/dist/bun.d.ts +5 -5
  14. package/dist/bun.js +3 -3
  15. package/dist/{chunk-OL2J4K4Z.js → chunk-6KS7F4YM.js} +1 -1
  16. package/dist/{chunk-IQVNZORF.js → chunk-BCT7C6DQ.js} +16 -1
  17. package/dist/{chunk-3457Z3JE.js → chunk-OWZPZBJI.js} +1 -1
  18. package/dist/{chunk-7MDSR745.js → chunk-YAAE5465.js} +1 -1
  19. package/dist/cli.js +11 -3
  20. package/dist/console.d.ts +1 -1
  21. package/dist/core.d.ts +10 -5
  22. package/dist/dom-stubs.d.ts +2 -2
  23. package/dist/{emission-sync-Cv6VnggW.d.ts → emission-sync-ByzgYsbj.d.ts} +1 -1
  24. package/dist/eslint-plugin.cjs +17 -4
  25. package/dist/index.d.ts +4 -4
  26. package/dist/index.js +16 -1
  27. package/dist/jasmine-compat.d.ts +1 -1
  28. package/dist/jasmine.d.ts +2 -2
  29. package/dist/jasmine.js +1 -1
  30. package/dist/{nest-unit-DG-qxd6Q.d.ts → nest-unit-DyDDZMOm.d.ts} +1 -1
  31. package/dist/nestjs.d.ts +3 -3
  32. package/dist/nestjs.js +2 -2
  33. package/dist/node.cjs +16 -1
  34. package/dist/node.d.ts +5 -5
  35. package/dist/node.js +16 -1
  36. package/dist/observer-spy.d.ts +1 -1
  37. package/dist/{package-identity-DM9vHPzU.d.ts → package-identity-xpq8sPYM.d.ts} +1 -1
  38. package/dist/{prop-mock-CIWAmzz0.d.ts → prop-mock-424cOHvI.d.ts} +1 -1
  39. package/dist/react.d.ts +4 -4
  40. package/dist/rstest.d.ts +4 -4
  41. package/dist/rstest.js +2 -2
  42. package/dist/rxjs.d.ts +3 -3
  43. package/dist/setup.d.ts +3 -3
  44. package/dist/svelte.d.ts +4 -4
  45. package/dist/{track-injections-xXSrGdpM.d.ts → track-injections-fmOmTK0q.d.ts} +1 -1
  46. package/dist/{track-signal-runs-Cw_x1b9n.d.ts → track-signal-runs-D1Vr9BdG.d.ts} +3 -3
  47. package/dist/{types-CpBA3PjQ.d.ts → types-BdYUK_Zv.d.ts} +10 -3
  48. package/dist/vue.d.ts +5 -5
  49. package/package.json +1 -1
  50. package/skills/vitest-auto-spy/SKILL.md +1 -1
package/AGENTS.md CHANGED
@@ -286,7 +286,8 @@ const cart = asSpy(TestBed.inject(CartService)); // T → Spy<T>, for the helper
286
286
 
287
287
  Both are the same object at runtime. `injectSpy(X)` already returns `Spy<X>`. The double a
288
288
  `returnsClass` method answers is `innerDouble(outer, 'create')`, typed `Spy<Report>` and read
289
- without recording a call on `create`. Do **not** patch the
289
+ without recording a call on `create`; for a generic method name the type,
290
+ `innerDouble<DialogRef<Comp>>(dialog, 'open')`. Do **not** patch the
290
291
  mismatch with `as any`, `as unknown as T` or `@ts-expect-error`.
291
292
 
292
293
  | Compiler message | Direction | Fix |
package/CHANGELOG.md CHANGED
@@ -10,6 +10,32 @@ The latest released version here must always match the one published on
10
10
 
11
11
  ## [Unreleased]
12
12
 
13
+ ## [5.59.0] - 2026-09-30
14
+
15
+ ### Added
16
+
17
+ - **`returnsClass` takes a builder, `{ method: { build: () => double } }`.** A factory method whose
18
+ result is a preset rather than a plain spy of the class, such as
19
+ `returnsClass: { open: { build: () => createMatDialogRef(MatDialogRef, { closedWith: 'ok' }).ref } }`,
20
+ moves to `returnsClass` too. `build` runs once per outer double, and `innerDouble` returns what it
21
+ built. It throws when `build` returns something other than an object.
22
+ - **`innerDouble<R>(double, 'method')` names the type of a generic method's inner double.** A method
23
+ such as `openFromComponent<C>(…): SnackBarRef<C>` read back as `Spy<SnackBarRef<unknown>>`, which a
24
+ `Spy<SnackBarRef<Comp>>` variable does not accept (TS2322).
25
+ `innerDouble<SnackBarRef<Comp>>(snackBar, 'openFromComponent')` returns `Spy<SnackBarRef<Comp>>`.
26
+ Like a cast, the named type is not checked against the method.
27
+
28
+ ### Fixed
29
+
30
+ - **`no-inline-test-data` asks for a spec-local `const` when the part of a long expected value it
31
+ names is written only once.** It used to send that part to a `*.mock.ts` file, a file of its own
32
+ for a value one test uses. A part the file writes again still goes to the mock file.
33
+ - **`angular-cache-off-in-ci` and `fs-module-cache-not-persisted` no longer judge CI configs that only
34
+ include jobs from another repository.** A `.gitlab-ci.yml` holding nothing but
35
+ `include: - project: …` (or `remote:`, `component:`, `template:`) got the note on every run,
36
+ whatever the shared jobs cache. Such a config is now skipped. A local `cli.cache.environment` is
37
+ still reported, because it comes from `angular.json`.
38
+
13
39
  ## [5.58.0] - 2026-09-30
14
40
 
15
41
  ### Added
@@ -6793,7 +6819,8 @@ moved under 1 %: `/angular` +192 B (+1.0 %) for the override queue and the HTTP
6793
6819
  This copy ships with the package and carries 5.x only. Releases before 5.0.0 are in the
6794
6820
  [full changelog](https://github.com/ASDAlexey/vitest-auto-spy/blob/master/CHANGELOG.md).
6795
6821
 
6796
- [Unreleased]: https://github.com/ASDAlexey/vitest-auto-spy/compare/v5.58.0...HEAD
6822
+ [Unreleased]: https://github.com/ASDAlexey/vitest-auto-spy/compare/v5.59.0...HEAD
6823
+ [5.59.0]: https://github.com/ASDAlexey/vitest-auto-spy/compare/v5.58.0...v5.59.0
6797
6824
  [5.58.0]: https://github.com/ASDAlexey/vitest-auto-spy/compare/v5.57.0...v5.58.0
6798
6825
  [5.57.0]: https://github.com/ASDAlexey/vitest-auto-spy/compare/v5.56.0...v5.57.0
6799
6826
  [5.56.0]: https://github.com/ASDAlexey/vitest-auto-spy/compare/v5.55.0...v5.56.0
package/README.md CHANGED
@@ -3806,18 +3806,18 @@ Helpers on each spied member, by return type:
3806
3806
 
3807
3807
  `ClassSpyConfiguration`, the second argument of `createSpyFromClass` and `provideAutoSpy`:
3808
3808
 
3809
- | Option | What it does |
3810
- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
3811
- | `methodsToSpyOn` | adds names to the discovered methods |
3812
- | `onlyMethodsToSpyOn` | spies only these; discovery is skipped |
3813
- | `instanceMethodsToSpyOn` | same as `methodsToSpyOn`, for callables on the instance (`signal()` fields, arrow props, `signalStore()` methods) |
3814
- | `observablePropsToSpyOn` | Observable properties to spy |
3815
- | `returnsUndefined` | methods that answer `undefined`, counted as configured under `strict` |
3816
- | `returnsClass` | `{ create: Report }` or `{ create: [Report, options] }`: the method answers one spy of that class per double, reached as `innerDouble(double, 'create')` without recording a call |
3817
- | `gettersToSpyOn` / `settersToSpyOn` | accessors to spy |
3818
- | `autoSpyAccessors` | spies every getter and setter on the prototype |
3819
- | `fillMissing` | answers a name the prototype never had with a spy (a partially abstract class) |
3820
- | `lazySpies` | unset: plain object below 8 methods, `'proxy'` from 8; `true` keeps a plain object; `false` builds every spy up front |
3809
+ | Option | What it does |
3810
+ | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
3811
+ | `methodsToSpyOn` | adds names to the discovered methods |
3812
+ | `onlyMethodsToSpyOn` | spies only these; discovery is skipped |
3813
+ | `instanceMethodsToSpyOn` | same as `methodsToSpyOn`, for callables on the instance (`signal()` fields, arrow props, `signalStore()` methods) |
3814
+ | `observablePropsToSpyOn` | Observable properties to spy |
3815
+ | `returnsUndefined` | methods that answer `undefined`, counted as configured under `strict` |
3816
+ | `returnsClass` | `{ create: Report }` or `{ create: [Report, options] }`: the method answers one spy of that class per double, reached as `innerDouble(double, 'create')` without recording a call; `{ create: { build: () => preset } }` answers a double a preset builds |
3817
+ | `gettersToSpyOn` / `settersToSpyOn` | accessors to spy |
3818
+ | `autoSpyAccessors` | spies every getter and setter on the prototype |
3819
+ | `fillMissing` | answers a name the prototype never had with a spy (a partially abstract class) |
3820
+ | `lazySpies` | unset: plain object below 8 methods, `'proxy'` from 8; `true` keeps a plain object; `false` builds every spy up front |
3821
3821
 
3822
3822
  `ValueConfig` (for `nextWithValues`): `{ value, delay? }` | `{ errorValue, delay? }` | `{ complete?, delay? }`.
3823
3823
 
@@ -36,7 +36,7 @@ createSpyFromClass(MyService, {
36
36
  | `overrides` | Replaces **any member** with the value as written — a field, a signal, an `Observable` property. The member is no longer a spy, except a plain function seeded on a method (class factories only), which becomes its spy. Named in both, `overrides` wins. |
37
37
  | `selfReturning` | The named methods answer the double itself — a default like `returns`; a name in both answers `returns`. |
38
38
  | `returnsUndefined` | The list form of `returns: { m: undefined }` — `provideAutoSpy(CartStore, { strict: true, returnsUndefined: ['add', 'remove', 'clear'] })`; a name also in `returns` answers that. `createAutoMock`, `provideAutoSpyForToken` and `registerAutoSpyDefaults` take it too. |
39
- | `returnsClass` | `{ method: Class }` or `{ method: [Class, options] }` — the method answers a spy of that class, built once per double with those `createSpyFromClass` options (typed against `Class`). `innerDouble(double, 'm')` reaches it without recording a call; `asSpy(double.m())` is a call. The one-entry form of `returns: { m: asInstance(createSpyFromClass(Class)) }`; `returns` wins for the same name. Every factory that takes `returns` takes it. With nothing seeded, `createAutoMock<T>({ returnsUndefined: [...] })` takes the options first. |
39
+ | `returnsClass` | `{ method: Class }`, `{ method: [Class, options] }` or `{ method: { build } }` — the method answers a spy of that class, built once per double with those `createSpyFromClass` options (typed against `Class`); `build` returns a double a preset made, such as `createMatDialogRef(MatDialogRef).ref`, called once per double. `innerDouble(double, 'm')` reaches it without recording a call; `asSpy(double.m())` is a call. The one-entry form of `returns: { m: asInstance(createSpyFromClass(Class)) }`; `returns` wins for the same name. Every factory that takes `returns` takes it. With nothing seeded, `createAutoMock<T>({ returnsUndefined: [...] })` takes the options first. |
40
40
 
41
41
  ### `instanceMethodsToSpyOn` for members discovery cannot see
42
42
 
@@ -66,7 +66,10 @@ records no call, so a spec asserting `create`'s call count uses it too (`asSpy(f
66
66
  is a recorded call). `innerDouble` throws for a method with no `returnsClass` entry. When the inner
67
67
  double needs options of its own — a `void` method under `strict` — pass a pair:
68
68
  `returnsClass: { open: [SnackBarRef, { returnsUndefined: ['dismiss'] }] }`; the options are typed
69
- against `SnackBarRef`.
69
+ against `SnackBarRef`. A preset double goes in as a builder, called once per outer double:
70
+ `returnsClass: { open: { build: () => createMatDialogRef(MatDialogRef, { closedWith: 'ok' }).ref } }`.
71
+ A generic method reads back with its type parameters as `unknown` (`Spy<MatDialogRef<unknown>>`);
72
+ name the type, `innerDouble<MatDialogRef<SaveDialog>>(dialog, 'open')` — unchecked, like a cast.
70
73
 
71
74
  `createMock<T>()` is the one to reach for on data shapes — it returns a plain `T`, so it satisfies a
72
75
  `no-type-assertion` lint rule without an `eslint-disable` on every fixture. `createMock<T>(undefined)`
@@ -1,10 +1,10 @@
1
1
  import { pendingRequestsReport, assertAngularInternals, instrumentTestBed, onTestingModuleConfigured, onComponentCreated, HTTP_TESTING_BRAND, beforeTestBedReset, verifyOnTeardown } from './chunk-JCTHGJTY.js';
2
2
  export { disableTestBedDiagnostics, enableTestBedDiagnostics, formatSpecTiming, getTestBedTiming, instrumentTestBed, reportSpecTiming } from './chunk-JCTHGJTY.js';
3
- import { failOnUnspiedProvider, onTestBedFileEnd, isLazyDoubleFactory } from './chunk-3457Z3JE.js';
3
+ import { failOnUnspiedProvider, onTestBedFileEnd, isLazyDoubleFactory } from './chunk-OWZPZBJI.js';
4
4
  import './chunk-T5MQSNRX.js';
5
5
  import './chunk-4JY7KIJG.js';
6
6
  import './chunk-RQLUH6RE.js';
7
- import './chunk-IQVNZORF.js';
7
+ import './chunk-BCT7C6DQ.js';
8
8
  import './chunk-F7UPX6YV.js';
9
9
  import './chunk-PC3FAZT3.js';
10
10
  import './chunk-UH2Q7RTQ.js';
@@ -1,6 +1,6 @@
1
1
  import './vitest-mock-types-B17-xaWt.js';
2
2
  import { InjectionToken, AbstractType, Injector, ValueProvider, FactoryProvider, ProviderToken, ChangeDetectorRef } from '@angular/core';
3
- import { h as AddSpyMethodsByReturnTypes, S as Spy, F as Func } from './types-CpBA3PjQ.js';
3
+ import { h as AddSpyMethodsByReturnTypes, S as Spy, F as Func } from './types-BdYUK_Zv.js';
4
4
  import { DomSanitizer } from '@angular/platform-browser';
5
5
  import 'vitest';
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { useVitestAdapter } from './chunk-JFROAGGY.js';
2
2
  import { describeInstance } from './chunk-3OEYMUV3.js';
3
3
  import { angularInternalsError } from './chunk-4JY7KIJG.js';
4
- import { createSpyFromClass } from './chunk-IQVNZORF.js';
4
+ import { createSpyFromClass } from './chunk-BCT7C6DQ.js';
5
5
  import './chunk-XZ5JUXKT.js';
6
6
  import './chunk-ZTT2QLMJ.js';
7
7
  import './chunk-YHDBRBGU.js';
@@ -1,6 +1,6 @@
1
1
  import { Type, Injector, FactoryProvider, Provider } from '@angular/core';
2
2
  import { Params, Data, UrlSegment, ActivatedRoute, Route, ResolveData, Navigation, Router, Event } from '@angular/router';
3
- import { h as AddSpyMethodsByReturnTypes } from './types-CpBA3PjQ.js';
3
+ import { h as AddSpyMethodsByReturnTypes } from './types-BdYUK_Zv.js';
4
4
  import { SpyLocation } from '@angular/common/testing';
5
5
 
6
6
  /**
package/dist/angular.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  import './vitest-mock-types-B17-xaWt.js';
2
- export { w as AngularTokenProvider, A as AngularValueProvider, a as AutoSpiedInstance, C as ComponentInputs, b as CreateWithAutoSpiesOptions, E as ElementConstructor, N as NativeElementHolder, P as PreparedShallow, R as RenderShallowOptions, c as ResourceStatusLike, d as RunCounter, S as SettleResourceOptions, e as ShallowOverrides, f as ShallowRender, g as SpyRegistry, h as StableOptions, i as createWithAutoSpies, j as flushEffects, k as hostElement, l as injectSpy, p as prepareShallow, m as provideAutoSpy, x as provideAutoSpyForToken, q as queryElement, r as renderShallow, n as runEffect, s as setInputs, o as settleResource, t as stable, u as trackEffectRuns, v as trackRecomputations } from './track-signal-runs-Cw_x1b9n.js';
3
- import { o as DeepPartial, m as ClassType, C as ClassSpyConfiguration, S as Spy, u as OnlyMethodKeysOf, h as AddSpyMethodsByReturnTypes, s as NotAPublicKey } from './types-CpBA3PjQ.js';
4
- export { K as SubjectOf } from './types-CpBA3PjQ.js';
2
+ export { w as AngularTokenProvider, A as AngularValueProvider, a as AutoSpiedInstance, C as ComponentInputs, b as CreateWithAutoSpiesOptions, E as ElementConstructor, N as NativeElementHolder, P as PreparedShallow, R as RenderShallowOptions, c as ResourceStatusLike, d as RunCounter, S as SettleResourceOptions, e as ShallowOverrides, f as ShallowRender, g as SpyRegistry, h as StableOptions, i as createWithAutoSpies, j as flushEffects, k as hostElement, l as injectSpy, p as prepareShallow, m as provideAutoSpy, x as provideAutoSpyForToken, q as queryElement, r as renderShallow, n as runEffect, s as setInputs, o as settleResource, t as stable, u as trackEffectRuns, v as trackRecomputations } from './track-signal-runs-D1Vr9BdG.js';
3
+ import { o as DeepPartial, m as ClassType, C as ClassSpyConfiguration, S as Spy, u as OnlyMethodKeysOf, h as AddSpyMethodsByReturnTypes, s as NotAPublicKey } from './types-BdYUK_Zv.js';
4
+ export { K as SubjectOf } from './types-BdYUK_Zv.js';
5
5
  import { InjectionToken, Provider, Type, WritableSignal, Signal } from '@angular/core';
6
- import { b as AutoMockConfiguration, D as DeepReadonly } from './emission-sync-Cv6VnggW.js';
7
- export { C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, s as setEmissionTimeout } from './emission-sync-Cv6VnggW.js';
6
+ import { b as AutoMockConfiguration, D as DeepReadonly } from './emission-sync-ByzgYsbj.js';
7
+ export { C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, s as setEmissionTimeout } from './emission-sync-ByzgYsbj.js';
8
8
  import { TestAPI } from 'vitest';
9
- export { I as InjectionLog, T as TrackInjectionsOptions, a as TrackedProvider, t as trackInjections } from './track-injections-xXSrGdpM.js';
10
- export { A as AccessorImplementations, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, e as restoreMockedProps } from './prop-mock-CIWAmzz0.js';
9
+ export { I as InjectionLog, T as TrackInjectionsOptions, a as TrackedProvider, t as trackInjections } from './track-injections-fmOmTK0q.js';
10
+ export { A as AccessorImplementations, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, e as restoreMockedProps } from './prop-mock-424cOHvI.js';
11
11
  import '@angular/core/testing';
12
12
 
13
13
  /**
@@ -1,10 +1,10 @@
1
- export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-CpBA3PjQ.js';
1
+ export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-BdYUK_Zv.js';
2
2
  export { AdoptMockOptions, AdoptedMock, ArgCaptor, AsInstances, AssertMockedOptions, CallLog, CaptureArgOptions, ConstructorMock, ConstructorSpy, FixtureFactory, FlushUntilOptions, MockDeepOptions, ModuleNamespace, ModuleNamespaceOptions, SpyClassOptions, adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, clearAutoSpy, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromClass, createSpyFromInstance, errorHandler, flushEventLoop, flushEventLoopUntil, innerDouble, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, resetAutoSpy, restoreSpiedInstance, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './core.js';
3
- export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-Cv6VnggW.js';
4
- export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-DM9vHPzU.js';
5
- export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-CIWAmzz0.js';
6
- export { C as CreateNestUnitOptions, N as NestUnit, a as NestUnitClass, b as NestUnitProvider, c as NestUnitSpies, d as createNestUnit } from './nest-unit-DG-qxd6Q.js';
7
- export { A as AngularValueProvider, a as AutoSpiedInstance, C as ComponentInputs, b as CreateWithAutoSpiesOptions, E as ElementConstructor, N as NativeElementHolder, P as PreparedShallow, R as RenderShallowOptions, c as ResourceStatusLike, d as RunCounter, S as SettleResourceOptions, e as ShallowOverrides, f as ShallowRender, g as SpyRegistry, h as StableOptions, i as createWithAutoSpies, j as flushEffects, k as hostElement, l as injectSpy, p as prepareShallow, m as provideAutoSpy, q as queryElement, r as renderShallow, n as runEffect, s as setInputs, o as settleResource, t as stable, u as trackEffectRuns, v as trackRecomputations } from './track-signal-runs-Cw_x1b9n.js';
3
+ export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-ByzgYsbj.js';
4
+ export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-xpq8sPYM.js';
5
+ export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-424cOHvI.js';
6
+ export { C as CreateNestUnitOptions, N as NestUnit, a as NestUnitClass, b as NestUnitProvider, c as NestUnitSpies, d as createNestUnit } from './nest-unit-DyDDZMOm.js';
7
+ export { A as AngularValueProvider, a as AutoSpiedInstance, C as ComponentInputs, b as CreateWithAutoSpiesOptions, E as ElementConstructor, N as NativeElementHolder, P as PreparedShallow, R as RenderShallowOptions, c as ResourceStatusLike, d as RunCounter, S as SettleResourceOptions, e as ShallowOverrides, f as ShallowRender, g as SpyRegistry, h as StableOptions, i as createWithAutoSpies, j as flushEffects, k as hostElement, l as injectSpy, p as prepareShallow, m as provideAutoSpy, q as queryElement, r as renderShallow, n as runEffect, s as setInputs, o as settleResource, t as stable, u as trackEffectRuns, v as trackRecomputations } from './track-signal-runs-D1Vr9BdG.js';
8
8
  import '@angular/core';
9
9
  import '@angular/core/testing';
10
10
 
@@ -1,17 +1,17 @@
1
- import { withTestBedSplitExplained } from './chunk-3457Z3JE.js';
2
- export { injectSpy, provideAutoSpy } from './chunk-3457Z3JE.js';
1
+ import { withTestBedSplitExplained } from './chunk-OWZPZBJI.js';
2
+ export { injectSpy, provideAutoSpy } from './chunk-OWZPZBJI.js';
3
3
  import { stable, flushEffects } from './chunk-RHGDQQNC.js';
4
4
  export { flushEffects, stable } from './chunk-RHGDQQNC.js';
5
5
  import { readSignalSymbol } from './chunk-T5MQSNRX.js';
6
6
  import { angularInternalsError } from './chunk-4JY7KIJG.js';
7
7
  import './chunk-VLEU3CWT.js';
8
- import { createSpyForToken } from './chunk-OL2J4K4Z.js';
9
- export { createNestUnit } from './chunk-OL2J4K4Z.js';
10
- export { adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromInstance, describeDuplicateCopies, expectAllEmissions, expectCompletion, expectEmission, expectEmissions, expectError, expectNoEmission, expectNoEmissionSync, flushEventLoop, flushEventLoopUntil, getPackageCopies, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, restoreSpiedInstance, setEmissionTimeout, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './chunk-7MDSR745.js';
8
+ import { createSpyForToken } from './chunk-6KS7F4YM.js';
9
+ export { createNestUnit } from './chunk-6KS7F4YM.js';
10
+ export { adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromInstance, describeDuplicateCopies, expectAllEmissions, expectCompletion, expectEmission, expectEmissions, expectError, expectNoEmission, expectNoEmissionSync, flushEventLoop, flushEventLoopUntil, getPackageCopies, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, restoreSpiedInstance, setEmissionTimeout, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './chunk-YAAE5465.js';
11
11
  import { mockValueProp } from './chunk-RQLUH6RE.js';
12
12
  export { countMockedProps, mockAccessorsProp, mockReadonlyProp, mockReadonlyPropGetter, mockValueProp, reportPropsOutsideHooks, restoreMockedProps } from './chunk-RQLUH6RE.js';
13
- import { closestName } from './chunk-IQVNZORF.js';
14
- export { autoMocked, clearAutoSpy, clearAutoSpyDefaults, createAutoMock, createSpyFromClass, innerDouble, registerAutoSpyDefaults, resetAutoSpy } from './chunk-IQVNZORF.js';
13
+ import { closestName } from './chunk-BCT7C6DQ.js';
14
+ export { autoMocked, clearAutoSpy, clearAutoSpyDefaults, createAutoMock, createSpyFromClass, innerDouble, registerAutoSpyDefaults, resetAutoSpy } from './chunk-BCT7C6DQ.js';
15
15
  import { fakeClockBacklog } from './chunk-SF4GKKN4.js';
16
16
  import './chunk-SOROJD3W.js';
17
17
  import './chunk-75WPOZKE.js';
package/dist/bun.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-CpBA3PjQ.js';
1
+ export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-BdYUK_Zv.js';
2
2
  export { AdoptMockOptions, AdoptedMock, ArgCaptor, AsInstances, AssertMockedOptions, CallLog, CaptureArgOptions, ConstructorMock, ConstructorSpy, FixtureFactory, FlushUntilOptions, MockDeepOptions, ModuleNamespace, ModuleNamespaceOptions, SpyClassOptions, adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, clearAutoSpy, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromClass, createSpyFromInstance, errorHandler, flushEventLoop, flushEventLoopUntil, innerDouble, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, resetAutoSpy, restoreSpiedInstance, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './core.js';
3
- export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-Cv6VnggW.js';
4
- export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-DM9vHPzU.js';
5
- export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-CIWAmzz0.js';
6
- export { C as CreateNestUnitOptions, N as NestUnit, a as NestUnitClass, b as NestUnitProvider, c as NestUnitSpies, d as createNestUnit } from './nest-unit-DG-qxd6Q.js';
3
+ export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-ByzgYsbj.js';
4
+ export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-xpq8sPYM.js';
5
+ export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-424cOHvI.js';
6
+ export { C as CreateNestUnitOptions, N as NestUnit, a as NestUnitClass, b as NestUnitProvider, c as NestUnitSpies, d as createNestUnit } from './nest-unit-DyDDZMOm.js';
package/dist/bun.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import './chunk-VLEU3CWT.js';
2
- export { createNestUnit } from './chunk-OL2J4K4Z.js';
3
- export { adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromInstance, describeDuplicateCopies, expectAllEmissions, expectCompletion, expectEmission, expectEmissions, expectError, expectNoEmission, expectNoEmissionSync, flushEventLoop, flushEventLoopUntil, getPackageCopies, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, restoreSpiedInstance, setEmissionTimeout, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './chunk-7MDSR745.js';
2
+ export { createNestUnit } from './chunk-6KS7F4YM.js';
3
+ export { adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromInstance, describeDuplicateCopies, expectAllEmissions, expectCompletion, expectEmission, expectEmissions, expectError, expectNoEmission, expectNoEmissionSync, flushEventLoop, flushEventLoopUntil, getPackageCopies, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, restoreSpiedInstance, setEmissionTimeout, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './chunk-YAAE5465.js';
4
4
  export { countMockedProps, mockAccessorsProp, mockReadonlyProp, mockReadonlyPropGetter, mockValueProp, reportPropsOutsideHooks, restoreMockedProps } from './chunk-RQLUH6RE.js';
5
- export { autoMocked, clearAutoSpy, clearAutoSpyDefaults, createAutoMock, createSpyFromClass, innerDouble, registerAutoSpyDefaults, resetAutoSpy } from './chunk-IQVNZORF.js';
5
+ export { autoMocked, clearAutoSpy, clearAutoSpyDefaults, createAutoMock, createSpyFromClass, innerDouble, registerAutoSpyDefaults, resetAutoSpy } from './chunk-BCT7C6DQ.js';
6
6
  import './chunk-SF4GKKN4.js';
7
7
  import './chunk-SOROJD3W.js';
8
8
  import './chunk-75WPOZKE.js';
@@ -1,4 +1,4 @@
1
- import { createSpyFromClass, createAutoMock } from './chunk-IQVNZORF.js';
1
+ import { createSpyFromClass, createAutoMock } from './chunk-BCT7C6DQ.js';
2
2
  import { sourceClassName } from './chunk-DYAS4OK4.js';
3
3
  import { trackInjectionsUntracked, nestUnitRefusals } from './chunk-IATDAQMO.js';
4
4
  import { withDocs } from './chunk-ENCEEH23.js';
@@ -1063,10 +1063,25 @@ function withUndefinedReturns(returns, names) {
1063
1063
  function classDoubles(classes, answered) {
1064
1064
  return Object.fromEntries(
1065
1065
  Object.entries(classes ?? {}).flatMap(
1066
- ([name, entry]) => entry === void 0 || answered(name) ? [] : [[name, typeof entry === "function" ? createSpyFromClass2(entry) : createSpyFromClass2(entry[0], entry[1])]]
1066
+ ([name, entry]) => entry === void 0 || answered(name) ? [] : [[name, classDouble(name, entry)]]
1067
1067
  )
1068
1068
  );
1069
1069
  }
1070
+ function classDouble(name, entry) {
1071
+ if (typeof entry === "function") {
1072
+ return createSpyFromClass2(entry);
1073
+ }
1074
+ if (!("build" in entry)) {
1075
+ return createSpyFromClass2(entry[0], entry[1]);
1076
+ }
1077
+ const built = entry.build();
1078
+ if ((typeof built !== "object" || built === null) && typeof built !== "function") {
1079
+ throw new TypeError(
1080
+ `[vitest-auto-spy] returnsClass: the build() of '${name}' returned ${String(built)}; it has to return the double the method answers. For a plain value use returns: { ${name}: value }.`
1081
+ );
1082
+ }
1083
+ return built;
1084
+ }
1070
1085
  var warnedThenables = /* @__PURE__ */ new WeakSet();
1071
1086
  function warnOnHeldBackThen(ObjectClass, config) {
1072
1087
  if (config.onlyMethodsToSpyOn.length > 0 || config.methodsToSpyOn.includes("then") || config.instanceMethodsToSpyOn.includes("then") || Object.hasOwn(config.overrides, "then") || warnedThenables.has(ObjectClass) || !declaresThen(ObjectClass.prototype)) {
@@ -1,5 +1,5 @@
1
1
  import { currentSpecFile } from './chunk-RQLUH6RE.js';
2
- import { createSpyFromClass } from './chunk-IQVNZORF.js';
2
+ import { createSpyFromClass } from './chunk-BCT7C6DQ.js';
3
3
  import { isAutoSpyLike, misconfigurationThrows, reportMisconfiguration } from './chunk-TXC3L3FO.js';
4
4
  import { count, displayPath, sourceClassName } from './chunk-DYAS4OK4.js';
5
5
  import { setup, angularComponentStub, angularInjectSpyReal, angularTestBedCopies, installationVitest } from './chunk-IATDAQMO.js';
@@ -1,5 +1,5 @@
1
1
  import { mockValueProp, mockAccessorsProp } from './chunk-RQLUH6RE.js';
2
- import { resolveConfiguration, mergeAutoSpyDefaults, resolveReadGuard, mergeMethodNames, getCallableMemberNames, createTrackedPropSpy, applyConfiguredReturns, recordInnerDoubles, createSpyFromClass, warnOnUnknownMethods, warnOnAccessorNamingAMethod, resolveAccessors, createAccessorsSpies, ownerOf, createProxyPropStore, storeWriteTraps, describeStoredProp, hasStoredProp, isProtocolKey, isDeletedProp, readStoredAccessor, NOT_STORED, disposeAutoSpy, writeStoredValue } from './chunk-IQVNZORF.js';
2
+ import { resolveConfiguration, mergeAutoSpyDefaults, resolveReadGuard, mergeMethodNames, getCallableMemberNames, createTrackedPropSpy, applyConfiguredReturns, recordInnerDoubles, createSpyFromClass, warnOnUnknownMethods, warnOnAccessorNamingAMethod, resolveAccessors, createAccessorsSpies, ownerOf, createProxyPropStore, storeWriteTraps, describeStoredProp, hasStoredProp, isProtocolKey, isDeletedProp, readStoredAccessor, NOT_STORED, disposeAutoSpy, writeStoredValue } from './chunk-BCT7C6DQ.js';
3
3
  import { fakeClockAdvice, fakeClockBacklog } from './chunk-SF4GKKN4.js';
4
4
  import { unpatchedSetTimeout, unpatchedClearTimeout } from './chunk-SOROJD3W.js';
5
5
  import { redefineFailure } from './chunk-F7UPX6YV.js';
package/dist/cli.js CHANGED
@@ -1036,6 +1036,14 @@ function cachesPath(text, path) {
1036
1036
  function persistedInCi(ci, path) {
1037
1037
  return ci.some(({ text }) => cachesPath(text, path));
1038
1038
  }
1039
+ var PIPELINE_KEYWORDS = /* @__PURE__ */ new Set(["include", "variables", "stages", "workflow", "default", "spec", "image", "services", "cache"]);
1040
+ var EXTERNAL_INCLUDE = /^\s*-?\s*(?:project|remote|component|template)\s*:/m;
1041
+ function ciJobsElsewhere(ci) {
1042
+ return ci.length > 0 && ci.every(({ text }) => {
1043
+ const keys = [...text.matchAll(/^([.A-Z_a-z][\w.-]*)\s*:/gm)].map(([, key]) => String(key));
1044
+ return keys.includes("include") && keys.every((key) => PIPELINE_KEYWORDS.has(key)) && EXTERNAL_INCLUDE.test(text);
1045
+ });
1046
+ }
1039
1047
  function persistFix(path) {
1040
1048
  return `Persist \`${path}\` between CI runs \u2014 for GitHub Actions an \`actions/cache\` step with that path and a key on the lockfile hash (\`cache: npm\` in \`setup-node\` stores only the npm download cache). \`npm ci\` deletes \`node_modules\` before it installs, so with it set \`fsModuleCachePath\` to a directory outside \`node_modules\` and cache that one.`;
1041
1049
  }
@@ -1058,7 +1066,7 @@ function checkModuleCachePersisted(profile, graph) {
1058
1066
  return [];
1059
1067
  }
1060
1068
  const setting = moduleCacheSetting(profile, graph, major);
1061
- if (setting === void 0 || persistedInCi(ci, setting.path)) {
1069
+ if (setting === void 0 || persistedInCi(ci, setting.path) || ciJobsElsewhere(ci)) {
1062
1070
  return [];
1063
1071
  }
1064
1072
  const files = ci.map(({ file }) => file).join(", ");
@@ -1227,7 +1235,7 @@ function checkAngularCacheInCi(profile) {
1227
1235
  }
1228
1236
  ];
1229
1237
  }
1230
- if (settings.environment === "none" || persistedInCi(ci, settings.path)) {
1238
+ if (settings.environment === "none" || persistedInCi(ci, settings.path) || ciJobsElsewhere(ci)) {
1231
1239
  return [];
1232
1240
  }
1233
1241
  return [
@@ -1654,7 +1662,7 @@ function foreignPragmaPass() {
1654
1662
  }
1655
1663
 
1656
1664
  // src/cli/checks/export-map.generated.ts
1657
- var EXPORT_MAP_VERSION = "5.57.0";
1665
+ var EXPORT_MAP_VERSION = "5.58.0";
1658
1666
  var ENTRY_SPECIFIERS = "vitest-auto-spy vitest-auto-spy/bun vitest-auto-spy/bun-angular vitest-auto-spy/node vitest-auto-spy/rstest vitest-auto-spy/rxjs vitest-auto-spy/console vitest-auto-spy/dom-stubs vitest-auto-spy/diagnostics vitest-auto-spy/jasmine vitest-auto-spy/jasmine-compat vitest-auto-spy/observer-spy vitest-auto-spy/angular vitest-auto-spy/angular/diagnostics vitest-auto-spy/angular/doubles vitest-auto-spy/angular/matchers vitest-auto-spy/angular-http vitest-auto-spy/angular-router vitest-auto-spy/signal-forms vitest-auto-spy/nestjs vitest-auto-spy/react vitest-auto-spy/vue vitest-auto-spy/svelte vitest-auto-spy/setup vitest-auto-spy/zone vitest-auto-spy/eslint-plugin vitest-auto-spy/perf-reporter";
1659
1667
  var EXPORTED_BY = {
1660
1668
  AccessorImplementations: "0 1 2 3 4 12 20 21 22",
package/dist/console.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { F as Func, h as AddSpyMethodsByReturnTypes } from './types-CpBA3PjQ.js';
1
+ import { F as Func, h as AddSpyMethodsByReturnTypes } from './types-BdYUK_Zv.js';
2
2
 
3
3
  /** The call shape shared by every spied console method. */
4
4
  type ConsoleMethodFn = (...data: unknown[]) => void;
package/dist/core.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { G as SpyOptions, m as ClassType, C as ClassSpyConfiguration, u as OnlyMethodKeysOf, S as Spy, I as InstanceSpyConfiguration, o as DeepPartial, D as DeepMockProxy, F as Func, Y as Mock, h as AddSpyMethodsByReturnTypes, Z as MockInstance } from './types-CpBA3PjQ.js';
2
- export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, n as CompleteValueConfig, E as ErrorValueConfig, p as FunctionSpy, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, B as SpyDisposable, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-CpBA3PjQ.js';
3
- export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-Cv6VnggW.js';
4
- export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-DM9vHPzU.js';
5
- export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-CIWAmzz0.js';
1
+ import { G as SpyOptions, m as ClassType, C as ClassSpyConfiguration, u as OnlyMethodKeysOf, S as Spy, I as InstanceSpyConfiguration, o as DeepPartial, D as DeepMockProxy, F as Func, Y as Mock, h as AddSpyMethodsByReturnTypes, Z as MockInstance } from './types-BdYUK_Zv.js';
2
+ export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, n as CompleteValueConfig, E as ErrorValueConfig, p as FunctionSpy, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, B as SpyDisposable, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-BdYUK_Zv.js';
3
+ export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-ByzgYsbj.js';
4
+ export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-xpq8sPYM.js';
5
+ export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-424cOHvI.js';
6
6
 
7
7
  /**
8
8
  * Generate a fully-typed auto-spy from a class.
@@ -656,8 +656,13 @@ declare global {
656
656
  *
657
657
  * The same object every call of the method answers. Throws when the method has no `returnsClass`
658
658
  * entry on this double, or when `returns` answers it instead.
659
+ *
660
+ * A generic method reads back with its type parameters as `unknown`; name the type instead —
661
+ * `innerDouble<SnackBarRef<Comp>>(snackBar, 'openFromComponent')` — which, like a cast, is not
662
+ * checked against the method.
659
663
  */
660
664
  declare function innerDouble<T, K extends OnlyMethodKeysOf<T>>(outer: Spy<T>, method: K): Required<T>[K] extends Func ? Spy<ReturnType<Required<T>[K]>> : never;
665
+ declare function innerDouble<R = never>(outer: [R] extends [never] ? never : object, method: string): Spy<R>;
661
666
 
662
667
  /** The branch of `T` that has `Key`, or `T` itself when the union has no such member to extract. */
663
668
  type WithKey<T, Key extends PropertyKey> = [Extract<T, Record<Key, unknown>>] extends [never] ? T : Extract<T, Record<Key, unknown>>;
@@ -1,8 +1,8 @@
1
1
  import './vitest-mock-types-B17-xaWt.js';
2
- import { F as Func } from './types-CpBA3PjQ.js';
2
+ import { F as Func } from './types-BdYUK_Zv.js';
3
3
  export { W as WebStorageKey, a as WebStorageStub, b as WebStorageStubOptions, s as stubWebStorage } from './web-storage-dwQ9E7Lm.js';
4
4
  import { Mock } from 'vitest';
5
- import { R as RestoreProp } from './prop-mock-CIWAmzz0.js';
5
+ import { R as RestoreProp } from './prop-mock-424cOHvI.js';
6
6
 
7
7
  /**
8
8
  * A host-runner mock function: a callable spy (Vitest `vi.fn()`, Bun `mock()`,
@@ -1,4 +1,4 @@
1
- import { H as StrictSpyConfiguration, v as OnlyObservablePropsOf, M as MethodReturns, u as OnlyMethodKeysOf, q as MethodReturnsClass, S as Spy, o as DeepPartial, G as SpyOptions, m as ClassType, C as ClassSpyConfiguration } from './types-CpBA3PjQ.js';
1
+ import { H as StrictSpyConfiguration, v as OnlyObservablePropsOf, M as MethodReturns, u as OnlyMethodKeysOf, q as MethodReturnsClass, S as Spy, o as DeepPartial, G as SpyOptions, m as ClassType, C as ClassSpyConfiguration } from './types-BdYUK_Zv.js';
2
2
 
3
3
  /**
4
4
  * Create a fully-typed auto-mock of `T` from its type alone (no class).
@@ -2910,7 +2910,8 @@ var within = (node, outer) => node.range[0] >= outer.range[0] && node.range[1] <
2910
2910
  function span(node) {
2911
2911
  return node.range[1] - node.range[0];
2912
2912
  }
2913
- function reportLong(context, node, maxLines) {
2913
+ var sourceKey = (context, node) => context.sourceCode.getText(node).replace(/\s+/g, "");
2914
+ function reportLong(context, node, maxLines, copies) {
2914
2915
  const data = { lines: String(lineCount(node)), max: String(maxLines) };
2915
2916
  if (!isExpected(node)) {
2916
2917
  context.report({ node, messageId: "longLiteral", data });
@@ -2920,7 +2921,7 @@ function reportLong(context, node, maxLines) {
2920
2921
  if (part && lineCount(part) > 1) {
2921
2922
  context.report({
2922
2923
  node,
2923
- messageId: "longExpected",
2924
+ messageId: copies(part) > 1 ? "longExpected" : "longExpectedOnce",
2924
2925
  data: { ...data, part: excerpt(context, part, 40), line: String(part.loc.start.line) }
2925
2926
  });
2926
2927
  } else {
@@ -2968,6 +2969,7 @@ var noInlineTestData = defineRule({
2968
2969
  messages: {
2969
2970
  longLiteral: "This literal spans {{lines}} lines of test data (the limit is {{max}}). Move it to a `*.mock.ts` file next to the spec and import it, so the test shows what it checks rather than the data it feeds in.",
2970
2971
  longExpected: "This expected value spans {{lines}} lines (the limit is {{max}}). It is what the test checks, so keep its shape inline and move `{{part}}` at line {{line}} to a `*.mock.ts` file next to the spec.",
2972
+ longExpectedOnce: "This expected value spans {{lines}} lines (the limit is {{max}}). It is what the test checks, so keep its shape inline and move `{{part}}` at line {{line}} to a `const` in this spec; it is written only here, so it needs no `*.mock.ts` file.",
2971
2973
  longExpectedFlat: "This expected value spans {{lines}} lines (the limit is {{max}}). It is what the test checks, so check only the entries this test is about, or move it to a `*.mock.ts` file next to the spec under a name that says what the test expects.",
2972
2974
  repeatedLiteral: "`{{literal}}` is written {{count}} times in this file (first at line {{first}}). Export it once from a `*.mock.ts` file next to the spec and import it, so one edit reaches every test that uses it.",
2973
2975
  repeatedExpected: "`{{literal}}` is expected {{count}} times in this file (first at line {{first}}). It is what these tests check, so keep it in the spec: name it once in a `const` and reuse it, so one edit reaches every test that checks it.",
@@ -2979,11 +2981,18 @@ var noInlineTestData = defineRule({
2979
2981
  }
2980
2982
  const { maxLines, repeats, minValues } = limits(context);
2981
2983
  const seen = /* @__PURE__ */ new Map();
2984
+ const written = /* @__PURE__ */ new Map();
2985
+ const long = [];
2986
+ const tally = (node) => {
2987
+ const key = sourceKey(context, node);
2988
+ written.set(key, (written.get(key) ?? 0) + 1);
2989
+ return key;
2990
+ };
2982
2991
  const collect = (node) => {
2992
+ const key = tally(node);
2983
2993
  if (!isData(node) || !isRecord(node, minValues)) {
2984
2994
  return;
2985
2995
  }
2986
- const key = context.sourceCode.getText(node).replace(/\s+/g, "");
2987
2996
  const group = seen.get(key);
2988
2997
  if (group) {
2989
2998
  group.rest.push(node);
@@ -2994,11 +3003,15 @@ var noInlineTestData = defineRule({
2994
3003
  return {
2995
3004
  "ObjectExpression, ArrayExpression": (node) => {
2996
3005
  if (!isLiteral(container(node)) && isData(node) && lineCount(node) > maxLines) {
2997
- reportLong(context, node, maxLines);
3006
+ long.push(node);
2998
3007
  }
2999
3008
  collect(node);
3000
3009
  },
3010
+ TemplateLiteral: tally,
3001
3011
  "Program:exit": () => {
3012
+ for (const node of long) {
3013
+ reportLong(context, node, maxLines, (part) => Number(written.get(sourceKey(context, part))));
3014
+ }
3002
3015
  reportRepeats(context, seen.values(), repeats);
3003
3016
  }
3004
3017
  };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import './vitest-mock-types-B17-xaWt.js';
2
- export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-CpBA3PjQ.js';
2
+ export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-BdYUK_Zv.js';
3
3
  export { AdoptMockOptions, AdoptedMock, ArgCaptor, AsInstances, AssertMockedOptions, CallLog, CaptureArgOptions, ConstructorMock, ConstructorSpy, FixtureFactory, FlushUntilOptions, MockDeepOptions, ModuleNamespace, ModuleNamespaceOptions, SpyClassOptions, adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, clearAutoSpy, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromClass, createSpyFromInstance, errorHandler, flushEventLoop, flushEventLoopUntil, innerDouble, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, resetAutoSpy, restoreSpiedInstance, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './core.js';
4
- export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-Cv6VnggW.js';
5
- export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-DM9vHPzU.js';
6
- export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-CIWAmzz0.js';
4
+ export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-ByzgYsbj.js';
5
+ export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-xpq8sPYM.js';
6
+ export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-424cOHvI.js';
7
7
  import 'vitest';
package/dist/index.js CHANGED
@@ -3299,10 +3299,25 @@ function withUndefinedReturns(returns, names) {
3299
3299
  function classDoubles(classes, answered) {
3300
3300
  return Object.fromEntries(
3301
3301
  Object.entries(classes ?? {}).flatMap(
3302
- ([name, entry]) => entry === void 0 || answered(name) ? [] : [[name, typeof entry === "function" ? createSpyFromClass2(entry) : createSpyFromClass2(entry[0], entry[1])]]
3302
+ ([name, entry]) => entry === void 0 || answered(name) ? [] : [[name, classDouble(name, entry)]]
3303
3303
  )
3304
3304
  );
3305
3305
  }
3306
+ function classDouble(name, entry) {
3307
+ if (typeof entry === "function") {
3308
+ return createSpyFromClass2(entry);
3309
+ }
3310
+ if (!("build" in entry)) {
3311
+ return createSpyFromClass2(entry[0], entry[1]);
3312
+ }
3313
+ const built = entry.build();
3314
+ if ((typeof built !== "object" || built === null) && typeof built !== "function") {
3315
+ throw new TypeError(
3316
+ `[vitest-auto-spy] returnsClass: the build() of '${name}' returned ${String(built)}; it has to return the double the method answers. For a plain value use returns: { ${name}: value }.`
3317
+ );
3318
+ }
3319
+ return built;
3320
+ }
3306
3321
  var warnedThenables = /* @__PURE__ */ new WeakSet();
3307
3322
  function warnOnHeldBackThen(ObjectClass, config) {
3308
3323
  if (config.onlyMethodsToSpyOn.length > 0 || config.methodsToSpyOn.includes("then") || config.instanceMethodsToSpyOn.includes("then") || Object.hasOwn(config.overrides, "then") || warnedThenables.has(ObjectClass) || !declaresThen(ObjectClass.prototype)) {
@@ -1,4 +1,4 @@
1
- import { Y as Mock, F as Func, h as AddSpyMethodsByReturnTypes, g as AddPromiseSpyMethods, O as ObservableLike, f as AddObservableSpyMethods, B as SpyDisposable, t as ObservablePropSpyMethods } from './types-CpBA3PjQ.js';
1
+ import { Y as Mock, F as Func, h as AddSpyMethodsByReturnTypes, g as AddPromiseSpyMethods, O as ObservableLike, f as AddObservableSpyMethods, B as SpyDisposable, t as ObservablePropSpyMethods } from './types-BdYUK_Zv.js';
2
2
 
3
3
  /**
4
4
  * Install the `.and`, `.calls` and `.withArgs` namespaces on every spy built afterwards.
package/dist/jasmine.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import './vitest-mock-types-B17-xaWt.js';
2
2
  import { JasmineSpy, JasmineMethodSpy } from './jasmine-compat.js';
3
3
  export { JasmineAccessorSpies, JasmineAccessorSpy, JasmineAnd, JasmineCallInfo, JasmineCalls, JasmineNamespaces, JasmineStrategies, JasmineWithArgsAnd, JasmineWithArgsStrategies, JasmineWithArgsSync, enableJasmineCompat } from './jasmine-compat.js';
4
- import { m as ClassType, C as ClassSpyConfiguration, u as OnlyMethodKeysOf, F as Func } from './types-CpBA3PjQ.js';
5
- export { v as OnlyObservablePropsOf, w as OnlyPropsOf } from './types-CpBA3PjQ.js';
4
+ import { m as ClassType, C as ClassSpyConfiguration, u as OnlyMethodKeysOf, F as Func } from './types-BdYUK_Zv.js';
5
+ export { v as OnlyObservablePropsOf, w as OnlyPropsOf } from './types-BdYUK_Zv.js';
6
6
  import { expect } from 'vitest';
7
7
 
8
8
  /**
package/dist/jasmine.js CHANGED
@@ -2,7 +2,7 @@ import { enableJasmineCompat } from './chunk-R43PMWFH.js';
2
2
  export { enableJasmineCompat } from './chunk-R43PMWFH.js';
3
3
  import { useVitestAdapter } from './chunk-JFROAGGY.js';
4
4
  import { looseEquals } from './chunk-B6JUBFBA.js';
5
- import { createSpyFromClass } from './chunk-IQVNZORF.js';
5
+ import { createSpyFromClass } from './chunk-BCT7C6DQ.js';
6
6
  import './chunk-XZ5JUXKT.js';
7
7
  import './chunk-ZTT2QLMJ.js';
8
8
  import './chunk-YHDBRBGU.js';
@@ -1,4 +1,4 @@
1
- import { m as ClassType, S as Spy } from './types-CpBA3PjQ.js';
1
+ import { m as ClassType, S as Spy } from './types-BdYUK_Zv.js';
2
2
 
3
3
  /** A class `new` accepts. An abstract class is not one, which is what keeps it out of `expose`. */
4
4
  type NestUnitClass<T = unknown> = new (...args: never[]) => T;
package/dist/nestjs.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { m as ClassType, S as Spy, C as ClassSpyConfiguration, u as OnlyMethodKeysOf } from './types-CpBA3PjQ.js';
2
- export { C as CreateNestUnitOptions, N as NestUnit, a as NestUnitClass, b as NestUnitProvider, c as NestUnitSpies, d as createNestUnit } from './nest-unit-DG-qxd6Q.js';
3
- export { I as InjectionLog, T as TrackInjectionsOptions, a as TrackedProvider, t as trackInjections } from './track-injections-xXSrGdpM.js';
1
+ import { m as ClassType, S as Spy, C as ClassSpyConfiguration, u as OnlyMethodKeysOf } from './types-BdYUK_Zv.js';
2
+ export { C as CreateNestUnitOptions, N as NestUnit, a as NestUnitClass, b as NestUnitProvider, c as NestUnitSpies, d as createNestUnit } from './nest-unit-DyDDZMOm.js';
3
+ export { I as InjectionLog, T as TrackInjectionsOptions, a as TrackedProvider, t as trackInjections } from './track-injections-fmOmTK0q.js';
4
4
 
5
5
  /** `{ provide, useValue }` shape consumed by NestJS's `providers`. */
6
6
  type NestValueProvider<T> = {
package/dist/nestjs.js CHANGED
@@ -1,5 +1,5 @@
1
- export { createNestUnit, trackInjections } from './chunk-OL2J4K4Z.js';
2
- import { createSpyFromClass } from './chunk-IQVNZORF.js';
1
+ export { createNestUnit, trackInjections } from './chunk-6KS7F4YM.js';
2
+ import { createSpyFromClass } from './chunk-BCT7C6DQ.js';
3
3
  import { useRunnerAdapter } from './chunk-XZ5JUXKT.js';
4
4
  import './chunk-ZTT2QLMJ.js';
5
5
  import './chunk-YHDBRBGU.js';
package/dist/node.cjs CHANGED
@@ -2758,10 +2758,25 @@ function withUndefinedReturns(returns, names) {
2758
2758
  function classDoubles(classes, answered) {
2759
2759
  return Object.fromEntries(
2760
2760
  Object.entries(classes ?? {}).flatMap(
2761
- ([name, entry]) => entry === void 0 || answered(name) ? [] : [[name, typeof entry === "function" ? createSpyFromClass2(entry) : createSpyFromClass2(entry[0], entry[1])]]
2761
+ ([name, entry]) => entry === void 0 || answered(name) ? [] : [[name, classDouble(name, entry)]]
2762
2762
  )
2763
2763
  );
2764
2764
  }
2765
+ function classDouble(name, entry) {
2766
+ if (typeof entry === "function") {
2767
+ return createSpyFromClass2(entry);
2768
+ }
2769
+ if (!("build" in entry)) {
2770
+ return createSpyFromClass2(entry[0], entry[1]);
2771
+ }
2772
+ const built = entry.build();
2773
+ if ((typeof built !== "object" || built === null) && typeof built !== "function") {
2774
+ throw new TypeError(
2775
+ `[vitest-auto-spy] returnsClass: the build() of '${name}' returned ${String(built)}; it has to return the double the method answers. For a plain value use returns: { ${name}: value }.`
2776
+ );
2777
+ }
2778
+ return built;
2779
+ }
2765
2780
  var warnedThenables = /* @__PURE__ */ new WeakSet();
2766
2781
  function warnOnHeldBackThen(ObjectClass, config) {
2767
2782
  if (config.onlyMethodsToSpyOn.length > 0 || config.methodsToSpyOn.includes("then") || config.instanceMethodsToSpyOn.includes("then") || Object.hasOwn(config.overrides, "then") || warnedThenables.has(ObjectClass) || !declaresThen(ObjectClass.prototype)) {
package/dist/node.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-CpBA3PjQ.js';
1
+ export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-BdYUK_Zv.js';
2
2
  export { AdoptMockOptions, AdoptedMock, ArgCaptor, AsInstances, AssertMockedOptions, CallLog, CaptureArgOptions, ConstructorMock, ConstructorSpy, FixtureFactory, FlushUntilOptions, MockDeepOptions, ModuleNamespace, ModuleNamespaceOptions, SpyClassOptions, adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, clearAutoSpy, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromClass, createSpyFromInstance, errorHandler, flushEventLoop, flushEventLoopUntil, innerDouble, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, resetAutoSpy, restoreSpiedInstance, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './core.js';
3
- export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-Cv6VnggW.js';
4
- export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-DM9vHPzU.js';
5
- export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-CIWAmzz0.js';
6
- export { C as CreateNestUnitOptions, N as NestUnit, a as NestUnitClass, b as NestUnitProvider, c as NestUnitSpies, d as createNestUnit } from './nest-unit-DG-qxd6Q.js';
3
+ export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-ByzgYsbj.js';
4
+ export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-xpq8sPYM.js';
5
+ export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-424cOHvI.js';
6
+ export { C as CreateNestUnitOptions, N as NestUnit, a as NestUnitClass, b as NestUnitProvider, c as NestUnitSpies, d as createNestUnit } from './nest-unit-DyDDZMOm.js';
7
7
 
8
8
  /**
9
9
  * Keeping `node:test`'s process-wide `MockTracker` from holding every spy the library ever made.
package/dist/node.js CHANGED
@@ -2652,10 +2652,25 @@ function withUndefinedReturns(returns, names) {
2652
2652
  function classDoubles(classes, answered) {
2653
2653
  return Object.fromEntries(
2654
2654
  Object.entries(classes ?? {}).flatMap(
2655
- ([name, entry]) => entry === void 0 || answered(name) ? [] : [[name, typeof entry === "function" ? createSpyFromClass2(entry) : createSpyFromClass2(entry[0], entry[1])]]
2655
+ ([name, entry]) => entry === void 0 || answered(name) ? [] : [[name, classDouble(name, entry)]]
2656
2656
  )
2657
2657
  );
2658
2658
  }
2659
+ function classDouble(name, entry) {
2660
+ if (typeof entry === "function") {
2661
+ return createSpyFromClass2(entry);
2662
+ }
2663
+ if (!("build" in entry)) {
2664
+ return createSpyFromClass2(entry[0], entry[1]);
2665
+ }
2666
+ const built = entry.build();
2667
+ if ((typeof built !== "object" || built === null) && typeof built !== "function") {
2668
+ throw new TypeError(
2669
+ `[vitest-auto-spy] returnsClass: the build() of '${name}' returned ${String(built)}; it has to return the double the method answers. For a plain value use returns: { ${name}: value }.`
2670
+ );
2671
+ }
2672
+ return built;
2673
+ }
2659
2674
  var warnedThenables = /* @__PURE__ */ new WeakSet();
2660
2675
  function warnOnHeldBackThen(ObjectClass, config) {
2661
2676
  if (config.onlyMethodsToSpyOn.length > 0 || config.methodsToSpyOn.includes("then") || config.instanceMethodsToSpyOn.includes("then") || Object.hasOwn(config.overrides, "then") || warnedThenables.has(ObjectClass) || !declaresThen(ObjectClass.prototype)) {
@@ -1,5 +1,5 @@
1
1
  import { Subscription, Observable } from 'rxjs';
2
- import { B as SpyDisposable } from './types-CpBA3PjQ.js';
2
+ import { B as SpyDisposable } from './types-BdYUK_Zv.js';
3
3
 
4
4
  /**
5
5
  * The `Symbol.dispose` every double is keyed by — installed first when the realm does not have it.
@@ -1,4 +1,4 @@
1
- import { L as UnstubbedCallHandler, F as Func, U as UnstubbedCall, h as AddSpyMethodsByReturnTypes } from './types-CpBA3PjQ.js';
1
+ import { L as UnstubbedCallHandler, F as Func, U as UnstubbedCall, h as AddSpyMethodsByReturnTypes } from './types-BdYUK_Zv.js';
2
2
 
3
3
  /**
4
4
  * A spy's strict-mode guard: who owns it, and what to do about a call nobody configured.
@@ -1,4 +1,4 @@
1
- import { P as PropStubValue } from './types-CpBA3PjQ.js';
1
+ import { P as PropStubValue } from './types-BdYUK_Zv.js';
2
2
 
3
3
  /** Undoes a single `mock*Prop` patch; calling it more than once is a no-op. */
4
4
  type RestoreProp = () => void;
package/dist/react.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import './vitest-mock-types-B17-xaWt.js';
2
- export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-CpBA3PjQ.js';
2
+ export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-BdYUK_Zv.js';
3
3
  export { AdoptMockOptions, AdoptedMock, ArgCaptor, AsInstances, AssertMockedOptions, CallLog, CaptureArgOptions, ConstructorMock, ConstructorSpy, FixtureFactory, FlushUntilOptions, MockDeepOptions, ModuleNamespace, ModuleNamespaceOptions, SpyClassOptions, adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, clearAutoSpy, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromClass, createSpyFromInstance, errorHandler, flushEventLoop, flushEventLoopUntil, innerDouble, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, resetAutoSpy, restoreSpiedInstance, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './core.js';
4
- export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-Cv6VnggW.js';
5
- export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-DM9vHPzU.js';
6
- export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-CIWAmzz0.js';
4
+ export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-ByzgYsbj.js';
5
+ export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-xpq8sPYM.js';
6
+ export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-424cOHvI.js';
7
7
  import 'vitest';
package/dist/rstest.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-CpBA3PjQ.js';
1
+ export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-BdYUK_Zv.js';
2
2
  export { AdoptMockOptions, AdoptedMock, ArgCaptor, AsInstances, AssertMockedOptions, CallLog, CaptureArgOptions, ConstructorMock, ConstructorSpy, FixtureFactory, FlushUntilOptions, MockDeepOptions, ModuleNamespace, ModuleNamespaceOptions, SpyClassOptions, adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, clearAutoSpy, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromClass, createSpyFromInstance, errorHandler, flushEventLoop, flushEventLoopUntil, innerDouble, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, resetAutoSpy, restoreSpiedInstance, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './core.js';
3
- export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-Cv6VnggW.js';
4
- export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-DM9vHPzU.js';
5
- export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-CIWAmzz0.js';
3
+ export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-ByzgYsbj.js';
4
+ export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-xpq8sPYM.js';
5
+ export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-424cOHvI.js';
package/dist/rstest.js CHANGED
@@ -1,6 +1,6 @@
1
- export { adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromInstance, describeDuplicateCopies, expectAllEmissions, expectCompletion, expectEmission, expectEmissions, expectError, expectNoEmission, expectNoEmissionSync, flushEventLoop, flushEventLoopUntil, getPackageCopies, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, restoreSpiedInstance, setEmissionTimeout, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './chunk-7MDSR745.js';
1
+ export { adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromInstance, describeDuplicateCopies, expectAllEmissions, expectCompletion, expectEmission, expectEmissions, expectError, expectNoEmission, expectNoEmissionSync, flushEventLoop, flushEventLoopUntil, getPackageCopies, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, restoreSpiedInstance, setEmissionTimeout, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './chunk-YAAE5465.js';
2
2
  export { countMockedProps, mockAccessorsProp, mockReadonlyProp, mockReadonlyPropGetter, mockValueProp, reportPropsOutsideHooks, restoreMockedProps } from './chunk-RQLUH6RE.js';
3
- export { autoMocked, clearAutoSpy, clearAutoSpyDefaults, createAutoMock, createSpyFromClass, innerDouble, registerAutoSpyDefaults, resetAutoSpy } from './chunk-IQVNZORF.js';
3
+ export { autoMocked, clearAutoSpy, clearAutoSpyDefaults, createAutoMock, createSpyFromClass, innerDouble, registerAutoSpyDefaults, resetAutoSpy } from './chunk-BCT7C6DQ.js';
4
4
  import './chunk-SF4GKKN4.js';
5
5
  import './chunk-SOROJD3W.js';
6
6
  import { createRunnerMockAdapter } from './chunk-ZTT2QLMJ.js';
package/dist/rxjs.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Observable, ReplaySubject, Subject } from 'rxjs';
2
- import { V as ValueConfig } from './types-CpBA3PjQ.js';
3
- export { f as AddObservableSpyMethods, n as CompleteValueConfig, E as ErrorValueConfig, N as NextValueConfig, t as ObservablePropSpyMethods, W as ValueConfigPerCall } from './types-CpBA3PjQ.js';
2
+ import { V as ValueConfig } from './types-BdYUK_Zv.js';
3
+ export { f as AddObservableSpyMethods, n as CompleteValueConfig, E as ErrorValueConfig, N as NextValueConfig, t as ObservablePropSpyMethods, W as ValueConfigPerCall } from './types-BdYUK_Zv.js';
4
4
 
5
5
  /**
6
6
  * Observable-returning spy helpers.
@@ -43,7 +43,7 @@ declare function createObservableWithValues<T>(valuesConfigs: ValueConfig<T>[],
43
43
  * cannot drift apart, because it is one import.
44
44
  */
45
45
 
46
- declare module './types-CpBA3PjQ.js' {
46
+ declare module './types-BdYUK_Zv.js' {
47
47
  interface l<T> {
48
48
  subject: Subject<T>;
49
49
  }
package/dist/setup.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import './vitest-mock-types-B17-xaWt.js';
2
2
  import { vi } from 'vitest';
3
- import { O as OutsideHookReaction, R as RestoreProp } from './prop-mock-CIWAmzz0.js';
4
- import { L as UnstubbedCallHandler, T as UnstubbedReadHandler } from './types-CpBA3PjQ.js';
5
- export { d as describeDuplicateCopies, g as getPackageCopies, t as takeStrictViolations } from './package-identity-DM9vHPzU.js';
3
+ import { O as OutsideHookReaction, R as RestoreProp } from './prop-mock-424cOHvI.js';
4
+ import { L as UnstubbedCallHandler, T as UnstubbedReadHandler } from './types-BdYUK_Zv.js';
5
+ export { d as describeDuplicateCopies, g as getPackageCopies, t as takeStrictViolations } from './package-identity-xpq8sPYM.js';
6
6
  export { R as RestoreWebStorageOptions, r as restoreWebStorage } from './web-storage-dwQ9E7Lm.js';
7
7
 
8
8
  /** How a per-test guard reacts to what it found: fail the test, only report it, or not run at all. */
package/dist/svelte.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import './vitest-mock-types-B17-xaWt.js';
2
- export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-CpBA3PjQ.js';
2
+ export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, C as ClassSpyConfiguration, m as ClassType, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, u as OnlyMethodKeysOf, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, S as Spy, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-BdYUK_Zv.js';
3
3
  export { AdoptMockOptions, AdoptedMock, ArgCaptor, AsInstances, AssertMockedOptions, CallLog, CaptureArgOptions, ConstructorMock, ConstructorSpy, FixtureFactory, FlushUntilOptions, MockDeepOptions, ModuleNamespace, ModuleNamespaceOptions, SpyClassOptions, adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, clearAutoSpy, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromClass, createSpyFromInstance, errorHandler, flushEventLoop, flushEventLoopUntil, innerDouble, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, resetAutoSpy, restoreSpiedInstance, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './core.js';
4
- export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-Cv6VnggW.js';
5
- export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-DM9vHPzU.js';
6
- export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-CIWAmzz0.js';
4
+ export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-ByzgYsbj.js';
5
+ export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-xpq8sPYM.js';
6
+ export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-424cOHvI.js';
7
7
  import 'vitest';
@@ -1,4 +1,4 @@
1
- import { m as ClassType, S as Spy } from './types-CpBA3PjQ.js';
1
+ import { m as ClassType, S as Spy } from './types-BdYUK_Zv.js';
2
2
 
3
3
  /**
4
4
  * The provider shape Angular and NestJS agree on: `{ provide, useFactory }`, with the dependency
@@ -1,7 +1,7 @@
1
1
  import { InjectionToken, Injector, ProviderToken, Provider, Type, InputSignalWithTransform, InputSignal, ModelSignal, EnvironmentProviders, EffectRef, Signal } from '@angular/core';
2
- import { b as AutoMockConfiguration } from './emission-sync-Cv6VnggW.js';
3
- import { S as Spy, m as ClassType, G as SpyOptions, C as ClassSpyConfiguration, u as OnlyMethodKeysOf, o as DeepPartial } from './types-CpBA3PjQ.js';
4
- import './prop-mock-CIWAmzz0.js';
2
+ import { b as AutoMockConfiguration } from './emission-sync-ByzgYsbj.js';
3
+ import { S as Spy, m as ClassType, G as SpyOptions, C as ClassSpyConfiguration, u as OnlyMethodKeysOf, o as DeepPartial } from './types-BdYUK_Zv.js';
4
+ import './prop-mock-424cOHvI.js';
5
5
  import { TestModuleMetadata, ComponentFixture } from '@angular/core/testing';
6
6
 
7
7
  /**
@@ -814,8 +814,13 @@ type MethodReturns<T> = {
814
814
  type MethodReturnsClass<T> = {
815
815
  [K in OnlyMethodKeysOf<T>]?: Required<T>[K] extends Func ? ReturnsClassEntry<ReturnType<Required<T>[K]>> : never;
816
816
  };
817
- /** One `returnsClass` entry: the class, or the class and the `createSpyFromClass` configuration for it. */
818
- type ReturnsClassEntry<R> = ClassType<R> | readonly [ClassType<R>, ClassSpyConfiguration<R>];
817
+ /**
818
+ * One `returnsClass` entry: the class, the class and the `createSpyFromClass` configuration for it, or
819
+ * `{ build }` — a function that builds the double, such as a preset, called once per outer double.
820
+ */
821
+ type ReturnsClassEntry<R> = ClassType<R> | readonly [ClassType<R>, ClassSpyConfiguration<R>] | {
822
+ readonly build: () => R;
823
+ };
819
824
  type OptionalFunctionKeysOf<T> = Extract<{
820
825
  [K in keyof T]-?: [NonNullable<T[K]>] extends [never] ? never : [NonNullable<T[K]>] extends [Func] ? K : never;
821
826
  }[keyof T], string>;
@@ -1053,11 +1058,13 @@ interface ClassSpyConfiguration<T> extends StrictSpyConfiguration {
1053
1058
  /**
1054
1059
  * Methods that answer a spy of the named class — `returns: { m: asInstance(createSpyFromClass(C)) }`
1055
1060
  * in one entry. Every call answers the same double; reach it with `innerDouble(double, 'm')`, which
1056
- * records no call, or `asSpy(double.m())`. A `[C, config]` pair builds that spy with `config`.
1061
+ * records no call, or `asSpy(double.m())`. A `[C, config]` pair builds that spy with `config`;
1062
+ * `{ build: () => double }` answers what the function builds, called once per outer double.
1057
1063
  *
1058
1064
  * ```ts
1059
1065
  * provideAutoSpy(ReportFactory, { returnsClass: { create: Report } });
1060
1066
  * provideAutoSpy(SnackBar, { returnsClass: { open: [SnackBarRef, { returnsUndefined: ['dismiss'] }] } });
1067
+ * provideAutoSpy(MatDialog, { returnsClass: { open: { build: () => createMatDialogRef(MatDialogRef).ref } } });
1061
1068
  * ```
1062
1069
  *
1063
1070
  * Counts as configured under `strict`; a method also named in `returns` answers that value.
package/dist/vue.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import './vitest-mock-types-B17-xaWt.js';
2
- import { S as Spy, m as ClassType, C as ClassSpyConfiguration, u as OnlyMethodKeysOf } from './types-CpBA3PjQ.js';
3
- export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-CpBA3PjQ.js';
2
+ import { S as Spy, m as ClassType, C as ClassSpyConfiguration, u as OnlyMethodKeysOf } from './types-BdYUK_Zv.js';
3
+ export { A as AccessorKeysOf, a as AddAccessorsSpies, b as AddCalledWithAny, c as AddCalledWithObservable, d as AddCalledWithPromise, e as AddCalledWithSpyMethods, f as AddObservableSpyMethods, g as AddPromiseSpyMethods, h as AddSpyMethodsByReturnTypes, i as AddThrowHelper, j as AddVoidReturnHelpers, k as AnyReturnHelpers, l as AutoSpyRxjsTypes, n as CompleteValueConfig, D as DeepMockProxy, o as DeepPartial, E as ErrorValueConfig, F as Func, p as FunctionSpy, I as InstanceSpyConfiguration, M as MethodReturns, q as MethodReturnsClass, r as Mutable, N as NextValueConfig, s as NotAPublicKey, O as ObservableLike, t as ObservablePropSpyMethods, v as OnlyObservablePropsOf, w as OnlyPropsOf, x as Overload, y as OverloadChoice, z as Overloads, P as PropStubValue, R as ReturnsClassEntry, B as SpyDisposable, G as SpyOptions, H as StrictSpyConfiguration, J as SubjectLike, K as SubjectOf, U as UnstubbedCall, L as UnstubbedCallHandler, Q as UnstubbedRead, T as UnstubbedReadHandler, V as ValueConfig, W as ValueConfigPerCall, X as WithMockReturnValue } from './types-BdYUK_Zv.js';
4
4
  export { AdoptMockOptions, AdoptedMock, ArgCaptor, AsInstances, AssertMockedOptions, CallLog, CaptureArgOptions, ConstructorMock, ConstructorSpy, FixtureFactory, FlushUntilOptions, MockDeepOptions, ModuleNamespace, ModuleNamespaceOptions, SpyClassOptions, adoptMock, asInstance, asInstances, asSpy, assertMocked, captureArg, clearAutoSpy, createFixture, createFixtureFactory, createLog, createMock, createSpyClass, createSpyFromClass, createSpyFromInstance, errorHandler, flushEventLoop, flushEventLoopUntil, innerDouble, mockConstructor, mockDeep, moduleNamespace, narrow, outOfType, resetAutoSpy, restoreSpiedInstance, settleDynamicImport, spyOnOwnMethod, spyOnVoidMethod, stubConstructor, withOverrides } from './core.js';
5
- export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-Cv6VnggW.js';
6
- export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-DM9vHPzU.js';
7
- export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-CIWAmzz0.js';
5
+ export { A as AutoMockConfigMarker, a as AutoMockConfigOnly, b as AutoMockConfiguration, c as AutoMocked, d as AutoSpyDefaultEntry, C as CallbackSubscribable, E as EmissionObserver, e as EmissionOptions, f as EmissionSource, S as SubscribableLike, g as autoMocked, h as clearAutoSpyDefaults, i as createAutoMock, j as expectAllEmissions, k as expectCompletion, l as expectEmission, m as expectEmissions, n as expectError, o as expectNoEmission, p as expectNoEmissionSync, r as registerAutoSpyDefaults, s as setEmissionTimeout } from './emission-sync-ByzgYsbj.js';
6
+ export { c as createFunctionSpy, d as describeDuplicateCopies, g as getPackageCopies } from './package-identity-xpq8sPYM.js';
7
+ export { A as AccessorImplementations, O as OutsideHookReaction, R as RestoreProp, c as countMockedProps, m as mockAccessorsProp, a as mockReadonlyProp, b as mockReadonlyPropGetter, d as mockValueProp, r as reportPropsOutsideHooks, e as restoreMockedProps } from './prop-mock-424cOHvI.js';
8
8
  import 'vitest';
9
9
 
10
10
  /** A Vue injection token: a plain string/symbol key, or a typed `InjectionKey<T>` (a branded `symbol`). */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vitest-auto-spy",
3
- "version": "5.58.0",
3
+ "version": "5.59.0",
4
4
  "description": "Auto-generate fully-typed test spies from a class — across Vitest, Bun, node:test and Rstest, with Angular/NestJS/React/Vue/Svelte recipes. Drop-in replacement for jest-auto-spies and jasmine-auto-spies.",
5
5
  "keywords": [
6
6
  "auto-mock",
@@ -609,7 +609,7 @@ to 'ClassType<unknown>'`), and `provideAutoSpyForToken(TOKEN)` merges its argume
609
609
  `selfReturning` names methods that answer the double itself — a default like `returns`, configured
610
610
  under `strict`, on every factory. `returnsClass: { create: Report }` makes a method answer one
611
611
  `Spy<Report>` per double, reached without a recorded call as `innerDouble(factory, 'create')`;
612
- `returnsClass: { open: [SnackBarRef, { returnsUndefined: ['dismiss'] }] }` configures that inner double. With nothing to seed, options go
612
+ `returnsClass: { open: [SnackBarRef, { returnsUndefined: ['dismiss'] }] }` configures that inner double, `{ open: { build: () => preset } }` takes a preset's, and `innerDouble<Ref<C>>(dialog, 'open')` types a generic method's. With nothing to seed, options go
613
613
  first: `createAutoMock<T>({ returnsUndefined: ['close'] })`; `strict` / `name` / `returns` alone go
614
614
  second.
615
615
  Reach for it when the same class carries different configurations in different specs: