@codefast/di-testing 0.0.0 → 0.1.1

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 (60) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/discovery/dependency-scanner.d.ts +6 -0
  3. package/dist/discovery/dependency-scanner.d.ts.map +1 -1
  4. package/dist/discovery/dependency-scanner.js +4 -0
  5. package/dist/discovery/dependency-scanner.js.map +1 -1
  6. package/dist/discovery/mock-binder.d.ts +18 -1
  7. package/dist/discovery/mock-binder.d.ts.map +1 -1
  8. package/dist/discovery/mock-binder.js +31 -10
  9. package/dist/discovery/mock-binder.js.map +1 -1
  10. package/dist/errors/errors.d.ts +17 -1
  11. package/dist/errors/errors.d.ts.map +1 -1
  12. package/dist/errors/errors.js +12 -0
  13. package/dist/errors/errors.js.map +1 -1
  14. package/dist/mocking/auto-mock.d.ts +8 -0
  15. package/dist/mocking/auto-mock.d.ts.map +1 -1
  16. package/dist/mocking/auto-mock.js +4 -0
  17. package/dist/mocking/auto-mock.js.map +1 -1
  18. package/dist/mocking/mock-factory.d.ts +6 -0
  19. package/dist/mocking/mock-factory.d.ts.map +1 -1
  20. package/dist/mocking/mock-factory.js +2 -0
  21. package/dist/mocking/mock-factory.js.map +1 -1
  22. package/dist/mocking/spy.d.ts +8 -0
  23. package/dist/mocking/spy.d.ts.map +1 -1
  24. package/dist/mocking/spy.js +2 -0
  25. package/dist/mocking/spy.js.map +1 -1
  26. package/dist/test-bed/bed-builder.d.ts +8 -0
  27. package/dist/test-bed/bed-builder.d.ts.map +1 -1
  28. package/dist/test-bed/bed-builder.js +2 -0
  29. package/dist/test-bed/bed-builder.js.map +1 -1
  30. package/dist/test-bed/sociable-builder.d.ts +4 -0
  31. package/dist/test-bed/sociable-builder.d.ts.map +1 -1
  32. package/dist/test-bed/sociable-builder.js +2 -0
  33. package/dist/test-bed/sociable-builder.js.map +1 -1
  34. package/dist/test-bed/solitary-builder.d.ts +4 -0
  35. package/dist/test-bed/solitary-builder.d.ts.map +1 -1
  36. package/dist/test-bed/solitary-builder.js +2 -0
  37. package/dist/test-bed/solitary-builder.js.map +1 -1
  38. package/dist/test-bed/test-bed.d.ts +4 -0
  39. package/dist/test-bed/test-bed.d.ts.map +1 -1
  40. package/dist/test-bed/test-bed.js +2 -0
  41. package/dist/test-bed/test-bed.js.map +1 -1
  42. package/dist/test-bed/unit-test-bed.d.ts +10 -0
  43. package/dist/test-bed/unit-test-bed.d.ts.map +1 -1
  44. package/dist/test-bed/unit-test-bed.js +4 -0
  45. package/dist/test-bed/unit-test-bed.js.map +1 -1
  46. package/dist/types.d.ts +2 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/package.json +4 -4
  49. package/src/discovery/dependency-scanner.ts +6 -0
  50. package/src/discovery/mock-binder.ts +45 -10
  51. package/src/errors/errors.ts +17 -1
  52. package/src/mocking/auto-mock.ts +8 -0
  53. package/src/mocking/mock-factory.ts +6 -0
  54. package/src/mocking/spy.ts +8 -0
  55. package/src/test-bed/bed-builder.ts +8 -0
  56. package/src/test-bed/sociable-builder.ts +4 -0
  57. package/src/test-bed/solitary-builder.ts +4 -0
  58. package/src/test-bed/test-bed.ts +4 -0
  59. package/src/test-bed/unit-test-bed.ts +10 -0
  60. package/src/types.ts +2 -0
@@ -10,6 +10,8 @@ import type { InjectionIdentifier } from "#/types";
10
10
  *
11
11
  * @typeParam Backend - The spy type the mock factory produces; it flows into every `Mocked` member,
12
12
  * `mocks.get`, and the `.stub` callback, so `() => vi.fn()` yields Vitest's own mock typing.
13
+ *
14
+ * @since 0.1.0
13
15
  */
14
16
  export interface TestBedOptions<Backend extends MockFunction = Spy> {
15
17
  /** Spy factory each auto-mock property is materialized with; defaults to the built-in spy. */
@@ -23,6 +25,8 @@ export interface TestBedOptions<Backend extends MockFunction = Spy> {
23
25
  * @typeParam Dependency - The dependency's value type.
24
26
  * @typeParam Owner - The builder the chain returns to.
25
27
  * @typeParam Backend - The spy type the bed's mock factory produces.
28
+ *
29
+ * @since 0.1.0
26
30
  */
27
31
  export interface MockOverrideBuilder<Dependency, Owner, Backend extends MockFunction = Spy> {
28
32
  /**
@@ -45,6 +49,8 @@ export interface MockOverrideBuilder<Dependency, Owner, Backend extends MockFunc
45
49
  }
46
50
  /**
47
51
  * What a builder's prepare step hands the compile template: the container and the bound mock entries.
52
+ *
53
+ * @since 0.1.0
48
54
  */
49
55
  export interface PreparedBed {
50
56
  readonly container: Container;
@@ -59,6 +65,8 @@ export interface PreparedBed {
59
65
  *
60
66
  * @typeParam Class - The class under test.
61
67
  * @typeParam Backend - The spy type the bed's mock factory produces.
68
+ *
69
+ * @since 0.1.0
62
70
  */
63
71
  export declare abstract class BedBuilder<Class, Backend extends MockFunction = Spy> {
64
72
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"bed-builder.d.ts","sourceRoot":"","sources":["../../src/test-bed/bed-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bed-builder.d.ts","sourceRoot":"","sources":["../../src/test-bed/bed-builder.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@ import { defaultMockFactory } from "#/mocking/mock-factory";
12
12
  *
13
13
  * @typeParam Class - The class under test.
14
14
  * @typeParam Backend - The spy type the bed's mock factory produces.
15
+ *
16
+ * @since 0.1.0
15
17
  */
16
18
  export class BedBuilder {
17
19
  target;
@@ -1 +1 @@
1
- {"version":3,"file":"bed-builder.js","sourceRoot":"","sources":["../../src/test-bed/bed-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bed-builder.js","sourceRoot":"","sources":["../../src/test-bed/bed-builder.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ import type { InjectionIdentifier } from "#/types";
15
15
  *
16
16
  * @typeParam Class - The class under test.
17
17
  * @typeParam Backend - The spy type the bed's mock factory produces.
18
+ *
19
+ * @since 0.1.0
18
20
  */
19
21
  export interface SociableTestBedBuilder<Class, Backend extends MockFunction = Spy> {
20
22
  /** Keeps a class-keyed collaborator real; its own dependencies follow the same exposure rules. */
@@ -31,6 +33,8 @@ export interface SociableTestBedBuilder<Class, Backend extends MockFunction = Sp
31
33
  *
32
34
  * @typeParam Class - The class under test.
33
35
  * @typeParam Backend - The spy type the bed's mock factory produces.
36
+ *
37
+ * @since 0.1.0
34
38
  */
35
39
  export declare class SociableBuilder<Class, Backend extends MockFunction = Spy> extends BedBuilder<Class, Backend> implements SociableTestBedBuilder<Class, Backend> {
36
40
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"sociable-builder.d.ts","sourceRoot":"","sources":["../../src/test-bed/sociable-builder.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,KAAK,EAAE,WAAW,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAM/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG;IAC/E,kGAAkG;IAClG,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpE,8FAA8F;IAC9F,IAAI,CAAC,UAAU,EACb,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAC3C,OAAO,CAAC,EAAE,aAAa,GACtB,mBAAmB,CAAC,UAAU,EAAE,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACpF,8EAA8E;IAC9E,OAAO,IAAI,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/C,2GAA2G;IAC3G,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;CAC9D;AAKD;;;;;GAKG;AACH,qBAAa,eAAe,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,CACpE,SAAQ,UAAU,CAAC,KAAK,EAAE,OAAO,CACjC,YAAW,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;;IAIjD,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAGhC;IAED,OAAO,IAAI,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAU7C;IAEK,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAUjE;CA6DF"}
1
+ {"version":3,"file":"sociable-builder.d.ts","sourceRoot":"","sources":["../../src/test-bed/sociable-builder.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,KAAK,EAAE,WAAW,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAM/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG;IAC/E,kGAAkG;IAClG,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpE,8FAA8F;IAC9F,IAAI,CAAC,UAAU,EACb,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAC3C,OAAO,CAAC,EAAE,aAAa,GACtB,mBAAmB,CAAC,UAAU,EAAE,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACpF,8EAA8E;IAC9E,OAAO,IAAI,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/C,2GAA2G;IAC3G,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;CAC9D;AAKD;;;;;;;GAOG;AACH,qBAAa,eAAe,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,CACpE,SAAQ,UAAU,CAAC,KAAK,EAAE,OAAO,CACjC,YAAW,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;;IAIjD,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAGhC;IAED,OAAO,IAAI,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAU7C;IAEK,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAUjE;CA6DF"}
@@ -10,6 +10,8 @@ import { createSociableUnitTestBed, createUnitTestBed } from "#/test-bed/unit-te
10
10
  *
11
11
  * @typeParam Class - The class under test.
12
12
  * @typeParam Backend - The spy type the bed's mock factory produces.
13
+ *
14
+ * @since 0.1.0
13
15
  */
14
16
  export class SociableBuilder extends BedBuilder {
15
17
  #exposed = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"sociable-builder.js","sourceRoot":"","sources":["../../src/test-bed/sociable-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sociable-builder.js","sourceRoot":"","sources":["../../src/test-bed/sociable-builder.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,8 @@ import type { InjectionIdentifier } from "#/types";
11
11
  *
12
12
  * @typeParam Class - The class under test.
13
13
  * @typeParam Backend - The spy type the bed's mock factory produces.
14
+ *
15
+ * @since 0.1.0
14
16
  */
15
17
  export interface SolitaryTestBedBuilder<Class, Backend extends MockFunction = Spy> {
16
18
  /** Replaces the auto-mock for one dependency with a hand-written stub or a concrete value. */
@@ -25,6 +27,8 @@ export interface SolitaryTestBedBuilder<Class, Backend extends MockFunction = Sp
25
27
  *
26
28
  * @typeParam Class - The class under test.
27
29
  * @typeParam Backend - The spy type the bed's mock factory produces.
30
+ *
31
+ * @since 0.1.0
28
32
  */
29
33
  export declare class SolitaryBuilder<Class, Backend extends MockFunction = Spy> extends BedBuilder<Class, Backend> implements SolitaryTestBedBuilder<Class, Backend> {
30
34
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"solitary-builder.d.ts","sourceRoot":"","sources":["../../src/test-bed/solitary-builder.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG;IAC/E,8FAA8F;IAC9F,IAAI,CAAC,UAAU,EACb,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAC3C,OAAO,CAAC,EAAE,aAAa,GACtB,mBAAmB,CAAC,UAAU,EAAE,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACpF,2GAA2G;IAC3G,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,wGAAwG;IACxG,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;CACtD;AAED;;;;;GAKG;AACH,qBAAa,eAAe,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,CACpE,SAAQ,UAAU,CAAC,KAAK,EAAE,OAAO,CACjC,YAAW,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;;IAEjD,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAKrC;IAEK,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAKzD;CAUF"}
1
+ {"version":3,"file":"solitary-builder.d.ts","sourceRoot":"","sources":["../../src/test-bed/solitary-builder.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG;IAC/E,8FAA8F;IAC9F,IAAI,CAAC,UAAU,EACb,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAC3C,OAAO,CAAC,EAAE,aAAa,GACtB,mBAAmB,CAAC,UAAU,EAAE,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACpF,2GAA2G;IAC3G,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,wGAAwG;IACxG,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;CACtD;AAED;;;;;;;GAOG;AACH,qBAAa,eAAe,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,CACpE,SAAQ,UAAU,CAAC,KAAK,EAAE,OAAO,CACjC,YAAW,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;;IAEjD,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAKrC;IAEK,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAKzD;CAUF"}
@@ -9,6 +9,8 @@ import { createUnitTestBed } from "#/test-bed/unit-test-bed";
9
9
  *
10
10
  * @typeParam Class - The class under test.
11
11
  * @typeParam Backend - The spy type the bed's mock factory produces.
12
+ *
13
+ * @since 0.1.0
12
14
  */
13
15
  export class SolitaryBuilder extends BedBuilder {
14
16
  compile() {
@@ -1 +1 @@
1
- {"version":3,"file":"solitary-builder.js","sourceRoot":"","sources":["../../src/test-bed/solitary-builder.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAqB7D;;;;;GAKG;AACH,MAAM,OAAO,eACX,SAAQ,UAA0B;IAGlC,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,CACrB,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EACrB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAChF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAC1B,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EACrB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAChF,CAAC;IACJ,CAAC;IAED,kGAAkG;IAClG,QAAQ;QACN,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACnF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC;QACjD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"solitary-builder.js","sourceRoot":"","sources":["../../src/test-bed/solitary-builder.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAuB7D;;;;;;;GAOG;AACH,MAAM,OAAO,eACX,SAAQ,UAA0B;IAGlC,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,CACrB,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EACrB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAChF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAC1B,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EACrB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAChF,CAAC;IACJ,CAAC;IAED,kGAAkG;IAClG,QAAQ;QACN,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACnF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC;QACjD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF"}
@@ -7,6 +7,8 @@ import type { SociableTestBedBuilder } from "#/test-bed/sociable-builder";
7
7
  import type { SolitaryTestBedBuilder } from "#/test-bed/solitary-builder";
8
8
  /**
9
9
  * The factory surface for building isolated units under test.
10
+ *
11
+ * @since 0.1.0
10
12
  */
11
13
  export interface TestBedStatic {
12
14
  /**
@@ -30,6 +32,8 @@ export interface TestBedStatic {
30
32
  *
31
33
  * @remarks `solitary` and `sociable` record the target and options only; nothing is instantiated
32
34
  * until `compile()`.
35
+ *
36
+ * @since 0.1.0
33
37
  */
34
38
  export declare const TestBed: TestBedStatic;
35
39
  //# sourceMappingURL=test-bed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-bed.d.ts","sourceRoot":"","sources":["../../src/test-bed/test-bed.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,EAChD,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAC1B,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,GAChC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,EAChD,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAC1B,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,GAChC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;CAC3D;AAED;;;;;GAKG;AACH,eAAO,MAAM,OAAO,EAAE,aAarB,CAAC"}
1
+ {"version":3,"file":"test-bed.d.ts","sourceRoot":"","sources":["../../src/test-bed/test-bed.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,EAChD,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAC1B,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,GAChC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,EAChD,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAC1B,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,GAChC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;CAC3D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,EAAE,aAarB,CAAC"}
@@ -6,6 +6,8 @@ import { SolitaryBuilder } from "#/test-bed/solitary-builder";
6
6
  *
7
7
  * @remarks `solitary` and `sociable` record the target and options only; nothing is instantiated
8
8
  * until `compile()`.
9
+ *
10
+ * @since 0.1.0
9
11
  */
10
12
  export const TestBed = {
11
13
  solitary(target, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"test-bed.js","sourceRoot":"","sources":["../../src/test-bed/test-bed.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAO9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AA+B9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAkB;IACpC,QAAQ,CACN,MAA0B,EAC1B,OAAiC;QAEjC,OAAO,IAAI,eAAe,CAAiB,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IACD,QAAQ,CACN,MAA0B,EAC1B,OAAiC;QAEjC,OAAO,IAAI,eAAe,CAAiB,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"test-bed.js","sourceRoot":"","sources":["../../src/test-bed/test-bed.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAO9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAiC9D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,OAAO,GAAkB;IACpC,QAAQ,CACN,MAA0B,EAC1B,OAAiC;QAEjC,OAAO,IAAI,eAAe,CAAiB,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IACD,QAAQ,CACN,MAA0B,EAC1B,OAAiC;QAEjC,OAAO,IAAI,eAAe,CAAiB,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;CACF,CAAC"}
@@ -8,6 +8,8 @@ import type { Spy } from "#/mocking/spy";
8
8
  * A lookup from a dependency's token or class to the mock the unit was built with.
9
9
  *
10
10
  * @typeParam Backend - The spy type the bed's mock factory produces.
11
+ *
12
+ * @since 0.1.0
11
13
  */
12
14
  export interface UnitReference<Backend extends MockFunction = Spy> {
13
15
  /**
@@ -31,6 +33,8 @@ export interface UnitReference<Backend extends MockFunction = Spy> {
31
33
  *
32
34
  * @typeParam Class - The class under test.
33
35
  * @typeParam Backend - The spy type the bed's mock factory produces.
36
+ *
37
+ * @since 0.1.0
34
38
  */
35
39
  export interface UnitTestBed<Class, Backend extends MockFunction = Spy> extends AsyncDisposable {
36
40
  readonly unit: Class;
@@ -45,6 +49,8 @@ export interface UnitTestBed<Class, Backend extends MockFunction = Spy> extends
45
49
  *
46
50
  * @typeParam Class - The class under test.
47
51
  * @typeParam Backend - The spy type the bed's mock factory produces.
52
+ *
53
+ * @since 0.1.0
48
54
  */
49
55
  export interface SociableUnitTestBed<Class, Backend extends MockFunction = Spy> extends UnitTestBed<Class, Backend> {
50
56
  /**
@@ -56,10 +62,14 @@ export interface SociableUnitTestBed<Class, Backend extends MockFunction = Spy>
56
62
  }
57
63
  /**
58
64
  * Wraps a compiled bed with access to its exposed real collaborators.
65
+ *
66
+ * @since 0.1.0
59
67
  */
60
68
  export declare function createSociableUnitTestBed<Class, Backend extends MockFunction = Spy>(bed: UnitTestBed<Class, Backend>, container: Container, exposedClasses: ReadonlySet<Constructor>): SociableUnitTestBed<Class, Backend>;
61
69
  /**
62
70
  * Assembles a {@link UnitTestBed} around an instantiated unit and its bound mock entries.
71
+ *
72
+ * @since 0.1.0
63
73
  */
64
74
  export declare function createUnitTestBed<Class, Backend extends MockFunction = Spy>(unit: Class, entries: ReadonlyMap<DependencyKey, ReadonlyArray<BoundMock>>, container: Container): UnitTestBed<Class, Backend>;
65
75
  //# sourceMappingURL=unit-test-bed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unit-test-bed.d.ts","sourceRoot":"","sources":["../../src/test-bed/unit-test-bed.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAElF,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;GAIG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS,YAAY,GAAG,GAAG;IAC/D;;;;;;;;;;OAUG;IACH,GAAG,CAAC,UAAU,SAAS,aAAa,EAClC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,CAAE,SAAQ,eAAe;IAC7F,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,oGAAoG;IACpG,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,8EAA8E;IAC9E,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,CAAE,SAAQ,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;IACjH;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,EACjF,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAChC,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,WAAW,CAAC,WAAW,CAAC,GACvC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAiBrC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,EACzE,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,EAC7D,SAAS,EAAE,SAAS,GACnB,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CA8C7B"}
1
+ {"version":3,"file":"unit-test-bed.d.ts","sourceRoot":"","sources":["../../src/test-bed/unit-test-bed.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAElF,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS,YAAY,GAAG,GAAG;IAC/D;;;;;;;;;;OAUG;IACH,GAAG,CAAC,UAAU,SAAS,aAAa,EAClC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,CAAE,SAAQ,eAAe;IAC7F,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,oGAAoG;IACpG,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,8EAA8E;IAC9E,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,CAAE,SAAQ,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;IACjH;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,EACjF,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAChC,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,WAAW,CAAC,WAAW,CAAC,GACvC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAiBrC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,GAAG,GAAG,EACzE,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,EAC7D,SAAS,EAAE,SAAS,GACnB,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CA8C7B"}
@@ -5,6 +5,8 @@ import { ExposureError, SealedDependencyError, UndeclaredDependencyError } from
5
5
  import { MOCK_RESET } from "#/mocking/auto-mock";
6
6
  /**
7
7
  * Wraps a compiled bed with access to its exposed real collaborators.
8
+ *
9
+ * @since 0.1.0
8
10
  */
9
11
  export function createSociableUnitTestBed(bed, container, exposedClasses) {
10
12
  // Copied member by member, so a future bed with accessor or prototype members cannot be dropped
@@ -26,6 +28,8 @@ export function createSociableUnitTestBed(bed, container, exposedClasses) {
26
28
  }
27
29
  /**
28
30
  * Assembles a {@link UnitTestBed} around an instantiated unit and its bound mock entries.
31
+ *
32
+ * @since 0.1.0
29
33
  */
30
34
  export function createUnitTestBed(unit, entries, container) {
31
35
  const mocks = {
@@ -1 +1 @@
1
- {"version":3,"file":"unit-test-bed.js","sourceRoot":"","sources":["../../src/test-bed/unit-test-bed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unit-test-bed.js","sourceRoot":"","sources":["../../src/test-bed/unit-test-bed.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -7,6 +7,8 @@ import type { Constructor, Token } from "@codefast/di";
7
7
  * `mocks.get()` can map an identifier back to the mock type it produced.
8
8
  *
9
9
  * @typeParam Value - The value type the identified dependency resolves to.
10
+ *
11
+ * @since 0.1.0
10
12
  */
11
13
  export type InjectionIdentifier<Value> = Token<Value> | Constructor<Value>;
12
14
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codefast/di-testing",
3
- "version": "0.0.0",
3
+ "version": "0.1.1",
4
4
  "description": "Solitary and sociable auto-mocking test beds for @codefast/di",
5
5
  "keywords": [
6
6
  "auto-mock",
@@ -132,11 +132,11 @@
132
132
  "expect-type": "^1.4.0",
133
133
  "typescript": "^7.0.2",
134
134
  "vitest": "^4.1.11",
135
- "@codefast/typescript-config": "0.8.0",
136
- "@codefast/di": "0.7.1"
135
+ "@codefast/di": "0.8.0",
136
+ "@codefast/typescript-config": "0.8.0"
137
137
  },
138
138
  "peerDependencies": {
139
- "@codefast/di": ">=0.7.0"
139
+ "@codefast/di": ">=0.8.0"
140
140
  },
141
141
  "engines": {
142
142
  "node": ">=24.0.0"
@@ -10,6 +10,8 @@ import { NotInjectableError } from "#/errors/errors";
10
10
  * @remarks Mirrors di's own fallback: a class with no constructor metadata is fine as long as its
11
11
  * constructor takes no parameters, which keeps zero-arg and accessor-only classes testable without
12
12
  * `@injectable`. A parameterful constructor with no metadata is a {@link NotInjectableError}.
13
+ *
14
+ * @since 0.1.0
13
15
  */
14
16
  export function scanDependencies(target: Constructor, reader: MetadataReader): ReadonlyArray<DependencySlot> {
15
17
  const constructorMetadata = reader.getConstructorMetadata(target);
@@ -25,6 +27,8 @@ export function scanDependencies(target: Constructor, reader: MetadataReader): R
25
27
  /**
26
28
  * What a sociable scan finds: the slots to mock, the exposed classes the unit actually reaches, and
27
29
  * the constrained slots those classes are injected through.
30
+ *
31
+ * @since 0.1.0
28
32
  */
29
33
  export interface SociableScan {
30
34
  readonly mockSlots: ReadonlyArray<DependencySlot>;
@@ -39,6 +43,8 @@ export interface SociableScan {
39
43
  *
40
44
  * @remarks Class identity is what exposure follows — a `Token`-keyed dependency is always mocked,
41
45
  * treating tokens as the declared boundary between the logic under test and the outside world.
46
+ *
47
+ * @since 0.1.0
42
48
  */
43
49
  export function scanSociableDependencies(
44
50
  target: Constructor,
@@ -1,7 +1,7 @@
1
1
  /** Binds a unit's discovered dependencies onto a container as mocks — the sole container coupling. */
2
2
 
3
3
  import type { BindingTag, Constructor, Container, DependencyKey, DependencySlot, InjectOptions } from "@codefast/di";
4
- import { tokenName } from "@codefast/di";
4
+ import { slotName, tokenName } from "@codefast/di";
5
5
 
6
6
  import { OverrideMismatchError, UndeclaredDependencyError } from "#/errors/errors";
7
7
  import type { DeepPartial } from "#/mocking/auto-mock";
@@ -13,6 +13,8 @@ import type { MockFactory } from "#/mocking/mock-factory";
13
13
  *
14
14
  * @remarks A stub's `setup` runs once per compile, so two beds built from one builder never share
15
15
  * seeded spies.
16
+ *
17
+ * @since 0.1.0
16
18
  */
17
19
  export type MockOverride =
18
20
  | { readonly kind: "stub"; readonly setup: (mock: MockFactory) => unknown }
@@ -22,6 +24,8 @@ export type MockOverride =
22
24
 
23
25
  /**
24
26
  * Normalized slot criteria an override or a `mocks.get` lookup addresses one binding slot with.
27
+ *
28
+ * @since 0.1.0
25
29
  */
26
30
  export interface SlotCriteria {
27
31
  readonly name: string | undefined;
@@ -31,6 +35,8 @@ export interface SlotCriteria {
31
35
  /**
32
36
  * One override registration: how a dependency is supplied, and which slot it targets (none = every
33
37
  * slot of the token that has no more specific override).
38
+ *
39
+ * @since 0.1.0
34
40
  */
35
41
  export interface SlottedOverride {
36
42
  readonly criteria: SlotCriteria | undefined;
@@ -39,11 +45,15 @@ export interface SlottedOverride {
39
45
 
40
46
  /**
41
47
  * What one bound entry was supplied with — only `auto` and `stub` entries carry a mock surface.
48
+ *
49
+ * @since 0.1.0
42
50
  */
43
51
  export type BoundMockKind = "auto" | "stub" | "value" | "absent" | "all" | "exposed";
44
52
 
45
53
  /**
46
54
  * One bound value `mocks` can look up: its slot criteria, the value, and how it was supplied.
55
+ *
56
+ * @since 0.1.0
47
57
  */
48
58
  export interface BoundMock {
49
59
  readonly criteria: SlotCriteria | undefined;
@@ -54,26 +64,48 @@ export interface BoundMock {
54
64
  /** The name prefix `usingAll` elements are bound under, so identical constants keep distinct slots. */
55
65
  const ALL_ELEMENT_SLOT_PREFIX = "di-testing:all:";
56
66
 
67
+ /**
68
+ * One name and plain tag set, with di's reserved criterion folded into the name.
69
+ *
70
+ * @remarks di treats `{name: "x"}` and `{tag: slotName.of("x")}` as one slot, so addressing here
71
+ * must too — mirroring `bindingSlotToResolveOptions` in di.
72
+ */
73
+ function foldReservedName(
74
+ name: string | undefined,
75
+ tags: ReadonlyArray<BindingTag>,
76
+ ): { name: string | undefined; tags: ReadonlyArray<BindingTag> } {
77
+ const reserved = tags.find((tag) => tag.key === slotName);
78
+ if (reserved === undefined) {
79
+ return { name, tags };
80
+ }
81
+ return { name: name ?? (reserved.value as string), tags: tags.filter((tag) => tag.key !== slotName) };
82
+ }
83
+
57
84
  /**
58
85
  * Folds an `InjectOptions` into slot criteria, or `undefined` when it names no criterion.
59
86
  *
60
87
  * @remarks Tags are copied and deduplicated by identity — di interns each `(key, value)` pair, so a
61
- * repeated pair is the same object.
88
+ * repeated pair is the same object. A reserved `slotName` criterion folds into `name`, so both
89
+ * spellings address one slot.
90
+ *
91
+ * @since 0.1.0
62
92
  */
63
93
  export function normalizeCriteria(options: InjectOptions | undefined): SlotCriteria | undefined {
64
94
  if (options === undefined) {
65
95
  return undefined;
66
96
  }
67
- const folded = options.tag === undefined ? (options.tags ?? []) : [options.tag, ...(options.tags ?? [])];
68
- const tags = [...new Set(folded)];
69
- if (options.name === undefined && tags.length === 0) {
97
+ const merged = options.tag === undefined ? (options.tags ?? []) : [options.tag, ...(options.tags ?? [])];
98
+ const { name, tags } = foldReservedName(options.name, [...new Set(merged)]);
99
+ if (name === undefined && tags.length === 0) {
70
100
  return undefined;
71
101
  }
72
- return { name: options.name, tags };
102
+ return { name, tags };
73
103
  }
74
104
 
75
105
  /**
76
106
  * Returns whether two criteria address the same slot — equal name and the same tag set.
107
+ *
108
+ * @since 0.1.0
77
109
  */
78
110
  export function criteriaEquals(left: SlotCriteria, right: SlotCriteria): boolean {
79
111
  return left.name === right.name && tagSetEquals(left.tags, right.tags);
@@ -96,16 +128,17 @@ function tagSetEquals(left: ReadonlyArray<BindingTag>, right: ReadonlyArray<Bind
96
128
 
97
129
  /** Returns the slot's own criteria, or `undefined` for an unconstrained slot. */
98
130
  function criteriaOfSlot(slot: DependencySlot): SlotCriteria | undefined {
99
- const tags = slot.tags ?? [];
100
- if (slot.name === undefined && tags.length === 0) {
131
+ const { name, tags } = foldReservedName(slot.name, slot.tags ?? []);
132
+ if (name === undefined && tags.length === 0) {
101
133
  return undefined;
102
134
  }
103
- return { name: slot.name, tags };
135
+ return { name, tags };
104
136
  }
105
137
 
106
138
  /** Returns whether an override's criteria address exactly this slot. */
107
139
  function matchesSlot(criteria: SlotCriteria, slot: DependencySlot): boolean {
108
- return criteria.name === slot.name && tagSetEquals(criteria.tags, slot.tags ?? []);
140
+ const folded = foldReservedName(slot.name, slot.tags ?? []);
141
+ return criteria.name === folded.name && tagSetEquals(criteria.tags, folded.tags);
109
142
  }
110
143
 
111
144
  /** A readable rendering of criteria for error messages. */
@@ -134,6 +167,8 @@ function acceptsAll(slot: DependencySlot): boolean {
134
167
  * An override that matches nothing is an {@link UndeclaredDependencyError}; `.absent()` on a
135
168
  * required slot or `.usingAll()` with no unconstrained `injectAll()` slot is an
136
169
  * {@link OverrideMismatchError}.
170
+ *
171
+ * @since 0.1.0
137
172
  */
138
173
  export function bindMocks(
139
174
  container: Container,
@@ -5,6 +5,8 @@
5
5
  *
6
6
  * @remarks Mirrors `@codefast/di`'s own `DiError` shape rather than extending it, so a caller can
7
7
  * catch testing-setup failures separately from resolution failures.
8
+ *
9
+ * @since 0.1.0
8
10
  */
9
11
  export abstract class TestingError extends Error {
10
12
  abstract readonly code: string;
@@ -17,6 +19,8 @@ export abstract class TestingError extends Error {
17
19
 
18
20
  /**
19
21
  * A scanned class takes constructor parameters but carries no `@injectable` metadata.
22
+ *
23
+ * @since 0.1.0
20
24
  */
21
25
  export class NotInjectableError extends TestingError {
22
26
  readonly code = "NOT_INJECTABLE";
@@ -35,6 +39,8 @@ export class NotInjectableError extends TestingError {
35
39
  *
36
40
  * @remarks Almost always a typo or a stale token reference; failing loudly beats silently binding an
37
41
  * unused constant or returning `undefined`.
42
+ *
43
+ * @since 0.1.0
38
44
  */
39
45
  export class UndeclaredDependencyError extends TestingError {
40
46
  readonly code = "UNDECLARED_DEPENDENCY";
@@ -48,7 +54,11 @@ export class UndeclaredDependencyError extends TestingError {
48
54
  }
49
55
  }
50
56
 
51
- /** What a sealed entry was supplied with, naming the one cause a lookup error should report. */
57
+ /**
58
+ * What a sealed entry was supplied with, naming the one cause a lookup error should report.
59
+ *
60
+ * @since 0.1.0
61
+ */
52
62
  export type SealedCause = "value" | "absent" | "all" | "exposed";
53
63
 
54
64
  const SEALED_MESSAGES: Readonly<Record<SealedCause, string>> = {
@@ -63,6 +73,8 @@ const SEALED_MESSAGES: Readonly<Record<SealedCause, string>> = {
63
73
  *
64
74
  * @remarks `.using()`, `.absent()`, and `.usingAll()` seal the value, and an exposed class is real —
65
75
  * none of them carries a mock surface, so handing them back typed as `Mocked` would lie.
76
+ *
77
+ * @since 0.1.0
66
78
  */
67
79
  export class SealedDependencyError extends TestingError {
68
80
  readonly code = "SEALED_DEPENDENCY";
@@ -77,6 +89,8 @@ export class SealedDependencyError extends TestingError {
77
89
  /**
78
90
  * An override whose shape does not fit the slot it targets — `.absent()` on a required dependency,
79
91
  * or `.usingAll()` where no unconstrained `injectAll()` slot exists.
92
+ *
93
+ * @since 0.1.0
80
94
  */
81
95
  export class OverrideMismatchError extends TestingError {
82
96
  readonly code = "OVERRIDE_MISMATCH";
@@ -91,6 +105,8 @@ export class OverrideMismatchError extends TestingError {
91
105
  /**
92
106
  * A sociable bed's exposure could not be honoured — the class is unreachable, already the unit, or
93
107
  * was asked for without having been exposed.
108
+ *
109
+ * @since 0.1.0
94
110
  */
95
111
  export class ExposureError extends TestingError {
96
112
  readonly code = "EXPOSURE";
@@ -13,6 +13,8 @@ import type { Spy } from "#/mocking/spy";
13
13
  *
14
14
  * @typeParam Dependency - The dependency type being mocked.
15
15
  * @typeParam Backend - The spy type the active mock factory produces.
16
+ *
17
+ * @since 0.1.0
16
18
  */
17
19
  export type Mocked<Dependency, Backend extends MockFunction = Spy> = Dependency extends (
18
20
  ...args: infer Args
@@ -33,6 +35,8 @@ export type Mocked<Dependency, Backend extends MockFunction = Spy> = Dependency
33
35
  * optional so only the members a test cares about need spelling out.
34
36
  *
35
37
  * @typeParam Dependency - The dependency type being partially stubbed.
38
+ *
39
+ * @since 0.1.0
36
40
  */
37
41
  export type DeepPartial<Dependency> = Dependency extends (...args: Array<never>) => unknown
38
42
  ? Dependency
@@ -43,6 +47,8 @@ export type DeepPartial<Dependency> = Dependency extends (...args: Array<never>)
43
47
  /**
44
48
  * The key an auto-mock answers with its reset routine, clearing the root spy, every materialized
45
49
  * member, and the spies of its seed.
50
+ *
51
+ * @since 0.1.0
46
52
  */
47
53
  export const MOCK_RESET: unique symbol = Symbol("di-testing:mock-reset");
48
54
 
@@ -107,6 +113,8 @@ function seedProvides(seed: object, key: PropertyKey): boolean {
107
113
  *
108
114
  * @typeParam Dependency - The dependency type being mocked.
109
115
  * @typeParam Backend - The spy type the factory produces, threaded into the returned `Mocked` view.
116
+ *
117
+ * @since 0.1.0
110
118
  */
111
119
  export function createAutoMock<Dependency, Backend extends MockFunction = Spy>(
112
120
  mockFactory: MockFactory<Backend>,
@@ -8,6 +8,8 @@ import { createSpy } from "#/mocking/spy";
8
8
  *
9
9
  * @remarks Deliberately structural so any backend qualifies: the built-in {@link Spy}, a Vitest
10
10
  * `vi.fn()`, a `jest.fn()`, or a Sinon stub all satisfy it.
11
+ *
12
+ * @since 0.1.0
11
13
  */
12
14
  export type MockFunction = (...args: ReadonlyArray<unknown>) => unknown;
13
15
 
@@ -20,10 +22,14 @@ export type MockFunction = (...args: ReadonlyArray<unknown>) => unknown;
20
22
  * with no adapter package and no module augmentation.
21
23
  *
22
24
  * @typeParam Backend - The spy type one factory call produces; defaults to the loose callable.
25
+ *
26
+ * @since 0.1.0
23
27
  */
24
28
  export type MockFactory<Backend extends MockFunction = MockFunction> = () => Backend;
25
29
 
26
30
  /**
27
31
  * The default `MockFactory` — one built-in {@link Spy} per call, with no test-framework dependency.
32
+ *
33
+ * @since 0.1.0
28
34
  */
29
35
  export const defaultMockFactory: MockFactory<Spy> = () => createSpy();