@venizia/ignis-inversion 0.2.0-2 → 0.2.0-21

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 (132) hide show
  1. package/LICENSE.md +0 -1
  2. package/dist/cjs/common/index.d.ts +1 -0
  3. package/dist/cjs/common/index.d.ts.map +1 -1
  4. package/dist/cjs/common/index.js +1 -0
  5. package/dist/cjs/common/index.js.map +1 -1
  6. package/dist/cjs/common/types.d.ts +6 -2
  7. package/dist/cjs/common/types.d.ts.map +1 -1
  8. package/dist/cjs/common/types.js +0 -9
  9. package/dist/cjs/common/types.js.map +1 -1
  10. package/dist/cjs/common/utilities.d.ts +32 -0
  11. package/dist/cjs/common/utilities.d.ts.map +1 -0
  12. package/dist/cjs/common/utilities.js +77 -0
  13. package/dist/cjs/common/utilities.js.map +1 -0
  14. package/dist/cjs/index.d.ts.map +1 -1
  15. package/dist/cjs/index.js +6 -0
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/modules/binding/common/constants.d.ts.map +1 -1
  18. package/dist/cjs/modules/binding/common/constants.js +2 -6
  19. package/dist/cjs/modules/binding/common/constants.js.map +1 -1
  20. package/dist/cjs/modules/container/abstract.d.ts +3 -0
  21. package/dist/cjs/modules/container/abstract.d.ts.map +1 -1
  22. package/dist/cjs/modules/container/abstract.js.map +1 -1
  23. package/dist/cjs/modules/container/base.d.ts +12 -0
  24. package/dist/cjs/modules/container/base.d.ts.map +1 -1
  25. package/dist/cjs/modules/container/base.js +25 -0
  26. package/dist/cjs/modules/container/base.js.map +1 -1
  27. package/dist/cjs/modules/container/container.d.ts +8 -1
  28. package/dist/cjs/modules/container/container.d.ts.map +1 -1
  29. package/dist/cjs/modules/container/container.js +40 -2
  30. package/dist/cjs/modules/container/container.js.map +1 -1
  31. package/dist/cjs/modules/error/app-error.d.ts +1 -1
  32. package/dist/cjs/modules/error/app-error.d.ts.map +1 -1
  33. package/dist/cjs/modules/error/app-error.js +2 -5
  34. package/dist/cjs/modules/error/app-error.js.map +1 -1
  35. package/dist/cjs/modules/error/common/index.d.ts +2 -0
  36. package/dist/cjs/modules/error/common/index.d.ts.map +1 -0
  37. package/dist/cjs/modules/error/common/index.js +18 -0
  38. package/dist/cjs/modules/error/common/index.js.map +1 -0
  39. package/dist/cjs/modules/error/{types.d.ts → common/types.d.ts} +1 -1
  40. package/dist/cjs/modules/error/common/types.d.ts.map +1 -0
  41. package/dist/cjs/modules/error/common/types.js.map +1 -0
  42. package/dist/cjs/modules/error/index.d.ts +1 -1
  43. package/dist/cjs/modules/error/index.d.ts.map +1 -1
  44. package/dist/cjs/modules/error/index.js +1 -1
  45. package/dist/cjs/modules/error/index.js.map +1 -1
  46. package/dist/cjs/modules/error/message-code.d.ts +12 -0
  47. package/dist/cjs/modules/error/message-code.d.ts.map +1 -1
  48. package/dist/cjs/modules/error/message-code.js +12 -3
  49. package/dist/cjs/modules/error/message-code.js.map +1 -1
  50. package/dist/cjs/modules/metadata/common/constants.d.ts +1 -0
  51. package/dist/cjs/modules/metadata/common/constants.d.ts.map +1 -1
  52. package/dist/cjs/modules/metadata/common/constants.js +1 -0
  53. package/dist/cjs/modules/metadata/common/constants.js.map +1 -1
  54. package/dist/cjs/modules/metadata/injectors.d.ts +13 -6
  55. package/dist/cjs/modules/metadata/injectors.d.ts.map +1 -1
  56. package/dist/cjs/modules/metadata/injectors.js +12 -4
  57. package/dist/cjs/modules/metadata/injectors.js.map +1 -1
  58. package/dist/cjs/modules/registry/common/types.d.ts +12 -3
  59. package/dist/cjs/modules/registry/common/types.d.ts.map +1 -1
  60. package/dist/cjs/modules/registry/registry.d.ts +10 -0
  61. package/dist/cjs/modules/registry/registry.d.ts.map +1 -1
  62. package/dist/cjs/modules/registry/registry.js +16 -0
  63. package/dist/cjs/modules/registry/registry.js.map +1 -1
  64. package/dist/esm/common/index.d.ts +1 -0
  65. package/dist/esm/common/index.d.ts.map +1 -1
  66. package/dist/esm/common/index.js +1 -0
  67. package/dist/esm/common/index.js.map +1 -1
  68. package/dist/esm/common/types.d.ts +6 -2
  69. package/dist/esm/common/types.d.ts.map +1 -1
  70. package/dist/esm/common/types.js +1 -7
  71. package/dist/esm/common/types.js.map +1 -1
  72. package/dist/esm/common/utilities.d.ts +32 -0
  73. package/dist/esm/common/utilities.d.ts.map +1 -0
  74. package/dist/esm/common/utilities.js +68 -0
  75. package/dist/esm/common/utilities.js.map +1 -0
  76. package/dist/esm/index.d.ts.map +1 -1
  77. package/dist/esm/index.js +6 -0
  78. package/dist/esm/index.js.map +1 -1
  79. package/dist/esm/modules/binding/common/constants.d.ts.map +1 -1
  80. package/dist/esm/modules/binding/common/constants.js +2 -3
  81. package/dist/esm/modules/binding/common/constants.js.map +1 -1
  82. package/dist/esm/modules/container/abstract.d.ts +3 -0
  83. package/dist/esm/modules/container/abstract.d.ts.map +1 -1
  84. package/dist/esm/modules/container/abstract.js.map +1 -1
  85. package/dist/esm/modules/container/base.d.ts +12 -0
  86. package/dist/esm/modules/container/base.d.ts.map +1 -1
  87. package/dist/esm/modules/container/base.js +25 -0
  88. package/dist/esm/modules/container/base.js.map +1 -1
  89. package/dist/esm/modules/container/container.d.ts +8 -1
  90. package/dist/esm/modules/container/container.d.ts.map +1 -1
  91. package/dist/esm/modules/container/container.js +40 -2
  92. package/dist/esm/modules/container/container.js.map +1 -1
  93. package/dist/esm/modules/error/app-error.d.ts +1 -1
  94. package/dist/esm/modules/error/app-error.d.ts.map +1 -1
  95. package/dist/esm/modules/error/app-error.js +2 -2
  96. package/dist/esm/modules/error/app-error.js.map +1 -1
  97. package/dist/esm/modules/error/common/index.d.ts +2 -0
  98. package/dist/esm/modules/error/common/index.d.ts.map +1 -0
  99. package/dist/esm/modules/error/common/index.js +2 -0
  100. package/dist/esm/modules/error/common/index.js.map +1 -0
  101. package/dist/esm/modules/error/{types.d.ts → common/types.d.ts} +1 -1
  102. package/dist/esm/modules/error/common/types.d.ts.map +1 -0
  103. package/dist/esm/modules/error/common/types.js.map +1 -0
  104. package/dist/esm/modules/error/index.d.ts +1 -1
  105. package/dist/esm/modules/error/index.d.ts.map +1 -1
  106. package/dist/esm/modules/error/index.js +1 -1
  107. package/dist/esm/modules/error/index.js.map +1 -1
  108. package/dist/esm/modules/error/message-code.d.ts +12 -0
  109. package/dist/esm/modules/error/message-code.d.ts.map +1 -1
  110. package/dist/esm/modules/error/message-code.js +12 -3
  111. package/dist/esm/modules/error/message-code.js.map +1 -1
  112. package/dist/esm/modules/metadata/common/constants.d.ts +1 -0
  113. package/dist/esm/modules/metadata/common/constants.d.ts.map +1 -1
  114. package/dist/esm/modules/metadata/common/constants.js +1 -0
  115. package/dist/esm/modules/metadata/common/constants.js.map +1 -1
  116. package/dist/esm/modules/metadata/injectors.d.ts +13 -6
  117. package/dist/esm/modules/metadata/injectors.d.ts.map +1 -1
  118. package/dist/esm/modules/metadata/injectors.js +12 -4
  119. package/dist/esm/modules/metadata/injectors.js.map +1 -1
  120. package/dist/esm/modules/registry/common/types.d.ts +12 -3
  121. package/dist/esm/modules/registry/common/types.d.ts.map +1 -1
  122. package/dist/esm/modules/registry/registry.d.ts +10 -0
  123. package/dist/esm/modules/registry/registry.d.ts.map +1 -1
  124. package/dist/esm/modules/registry/registry.js +16 -0
  125. package/dist/esm/modules/registry/registry.js.map +1 -1
  126. package/package.json +7 -10
  127. package/dist/cjs/modules/error/types.d.ts.map +0 -1
  128. package/dist/cjs/modules/error/types.js.map +0 -1
  129. package/dist/esm/modules/error/types.d.ts.map +0 -1
  130. package/dist/esm/modules/error/types.js.map +0 -1
  131. /package/dist/cjs/modules/error/{types.js → common/types.js} +0 -0
  132. /package/dist/esm/modules/error/{types.js → common/types.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../src/modules/container/abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAMlD,wKAAwK;AACxK,MAAM,OAAgB,iBAAkB,SAAQ,UAAU;IACxD,YAAY,IAAwB;QAClC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;CAsCF"}
1
+ {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../src/modules/container/abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAMlD,wKAAwK;AACxK,MAAM,OAAgB,iBAAkB,SAAQ,UAAU;IACxD,YAAY,IAAwB;QAClC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;CA0CF"}
@@ -4,6 +4,12 @@ import { AbstractContainer } from './abstract';
4
4
  /** Storage half of the container, keyed by normalized binding-key strings - resolution (`instantiate`) stays abstract, it is the part an implementation swaps. */
5
5
  export declare abstract class BaseContainer extends AbstractContainer {
6
6
  protected bindings: Map<string, Binding<any>>;
7
+ /** How often each bound key has been handed out since counting started. */
8
+ protected resolutionCounts: Map<string, number>;
9
+ /** Off by default: the counter sits on the hottest path in the container, and an application that never reads the report should not pay for it. */
10
+ protected isCountingResolutions: boolean;
11
+ /** Whether `startResolutionCounting` has ever run. A report read without it would name every binding, which is a wrong answer rather than an empty one. */
12
+ protected hasStartedResolutionCounting: boolean;
7
13
  constructor(opts?: {
8
14
  scope: string;
9
15
  });
@@ -53,6 +59,12 @@ export declare abstract class BaseContainer extends AbstractContainer {
53
59
  }): {
54
60
  [K in keyof T]: T[K] | undefined;
55
61
  };
62
+ /** Clears the counts and starts counting. Call it AFTER `initialize()`: boot resolves plenty no request ever asks for, and `bootChecks.binding.doVerify` reads every service and repository. */
63
+ startResolutionCounting(): void;
64
+ /** Stops counting and keeps what was counted, so `get` returns to its uncounted cost. */
65
+ stopResolutionCounting(): void;
66
+ /** How many times each bound key has been read since counting started. A key that was bound and never read is absent. The map is a copy. */
67
+ getResolutionCounts(): ReadonlyMap<string, number>;
56
68
  resolve<T>(cls: TClass<T>): T;
57
69
  findByTag<T = any>(opts: {
58
70
  tag: string;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,kKAAkK;AAClK,8BAAsB,aAAc,SAAQ,iBAAiB;IAC3D,SAAS,CAAC,QAAQ,4BAA8B;gBAEpC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAI3B,mBAAmB;IAInB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAQ/C,OAAO,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO;IAM5C,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE;QAC3B,GAAG,EAAE,WAAW,GAAG;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;KACvD,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IA2BhB,MAAM,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO;IAK3C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG,IAAI;IAK3C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE;QACpB,GAAG,EAAE,WAAW,GAAG;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,UAAU,CAAC,EAAE,KAAK,CAAC;KACpB,GAAG,CAAC;IACI,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE;QACpB,GAAG,EAAE,WAAW,GAAG;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,CAAC,GAAG,SAAS;IAqBR,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE;QACvC,QAAQ,EAAE;aACP,CAAC,IAAI,MAAM,CAAC,GAAG;gBACd,GAAG,EAAE,WAAW,GAAG;oBAAE,SAAS,EAAE,MAAM,CAAC;oBAAC,GAAG,EAAE,MAAM,CAAA;iBAAE,CAAC;gBACtD,UAAU,CAAC,EAAE,OAAO,CAAC;aACtB;SACF,CAAC;KACH,GAAG;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;KAAE;IAM/B,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;IAI7B,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE;QAChC,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KACvC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE;IAyBP,KAAK,IAAI,IAAI;IAOb,KAAK,IAAI,IAAI;CAGvB"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,kKAAkK;AAClK,8BAAsB,aAAc,SAAQ,iBAAiB;IAC3D,SAAS,CAAC,QAAQ,4BAA8B;IAEhD,2EAA2E;IAC3E,SAAS,CAAC,gBAAgB,sBAA6B;IAEvD,mJAAmJ;IACnJ,SAAS,CAAC,qBAAqB,UAAS;IAExC,2JAA2J;IAC3J,SAAS,CAAC,4BAA4B,UAAS;gBAEnC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAI3B,mBAAmB;IAInB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAQ/C,OAAO,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO;IAM5C,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE;QAC3B,GAAG,EAAE,WAAW,GAAG;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;KACvD,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IA2BhB,MAAM,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO;IAK3C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG,IAAI;IAK3C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE;QACpB,GAAG,EAAE,WAAW,GAAG;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,UAAU,CAAC,EAAE,KAAK,CAAC;KACpB,GAAG,CAAC;IACI,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE;QACpB,GAAG,EAAE,WAAW,GAAG;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QACtD,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,CAAC,GAAG,SAAS;IA0BR,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE;QACvC,QAAQ,EAAE;aACP,CAAC,IAAI,MAAM,CAAC,GAAG;gBACd,GAAG,EAAE,WAAW,GAAG;oBAAE,SAAS,EAAE,MAAM,CAAC;oBAAC,GAAG,EAAE,MAAM,CAAA;iBAAE,CAAC;gBACtD,UAAU,CAAC,EAAE,OAAO,CAAC;aACtB;SACF,CAAC;KACH,GAAG;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;KAAE;IAMxC,gMAAgM;IACvL,uBAAuB,IAAI,IAAI;IAMxC,yFAAyF;IAChF,sBAAsB,IAAI,IAAI;IAIvC,4IAA4I;IACnI,mBAAmB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAIlD,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;IAI7B,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE;QAChC,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KACvC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE;IAyBP,KAAK,IAAI,IAAI;IAOb,KAAK,IAAI,IAAI;CAGvB"}
@@ -8,6 +8,12 @@ export class BaseContainer extends AbstractContainer {
8
8
  constructor(opts) {
9
9
  super({ scope: opts?.scope ?? BaseContainer.name });
10
10
  this.bindings = new Map();
11
+ /** How often each bound key has been handed out since counting started. */
12
+ this.resolutionCounts = new Map();
13
+ /** Off by default: the counter sits on the hottest path in the container, and an application that never reads the report should not pay for it. */
14
+ this.isCountingResolutions = false;
15
+ /** Whether `startResolutionCounting` has ever run. A report read without it would name every binding, which is a wrong answer rather than an empty one. */
16
+ this.hasStartedResolutionCounting = false;
11
17
  }
12
18
  getMetadataRegistry() {
13
19
  return metadataRegistry;
@@ -60,6 +66,11 @@ export class BaseContainer extends AbstractContainer {
60
66
  const { key, isOptional = false } = opts;
61
67
  const binding = this.getBinding({ key });
62
68
  if (binding) {
69
+ // Counted here and nowhere else: constructor injection, property injection, `application.get`
70
+ // and `verifyBindings` all arrive through this one method. A miss below is not a resolution.
71
+ if (this.isCountingResolutions) {
72
+ this.resolutionCounts.set(binding.key, (this.resolutionCounts.get(binding.key) ?? 0) + 1);
73
+ }
63
74
  return binding.getValue(this);
64
75
  }
65
76
  if (!isOptional) {
@@ -72,6 +83,20 @@ export class BaseContainer extends AbstractContainer {
72
83
  gets(opts) {
73
84
  return opts.bindings.map(opt => this.get({ ...opt, isOptional: true }));
74
85
  }
86
+ /** Clears the counts and starts counting. Call it AFTER `initialize()`: boot resolves plenty no request ever asks for, and `bootChecks.binding.doVerify` reads every service and repository. */
87
+ startResolutionCounting() {
88
+ this.resolutionCounts.clear();
89
+ this.isCountingResolutions = true;
90
+ this.hasStartedResolutionCounting = true;
91
+ }
92
+ /** Stops counting and keeps what was counted, so `get` returns to its uncounted cost. */
93
+ stopResolutionCounting() {
94
+ this.isCountingResolutions = false;
95
+ }
96
+ /** How many times each bound key has been read since counting started. A key that was bound and never read is absent. The map is a copy. */
97
+ getResolutionCounts() {
98
+ return new Map(this.resolutionCounts);
99
+ }
75
100
  resolve(cls) {
76
101
  return this.instantiate(cls);
77
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/modules/container/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/modules/container/base.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,17 @@
1
- import { TClass } from '../../common/types';
1
+ import { AnyType, TBindingKey, TClass, TInjectTarget } from '../../common/types';
2
2
  import { BaseContainer } from './base';
3
3
  /** Default container: constructor + property injection driven by the decorator metadata registry. */
4
4
  export declare class Container extends BaseContainer {
5
5
  constructor(opts?: {
6
6
  scope: string;
7
7
  });
8
+ /** The class form reads the key the REGISTRATION recorded, so a call-site override and an imperative `application.service(X)` both resolve. */
9
+ protected resolveBindingKey(opts: {
10
+ key?: TBindingKey;
11
+ target?: TInjectTarget;
12
+ cls: TClass<AnyType>;
13
+ at: string;
14
+ }): TBindingKey;
8
15
  instantiate<T>(cls: TClass<T>): T;
9
16
  }
10
17
  //# sourceMappingURL=container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,qGAAqG;AACrG,qBAAa,SAAU,SAAQ,aAAa;gBAC9B,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAI3B,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;CA0C3C"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,qGAAqG;AACrG,qBAAa,SAAU,SAAQ,aAAa;gBAC9B,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAIpC,+IAA+I;IAC/I,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAChC,GAAG,CAAC,EAAE,WAAW,CAAC;QAClB,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,EAAE,EAAE,MAAM,CAAC;KACZ,GAAG,WAAW;IA8BN,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;CAwD3C"}
@@ -1,10 +1,36 @@
1
1
  import { getError } from '../error';
2
+ import { resolveInjectTarget } from '../../common/utilities';
2
3
  import { BaseContainer } from './base';
3
4
  /** Default container: constructor + property injection driven by the decorator metadata registry. */
4
5
  export class Container extends BaseContainer {
5
6
  constructor(opts) {
6
7
  super({ scope: opts?.scope ?? Container.name });
7
8
  }
9
+ /** The class form reads the key the REGISTRATION recorded, so a call-site override and an imperative `application.service(X)` both resolve. */
10
+ resolveBindingKey(opts) {
11
+ const { key, target: declared, cls, at } = opts;
12
+ if (key !== undefined) {
13
+ return key;
14
+ }
15
+ if (declared === undefined) {
16
+ throw getError({
17
+ message: `[${cls.name}] ${at} has neither an @inject key nor a class`,
18
+ });
19
+ }
20
+ const target = resolveInjectTarget(declared);
21
+ if (target === undefined) {
22
+ throw getError({
23
+ message: `[${cls.name}] ${at} names a function that did not return a class`,
24
+ });
25
+ }
26
+ const recorded = this.getMetadataRegistry().getBindingKey({ target });
27
+ if (recorded === undefined) {
28
+ throw getError({
29
+ message: `[${cls.name}] ${at} names '${target.name}', which is not registered as an artifact | Decorate it (@service, @repository, ...) or register it on the application before it is injected`,
30
+ });
31
+ }
32
+ return recorded;
33
+ }
8
34
  instantiate(cls) {
9
35
  const registry = this.getMetadataRegistry();
10
36
  const injectMetadata = registry.getInjectMetadata({
@@ -18,7 +44,13 @@ export class Container extends BaseContainer {
18
44
  message: `[${cls.name}] Constructor parameter ${index} has no @inject | Every parameter of a container-instantiated class must be decorated - the container cannot supply an undecorated one`,
19
45
  });
20
46
  }
21
- args[meta.index] = this.get({ key: meta.key, isOptional: meta.isOptional ?? false });
47
+ const key = this.resolveBindingKey({
48
+ key: meta.key,
49
+ target: meta.target,
50
+ cls,
51
+ at: `Constructor parameter ${index}`,
52
+ });
53
+ args[meta.index] = this.get({ key, isOptional: meta.isOptional ?? false });
22
54
  }
23
55
  const instance = new cls(...args);
24
56
  const propertyMetadata = registry.getPropertiesMetadata({
@@ -29,8 +61,14 @@ export class Container extends BaseContainer {
29
61
  }
30
62
  const properties = propertyMetadata.entries();
31
63
  for (const [propertyKey, metadata] of properties) {
32
- const dep = this.get({
64
+ const key = this.resolveBindingKey({
33
65
  key: metadata.bindingKey,
66
+ target: metadata.target,
67
+ cls,
68
+ at: `Property '${String(propertyKey)}'`,
69
+ });
70
+ const dep = this.get({
71
+ key,
34
72
  isOptional: metadata.isOptional ?? false,
35
73
  });
36
74
  instance[propertyKey] = dep;
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,qGAAqG;AACrG,MAAM,OAAO,SAAU,SAAQ,aAAa;IAC1C,YAAY,IAAwB;QAClC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAEQ,WAAW,CAAI,GAAc;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE5C,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,CAAC;YAChD,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;QAEH,MAAM,IAAI,GAAU,EAAE,CAAC;QAEvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;YAErC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,QAAQ,CAAC;oBACb,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,2BAA2B,KAAK,wIAAwI;iBAC9L,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAElC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,qBAAqB,CAAC;YACtD,MAAM,EAAE,QAAkB;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;gBACnB,GAAG,EAAE,QAAQ,CAAC,UAAU;gBACxB,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,KAAK;aACzC,CAAC,CAAC;YACF,QAAgB,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;QACvC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { TError, TErrorLogLevel, TErrorNormalized, TResponsedError } from './types';
1
+ import type { TError, TErrorLogLevel, TErrorNormalized, TResponsedError } from './common';
2
2
  export declare class ApplicationError extends Error {
3
3
  statusCode: number;
4
4
  normalized: TErrorNormalized;
@@ -1 +1 @@
1
- {"version":3,"file":"app-error.d.ts","sourceRoot":"","sources":["../../../../src/modules/error/app-error.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAgBzF,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;gBAEvB,IAAI,EAAE,MAAM;IA2CxB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAI5B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,eAAe,CAAA;KAAE,GAAG,gBAAgB;CAcrE;AAED,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,KAAG,gBAAmD,CAAC;AAE5F,eAAO,MAAM,SAAS,GAAI,MAAM;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,KAAG,gBAC3B,CAAC;AAEnC,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,gBAE5D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC"}
1
+ {"version":3,"file":"app-error.d.ts","sourceRoot":"","sources":["../../../../src/modules/error/app-error.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAgB1F,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;gBAEvB,IAAI,EAAE,MAAM;IA2CxB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAI5B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,eAAe,CAAA;KAAE,GAAG,gBAAgB;CAcrE;AAED,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,KAAG,gBAAmD,CAAC;AAE5F,eAAO,MAAM,SAAS,GAAI,MAAM;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,KAAG,gBAC3B,CAAC;AAEnC,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,gBAE5D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC"}
@@ -1,4 +1,4 @@
1
- import omit from 'lodash/omit';
1
+ import { omit } from '../../common/utilities';
2
2
  import { MessageCode } from './message-code';
3
3
  /** Consumed keys. Everything else rides into `extra`. */
4
4
  const KNOWN_KEYS = [
@@ -29,7 +29,7 @@ export class ApplicationError extends Error {
29
29
  this.logLevel = logLevel;
30
30
  // Explicit `extra` wins over swept keys.
31
31
  const merged = {
32
- ...omit(opts, KNOWN_KEYS),
32
+ ...omit({ source: opts, keys: KNOWN_KEYS }),
33
33
  ...extra,
34
34
  };
35
35
  this.extra = Object.keys(merged).length > 0 ? merged : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../../src/modules/error/app-error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../../src/modules/error/app-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,yDAAyD;AACzD,MAAM,UAAU,GAAG;IACjB,OAAO;IACP,SAAS;IACT,aAAa;IACb,YAAY;IACZ,aAAa;IACb,OAAO;IACP,OAAO;IACP,WAAW;IACX,UAAU;IACV,MAAM;CACE,CAAC;AAEX,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAMzC,YAAY,IAAY;QACtB,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAE5E,2EAA2E;QAC3E,MAAM,UAAU,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAE5D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAErE,uKAAuK;QACvK,MAAM,OAAO,GAAG,QAAQ,EAAE,IAAI,IAAI,UAAU,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;QAClE,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CACrC,QAAQ,EAAE,IAAI,IAAI,UAAU,EAAE,OAAO,EAAE,IAAI,IAAK,IAAI,CAAC,WAAiC,CACvF,CAAC;QACF,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,WAAW,IAAI,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC;QAExE,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,UAAU,EAAE,UAAU,IAAI,GAAG,CAAC;QAC9D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,yCAAyC;QACzC,MAAM,MAAM,GAAG;YACb,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAC3C,GAAG,KAAK;SACT,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjE,MAAM,UAAU,GAAqB;YACnC,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,IAAI,IAAI,EAAE;SACjB,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,SAAS;YACzB,CAAC,CAAC,SAAS,CAAC;gBACR,OAAO,EAAE,UAAU;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC;YACJ,CAAC,CAAC,UAAU,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,IAAgC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEvB,OAAO,IAAI,CAAC,QAAQ,CAAC;YACnB,OAAO,EAAE;gBACP,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE;gBACnD,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI;gBAC5B,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI;aAC7B;YACD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;SACzE,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAoB,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE5F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAgC,EAAoB,EAAE,CAC9E,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAc,EAA6B,EAAE;IAC9E,OAAO,KAAK,YAAY,KAAK,IAAI,OAAQ,KAAiB,CAAC,UAAU,KAAK,QAAQ,CAAC;AACrF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/error/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/error/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { TErrorScope } from './definition';
1
+ import type { TErrorScope } from '../definition';
2
2
  /** Declared here, not imported from helpers' `TLogLevel` (browser-safe); a helpers guard pins them equal. */
3
3
  export type TErrorLogLevel = 'error' | 'emerg' | 'warn' | 'info' | 'debug';
4
4
  /** Resolved message a client renders. All fields always present - no null-checks downstream. */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/modules/error/common/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/modules/error/common/types.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  export * from './app-error';
2
+ export * from './common';
2
3
  export * from './definition';
3
4
  export * from './message-code';
4
- export * from './types';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/error/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/error/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export * from './app-error';
2
+ export * from './common';
2
3
  export * from './definition';
3
4
  export * from './message-code';
4
- export * from './types';
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/error/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/error/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
@@ -1,9 +1,20 @@
1
1
  import type { TNullable } from '../../common/types';
2
+ import type { TError } from './common';
3
+ type TErrorFactory = (opts: TError) => Error;
2
4
  export declare class MessageCode {
3
5
  static readonly SEPARATOR = ".";
4
6
  static readonly SEGMENT_PATTERN: RegExp;
5
7
  static readonly MIN_SEGMENTS = 2;
6
8
  static readonly DEFAULT = "core.system_error";
9
+ private static errorFactory;
10
+ /**
11
+ * Registered by the package entry at module init; keeps the throws identical without a
12
+ * static import of app-error (that import was the cycle).
13
+ * @internal Framework wiring; consumers must not replace the factory.
14
+ */
15
+ static useErrorFactory(opts: {
16
+ factory: TErrorFactory;
17
+ }): void;
7
18
  /** Builds a code from its segments, throwing on a malformed one - codes are declared at module scope, so a bad code fails the process at import instead of shipping dead into production. */
8
19
  static build(opts: {
9
20
  parts: Array<string>;
@@ -13,4 +24,5 @@ export declare class MessageCode {
13
24
  /** Normalizes an absent, empty or non-string code to {@link DEFAULT}. */
14
25
  static resolve(code?: TNullable<string>): string;
15
26
  }
27
+ export {};
16
28
  //# sourceMappingURL=message-code.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-code.d.ts","sourceRoot":"","sources":["../../../../src/modules/error/message-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,SAAS,OAAO;IAChC,MAAM,CAAC,QAAQ,CAAC,eAAe,SAA8B;IAC7D,MAAM,CAAC,QAAQ,CAAC,YAAY,KAAK;IACjC,MAAM,CAAC,QAAQ,CAAC,OAAO,uBAAuB;IAE9C,6LAA6L;IAC7L,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KAAE,GAAG,MAAM;IAsBpD,iLAAiL;IACjL,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAatC,yEAAyE;IACzE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM;CAKjD"}
1
+ {"version":3,"file":"message-code.d.ts","sourceRoot":"","sources":["../../../../src/modules/error/message-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;AAE7C,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,SAAS,OAAO;IAChC,MAAM,CAAC,QAAQ,CAAC,eAAe,SAA8B;IAC7D,MAAM,CAAC,QAAQ,CAAC,YAAY,KAAK;IACjC,MAAM,CAAC,QAAQ,CAAC,OAAO,uBAAuB;IAG9C,OAAO,CAAC,MAAM,CAAC,YAAY,CACiE;IAE5F;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAA;KAAE,GAAG,IAAI;IAI9D,6LAA6L;IAC7L,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KAAE,GAAG,MAAM;IAsBpD,iLAAiL;IACjL,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAatC,yEAAyE;IACzE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM;CAKjD"}
@@ -1,21 +1,30 @@
1
- import { getError } from './app-error';
2
1
  export class MessageCode {
3
2
  static { this.SEPARATOR = '.'; }
4
3
  static { this.SEGMENT_PATTERN = /^[a-z0-9]+(_[a-z0-9]+)*$/; }
5
4
  static { this.MIN_SEGMENTS = 2; }
6
5
  static { this.DEFAULT = 'core.system_error'; }
6
+ // The one permitted raw `new Error`, used only until `src/index.ts` registers `getError`.
7
+ static { this.errorFactory = opts => new Error(typeof opts.message === 'string' ? opts.message : JSON.stringify(opts.message)); }
8
+ /**
9
+ * Registered by the package entry at module init; keeps the throws identical without a
10
+ * static import of app-error (that import was the cycle).
11
+ * @internal Framework wiring; consumers must not replace the factory.
12
+ */
13
+ static useErrorFactory(opts) {
14
+ this.errorFactory = opts.factory;
15
+ }
7
16
  /** Builds a code from its segments, throwing on a malformed one - codes are declared at module scope, so a bad code fails the process at import instead of shipping dead into production. */
8
17
  static build(opts) {
9
18
  const { parts } = opts;
10
19
  if (parts.length < this.MIN_SEGMENTS) {
11
- throw getError({
20
+ throw this.errorFactory({
12
21
  messageCode: 'core.message_code.invalid_segment_count',
13
22
  message: `[MessageCode][build] A code needs at least ${this.MIN_SEGMENTS} segments (namespace + reason) | Got: ${JSON.stringify(parts)}`,
14
23
  });
15
24
  }
16
25
  for (const segment of parts) {
17
26
  if (!this.SEGMENT_PATTERN.test(segment)) {
18
- throw getError({
27
+ throw this.errorFactory({
19
28
  messageCode: 'core.message_code.invalid_segment_format',
20
29
  message: `[MessageCode][build] Invalid segment '${segment}' | Expected lower snake_case (a-z, 0-9, '_') | Full: ${JSON.stringify(parts)}`,
21
30
  });
@@ -1 +1 @@
1
- {"version":3,"file":"message-code.js","sourceRoot":"","sources":["../../../../src/modules/error/message-code.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,OAAO,WAAW;aACN,cAAS,GAAG,GAAG,CAAC;aAChB,oBAAe,GAAG,0BAA0B,CAAC;aAC7C,iBAAY,GAAG,CAAC,CAAC;aACjB,YAAO,GAAG,mBAAmB,CAAC;IAE9C,6LAA6L;IAC7L,MAAM,CAAC,KAAK,CAAC,IAA8B;QACzC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEvB,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,QAAQ,CAAC;gBACb,WAAW,EAAE,yCAAyC;gBACtD,OAAO,EAAE,8CAA8C,IAAI,CAAC,YAAY,yCAAyC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;aACzI,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,QAAQ,CAAC;oBACb,WAAW,EAAE,0CAA0C;oBACvD,OAAO,EAAE,yCAAyC,OAAO,yDAAyD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;iBAC1I,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,CAAC;IAED,iLAAiL;IACjL,MAAM,CAAC,OAAO,CAAC,IAAa;QAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5C,OAAO,CACL,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY;YACpC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAC9D,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,OAAO,CAAC,IAAwB;QACrC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM;YAC5C,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;YACpB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC"}
1
+ {"version":3,"file":"message-code.js","sourceRoot":"","sources":["../../../../src/modules/error/message-code.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,WAAW;aACN,cAAS,GAAG,GAAG,CAAC;aAChB,oBAAe,GAAG,0BAA0B,CAAC;aAC7C,iBAAY,GAAG,CAAC,CAAC;aACjB,YAAO,GAAG,mBAAmB,CAAC;IAE9C,0FAA0F;aAC3E,iBAAY,GAAkB,IAAI,CAAC,EAAE,CAClD,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5F;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,IAAgC;QACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,6LAA6L;IAC7L,MAAM,CAAC,KAAK,CAAC,IAA8B;QACzC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEvB,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,CAAC;gBACtB,WAAW,EAAE,yCAAyC;gBACtD,OAAO,EAAE,8CAA8C,IAAI,CAAC,YAAY,yCAAyC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;aACzI,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,CAAC,YAAY,CAAC;oBACtB,WAAW,EAAE,0CAA0C;oBACvD,OAAO,EAAE,yCAAyC,OAAO,yDAAyD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;iBAC1I,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,CAAC;IAED,iLAAiL;IACjL,MAAM,CAAC,OAAO,CAAC,IAAa;QAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5C,OAAO,CACL,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY;YACpC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAC9D,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,OAAO,CAAC,IAAwB;QACrC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM;YAC5C,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;YACpB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export declare const MetadataKeys: {
2
2
  PROPERTIES: symbol;
3
3
  INJECT: symbol;
4
+ BINDING_KEY: symbol;
4
5
  };
5
6
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;CAGxB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;CAIxB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const MetadataKeys = {
2
2
  PROPERTIES: Symbol.for('ignis:properties'),
3
3
  INJECT: Symbol.for('ignis:inject'),
4
+ BINDING_KEY: Symbol.for('ignis:binding-key'),
4
5
  };
5
6
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;CACnC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/modules/metadata/common/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;CAC7C,CAAC"}
@@ -1,9 +1,16 @@
1
- import { TBindingKey } from '../../common/types';
2
- import { MetadataRegistry } from '../../modules/registry';
3
- /** Marks a property or constructor parameter for dependency injection. */
4
- export declare const inject: (opts: {
5
- key: TBindingKey;
1
+ import { TBindingKey, TInjectTarget } from '../../common/types';
2
+ import { MetadataRegistry } from '../registry';
3
+ /** Either a key, or the class bound under it - never both. The class may be named directly or through a function, which defers the reference past an import cycle. */
4
+ export type TInjectOptions = {
6
5
  isOptional?: boolean;
7
6
  registry?: MetadataRegistry;
8
- }) => (target: any, propertyName: string | symbol | undefined, parameterIndex?: number) => void;
7
+ } & ({
8
+ key: TBindingKey;
9
+ target?: never;
10
+ } | {
11
+ target: TInjectTarget;
12
+ key?: never;
13
+ });
14
+ /** Marks a property or constructor parameter for dependency injection. */
15
+ export declare const inject: (opts: TInjectOptions) => (target: any, propertyName: string | symbol | undefined, parameterIndex?: number) => void;
9
16
  //# sourceMappingURL=injectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"injectors.d.ts","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAExE,0EAA0E;AAC1E,eAAO,MAAM,MAAM,GAAI,MAAM;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,MACS,QAAQ,GAAG,EAAE,cAAc,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,iBAAiB,MAAM,SAgCxF,CAAC"}
1
+ {"version":3,"file":"injectors.d.ts","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAExE,sKAAsK;AACtK,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,GAAG,CAAC;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAEpF,0EAA0E;AAC1E,eAAO,MAAM,MAAM,GAAI,MAAM,cAAc,MAWjC,QAAQ,GAAG,EAAE,cAAc,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,iBAAiB,MAAM,SAgCxF,CAAC"}
@@ -1,7 +1,15 @@
1
- import { getError } from '../../modules/error';
2
- import { metadataRegistry } from '../../modules/registry';
1
+ import { getError } from '../error';
2
+ import { metadataRegistry } from '../registry';
3
3
  /** Marks a property or constructor parameter for dependency injection. */
4
4
  export const inject = (opts) => {
5
+ const { key, target: injected } = opts;
6
+ // A circular import leaves `target` undefined; fail here, not at resolve time. A function is the
7
+ // deferred form - what it returns is checked when the container resolves it.
8
+ if (key === undefined && typeof injected !== 'function') {
9
+ throw getError({
10
+ message: `@inject was given no binding key and no class | target: ${String(injected)}`,
11
+ });
12
+ }
5
13
  return (target, propertyName, parameterIndex) => {
6
14
  const registry = opts.registry ?? metadataRegistry;
7
15
  if (typeof parameterIndex === 'number') {
@@ -9,7 +17,7 @@ export const inject = (opts) => {
9
17
  target,
10
18
  index: parameterIndex,
11
19
  metadata: {
12
- key: opts.key,
20
+ ...(key === undefined ? { target: injected } : { key }),
13
21
  index: parameterIndex,
14
22
  isOptional: opts.isOptional ?? false,
15
23
  },
@@ -21,7 +29,7 @@ export const inject = (opts) => {
21
29
  target,
22
30
  propertyName: propertyName,
23
31
  metadata: {
24
- bindingKey: opts.key,
32
+ ...(key === undefined ? { target: injected } : { bindingKey: key }),
25
33
  isOptional: opts.isOptional ?? false,
26
34
  },
27
35
  });
@@ -1 +1 @@
1
- {"version":3,"file":"injectors.js","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAoB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAExE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAItB,EAAE,EAAE;IACH,OAAO,CAAC,MAAW,EAAE,YAAyC,EAAE,cAAuB,EAAE,EAAE;QACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC;QAEnD,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,QAAQ,CAAC,iBAAiB,CAAC;gBACzB,MAAM;gBACN,KAAK,EAAE,cAAc;gBACrB,QAAQ,EAAE;oBACR,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,cAAc;oBACrB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;iBACrC;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC,mBAAmB,CAAC;gBAC3B,MAAM;gBACN,YAAY,EAAE,YAAY;gBAC1B,QAAQ,EAAE;oBACR,UAAU,EAAE,IAAI,CAAC,GAAG;oBACpB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;iBACrC;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,CAAC;YACb,OAAO,EAAE,kFAAkF;SAC5F,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"injectors.js","sourceRoot":"","sources":["../../../../src/modules/metadata/injectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAoB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAQxE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAoB,EAAE,EAAE;IAC7C,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEvC,iGAAiG;IACjG,6EAA6E;IAC7E,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACxD,MAAM,QAAQ,CAAC;YACb,OAAO,EAAE,2DAA2D,MAAM,CAAC,QAAQ,CAAC,EAAE;SACvF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,MAAW,EAAE,YAAyC,EAAE,cAAuB,EAAE,EAAE;QACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC;QAEnD,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,QAAQ,CAAC,iBAAiB,CAAC;gBACzB,MAAM;gBACN,KAAK,EAAE,cAAc;gBACrB,QAAQ,EAAE;oBACR,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;oBACvD,KAAK,EAAE,cAAc;oBACrB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;iBACrC;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC,mBAAmB,CAAC;gBAC3B,MAAM;gBACN,YAAY,EAAE,YAAY;gBAC1B,QAAQ,EAAE;oBACR,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;oBACnE,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;iBACrC;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,CAAC;YACb,OAAO,EAAE,kFAAkF;SAC5F,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1,11 +1,20 @@
1
- import type { TBindingKey } from '../../../common/types';
1
+ import type { TBindingKey, TInjectTarget } from '../../../common/types';
2
2
  export interface IPropertyMetadata {
3
- bindingKey: TBindingKey;
3
+ bindingKey?: TBindingKey;
4
+ /** Named by class, or by a function returning it; the key is read off the class at resolve time. */
5
+ target?: TInjectTarget;
4
6
  isOptional?: boolean;
5
7
  }
6
8
  export interface IInjectMetadata {
7
- key: TBindingKey;
9
+ key?: TBindingKey;
10
+ /** Named by class, or by a function returning it; the key is read off the class at resolve time. */
11
+ target?: TInjectTarget;
8
12
  index: number;
9
13
  isOptional?: boolean;
10
14
  }
15
+ /** What `MetadataKeys.BINDING_KEY` holds. */
16
+ export interface IBindingKeyRecord {
17
+ key: TBindingKey;
18
+ isProvisional: boolean;
19
+ }
11
20
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/modules/registry/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,WAAW,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/modules/registry/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGjE,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,oGAAoG;IACpG,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,oGAAoG;IACpG,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,WAAW,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;CACxB"}
@@ -50,6 +50,16 @@ export declare class MetadataRegistry extends BaseHelper {
50
50
  getInjectMetadata<T extends object = object>(opts: {
51
51
  target: T;
52
52
  }): IInjectMetadata[] | undefined;
53
+ /** `isProvisional` marks a DERIVED key; a registration replaces it silently, having seen the call-site override. */
54
+ setBindingKey<T extends object = object>(opts: {
55
+ target: T;
56
+ key: TBindingKey;
57
+ isProvisional?: boolean;
58
+ }): void;
59
+ /** Own metadata only: a subclass is not registered, and the parent key would resolve the wrong binding. */
60
+ getBindingKey<T extends object = object>(opts: {
61
+ target: T;
62
+ }): TBindingKey | undefined;
53
63
  }
54
64
  export declare const metadataRegistry: MetadataRegistry;
55
65
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,+EAA+E;AAC/E,qBAAa,gBAAiB,SAAQ,UAAU;;IAK9C,MAAM,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE;QACxD,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,WAAW,CAAC;QACjB,KAAK,EAAE,KAAK,CAAC;KACd,GAAG,IAAI;IAaR,GAAG,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE;QACrD,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,WAAW,CAAC;KAClB,GAAG,KAAK,GAAG,SAAS;IAKrB,GAAG,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO;IAKxF,MAAM,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO;IAK3F,OAAO,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW,EAAE;IAShF,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG,MAAM,EAAE;IAS9D,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,CAAC,CAAA;KAAE,GAAG,IAAI;IASnE,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE;QACnD,MAAM,EAAE,CAAC,CAAC;QACV,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;QAC9B,QAAQ,EAAE,iBAAiB,CAAC;KAC7B,GAAG,IAAI;IAUR,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE;QACrD,MAAM,EAAE,CAAC,CAAC;KACX,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,iBAAiB,CAAC,GAAG,SAAS;IAKvD,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE;QACnD,MAAM,EAAE,CAAC,CAAC;QACV,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;KAC/B,GAAG,iBAAiB,GAAG,SAAS;IAMjC,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE;QACjD,MAAM,EAAE,CAAC,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,eAAe,CAAC;KAC3B,GAAG,IAAI;IAOR,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,CAAC,CAAA;KAAE,GAAG,eAAe,EAAE,GAAG,SAAS;CAIjG;AAED,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,22 @@ export class MetadataRegistry extends BaseHelper {
68
68
  const { target } = opts;
69
69
  return Reflect.getMetadata(MetadataKeys.INJECT, target);
70
70
  }
71
+ /** `isProvisional` marks a DERIVED key; a registration replaces it silently, having seen the call-site override. */
72
+ setBindingKey(opts) {
73
+ const { target, key, isProvisional = false } = opts;
74
+ const current = Reflect.getOwnMetadata(MetadataKeys.BINDING_KEY, target);
75
+ // Two apps in one process, one class, two keys: the last registration would decide for both.
76
+ if (current !== undefined && current.key !== key && !current.isProvisional && !isProvisional) {
77
+ Logger.warn('[setBindingKey] Rebound under a different key | target: %s | was: %s | now: %s', target.name, current.key.toString(), key.toString());
78
+ }
79
+ Reflect.defineMetadata(MetadataKeys.BINDING_KEY, { key, isProvisional }, target);
80
+ }
81
+ /** Own metadata only: a subclass is not registered, and the parent key would resolve the wrong binding. */
82
+ getBindingKey(opts) {
83
+ const { target } = opts;
84
+ const record = Reflect.getOwnMetadata(MetadataKeys.BINDING_KEY, target);
85
+ return record?.key;
86
+ }
71
87
  }
72
88
  export const metadataRegistry = new MetadataRegistry();
73
89
  //# sourceMappingURL=registry.js.map