@venizia/ignis-inversion 0.0.6 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/README.md +18 -18
  2. package/dist/cjs/binding/binding.d.ts +32 -0
  3. package/dist/cjs/binding/binding.d.ts.map +1 -0
  4. package/dist/cjs/binding/binding.js +114 -0
  5. package/dist/cjs/binding/binding.js.map +1 -0
  6. package/dist/cjs/binding/common/constants.d.ts +19 -0
  7. package/dist/cjs/binding/common/constants.d.ts.map +1 -0
  8. package/dist/cjs/binding/common/constants.js +37 -0
  9. package/dist/cjs/binding/common/constants.js.map +1 -0
  10. package/dist/cjs/binding/common/index.d.ts +3 -0
  11. package/dist/cjs/binding/common/index.d.ts.map +1 -0
  12. package/dist/cjs/binding/common/index.js +19 -0
  13. package/dist/cjs/binding/common/index.js.map +1 -0
  14. package/dist/cjs/binding/common/types.d.ts +28 -0
  15. package/dist/cjs/binding/common/types.d.ts.map +1 -0
  16. package/dist/cjs/binding/common/types.js +8 -0
  17. package/dist/cjs/binding/common/types.js.map +1 -0
  18. package/dist/cjs/binding/index.d.ts +3 -0
  19. package/dist/cjs/binding/index.d.ts.map +1 -0
  20. package/dist/cjs/binding/index.js +19 -0
  21. package/dist/cjs/binding/index.js.map +1 -0
  22. package/dist/cjs/common/app-error.d.ts.map +1 -1
  23. package/dist/cjs/common/app-error.js +6 -1
  24. package/dist/cjs/common/app-error.js.map +1 -1
  25. package/dist/cjs/common/index.d.ts +0 -1
  26. package/dist/cjs/common/index.d.ts.map +1 -1
  27. package/dist/cjs/common/index.js +0 -1
  28. package/dist/cjs/common/index.js.map +1 -1
  29. package/dist/cjs/common/types.d.ts +14 -38
  30. package/dist/cjs/common/types.d.ts.map +1 -1
  31. package/dist/cjs/common/types.js +18 -44
  32. package/dist/cjs/common/types.js.map +1 -1
  33. package/dist/cjs/container/abstract.d.ts +71 -0
  34. package/dist/cjs/container/abstract.d.ts.map +1 -0
  35. package/dist/cjs/container/abstract.js +17 -0
  36. package/dist/cjs/container/abstract.js.map +1 -0
  37. package/dist/cjs/container/base.d.ts +69 -0
  38. package/dist/cjs/container/base.d.ts.map +1 -0
  39. package/dist/cjs/container/base.js +117 -0
  40. package/dist/cjs/container/base.js.map +1 -0
  41. package/dist/cjs/container/common/index.d.ts +2 -0
  42. package/dist/cjs/container/common/index.d.ts.map +1 -0
  43. package/dist/cjs/container/common/index.js +18 -0
  44. package/dist/cjs/container/common/index.js.map +1 -0
  45. package/dist/cjs/container/common/types.d.ts +60 -0
  46. package/dist/cjs/container/common/types.d.ts.map +1 -0
  47. package/dist/cjs/container/common/types.js +3 -0
  48. package/dist/cjs/container/common/types.js.map +1 -0
  49. package/dist/cjs/container/container.d.ts +10 -0
  50. package/dist/cjs/container/container.d.ts.map +1 -0
  51. package/dist/cjs/container/container.js +45 -0
  52. package/dist/cjs/container/container.js.map +1 -0
  53. package/dist/cjs/container/index.d.ts +5 -0
  54. package/dist/cjs/container/index.d.ts.map +1 -0
  55. package/dist/cjs/container/index.js +21 -0
  56. package/dist/cjs/container/index.js.map +1 -0
  57. package/dist/cjs/index.d.ts +1 -0
  58. package/dist/cjs/index.d.ts.map +1 -1
  59. package/dist/cjs/index.js +1 -0
  60. package/dist/cjs/index.js.map +1 -1
  61. package/dist/cjs/{common/keys.d.ts → metadata/common/constants.d.ts} +1 -1
  62. package/dist/cjs/metadata/common/constants.d.ts.map +1 -0
  63. package/dist/cjs/{common/keys.js → metadata/common/constants.js} +1 -1
  64. package/dist/cjs/metadata/common/constants.js.map +1 -0
  65. package/dist/cjs/metadata/common/index.d.ts +2 -0
  66. package/dist/cjs/metadata/common/index.d.ts.map +1 -0
  67. package/dist/cjs/metadata/common/index.js +18 -0
  68. package/dist/cjs/metadata/common/index.js.map +1 -0
  69. package/dist/cjs/metadata/index.d.ts +1 -0
  70. package/dist/cjs/metadata/index.d.ts.map +1 -1
  71. package/dist/cjs/metadata/index.js +1 -0
  72. package/dist/cjs/metadata/index.js.map +1 -1
  73. package/dist/cjs/metadata/injectors.d.ts +3 -2
  74. package/dist/cjs/metadata/injectors.d.ts.map +1 -1
  75. package/dist/cjs/metadata/injectors.js.map +1 -1
  76. package/dist/cjs/registry/common/index.d.ts +2 -0
  77. package/dist/cjs/registry/common/index.d.ts.map +1 -0
  78. package/dist/cjs/registry/common/index.js +18 -0
  79. package/dist/cjs/registry/common/index.js.map +1 -0
  80. package/dist/cjs/registry/common/types.d.ts +17 -0
  81. package/dist/cjs/registry/common/types.d.ts.map +1 -0
  82. package/dist/cjs/registry/common/types.js +3 -0
  83. package/dist/cjs/registry/common/types.js.map +1 -0
  84. package/dist/cjs/registry/index.d.ts +3 -0
  85. package/dist/cjs/registry/index.d.ts.map +1 -0
  86. package/dist/cjs/registry/index.js +19 -0
  87. package/dist/cjs/registry/index.js.map +1 -0
  88. package/dist/{esm → cjs/registry}/registry.d.ts +8 -7
  89. package/dist/cjs/registry/registry.d.ts.map +1 -0
  90. package/dist/cjs/{registry.js → registry/registry.js} +11 -13
  91. package/dist/cjs/registry/registry.js.map +1 -0
  92. package/dist/esm/binding/binding.d.ts +32 -0
  93. package/dist/esm/binding/binding.d.ts.map +1 -0
  94. package/dist/esm/binding/binding.js +110 -0
  95. package/dist/esm/binding/binding.js.map +1 -0
  96. package/dist/esm/binding/common/constants.d.ts +19 -0
  97. package/dist/esm/binding/common/constants.d.ts.map +1 -0
  98. package/dist/esm/binding/common/constants.js +28 -0
  99. package/dist/esm/binding/common/constants.js.map +1 -0
  100. package/dist/esm/binding/common/index.d.ts +3 -0
  101. package/dist/esm/binding/common/index.d.ts.map +1 -0
  102. package/dist/esm/binding/common/index.js +3 -0
  103. package/dist/esm/binding/common/index.js.map +1 -0
  104. package/dist/esm/binding/common/types.d.ts +28 -0
  105. package/dist/esm/binding/common/types.d.ts.map +1 -0
  106. package/dist/esm/binding/common/types.js +4 -0
  107. package/dist/esm/binding/common/types.js.map +1 -0
  108. package/dist/esm/binding/index.d.ts +3 -0
  109. package/dist/esm/binding/index.d.ts.map +1 -0
  110. package/dist/esm/binding/index.js +3 -0
  111. package/dist/esm/binding/index.js.map +1 -0
  112. package/dist/esm/common/app-error.d.ts.map +1 -1
  113. package/dist/esm/common/app-error.js +3 -1
  114. package/dist/esm/common/app-error.js.map +1 -1
  115. package/dist/esm/common/index.d.ts +0 -1
  116. package/dist/esm/common/index.d.ts.map +1 -1
  117. package/dist/esm/common/index.js +0 -1
  118. package/dist/esm/common/index.js.map +1 -1
  119. package/dist/esm/common/types.d.ts +14 -38
  120. package/dist/esm/common/types.d.ts.map +1 -1
  121. package/dist/esm/common/types.js +17 -35
  122. package/dist/esm/common/types.js.map +1 -1
  123. package/dist/esm/container/abstract.d.ts +71 -0
  124. package/dist/esm/container/abstract.d.ts.map +1 -0
  125. package/dist/esm/container/abstract.js +13 -0
  126. package/dist/esm/container/abstract.js.map +1 -0
  127. package/dist/esm/container/base.d.ts +69 -0
  128. package/dist/esm/container/base.d.ts.map +1 -0
  129. package/dist/esm/container/base.js +113 -0
  130. package/dist/esm/container/base.js.map +1 -0
  131. package/dist/esm/container/common/index.d.ts +2 -0
  132. package/dist/esm/container/common/index.d.ts.map +1 -0
  133. package/dist/esm/container/common/index.js +2 -0
  134. package/dist/esm/container/common/index.js.map +1 -0
  135. package/dist/esm/container/common/types.d.ts +60 -0
  136. package/dist/esm/container/common/types.d.ts.map +1 -0
  137. package/dist/esm/container/common/types.js +2 -0
  138. package/dist/esm/container/common/types.js.map +1 -0
  139. package/dist/esm/container/container.d.ts +10 -0
  140. package/dist/esm/container/container.d.ts.map +1 -0
  141. package/dist/esm/container/container.js +41 -0
  142. package/dist/esm/container/container.js.map +1 -0
  143. package/dist/esm/container/index.d.ts +5 -0
  144. package/dist/esm/container/index.d.ts.map +1 -0
  145. package/dist/esm/container/index.js +5 -0
  146. package/dist/esm/container/index.js.map +1 -0
  147. package/dist/esm/index.d.ts +1 -0
  148. package/dist/esm/index.d.ts.map +1 -1
  149. package/dist/esm/index.js +1 -0
  150. package/dist/esm/index.js.map +1 -1
  151. package/dist/esm/{common/keys.d.ts → metadata/common/constants.d.ts} +1 -1
  152. package/dist/esm/metadata/common/constants.d.ts.map +1 -0
  153. package/dist/esm/{common/keys.js → metadata/common/constants.js} +1 -1
  154. package/dist/esm/metadata/common/constants.js.map +1 -0
  155. package/dist/esm/metadata/common/index.d.ts +2 -0
  156. package/dist/esm/metadata/common/index.d.ts.map +1 -0
  157. package/dist/esm/metadata/common/index.js +2 -0
  158. package/dist/esm/metadata/common/index.js.map +1 -0
  159. package/dist/esm/metadata/index.d.ts +1 -0
  160. package/dist/esm/metadata/index.d.ts.map +1 -1
  161. package/dist/esm/metadata/index.js +1 -0
  162. package/dist/esm/metadata/index.js.map +1 -1
  163. package/dist/esm/metadata/injectors.d.ts +3 -2
  164. package/dist/esm/metadata/injectors.d.ts.map +1 -1
  165. package/dist/esm/metadata/injectors.js.map +1 -1
  166. package/dist/esm/registry/common/index.d.ts +2 -0
  167. package/dist/esm/registry/common/index.d.ts.map +1 -0
  168. package/dist/esm/registry/common/index.js +2 -0
  169. package/dist/esm/registry/common/index.js.map +1 -0
  170. package/dist/esm/registry/common/types.d.ts +17 -0
  171. package/dist/esm/registry/common/types.d.ts.map +1 -0
  172. package/dist/esm/registry/common/types.js +2 -0
  173. package/dist/esm/registry/common/types.js.map +1 -0
  174. package/dist/esm/registry/index.d.ts +3 -0
  175. package/dist/esm/registry/index.d.ts.map +1 -0
  176. package/dist/esm/registry/index.js +3 -0
  177. package/dist/esm/registry/index.js.map +1 -0
  178. package/dist/{cjs → esm/registry}/registry.d.ts +8 -7
  179. package/dist/esm/registry/registry.d.ts.map +1 -0
  180. package/dist/esm/{registry.js → registry/registry.js} +5 -7
  181. package/dist/esm/registry/registry.js.map +1 -0
  182. package/package.json +5 -5
  183. package/dist/cjs/common/keys.d.ts.map +0 -1
  184. package/dist/cjs/common/keys.js.map +0 -1
  185. package/dist/cjs/container.d.ts +0 -89
  186. package/dist/cjs/container.d.ts.map +0 -1
  187. package/dist/cjs/container.js +0 -245
  188. package/dist/cjs/container.js.map +0 -1
  189. package/dist/cjs/registry.d.ts.map +0 -1
  190. package/dist/cjs/registry.js.map +0 -1
  191. package/dist/esm/common/keys.d.ts.map +0 -1
  192. package/dist/esm/common/keys.js.map +0 -1
  193. package/dist/esm/container.d.ts +0 -89
  194. package/dist/esm/container.d.ts.map +0 -1
  195. package/dist/esm/container.js +0 -240
  196. package/dist/esm/container.js.map +0 -1
  197. package/dist/esm/registry.d.ts.map +0 -1
  198. package/dist/esm/registry.js.map +0 -1
package/dist/esm/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import 'reflect-metadata';
2
+ export * from './binding';
2
3
  export * from './common';
3
4
  export * from './container';
4
5
  export * from './metadata';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -3,4 +3,4 @@ export declare const MetadataKeys: {
3
3
  INJECT: symbol;
4
4
  INJECTABLE: symbol;
5
5
  };
6
- //# sourceMappingURL=keys.d.ts.map
6
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/metadata/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;CAIxB,CAAC"}
@@ -3,4 +3,4 @@ export const MetadataKeys = {
3
3
  INJECT: Symbol.for('ignis:inject'),
4
4
  INJECTABLE: Symbol.for('ignis:injectable'),
5
5
  };
6
- //# sourceMappingURL=keys.js.map
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/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,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;CAC3C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/metadata/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/metadata/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -1,2 +1,3 @@
1
+ export * from './common';
1
2
  export * from './injectors';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metadata/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metadata/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
@@ -1,2 +1,3 @@
1
+ export * from './common';
1
2
  export * from './injectors';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metadata/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metadata/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
@@ -1,9 +1,10 @@
1
- import { IInjectableMetadata } from '../common/types';
1
+ import { TBindingKey } from '../common/types';
2
+ import { IInjectableMetadata } from '../registry/common/types';
2
3
  import { MetadataRegistry } from '../registry';
3
4
  export declare const injectable: (metadata: IInjectableMetadata, registry?: MetadataRegistry) => ClassDecorator;
4
5
  /** Marks a property or constructor parameter for dependency injection. */
5
6
  export declare const inject: (opts: {
6
- key: string | symbol;
7
+ key: TBindingKey;
7
8
  isOptional?: boolean;
8
9
  registry?: MetadataRegistry;
9
10
  }) => (target: any, propertyName: string | symbol | undefined, parameterIndex?: number) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"injectors.d.ts","sourceRoot":"","sources":["../../../src/metadata/injectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAoB,MAAM,YAAY,CAAC;AAEhE,eAAO,MAAM,UAAU,GACrB,UAAU,mBAAmB,EAC7B,WAAW,gBAAgB,KAC1B,cAIF,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,MAAM,GAAI,MAAM;IAC3B,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,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/metadata/injectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAoB,MAAM,YAAY,CAAC;AAEhE,eAAO,MAAM,UAAU,GACrB,UAAU,mBAAmB,EAC7B,WAAW,gBAAgB,KAC1B,cAIF,CAAC;AAEF,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 +1 @@
1
- {"version":3,"file":"injectors.js","sourceRoot":"","sources":["../../../src/metadata/injectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAoB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,QAA6B,EAC7B,QAA2B,EACX,EAAE;IAClB,OAAO,MAAM,CAAC,EAAE;QACd,CAAC,QAAQ,IAAI,gBAAgB,CAAC,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,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/metadata/injectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,OAAO,EAAoB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,QAA6B,EAC7B,QAA2B,EACX,EAAE;IAClB,OAAO,MAAM,CAAC,EAAE;QACd,CAAC,QAAQ,IAAI,gBAAgB,CAAC,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,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"}
@@ -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/registry/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/registry/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { TBindingKey } from '../../common/types';
2
+ import type { TBindingScope } from '../../binding/common/constants';
3
+ export interface IPropertyMetadata {
4
+ bindingKey: TBindingKey;
5
+ isOptional?: boolean;
6
+ [key: string]: any;
7
+ }
8
+ export interface IInjectMetadata {
9
+ key: TBindingKey;
10
+ index: number;
11
+ isOptional?: boolean;
12
+ }
13
+ export interface IInjectableMetadata {
14
+ scope?: TBindingScope;
15
+ tags?: Record<string, any>;
16
+ }
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/registry/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,WAAW,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/registry/common/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from './common';
2
+ export * from './registry';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './common';
2
+ export * from './registry';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
@@ -1,28 +1,29 @@
1
- import { BaseHelper } from './common/base-helper';
2
- import { IInjectableMetadata, IInjectMetadata, IPropertyMetadata, TClass } from './common/types';
1
+ import { BaseHelper } from '../common/base-helper';
2
+ import { TBindingKey, TClass } from '../common/types';
3
+ import { IInjectableMetadata, IInjectMetadata, IPropertyMetadata } from './common/types';
3
4
  /** Central metadata registry for storing and retrieving decorator metadata. */
4
5
  export declare class MetadataRegistry extends BaseHelper {
5
6
  constructor();
6
7
  define<Target extends object = object, Value = any>(opts: {
7
8
  target: Target;
8
- key: string | symbol;
9
+ key: TBindingKey;
9
10
  value: Value;
10
11
  }): void;
11
12
  get<Target extends object = object, Value = any>(opts: {
12
13
  target: Target;
13
- key: string | symbol;
14
+ key: TBindingKey;
14
15
  }): Value | undefined;
15
16
  has<Target extends object = object>(opts: {
16
17
  target: Target;
17
- key: string | symbol;
18
+ key: TBindingKey;
18
19
  }): boolean;
19
20
  delete<Target extends object = object>(opts: {
20
21
  target: Target;
21
- key: string | symbol;
22
+ key: TBindingKey;
22
23
  }): boolean;
23
24
  getKeys<Target extends object = object>(opts: {
24
25
  target: Target;
25
- }): (string | symbol)[];
26
+ }): TBindingKey[];
26
27
  getMethodNames<T = any>(opts: {
27
28
  target: TClass<T>;
28
29
  }): string[];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/registry/registry.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { BaseHelper } from './common/base-helper';
2
- import { MetadataKeys } from './common/keys';
3
- import { Logger } from './common/logger';
1
+ import { BaseHelper } from '../common/base-helper';
2
+ import { Logger } from '../common/logger';
3
+ import { MetadataKeys } from '../metadata/common/constants';
4
4
  /** Central metadata registry for storing and retrieving decorator metadata. */
5
5
  export class MetadataRegistry extends BaseHelper {
6
6
  constructor() {
@@ -45,9 +45,7 @@ export class MetadataRegistry extends BaseHelper {
45
45
  setPropertyMetadata(opts) {
46
46
  const { target, propertyName, metadata } = opts;
47
47
  let properties = this.getPropertiesMetadata({ target });
48
- if (!properties) {
49
- properties = new Map();
50
- }
48
+ properties ??= new Map();
51
49
  properties.set(propertyName, metadata);
52
50
  Reflect.defineMetadata(MetadataKeys.PROPERTIES, properties, target.constructor);
53
51
  }
@@ -62,7 +60,7 @@ export class MetadataRegistry extends BaseHelper {
62
60
  }
63
61
  setInjectMetadata(opts) {
64
62
  const { target, index, metadata } = opts;
65
- const injects = Reflect.getMetadata(MetadataKeys.INJECT, target) || [];
63
+ const injects = Reflect.getMetadata(MetadataKeys.INJECT, target) ?? [];
66
64
  injects[index] = metadata;
67
65
  Reflect.defineMetadata(MetadataKeys.INJECT, injects, target);
68
66
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/registry/registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@venizia/ignis-inversion",
3
- "version": "0.0.6",
3
+ "version": "0.1.0",
4
4
  "description": "Lightweight, high-performance Dependency Injection and Inversion of Control container for TypeScript (~350 lines). Features decorator-based constructor and property injection, fluent Binding API, singleton/transient scoping, namespace auto-tagging, Provider pattern, tag-based discovery, and reflect-metadata integration. Inspired by LoopBack 4 and InversifyJS but simpler. Zero framework lock-in — works standalone or with Ignis.",
5
5
  "keywords": [
6
6
  "architecture",
@@ -110,10 +110,10 @@
110
110
  "devDependencies": {
111
111
  "@types/bun": "^1.3.14",
112
112
  "@types/lodash": "^4.17.23",
113
- "@venizia/dev-configs": "^0.0.7",
114
- "eslint": "^10.4.0",
115
- "prettier": "^3.8.3",
116
- "tsc-alias": "^1.8.17",
113
+ "@venizia/dev-configs": "^0.1.0",
114
+ "eslint": "^10.7.0",
115
+ "prettier": "^3.9.5",
116
+ "tsc-alias": "^1.9.0",
117
117
  "typescript": "^6.0.3"
118
118
  }
119
119
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/common/keys.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;CAIxB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/common/keys.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;CAC3C,CAAC"}
@@ -1,89 +0,0 @@
1
- import { BaseHelper } from './common/base-helper';
2
- import { BindingValueTypes, IProvider, TBindingScope, TClass, TConstValue, TNullable } from './common/types';
3
- export declare class Binding<T = any> extends BaseHelper {
4
- key: string;
5
- private bindScope;
6
- private tags;
7
- private cached?;
8
- private resolver;
9
- constructor(opts: {
10
- key: string;
11
- });
12
- static bind<T = any>(opts: {
13
- key: string;
14
- }): Binding<T>;
15
- toClass(value: TClass<T>): this;
16
- toValue(value: T): this;
17
- toProvider(value: (<C extends Container>(container: C) => T) | TClass<IProvider<T>>): this;
18
- getBindingMeta(opts: {
19
- type: TConstValue<typeof BindingValueTypes>;
20
- }): T | TClass<T> | TClass<IProvider<T>> | (<C extends Container>(container: C) => T);
21
- setScope(scope: TBindingScope): this;
22
- setTags(...tags: string[]): this;
23
- hasTag(tag: string): boolean;
24
- getTags(): string[];
25
- getScope(): TBindingScope;
26
- getValue(container?: Container): T;
27
- clearCache(): void;
28
- }
29
- export declare class Container extends BaseHelper {
30
- protected bindings: Map<string | symbol, Binding<any>>;
31
- constructor(opts?: {
32
- scope: string;
33
- });
34
- getMetadataRegistry(): import("./registry").MetadataRegistry;
35
- bind<T>(opts: {
36
- key: string | symbol;
37
- }): Binding<T>;
38
- isBound(opts: {
39
- key: string | symbol;
40
- }): boolean;
41
- getBinding<T>(opts: {
42
- key: string | symbol | {
43
- namespace: string;
44
- key: string;
45
- };
46
- }): TNullable<Binding<T>>;
47
- unbind(opts: {
48
- key: string | symbol;
49
- }): boolean;
50
- set<T>(opts: {
51
- binding: Binding<T>;
52
- }): void;
53
- get<T>(opts: {
54
- key: string | symbol | {
55
- namespace: string;
56
- key: string;
57
- };
58
- isOptional?: false;
59
- }): T;
60
- get<T>(opts: {
61
- key: string | symbol | {
62
- namespace: string;
63
- key: string;
64
- };
65
- isOptional?: boolean;
66
- }): T | undefined;
67
- gets<T extends unknown[]>(opts: {
68
- bindings: {
69
- [K in keyof T]: {
70
- key: string | symbol | {
71
- namespace: string;
72
- key: string;
73
- };
74
- isOptional?: boolean;
75
- };
76
- };
77
- }): {
78
- [K in keyof T]: T[K] | undefined;
79
- };
80
- resolve<T>(cls: TClass<T>): T;
81
- instantiate<T>(cls: TClass<T>): T;
82
- findByTag<T = any>(opts: {
83
- tag: string;
84
- exclude?: Array<string> | Set<string>;
85
- }): Binding<T>[];
86
- clear(): void;
87
- reset(): void;
88
- }
89
- //# sourceMappingURL=container.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"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"}
@@ -1,245 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Container = exports.Binding = void 0;
4
- const app_error_1 = require("./common/app-error");
5
- const base_helper_1 = require("./common/base-helper");
6
- const types_1 = require("./common/types");
7
- const registry_1 = require("./registry");
8
- class Binding extends base_helper_1.BaseHelper {
9
- constructor(opts) {
10
- super({ scope: opts.key });
11
- this.bindScope = types_1.BindingScopes.TRANSIENT;
12
- this.tags = new Set([]);
13
- this.key = opts.key;
14
- const keyParts = this.key.split('.');
15
- if (keyParts.length > 1) {
16
- const [namespace] = keyParts;
17
- this.setTags(namespace);
18
- }
19
- }
20
- static bind(opts) {
21
- return new Binding(opts);
22
- }
23
- toClass(value) {
24
- this.resolver = { type: types_1.BindingValueTypes.CLASS, value };
25
- return this;
26
- }
27
- toValue(value) {
28
- this.resolver = { type: types_1.BindingValueTypes.VALUE, value };
29
- return this;
30
- }
31
- toProvider(value) {
32
- this.resolver = { type: types_1.BindingValueTypes.PROVIDER, value };
33
- return this;
34
- }
35
- getBindingMeta(opts) {
36
- if (this.resolver.type !== opts.type) {
37
- throw (0, app_error_1.getError)({
38
- message: `[getBindingMeta] Invalid resolver type, only ${this.resolver.type} is allowd | resolverType: ${this.resolver.type} | optType: ${opts.type}`,
39
- });
40
- }
41
- return this.resolver.value;
42
- }
43
- setScope(scope) {
44
- this.bindScope = scope;
45
- return this;
46
- }
47
- setTags(...tags) {
48
- tags.forEach(t => this.tags.add(t));
49
- return this;
50
- }
51
- hasTag(tag) {
52
- return this.tags.has(tag);
53
- }
54
- getTags() {
55
- return Array.from(this.tags);
56
- }
57
- getScope() {
58
- return this.bindScope;
59
- }
60
- getValue(container) {
61
- if (this.bindScope === types_1.BindingScopes.SINGLETON && this.cached !== undefined) {
62
- return this.cached;
63
- }
64
- let instance;
65
- const { type: resolverType } = this.resolver;
66
- switch (resolverType) {
67
- case types_1.BindingValueTypes.VALUE: {
68
- instance = this.resolver.value;
69
- break;
70
- }
71
- case types_1.BindingValueTypes.PROVIDER: {
72
- const provider = this.resolver.value;
73
- if (!container) {
74
- throw (0, app_error_1.getError)({
75
- message: `[getValue] Invalid context/container to get provider value | type: ${resolverType} | key: ${this.key}`,
76
- });
77
- }
78
- if (!(0, types_1.isClassProvider)(provider)) {
79
- instance = provider(container);
80
- break;
81
- }
82
- const p = container.instantiate(provider);
83
- instance = p.value(container);
84
- break;
85
- }
86
- case types_1.BindingValueTypes.CLASS: {
87
- if (!container) {
88
- throw (0, app_error_1.getError)({
89
- message: `[getValue] Invalid context/container to instantiate class | type: ${resolverType} | key: ${this.key}`,
90
- });
91
- }
92
- instance = container.instantiate(this.resolver.value);
93
- break;
94
- }
95
- default: {
96
- throw (0, app_error_1.getError)({
97
- message: `[getValue] Invalid value type | valueType: ${resolverType}`,
98
- });
99
- }
100
- }
101
- if (this.bindScope === types_1.BindingScopes.SINGLETON) {
102
- this.cached = instance;
103
- }
104
- return instance;
105
- }
106
- clearCache() {
107
- if (!this.cached) {
108
- return;
109
- }
110
- this.cached = undefined;
111
- }
112
- }
113
- exports.Binding = Binding;
114
- class Container extends base_helper_1.BaseHelper {
115
- constructor(opts) {
116
- super({ scope: opts?.scope ?? Container.name });
117
- this.bindings = new Map();
118
- }
119
- getMetadataRegistry() {
120
- return registry_1.metadataRegistry;
121
- }
122
- bind(opts) {
123
- const { key } = opts;
124
- const keyStr = String(key);
125
- const binding = new Binding({ key: keyStr });
126
- this.bindings.set(keyStr, binding);
127
- return binding;
128
- }
129
- isBound(opts) {
130
- const { key } = opts;
131
- const keyStr = String(key);
132
- return this.bindings.has(keyStr);
133
- }
134
- getBinding(opts) {
135
- let key;
136
- switch (typeof opts.key) {
137
- case 'string': {
138
- key = opts.key;
139
- break;
140
- }
141
- case 'symbol': {
142
- key = opts.key.toString();
143
- break;
144
- }
145
- case 'object': {
146
- key = types_1.BindingKeys.build(opts.key);
147
- break;
148
- }
149
- default: {
150
- throw (0, app_error_1.getError)({
151
- message: `[getBinding] Invalid binding key type | opts: ${opts.key} | allowed: [string, symbol, { namespace: string, key: string }]`,
152
- });
153
- }
154
- }
155
- const binding = this.bindings.get(key);
156
- return binding;
157
- }
158
- unbind(opts) {
159
- const key = String(opts.key);
160
- return this.bindings.delete(key);
161
- }
162
- set(opts) {
163
- const { binding } = opts;
164
- this.bindings.set(binding.key, binding);
165
- }
166
- get(opts) {
167
- const { key, isOptional = false } = opts;
168
- const binding = this.getBinding({ key });
169
- if (binding) {
170
- return binding.getValue(this);
171
- }
172
- if (!isOptional) {
173
- throw (0, app_error_1.getError)({
174
- message: `Binding key: ${opts.key.toString()} is not bounded in context!`,
175
- });
176
- }
177
- return undefined;
178
- }
179
- gets(opts) {
180
- return opts.bindings.map(opt => this.get({ ...opt, isOptional: true }));
181
- }
182
- resolve(cls) {
183
- return this.instantiate(cls);
184
- }
185
- instantiate(cls) {
186
- const registry = this.getMetadataRegistry();
187
- const injectMetadata = registry.getInjectMetadata({
188
- target: cls,
189
- });
190
- const args = [];
191
- if (injectMetadata?.length) {
192
- const sortedDeps = [...injectMetadata].sort((a, b) => a.index - b.index);
193
- for (const meta of sortedDeps) {
194
- const isOptional = meta.isOptional ?? false;
195
- const dep = this.get({ key: meta.key, isOptional });
196
- args[meta.index] = dep;
197
- }
198
- }
199
- const instance = new cls(...args);
200
- const propertyMetadata = registry.getPropertiesMetadata({
201
- target: instance,
202
- });
203
- if (!propertyMetadata?.size) {
204
- return instance;
205
- }
206
- const properties = propertyMetadata.entries();
207
- for (const [propertyKey, metadata] of properties) {
208
- const dep = this.get({
209
- key: metadata.bindingKey,
210
- isOptional: metadata.optional ?? false,
211
- });
212
- instance[propertyKey] = dep;
213
- }
214
- return instance;
215
- }
216
- findByTag(opts) {
217
- const { tag, exclude } = opts;
218
- const rs = [];
219
- for (const [_k, binding] of this.bindings) {
220
- if (!binding.hasTag(tag)) {
221
- continue;
222
- }
223
- if (exclude) {
224
- if (exclude instanceof Array && exclude.length > 0 && exclude.includes(binding.key)) {
225
- continue;
226
- }
227
- if (exclude instanceof Set && exclude.size > 0 && exclude.has(binding.key)) {
228
- continue;
229
- }
230
- }
231
- rs.push(binding);
232
- }
233
- return rs;
234
- }
235
- clear() {
236
- for (const [_, binding] of this.bindings) {
237
- binding.clearCache();
238
- }
239
- }
240
- reset() {
241
- this.bindings.clear();
242
- }
243
- }
244
- exports.Container = Container;
245
- //# sourceMappingURL=container.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"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"}