@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
package/LICENSE.md CHANGED
@@ -72,7 +72,6 @@ Ignis uses the following open-source libraries. We are grateful to the authors a
72
72
 
73
73
  | Library | License | Description |
74
74
  |---------|---------|-------------|
75
- | [Lodash](https://github.com/lodash/lodash) | MIT | Utility library |
76
75
  | [reflect-metadata](https://github.com/rbuckton/reflect-metadata) | Apache-2.0 | Metadata reflection API |
77
76
 
78
77
  ### Documentation Dependencies
@@ -1,4 +1,5 @@
1
1
  export * from './base-helper';
2
2
  export * from './logger';
3
3
  export * from './types';
4
+ export * from './utilities';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./base-helper"), exports);
18
18
  __exportStar(require("./logger"), exports);
19
19
  __exportStar(require("./types"), exports);
20
+ __exportStar(require("./utilities"), exports);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,2CAAyB;AACzB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B"}
@@ -7,10 +7,14 @@ export type TAbstractConstructor<T> = abstract new (...args: any[]) => T;
7
7
  export type TClass<T> = TConstructor<T> & {
8
8
  [property: string]: any;
9
9
  };
10
+ export type TResolver<T> = (...args: any[]) => T;
11
+ export type TAsyncResolver<T> = (...args: any[]) => T | Promise<T>;
12
+ export type TValueOrResolver<T> = T | TResolver<T>;
13
+ export type TValueOrAsyncResolver<T> = T | TAsyncResolver<T>;
14
+ /** What `@inject({ target })` names: the class, or a function returning it. The function form defers the reference to resolve time, which is how a class reached through an import cycle stays reachable. */
15
+ export type TInjectTarget = TValueOrResolver<TClass<AnyType>>;
10
16
  export type TConstValue<T extends TClass<any>> = Extract<ValueOf<T>, string | number>;
11
17
  export type TBindingKey = string | symbol;
12
- /** Tells a CONSTRUCTOR from a RESOLVER via source text - `prototype !== undefined` is true of every non-arrow function. Sound only on ES2020+ output (classes emit as `class`); ES5 bundling breaks it. */
13
- export declare const isClass: <T>(target: any) => target is TClass<T>;
14
18
  export interface IBindingTag {
15
19
  [name: string]: any;
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;AAEhD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/C,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEpC,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AAE1B,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACxD,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACzE,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAEtE,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAEtF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,2MAA2M;AAC3M,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,QAAQ,GAAG,KAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAM1D,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;AAEhD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/C,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEpC,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AAE1B,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACxD,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACzE,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAEtE,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACjD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACnE,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACnD,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAE7D,6MAA6M;AAC7M,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9D,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAEtF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;CACrB"}
@@ -1,12 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isClass = void 0;
4
- /** Tells a CONSTRUCTOR from a RESOLVER via source text - `prototype !== undefined` is true of every non-arrow function. Sound only on ES2020+ output (classes emit as `class`); ES5 bundling breaks it. */
5
- const isClass = (target) => {
6
- if (typeof target !== 'function' || target.prototype === undefined) {
7
- return false;
8
- }
9
- return /^class[\s{]/.test(Function.prototype.toString.call(target));
10
- };
11
- exports.isClass = isClass;
12
3
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":";;;AAeA,2MAA2M;AACpM,MAAM,OAAO,GAAG,CAAI,MAAW,EAAuB,EAAE;IAC7D,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC;AANW,QAAA,OAAO,WAMlB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import type { AnyType, TClass, TInjectTarget, TValueOrAsyncResolver, TValueOrResolver } from './types';
2
+ /**
3
+ * True for a value carrying nothing: `null`/`undefined`, an empty string, array, `Map`, `Set`, or an
4
+ * object with no own enumerable keys. A number, boolean or function is empty too - it holds no
5
+ * entries.
6
+ *
7
+ * Hand-written rather than `lodash/isEmpty`, and NOT a plain `!value`: `!{}` is `false` while an
8
+ * empty object IS empty, so the two disagree on exactly the case a swap would silently flip.
9
+ */
10
+ export declare const isEmpty: (opts: {
11
+ value: unknown;
12
+ }) => boolean;
13
+ /**
14
+ * A shallow copy without `keys`.
15
+ *
16
+ * Hand-written rather than `lodash/omit`: this package is bundled for browsers, where importing
17
+ * lodash for one function costs 24 KB. Matches lodash on the shapes we pass it - a flat key list,
18
+ * never a nested path.
19
+ */
20
+ export declare const omit: <T extends object, K extends PropertyKey>(opts: {
21
+ source: T;
22
+ keys: readonly K[];
23
+ }) => Omit<T, Extract<K, keyof T>>;
24
+ /** Tells a CONSTRUCTOR from a RESOLVER via source text - `prototype !== undefined` is true of every non-arrow function. Sound only on ES2020+ output (classes emit as `class`); ES5 bundling breaks it. */
25
+ export declare const isClass: <T>(target: any) => target is TClass<T>;
26
+ /** Reads a value-or-resolver. A class constructor is returned as-is; only a plain function is called. */
27
+ export declare const resolveValue: <T>(valueOrResolver: TValueOrResolver<T>) => T;
28
+ /** `resolveValue` for a resolver that may answer a promise. */
29
+ export declare const resolveValueAsync: <T>(valueOrResolver: TValueOrAsyncResolver<T>) => Promise<T>;
30
+ /** Reads what `@inject({ target })` named. The function form is called HERE, never at decoration: that is what lets a class reached through an import cycle be named at all. Answers `undefined` when the function hands back something that is not a class. The container resolves synchronously, so there is no async form. */
31
+ export declare const resolveInjectTarget: (target: TInjectTarget) => TClass<AnyType> | undefined;
32
+ //# sourceMappingURL=utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACN,aAAa,EAEb,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,KAAG,OAwBlD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,EAAE,MAAM;IAClE,MAAM,EAAE,CAAC,CAAC;IACV,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;CACpB,KAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAe9B,CAAC;AAEF,2MAA2M;AAC3M,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,QAAQ,GAAG,KAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAM1D,CAAC;AAMF,yGAAyG;AACzG,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,iBAAiB,gBAAgB,CAAC,CAAC,CAAC,KAAG,CACJ,CAAC;AAOpE,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,GAAU,CAAC,EACvC,iBAAiB,qBAAqB,CAAC,CAAC,CAAC,KACxC,OAAO,CAAC,CAAC,CAA6E,CAAC;AAE1F,iUAAiU;AACjU,eAAO,MAAM,mBAAmB,GAAI,QAAQ,aAAa,KAAG,MAAM,CAAC,OAAO,CAAC,GAAG,SAG7E,CAAC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveInjectTarget = exports.resolveValueAsync = exports.resolveValue = exports.isClass = exports.omit = exports.isEmpty = void 0;
4
+ /**
5
+ * True for a value carrying nothing: `null`/`undefined`, an empty string, array, `Map`, `Set`, or an
6
+ * object with no own enumerable keys. A number, boolean or function is empty too - it holds no
7
+ * entries.
8
+ *
9
+ * Hand-written rather than `lodash/isEmpty`, and NOT a plain `!value`: `!{}` is `false` while an
10
+ * empty object IS empty, so the two disagree on exactly the case a swap would silently flip.
11
+ */
12
+ const isEmpty = (opts) => {
13
+ const { value } = opts;
14
+ if (value === null || value === undefined) {
15
+ return true;
16
+ }
17
+ // The types that carry a MEANINGFUL length. Duck-typing on `.length` instead would call
18
+ // `{ length: 0 }` empty, which it is not - it has an own key.
19
+ if (typeof value === 'string' || Array.isArray(value) || ArrayBuffer.isView(value)) {
20
+ return value.length === 0;
21
+ }
22
+ if (value instanceof Map || value instanceof Set) {
23
+ return value.size === 0;
24
+ }
25
+ if (typeof value !== 'object') {
26
+ return true;
27
+ }
28
+ // Own keys only: `for...in` would walk the prototype chain and call an object with an inherited
29
+ // property non-empty.
30
+ return Object.keys(value).length === 0;
31
+ };
32
+ exports.isEmpty = isEmpty;
33
+ /**
34
+ * A shallow copy without `keys`.
35
+ *
36
+ * Hand-written rather than `lodash/omit`: this package is bundled for browsers, where importing
37
+ * lodash for one function costs 24 KB. Matches lodash on the shapes we pass it - a flat key list,
38
+ * never a nested path.
39
+ */
40
+ const omit = (opts) => {
41
+ const { source, keys } = opts;
42
+ const dropped = new Set(keys);
43
+ const kept = {};
44
+ const entries = Object.entries(source);
45
+ for (const [key, value] of entries) {
46
+ if (dropped.has(key)) {
47
+ continue;
48
+ }
49
+ kept[key] = value;
50
+ }
51
+ return kept;
52
+ };
53
+ exports.omit = omit;
54
+ /** Tells a CONSTRUCTOR from a RESOLVER via source text - `prototype !== undefined` is true of every non-arrow function. Sound only on ES2020+ output (classes emit as `class`); ES5 bundling breaks it. */
55
+ const isClass = (target) => {
56
+ if (typeof target !== 'function' || target.prototype === undefined) {
57
+ return false;
58
+ }
59
+ return /^class[\s{]/.test(Function.prototype.toString.call(target));
60
+ };
61
+ exports.isClass = isClass;
62
+ /** A resolver is anything callable that is not a class - a class is a value here, never a factory. */
63
+ const isResolver = (valueOrResolver) => typeof valueOrResolver === 'function' && !(0, exports.isClass)(valueOrResolver);
64
+ /** Reads a value-or-resolver. A class constructor is returned as-is; only a plain function is called. */
65
+ const resolveValue = (valueOrResolver) => isResolver(valueOrResolver) ? valueOrResolver() : valueOrResolver;
66
+ exports.resolveValue = resolveValue;
67
+ const isAsyncResolver = (valueOrResolver) => typeof valueOrResolver === 'function' && !(0, exports.isClass)(valueOrResolver);
68
+ /** `resolveValue` for a resolver that may answer a promise. */
69
+ const resolveValueAsync = async (valueOrResolver) => (isAsyncResolver(valueOrResolver) ? valueOrResolver() : valueOrResolver);
70
+ exports.resolveValueAsync = resolveValueAsync;
71
+ /** Reads what `@inject({ target })` named. The function form is called HERE, never at decoration: that is what lets a class reached through an import cycle be named at all. Answers `undefined` when the function hands back something that is not a class. The container resolves synchronously, so there is no async form. */
72
+ const resolveInjectTarget = (target) => {
73
+ const resolved = (0, exports.resolveValue)(target);
74
+ return (0, exports.isClass)(resolved) ? resolved : undefined;
75
+ };
76
+ exports.resolveInjectTarget = resolveInjectTarget;
77
+ //# sourceMappingURL=utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAI1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -15,6 +15,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  require("reflect-metadata");
18
+ const app_error_1 = require("./modules/error/app-error");
19
+ const message_code_1 = require("./modules/error/message-code");
18
20
  __exportStar(require("./common"), exports);
19
21
  __exportStar(require("./modules"), exports);
22
+ // Lives in the package entry, the one module every consumer evaluates and the only one
23
+ // declared in `sideEffects`: a bundler keeps it, so MessageCode throws ApplicationError in a
24
+ // bundle too.
25
+ message_code_1.MessageCode.useErrorFactory({ factory: app_error_1.getError });
20
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4BAA0B;AAE1B,2CAAyB;AACzB,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,yDAAqD;AACrD,+DAA2D;AAE3D,2CAAyB;AACzB,4CAA0B;AAE1B,uFAAuF;AACvF,6FAA6F;AAC7F,cAAc;AACd,0BAAW,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,oBAAQ,EAAE,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/binding/common/constants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;CACzC;AACD,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;CACvC;AACD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEtE,qBAAa,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;CAgBtD"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/binding/common/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;CACzC;AACD,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;CACvC;AACD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEtE,qBAAa,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;CAgBtD"}
@@ -1,10 +1,6 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.BindingKeys = exports.BindingValueTypes = exports.BindingScopes = void 0;
7
- const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
8
4
  const error_1 = require("../../error");
9
5
  class BindingScopes {
10
6
  static { this.SINGLETON = 'singleton'; }
@@ -21,10 +17,10 @@ class BindingKeys {
21
17
  static build(opts) {
22
18
  const { namespace, key } = opts;
23
19
  const keyParts = [];
24
- if (!(0, isEmpty_1.default)(namespace)) {
20
+ if (namespace) {
25
21
  keyParts.push(namespace);
26
22
  }
27
- if ((0, isEmpty_1.default)(key)) {
23
+ if (!key) {
28
24
  throw (0, error_1.getError)({
29
25
  message: `[BindingKeys][build] Invalid key to build | key: ${key}`,
30
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/modules/binding/common/constants.ts"],"names":[],"mappings":";;;;;;AAAA,6DAAqC;AACrC,uCAAuC;AAGvC,MAAa,aAAa;aACR,cAAS,GAAG,WAAW,CAAC;aACxB,cAAS,GAAG,WAAW,CAAC;;AAF1C,sCAGC;AAGD,MAAa,iBAAiB;aACZ,UAAK,GAAG,OAAO,CAAC;aAChB,UAAK,GAAG,OAAO,CAAC;aAChB,aAAQ,GAAG,UAAU,CAAC;;AAHxC,8CAIC;AAGD,MAAa,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,IAAwC;QACnD,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAChC,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,IAAI,CAAC,IAAA,iBAAO,EAAC,SAAS,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,IAAA,iBAAO,EAAC,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAA,gBAAQ,EAAC;gBACb,OAAO,EAAE,oDAAoD,GAAG,EAAE;aACnE,CAAC,CAAC;QACL,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF;AAjBD,kCAiBC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/modules/binding/common/constants.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AAGvC,MAAa,aAAa;aACR,cAAS,GAAG,WAAW,CAAC;aACxB,cAAS,GAAG,WAAW,CAAC;;AAF1C,sCAGC;AAGD,MAAa,iBAAiB;aACZ,UAAK,GAAG,OAAO,CAAC;aAChB,UAAK,GAAG,OAAO,CAAC;aAChB,aAAQ,GAAG,UAAU,CAAC;;AAHxC,8CAIC;AAGD,MAAa,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,IAAwC;QACnD,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAChC,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAA,gBAAQ,EAAC;gBACb,OAAO,EAAE,oDAAoD,GAAG,EAAE;aACnE,CAAC,CAAC;QACL,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF;AAjBD,kCAiBC"}
@@ -60,6 +60,9 @@ export declare abstract class AbstractContainer extends BaseHelper implements IC
60
60
  tag: string;
61
61
  exclude?: Array<string> | Set<string>;
62
62
  }): IBinding<T>[];
63
+ abstract startResolutionCounting(): void;
64
+ abstract stopResolutionCounting(): void;
65
+ abstract getResolutionCounts(): ReadonlyMap<string, number>;
63
66
  abstract clear(): void;
64
67
  abstract reset(): void;
65
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/abstract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/abstract.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../src/modules/container/abstract.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAMlD,wKAAwK;AACxK,MAAsB,iBAAkB,SAAQ,wBAAU;IACxD,YAAY,IAAwB;QAClC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;CAsCF;AAzCD,8CAyCC"}
1
+ {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../src/modules/container/abstract.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAMlD,wKAAwK;AACxK,MAAsB,iBAAkB,SAAQ,wBAAU;IACxD,YAAY,IAAwB;QAClC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;CA0CF;AA7CD,8CA6CC"}
@@ -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"}
@@ -11,6 +11,12 @@ class BaseContainer extends abstract_1.AbstractContainer {
11
11
  constructor(opts) {
12
12
  super({ scope: opts?.scope ?? BaseContainer.name });
13
13
  this.bindings = new Map();
14
+ /** How often each bound key has been handed out since counting started. */
15
+ this.resolutionCounts = new Map();
16
+ /** 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. */
17
+ this.isCountingResolutions = false;
18
+ /** Whether `startResolutionCounting` has ever run. A report read without it would name every binding, which is a wrong answer rather than an empty one. */
19
+ this.hasStartedResolutionCounting = false;
14
20
  }
15
21
  getMetadataRegistry() {
16
22
  return registry_1.metadataRegistry;
@@ -63,6 +69,11 @@ class BaseContainer extends abstract_1.AbstractContainer {
63
69
  const { key, isOptional = false } = opts;
64
70
  const binding = this.getBinding({ key });
65
71
  if (binding) {
72
+ // Counted here and nowhere else: constructor injection, property injection, `application.get`
73
+ // and `verifyBindings` all arrive through this one method. A miss below is not a resolution.
74
+ if (this.isCountingResolutions) {
75
+ this.resolutionCounts.set(binding.key, (this.resolutionCounts.get(binding.key) ?? 0) + 1);
76
+ }
66
77
  return binding.getValue(this);
67
78
  }
68
79
  if (!isOptional) {
@@ -75,6 +86,20 @@ class BaseContainer extends abstract_1.AbstractContainer {
75
86
  gets(opts) {
76
87
  return opts.bindings.map(opt => this.get({ ...opt, isOptional: true }));
77
88
  }
89
+ /** 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. */
90
+ startResolutionCounting() {
91
+ this.resolutionCounts.clear();
92
+ this.isCountingResolutions = true;
93
+ this.hasStartedResolutionCounting = true;
94
+ }
95
+ /** Stops counting and keeps what was counted, so `get` returns to its uncounted cost. */
96
+ stopResolutionCounting() {
97
+ this.isCountingResolutions = false;
98
+ }
99
+ /** 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. */
100
+ getResolutionCounts() {
101
+ return new Map(this.resolutionCounts);
102
+ }
78
103
  resolve(cls) {
79
104
  return this.instantiate(cls);
80
105
  }
@@ -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"}
@@ -2,12 +2,38 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Container = void 0;
4
4
  const error_1 = require("../error");
5
+ const utilities_1 = require("../../common/utilities");
5
6
  const base_1 = require("./base");
6
7
  /** Default container: constructor + property injection driven by the decorator metadata registry. */
7
8
  class Container extends base_1.BaseContainer {
8
9
  constructor(opts) {
9
10
  super({ scope: opts?.scope ?? Container.name });
10
11
  }
12
+ /** The class form reads the key the REGISTRATION recorded, so a call-site override and an imperative `application.service(X)` both resolve. */
13
+ resolveBindingKey(opts) {
14
+ const { key, target: declared, cls, at } = opts;
15
+ if (key !== undefined) {
16
+ return key;
17
+ }
18
+ if (declared === undefined) {
19
+ throw (0, error_1.getError)({
20
+ message: `[${cls.name}] ${at} has neither an @inject key nor a class`,
21
+ });
22
+ }
23
+ const target = (0, utilities_1.resolveInjectTarget)(declared);
24
+ if (target === undefined) {
25
+ throw (0, error_1.getError)({
26
+ message: `[${cls.name}] ${at} names a function that did not return a class`,
27
+ });
28
+ }
29
+ const recorded = this.getMetadataRegistry().getBindingKey({ target });
30
+ if (recorded === undefined) {
31
+ throw (0, error_1.getError)({
32
+ 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`,
33
+ });
34
+ }
35
+ return recorded;
36
+ }
11
37
  instantiate(cls) {
12
38
  const registry = this.getMetadataRegistry();
13
39
  const injectMetadata = registry.getInjectMetadata({
@@ -21,7 +47,13 @@ class Container extends base_1.BaseContainer {
21
47
  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`,
22
48
  });
23
49
  }
24
- args[meta.index] = this.get({ key: meta.key, isOptional: meta.isOptional ?? false });
50
+ const key = this.resolveBindingKey({
51
+ key: meta.key,
52
+ target: meta.target,
53
+ cls,
54
+ at: `Constructor parameter ${index}`,
55
+ });
56
+ args[meta.index] = this.get({ key, isOptional: meta.isOptional ?? false });
25
57
  }
26
58
  const instance = new cls(...args);
27
59
  const propertyMetadata = registry.getPropertiesMetadata({
@@ -32,8 +64,14 @@ class Container extends base_1.BaseContainer {
32
64
  }
33
65
  const properties = propertyMetadata.entries();
34
66
  for (const [propertyKey, metadata] of properties) {
35
- const dep = this.get({
67
+ const key = this.resolveBindingKey({
36
68
  key: metadata.bindingKey,
69
+ target: metadata.target,
70
+ cls,
71
+ at: `Property '${String(propertyKey)}'`,
72
+ });
73
+ const dep = this.get({
74
+ key,
37
75
  isOptional: metadata.isOptional ?? false,
38
76
  });
39
77
  instance[propertyKey] = dep;
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AAEpC,iCAAuC;AAEvC,qGAAqG;AACrG,MAAa,SAAU,SAAQ,oBAAa;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,IAAA,gBAAQ,EAAC;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;AA/CD,8BA+CC"}
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,10 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.isApplicationError = exports.fromError = exports.getError = exports.ApplicationError = void 0;
7
- const omit_1 = __importDefault(require("lodash/omit"));
4
+ const utilities_1 = require("../../common/utilities");
8
5
  const message_code_1 = require("./message-code");
9
6
  /** Consumed keys. Everything else rides into `extra`. */
10
7
  const KNOWN_KEYS = [
@@ -35,7 +32,7 @@ class ApplicationError extends Error {
35
32
  this.logLevel = logLevel;
36
33
  // Explicit `extra` wins over swept keys.
37
34
  const merged = {
38
- ...(0, omit_1.default)(opts, KNOWN_KEYS),
35
+ ...(0, utilities_1.omit)({ source: opts, keys: KNOWN_KEYS }),
39
36
  ...extra,
40
37
  };
41
38
  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":"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"}
@@ -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,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/error/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB"}
@@ -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. */