@nexus-ioc/core 0.6.1 → 0.7.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 (222) hide show
  1. package/README.md +731 -1
  2. package/dist/cjs/browser.js +2 -2
  3. package/dist/cjs/browser.js.map +1 -1
  4. package/dist/cjs/core/child-module.js +32 -0
  5. package/dist/cjs/core/child-module.js.map +1 -0
  6. package/dist/cjs/core/graph/analyze-lazy-module.js +54 -0
  7. package/dist/cjs/core/graph/analyze-lazy-module.js.map +1 -0
  8. package/dist/cjs/core/graph/analyze-module.js +11 -0
  9. package/dist/cjs/core/graph/analyze-module.js.map +1 -1
  10. package/dist/cjs/core/graph/module-graph.js +685 -70
  11. package/dist/cjs/core/graph/module-graph.js.map +1 -1
  12. package/dist/cjs/core/injection/injection-context.js +29 -0
  13. package/dist/cjs/core/injection/injection-context.js.map +1 -0
  14. package/dist/cjs/core/lazy-module-loader.js +41 -0
  15. package/dist/cjs/core/lazy-module-loader.js.map +1 -0
  16. package/dist/cjs/core/module-ref.js +84 -0
  17. package/dist/cjs/core/module-ref.js.map +1 -0
  18. package/dist/cjs/core/modules/container.js +305 -17
  19. package/dist/cjs/core/modules/container.js.map +1 -1
  20. package/dist/cjs/core/modules/module-container-factory.js +2 -2
  21. package/dist/cjs/core/modules/module-container-factory.js.map +1 -1
  22. package/dist/cjs/core/modules/module-container.js +54 -16
  23. package/dist/cjs/core/modules/module-container.js.map +1 -1
  24. package/dist/cjs/core/modules/module-token-factory.js.map +1 -1
  25. package/dist/cjs/core/modules/modules-container.js +43 -3
  26. package/dist/cjs/core/modules/modules-container.js.map +1 -1
  27. package/dist/cjs/core/nexus-applications.browser.js +57 -15
  28. package/dist/cjs/core/nexus-applications.browser.js.map +1 -1
  29. package/dist/cjs/core/nexus-applications.js +440 -82
  30. package/dist/cjs/core/nexus-applications.js.map +1 -1
  31. package/dist/cjs/core/nexus-applications.server.js +57 -15
  32. package/dist/cjs/core/nexus-applications.server.js.map +1 -1
  33. package/dist/cjs/core/resolver/providers-container.js.map +1 -1
  34. package/dist/cjs/core/resolver/resolution-context.js +62 -0
  35. package/dist/cjs/core/resolver/resolution-context.js.map +1 -0
  36. package/dist/cjs/core/resolver/resolver.js +523 -99
  37. package/dist/cjs/core/resolver/resolver.js.map +1 -1
  38. package/dist/cjs/decorators/inject.js +6 -3
  39. package/dist/cjs/decorators/inject.js.map +1 -1
  40. package/dist/cjs/decorators/injectable.js +0 -7
  41. package/dist/cjs/decorators/injectable.js.map +1 -1
  42. package/dist/cjs/decorators/{nsModule.js → module.js} +9 -7
  43. package/dist/cjs/decorators/module.js.map +1 -0
  44. package/dist/cjs/errors/bootstrap-error.js +47 -0
  45. package/dist/cjs/errors/bootstrap-error.js.map +1 -0
  46. package/dist/cjs/errors/child-errors.js +21 -0
  47. package/dist/cjs/errors/child-errors.js.map +1 -0
  48. package/dist/cjs/errors/index.js +24 -0
  49. package/dist/cjs/errors/index.js.map +1 -0
  50. package/dist/cjs/errors/injection-errors.js +25 -0
  51. package/dist/cjs/errors/injection-errors.js.map +1 -0
  52. package/dist/cjs/errors/lazy-module-errors.js +26 -0
  53. package/dist/cjs/errors/lazy-module-errors.js.map +1 -0
  54. package/dist/cjs/errors/provider-errors.js +95 -0
  55. package/dist/cjs/errors/provider-errors.js.map +1 -0
  56. package/dist/cjs/index.js +30 -6
  57. package/dist/cjs/index.js.map +1 -1
  58. package/dist/cjs/interfaces/index.js +1 -0
  59. package/dist/cjs/interfaces/index.js.map +1 -1
  60. package/dist/cjs/interfaces/modules/index.js +1 -0
  61. package/dist/cjs/interfaces/modules/index.js.map +1 -1
  62. package/dist/cjs/interfaces/modules/module-graph.interface.js +2 -0
  63. package/dist/cjs/interfaces/modules/module-graph.interface.js.map +1 -1
  64. package/dist/cjs/interfaces/modules/parent-link.interface.js +3 -0
  65. package/dist/cjs/interfaces/modules/parent-link.interface.js.map +1 -0
  66. package/dist/cjs/interfaces/on-module-destroy.interface.js +3 -0
  67. package/dist/cjs/interfaces/on-module-destroy.interface.js.map +1 -0
  68. package/dist/cjs/interfaces/scope.interface.js +2 -55
  69. package/dist/cjs/interfaces/scope.interface.js.map +1 -1
  70. package/dist/cjs/interfaces/validate-module-keys.js +2 -0
  71. package/dist/cjs/interfaces/validate-module-keys.js.map +1 -1
  72. package/dist/cjs/internal.js +9 -0
  73. package/dist/cjs/internal.js.map +1 -0
  74. package/dist/cjs/server.js +2 -2
  75. package/dist/cjs/server.js.map +1 -1
  76. package/dist/cjs/utils/forward-ref.js +14 -0
  77. package/dist/cjs/utils/forward-ref.js.map +1 -0
  78. package/dist/cjs/utils/helpers.js +14 -4
  79. package/dist/cjs/utils/helpers.js.map +1 -1
  80. package/dist/cjs/utils/lazy-module.js +33 -0
  81. package/dist/cjs/utils/lazy-module.js.map +1 -0
  82. package/dist/esm/browser.js +1 -1
  83. package/dist/esm/browser.js.map +1 -1
  84. package/dist/esm/core/child-module.js +29 -0
  85. package/dist/esm/core/child-module.js.map +1 -0
  86. package/dist/esm/core/graph/analyze-lazy-module.js +50 -0
  87. package/dist/esm/core/graph/analyze-lazy-module.js.map +1 -0
  88. package/dist/esm/core/graph/analyze-module.js +11 -0
  89. package/dist/esm/core/graph/analyze-module.js.map +1 -1
  90. package/dist/esm/core/graph/module-graph.js +686 -71
  91. package/dist/esm/core/graph/module-graph.js.map +1 -1
  92. package/dist/esm/core/injection/injection-context.js +25 -0
  93. package/dist/esm/core/injection/injection-context.js.map +1 -0
  94. package/dist/esm/core/lazy-module-loader.js +36 -0
  95. package/dist/esm/core/lazy-module-loader.js.map +1 -0
  96. package/dist/esm/core/module-ref.js +80 -0
  97. package/dist/esm/core/module-ref.js.map +1 -0
  98. package/dist/esm/core/modules/container.js +305 -17
  99. package/dist/esm/core/modules/container.js.map +1 -1
  100. package/dist/esm/core/modules/module-container-factory.js +2 -2
  101. package/dist/esm/core/modules/module-container-factory.js.map +1 -1
  102. package/dist/esm/core/modules/module-container.js +55 -17
  103. package/dist/esm/core/modules/module-container.js.map +1 -1
  104. package/dist/esm/core/modules/module-token-factory.js.map +1 -1
  105. package/dist/esm/core/modules/modules-container.js +43 -3
  106. package/dist/esm/core/modules/modules-container.js.map +1 -1
  107. package/dist/esm/core/nexus-applications.browser.js +55 -13
  108. package/dist/esm/core/nexus-applications.browser.js.map +1 -1
  109. package/dist/esm/core/nexus-applications.js +439 -81
  110. package/dist/esm/core/nexus-applications.js.map +1 -1
  111. package/dist/esm/core/nexus-applications.server.js +55 -13
  112. package/dist/esm/core/nexus-applications.server.js.map +1 -1
  113. package/dist/esm/core/resolver/providers-container.js.map +1 -1
  114. package/dist/esm/core/resolver/resolution-context.js +58 -0
  115. package/dist/esm/core/resolver/resolution-context.js.map +1 -0
  116. package/dist/esm/core/resolver/resolver.js +524 -100
  117. package/dist/esm/core/resolver/resolver.js.map +1 -1
  118. package/dist/esm/decorators/inject.js +6 -3
  119. package/dist/esm/decorators/inject.js.map +1 -1
  120. package/dist/esm/decorators/injectable.js +0 -7
  121. package/dist/esm/decorators/injectable.js.map +1 -1
  122. package/dist/esm/decorators/{nsModule.js → module.js} +8 -6
  123. package/dist/esm/decorators/module.js.map +1 -0
  124. package/dist/esm/errors/bootstrap-error.js +42 -0
  125. package/dist/esm/errors/bootstrap-error.js.map +1 -0
  126. package/dist/esm/errors/child-errors.js +17 -0
  127. package/dist/esm/errors/child-errors.js.map +1 -0
  128. package/dist/esm/errors/index.js +6 -0
  129. package/dist/esm/errors/index.js.map +1 -0
  130. package/dist/esm/errors/injection-errors.js +20 -0
  131. package/dist/esm/errors/injection-errors.js.map +1 -0
  132. package/dist/esm/errors/lazy-module-errors.js +21 -0
  133. package/dist/esm/errors/lazy-module-errors.js.map +1 -0
  134. package/dist/esm/errors/provider-errors.js +84 -0
  135. package/dist/esm/errors/provider-errors.js.map +1 -0
  136. package/dist/esm/index.js +9 -4
  137. package/dist/esm/index.js.map +1 -1
  138. package/dist/esm/interfaces/index.js +1 -0
  139. package/dist/esm/interfaces/index.js.map +1 -1
  140. package/dist/esm/interfaces/modules/index.js +1 -0
  141. package/dist/esm/interfaces/modules/index.js.map +1 -1
  142. package/dist/esm/interfaces/modules/module-graph.interface.js +2 -0
  143. package/dist/esm/interfaces/modules/module-graph.interface.js.map +1 -1
  144. package/dist/esm/interfaces/modules/parent-link.interface.js +2 -0
  145. package/dist/esm/interfaces/modules/parent-link.interface.js.map +1 -0
  146. package/dist/esm/interfaces/on-module-destroy.interface.js +2 -0
  147. package/dist/esm/interfaces/on-module-destroy.interface.js.map +1 -0
  148. package/dist/esm/interfaces/scope.interface.js +1 -55
  149. package/dist/esm/interfaces/scope.interface.js.map +1 -1
  150. package/dist/esm/interfaces/validate-module-keys.js +2 -0
  151. package/dist/esm/interfaces/validate-module-keys.js.map +1 -1
  152. package/dist/esm/internal.js +3 -0
  153. package/dist/esm/internal.js.map +1 -0
  154. package/dist/esm/server.js +1 -1
  155. package/dist/esm/server.js.map +1 -1
  156. package/dist/esm/utils/forward-ref.js +10 -0
  157. package/dist/esm/utils/forward-ref.js.map +1 -0
  158. package/dist/esm/utils/helpers.js +14 -4
  159. package/dist/esm/utils/helpers.js.map +1 -1
  160. package/dist/esm/utils/lazy-module.js +29 -0
  161. package/dist/esm/utils/lazy-module.js.map +1 -0
  162. package/dist/types/browser.d.ts +1 -1
  163. package/dist/types/core/child-module.d.ts +8 -0
  164. package/dist/types/core/graph/analyze-lazy-module.d.ts +28 -0
  165. package/dist/types/core/graph/analyze-module.d.ts +4 -2
  166. package/dist/types/core/graph/analyze-provider.d.ts +4 -4
  167. package/dist/types/core/graph/module-graph.d.ts +200 -7
  168. package/dist/types/core/graph/providers/analyze-class-provider.d.ts +1 -1
  169. package/dist/types/core/graph/providers/analyze-factory-provider.d.ts +2 -2
  170. package/dist/types/core/graph/providers/analyze-value-provider.d.ts +1 -1
  171. package/dist/types/core/injection/injection-context.d.ts +29 -0
  172. package/dist/types/core/lazy-module-loader.d.ts +17 -0
  173. package/dist/types/core/module-ref.d.ts +34 -0
  174. package/dist/types/core/modules/container.d.ts +134 -18
  175. package/dist/types/core/modules/module-container-factory.d.ts +3 -3
  176. package/dist/types/core/modules/module-container.d.ts +44 -5
  177. package/dist/types/core/modules/module-token-factory.d.ts +2 -2
  178. package/dist/types/core/modules/modules-container.d.ts +23 -4
  179. package/dist/types/core/nexus-applications.browser.d.ts +30 -8
  180. package/dist/types/core/nexus-applications.d.ts +219 -55
  181. package/dist/types/core/nexus-applications.server.d.ts +30 -8
  182. package/dist/types/core/resolver/providers-container.d.ts +2 -2
  183. package/dist/types/core/resolver/resolution-context.d.ts +22 -0
  184. package/dist/types/core/resolver/resolver.d.ts +122 -4
  185. package/dist/types/decorators/inject.d.ts +9 -5
  186. package/dist/types/decorators/injectable.d.ts +0 -7
  187. package/dist/types/decorators/{nsModule.d.ts → module.d.ts} +6 -5
  188. package/dist/types/errors/bootstrap-error.d.ts +6 -0
  189. package/dist/types/errors/child-errors.d.ts +10 -0
  190. package/dist/types/errors/index.d.ts +5 -0
  191. package/dist/types/errors/injection-errors.d.ts +11 -0
  192. package/dist/types/errors/lazy-module-errors.d.ts +12 -0
  193. package/dist/types/errors/provider-errors.d.ts +47 -0
  194. package/dist/types/index.d.ts +13 -4
  195. package/dist/types/interfaces/abstract.interface.d.ts +1 -3
  196. package/dist/types/interfaces/dynamic-module.interface.d.ts +7 -5
  197. package/dist/types/interfaces/index.d.ts +1 -0
  198. package/dist/types/interfaces/injection-token.interface.d.ts +1 -3
  199. package/dist/types/interfaces/module-metadata.interface.d.ts +12 -4
  200. package/dist/types/interfaces/module-types.interface.d.ts +21 -24
  201. package/dist/types/interfaces/modules/container.interface.d.ts +10 -4
  202. package/dist/types/interfaces/modules/index.d.ts +1 -0
  203. package/dist/types/interfaces/modules/module-container-factory.interface.d.ts +2 -2
  204. package/dist/types/interfaces/modules/module-graph.interface.d.ts +85 -12
  205. package/dist/types/interfaces/modules/module-token-factory.interface.d.ts +2 -2
  206. package/dist/types/interfaces/modules/modules-container.interface.d.ts +5 -4
  207. package/dist/types/interfaces/modules/parent-link.interface.d.ts +12 -0
  208. package/dist/types/interfaces/nexus-application.interface.d.ts +49 -6
  209. package/dist/types/interfaces/on-module-destroy.interface.d.ts +3 -0
  210. package/dist/types/interfaces/plugins/scanner-plugin.interface.d.ts +1 -1
  211. package/dist/types/interfaces/scope.interface.d.ts +1 -54
  212. package/dist/types/interfaces/validate-module-keys.d.ts +1 -0
  213. package/dist/types/internal.d.ts +3 -0
  214. package/dist/types/server.d.ts +1 -1
  215. package/dist/types/utils/forward-ref.d.ts +5 -0
  216. package/dist/types/utils/helpers.d.ts +8 -8
  217. package/dist/types/utils/lazy-module.d.ts +20 -0
  218. package/package.json +23 -7
  219. package/dist/cjs/decorators/nsModule.js.map +0 -1
  220. package/dist/esm/decorators/nsModule.js.map +0 -1
  221. package/dist/tsconfig.cjs.tsbuildinfo +0 -1
  222. package/dist/tsconfig.esm.tsbuildinfo +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"module-graph.js","sourceRoot":"","sources":["../../../../src/core/graph/module-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-graph.js","sourceRoot":"","sources":["../../../../src/core/graph/module-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withInjectionContext = withInjectionContext;
4
+ exports.inject = inject;
5
+ const injection_errors_1 = require("../../errors/injection-errors");
6
+ let current = null;
7
+ /**
8
+ * Runs `fn` with `ctx` as the current injection context (`null` = none)
9
+ * and restores the previous one afterwards, even if `fn` throws.
10
+ *
11
+ * @internal Not exported from the package entry point.
12
+ */
13
+ function withInjectionContext(ctx, fn) {
14
+ const previous = current;
15
+ current = ctx;
16
+ try {
17
+ return fn();
18
+ }
19
+ finally {
20
+ current = previous;
21
+ }
22
+ }
23
+ function inject(token, options = {}) {
24
+ if (!current) {
25
+ throw new injection_errors_1.InjectionContextError(token);
26
+ }
27
+ return current.inject(token, options);
28
+ }
29
+ //# sourceMappingURL=injection-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injection-context.js","sourceRoot":"","sources":["../../../../src/core/injection/injection-context.ts"],"names":[],"mappings":";;AAoBA,oDAWC;AAoBD,wBAQC;AA3DD,oEAAsE;AAYtE,IAAI,OAAO,GAA4B,IAAI,CAAC;AAE5C;;;;;GAKG;AACH,SAAgB,oBAAoB,CACnC,GAA4B,EAC5B,EAAW;IAEX,MAAM,QAAQ,GAAG,OAAO,CAAC;IACzB,OAAO,GAAG,GAAG,CAAC;IACd,IAAI,CAAC;QACJ,OAAO,EAAE,EAAE,CAAC;IACb,CAAC;YAAS,CAAC;QACV,OAAO,GAAG,QAAQ,CAAC;IACpB,CAAC;AACF,CAAC;AAoBD,SAAgB,MAAM,CACrB,KAAuB,EACvB,UAAyB,EAAE;IAE3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,wCAAqB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAkB,CAAC;AACxD,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LazyModuleLoader = void 0;
4
+ exports.createInternalModule = createInternalModule;
5
+ const tslib_1 = require("tslib");
6
+ require("reflect-metadata");
7
+ const global_1 = require("../decorators/global");
8
+ const module_1 = require("../decorators/module");
9
+ /**
10
+ * Built-in provider that lets any service load a lazy module on demand.
11
+ * Registered automatically by `NexusApplication`; inject it with
12
+ * `@Inject(LazyModuleLoader)`.
13
+ */
14
+ class LazyModuleLoader {
15
+ constructor(loadFn, unloadFn) {
16
+ this.loadFn = loadFn;
17
+ this.unloadFn = unloadFn;
18
+ }
19
+ load(lazyModule) {
20
+ return this.loadFn(lazyModule);
21
+ }
22
+ unload(ref) {
23
+ return this.unloadFn(ref);
24
+ }
25
+ }
26
+ exports.LazyModuleLoader = LazyModuleLoader;
27
+ let NexusInternalModule = class NexusInternalModule {
28
+ };
29
+ NexusInternalModule = tslib_1.__decorate([
30
+ (0, global_1.Global)(),
31
+ (0, module_1.Module)({})
32
+ ], NexusInternalModule);
33
+ /** Global module carrying the application's built-in providers. */
34
+ function createInternalModule(loader) {
35
+ return {
36
+ module: NexusInternalModule,
37
+ providers: [{ provide: LazyModuleLoader, useValue: loader }],
38
+ exports: [LazyModuleLoader],
39
+ };
40
+ }
41
+ //# sourceMappingURL=lazy-module-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-module-loader.js","sourceRoot":"","sources":["../../../src/core/lazy-module-loader.ts"],"names":[],"mappings":";;;AA+BA,oDAMC;;AArCD,4BAA0B;AAC1B,iDAA8C;AAC9C,iDAA8C;AAI9C;;;;GAIG;AACH,MAAa,gBAAgB;IAC5B,YACkB,MAAsD,EACtD,QAAmD;QADnD,WAAM,GAAN,MAAM,CAAgD;QACtD,aAAQ,GAAR,QAAQ,CAA2C;IAClE,CAAC;IAEG,IAAI,CAAC,UAAsB;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,GAAc;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;CACD;AAbD,4CAaC;AAID,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,mBAAmB;IAFxB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACL,mBAAmB,CAAG;AAE5B,mEAAmE;AACnE,SAAgB,oBAAoB,CAAC,MAAwB;IAC5D,OAAO;QACN,MAAM,EAAE,mBAAmB;QAC3B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC5D,OAAO,EAAE,CAAC,gBAAgB,CAAC;KAC3B,CAAC;AACH,CAAC"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModuleRef = void 0;
4
+ const shared_1 = require("@nexus-ioc/shared");
5
+ const errors_1 = require("../errors");
6
+ const helpers_1 = require("../utils/helpers");
7
+ /**
8
+ * Handle to a lazily loaded module. Providers physically live in the
9
+ * application's single container; `get()` and `resolve()` only scope what is
10
+ * visible. `get()` is synchronous and returns already-created singletons;
11
+ * `resolve()` is async and creates transient/scoped/uncreated providers on demand.
12
+ */
13
+ class ModuleRef {
14
+ constructor(container, segment) {
15
+ this.container = container;
16
+ this.segment = segment;
17
+ this._loaded = true;
18
+ }
19
+ get name() {
20
+ return this.segment.lazyModule.name;
21
+ }
22
+ get module() {
23
+ const metatype = this.segment.moduleContainer.metatype;
24
+ return (0, helpers_1.isDynamicModule)(metatype) ? metatype.module : metatype;
25
+ }
26
+ /** `false` once `unload()` has run; a later `load()` of the same ref
27
+ * returns a new `ModuleRef` instead of reactivating this one. */
28
+ get loaded() {
29
+ return this._loaded;
30
+ }
31
+ get(token, options = {}) {
32
+ if (!this.canSee(token, options)) {
33
+ return undefined;
34
+ }
35
+ return this.container.get(token);
36
+ }
37
+ async resolve(token, options = {}) {
38
+ if (!this.canSee(token, options)) {
39
+ return undefined;
40
+ }
41
+ return this.container.resolve(token);
42
+ }
43
+ canSee(token, options) {
44
+ if (!this._loaded) {
45
+ return false;
46
+ }
47
+ if (!this.container.hasProvider(token)) {
48
+ return false;
49
+ }
50
+ const strict = options.strict ?? true;
51
+ return (!strict ||
52
+ this.container.graph.isProviderVisible(this.segment.moduleContainer, token));
53
+ }
54
+ /**
55
+ * Unloads this segment: destroys every singleton and module nothing else
56
+ * still needs. A no-op if already unloaded.
57
+ */
58
+ async unload() {
59
+ if (!this._loaded) {
60
+ return {
61
+ destroyedModules: [],
62
+ destroyedProviders: [],
63
+ closedChildren: 0,
64
+ };
65
+ }
66
+ try {
67
+ const result = await this.container.unload(this.segment.lazyModule);
68
+ this._loaded = false;
69
+ return result;
70
+ }
71
+ catch (error) {
72
+ // A closed or not-compiled container refuses before unloading
73
+ // anything. Any other failure (an onModuleDestroy hook, a child's
74
+ // close) comes after the segment was dropped, so it is unloaded.
75
+ if (!(error instanceof errors_1.ContainerClosedError) &&
76
+ !(error instanceof shared_1.ContainerNotCompiledError)) {
77
+ this._loaded = false;
78
+ }
79
+ throw error;
80
+ }
81
+ }
82
+ }
83
+ exports.ModuleRef = ModuleRef;
84
+ //# sourceMappingURL=module-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-ref.js","sourceRoot":"","sources":["../../../src/core/module-ref.ts"],"names":[],"mappings":";;;AAAA,8CAA8D;AAC9D,sCAAiD;AAQjD,8CAAmD;AAWnD;;;;;GAKG;AACH,MAAa,SAAS;IAGrB,YACkB,SAA6B,EAC7B,OAAqB;QADrB,cAAS,GAAT,SAAS,CAAoB;QAC7B,YAAO,GAAP,OAAO,CAAc;QAJ/B,YAAO,GAAG,IAAI,CAAC;IAKpB,CAAC;IAEJ,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,IAAW,MAAM;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC;QACvD,OAAO,IAAA,yBAAe,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/D,CAAC;IAED;qEACiE;IACjE,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAEM,GAAG,CACT,KAAuB,EACvB,UAA+B,EAAE;QAEjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAI,KAAK,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,OAAO,CACnB,KAAuB,EACvB,UAA+B,EAAE;QAEjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAI,KAAK,CAAC,CAAC;IACzC,CAAC;IAEO,MAAM,CAAC,KAAoB,EAAE,OAA4B;QAChE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;QACtC,OAAO,CACN,CAAC,MAAM;YACP,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CACrC,IAAI,CAAC,OAAO,CAAC,eAAe,EAC5B,KAAK,CACL,CACD,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAM;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO;gBACN,gBAAgB,EAAE,EAAE;gBACpB,kBAAkB,EAAE,EAAE;gBACtB,cAAc,EAAE,CAAC;aACjB,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO,MAAM,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,8DAA8D;YAC9D,kEAAkE;YAClE,iEAAiE;YACjE,IACC,CAAC,CAAC,KAAK,YAAY,6BAAoB,CAAC;gBACxC,CAAC,CAAC,KAAK,YAAY,kCAAyB,CAAC,EAC5C,CAAC;gBACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACtB,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;CACD;AA1FD,8BA0FC"}
@@ -1,9 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Container = void 0;
4
+ require("reflect-metadata");
5
+ const shared_1 = require("@nexus-ioc/shared");
6
+ const errors_1 = require("../../errors");
7
+ const interfaces_1 = require("../../interfaces");
8
+ const helpers_1 = require("../../utils/helpers");
4
9
  const module_graph_1 = require("../graph/module-graph");
5
10
  const resolver_1 = require("../resolver/resolver");
6
11
  const modules_container_1 = require("./modules-container");
12
+ function errorList(error) {
13
+ return error instanceof AggregateError ? [...error.errors] : [error];
14
+ }
7
15
  /**
8
16
  * Container is the core IoC (Inversion of Control) container that manages
9
17
  * modules, providers, and dependency injection.
@@ -18,7 +26,7 @@ const modules_container_1 = require("./modules-container");
18
26
  * ```typescript
19
27
  * const container = new Container(hashUtils);
20
28
  * await container.run(AppModule);
21
- * const service = await container.get(MyService);
29
+ * const service = container.get(MyService);
22
30
  * ```
23
31
  */
24
32
  class Container {
@@ -32,6 +40,23 @@ class Container {
32
40
  this.modulesContainer = new modules_container_1.ModulesContainer(this.hashUtils, this);
33
41
  this._graph = null;
34
42
  this.moduleGraphResolver = null;
43
+ /** The parent chain of a child container; kept for runtime resolution. */
44
+ this.link = null;
45
+ this.closed = false;
46
+ this.segments = new Map();
47
+ /**
48
+ * Root module token of every currently loaded segment, by ref id. Used
49
+ * to compute `protectedRoots` for `unload`; set once a segment's
50
+ * compile succeeds, cleared once it is unloaded.
51
+ */
52
+ this.loadedSegments = new Map();
53
+ /**
54
+ * Tail of the segment compilation chain. Loader functions run in parallel,
55
+ * but the graph mutation that follows each of them runs one at a time.
56
+ */
57
+ this.compileQueue = Promise.resolve();
58
+ /** See `onUnloading`. */
59
+ this.unloadingHook = null;
35
60
  }
36
61
  /**
37
62
  * Adds a module to the container.
@@ -85,26 +110,83 @@ class Container {
85
110
  return this.modulesContainer.getModule(module);
86
111
  }
87
112
  /**
88
- * Resolves and returns an instance of a provider by its injection token.
113
+ * True iff the graph has a provider node for the token.
114
+ */
115
+ hasProvider(token) {
116
+ return this._graph?.getNode(token)?.type === interfaces_1.NodeTypeEnum.PROVIDER;
117
+ }
118
+ /**
119
+ * Synchronously returns an already-created singleton.
89
120
  *
90
- * This is the main method for retrieving dependencies from the container.
91
- * The instance is created according to its scope:
92
- * - Singleton: Same instance returned every time
93
- * - Request: New instance for each get() call
94
- * - Transient: New instance every time, even within the same dependency tree
121
+ * @throws {ProviderNotFoundError} If no provider has this token
122
+ * @throws {ProviderScopeError} If the provider is Transient
123
+ * @throws {ProviderNotInstantiatedError} If the singleton is not created yet
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * await container.run(AppModule);
128
+ * const userService = container.get(UserService);
129
+ * ```
130
+ */
131
+ get(token) {
132
+ this.assertOpen();
133
+ if (!this._graph || !this.moduleGraphResolver) {
134
+ throw new shared_1.ContainerNotCompiledError();
135
+ }
136
+ const node = this._graph.getNode(token);
137
+ if (!node || node.type !== interfaces_1.NodeTypeEnum.PROVIDER) {
138
+ throw new errors_1.ProviderNotFoundError(token);
139
+ }
140
+ if (node.scope !== interfaces_1.Scope.Singleton) {
141
+ throw new errors_1.ProviderScopeError(token, node.scope);
142
+ }
143
+ const cached = this.moduleGraphResolver.getInstantiated(token);
144
+ if (!cached.found) {
145
+ throw new errors_1.ProviderNotInstantiatedError(token);
146
+ }
147
+ return cached.instance;
148
+ }
149
+ /**
150
+ * Resolves an instance of a provider, creating it according to its scope.
95
151
  *
96
- * @template T - The type of the provider to resolve
97
- * @param token - The injection token (class, string, or symbol)
98
- * @returns A promise that resolves to the provider instance, or undefined if not found
152
+ * @throws {ProviderNotFoundError} If no provider has this token
99
153
  *
100
154
  * @example
101
155
  * ```typescript
102
- * const userService = await container.get(UserService);
103
- * const config = await container.get('CONFIG');
156
+ * const userService = await container.resolve(UserService);
104
157
  * ```
105
158
  */
106
- async get(token) {
107
- return this.moduleGraphResolver?.resolveProvider(token);
159
+ async resolve(token) {
160
+ this.assertOpen();
161
+ if (!this._graph || !this.moduleGraphResolver) {
162
+ throw new shared_1.ContainerNotCompiledError();
163
+ }
164
+ if (!this.hasProvider(token)) {
165
+ throw new errors_1.ProviderNotFoundError(token);
166
+ }
167
+ return (await this.moduleGraphResolver.resolveProvider(token));
168
+ }
169
+ /**
170
+ * Pre-instantiates every singleton provider named by `tokens` (other
171
+ * tokens are skipped). Uses the resolver directly, without the closed
172
+ * guard, so a load that was already in flight when `close()` started can
173
+ * still finish its warm-up; those singletons are destroyed by the
174
+ * teardown that follows.
175
+ *
176
+ * @throws {ContainerNotCompiledError} If run() has not been called yet
177
+ */
178
+ async instantiateSingletons(tokens) {
179
+ if (!this._graph || !this.moduleGraphResolver) {
180
+ throw new shared_1.ContainerNotCompiledError();
181
+ }
182
+ for (const token of tokens) {
183
+ const node = this._graph.getNode(token);
184
+ if (node &&
185
+ node.type === interfaces_1.NodeTypeEnum.PROVIDER &&
186
+ node.scope === interfaces_1.Scope.Singleton) {
187
+ await this.moduleGraphResolver.resolveProvider(token);
188
+ }
189
+ }
108
190
  }
109
191
  /**
110
192
  * Initializes and runs the container with the specified root module.
@@ -118,6 +200,10 @@ class Container {
118
200
  * This method must be called before using get() to resolve dependencies.
119
201
  *
120
202
  * @param rootModule - The root module of the application
203
+ * @param internalModules - Framework-provided global modules compiled before
204
+ * the user root, so their exports are visible to every user module
205
+ * @param options.link - The parent chain of a child container. Dependencies
206
+ * not visible locally but provided by the link compile as external edges.
121
207
  * @returns A promise that resolves when initialization is complete
122
208
  * @throws {Error} If there are circular dependencies or missing providers
123
209
  *
@@ -128,12 +214,177 @@ class Container {
128
214
  * // Now you can use container.get() to resolve dependencies
129
215
  * ```
130
216
  */
131
- async run(rootModule) {
217
+ async run(rootModule, internalModules = [], options = {}) {
132
218
  const root = await this.modulesContainer.addModule(rootModule);
133
- this._graph = new module_graph_1.ModuleGraph(root);
134
- this.moduleGraphResolver = new resolver_1.Resolver(this._graph);
219
+ const internals = await Promise.all(internalModules.map((module) => this.modulesContainer.addModule(module)));
220
+ this.link = options.link ?? null;
221
+ const link = this.link;
222
+ this._graph = new module_graph_1.ModuleGraph(root, internals, link ? { externalLookup: (token) => link.canProvide(token) } : {});
223
+ this.moduleGraphResolver = new resolver_1.Resolver(this._graph, link);
224
+ if (this.closed) {
225
+ // close() ran before there was a resolver to close: nothing may be
226
+ // created from here on (a warm-up would otherwise outlive it).
227
+ this.moduleGraphResolver.markClosed();
228
+ }
135
229
  await this._graph.compile();
136
230
  }
231
+ /**
232
+ * Loads a lazy module into this container: runs its loader, registers the
233
+ * module and compiles only the new part of the graph. Idempotent per ref;
234
+ * concurrent calls share one in-flight load. A failed load is not cached,
235
+ * so the caller may retry.
236
+ *
237
+ * @param lazyModule - The lazy module reference, created via `lazy()`
238
+ * @returns A promise that resolves to the graph segment added by this load
239
+ * @throws {ContainerNotCompiledError} If run() has not been called yet
240
+ * @throws {LazyModuleLoadError} If the loader rejects or does not return a @Module() class
241
+ * @throws {LazyModuleGraphError} If the loaded module fails to compile
242
+ */
243
+ async load(lazyModule) {
244
+ this.assertOpen();
245
+ if (!this._graph) {
246
+ throw new shared_1.ContainerNotCompiledError();
247
+ }
248
+ const inFlight = this.segments.get(lazyModule.id);
249
+ if (inFlight) {
250
+ return inFlight;
251
+ }
252
+ const loading = this.loadSegment(lazyModule).catch((error) => {
253
+ this.segments.delete(lazyModule.id);
254
+ throw error;
255
+ });
256
+ this.segments.set(lazyModule.id, loading);
257
+ return loading;
258
+ }
259
+ /**
260
+ * Runs `fn` after every previously enqueued task has settled, so segment
261
+ * registration and compilation never interleave. A rejected task does not
262
+ * break the chain for the tasks behind it.
263
+ */
264
+ enqueueCompile(fn) {
265
+ const run = this.compileQueue.then(fn, fn);
266
+ this.compileQueue = run.then(() => undefined, () => undefined);
267
+ return run;
268
+ }
269
+ async loadSegment(lazyModule) {
270
+ let loaded;
271
+ try {
272
+ loaded = await lazyModule.load();
273
+ }
274
+ catch (error) {
275
+ throw new errors_1.LazyModuleLoadError(lazyModule.name, error instanceof Error ? error.message : String(error));
276
+ }
277
+ const metatype = loaded && (0, helpers_1.isDynamicModule)(loaded) ? loaded.module : loaded;
278
+ if (typeof metatype !== "function" ||
279
+ !Reflect.hasMetadata(interfaces_1.MODULE_WATERMARK, metatype)) {
280
+ throw new errors_1.LazyModuleLoadError(lazyModule.name, "loader did not return a class decorated with @Module()");
281
+ }
282
+ const segment = await this.enqueueCompile(async () => {
283
+ const moduleContainer = await this.modulesContainer.addModule(loaded);
284
+ const compiled = await this.graph.compileSegment(moduleContainer, lazyModule);
285
+ if (compiled.errors.length === 0) {
286
+ this.loadedSegments.set(lazyModule.id, compiled.moduleContainer.token);
287
+ }
288
+ return compiled;
289
+ });
290
+ if (segment.errors.length > 0) {
291
+ throw new errors_1.LazyModuleGraphError(lazyModule.name, segment.errors);
292
+ }
293
+ return segment;
294
+ }
295
+ /**
296
+ * Unloads a previously loaded lazy segment: destroys every singleton and
297
+ * module nothing else still needs, and leaves the rest untouched (a
298
+ * shared module, a `@Global()` module another segment depends on, a
299
+ * nested lazy module loaded from inside this one). Runs on the same
300
+ * compile queue as `load`, so it never interleaves with a concurrent
301
+ * load or unload of a different ref. Waits for an in-flight load of the
302
+ * same ref to settle first. A ref that was never loaded is a no-op.
303
+ * Concurrent `unload()` calls for the *same* ref are also safe, but only
304
+ * because `ModuleGraph.unloadSegment` is idempotent (a second call
305
+ * against an already-unloaded placeholder is a no-op) — `Container.unload`
306
+ * itself does not enforce this, so a future change to `unloadSegment`
307
+ * must preserve that idempotency or this guarantee silently breaks.
308
+ */
309
+ async unload(lazyModule) {
310
+ this.assertOpen();
311
+ if (!this._graph) {
312
+ throw new shared_1.ContainerNotCompiledError();
313
+ }
314
+ const inFlight = this.segments.get(lazyModule.id);
315
+ if (!inFlight) {
316
+ return {
317
+ destroyedModules: [],
318
+ destroyedProviders: [],
319
+ closedChildren: 0,
320
+ };
321
+ }
322
+ await inFlight.catch(() => undefined);
323
+ if (!this.loadedSegments.has(lazyModule.id)) {
324
+ return {
325
+ destroyedModules: [],
326
+ destroyedProviders: [],
327
+ closedChildren: 0,
328
+ };
329
+ }
330
+ return this.enqueueCompile(async () => {
331
+ const protectedRoots = new Set([
332
+ this.graph.rootToken,
333
+ ...this.graph.internalRootTokens,
334
+ ...[...this.loadedSegments.entries()]
335
+ .filter(([id]) => id !== lazyModule.id)
336
+ .map(([, token]) => token),
337
+ ]);
338
+ const result = this.graph.unloadSegment(lazyModule, protectedRoots);
339
+ // The graph has dropped the segment, so whatever fails below, the
340
+ // container forgets it too (see the finally); otherwise the ref
341
+ // could never be loaded again.
342
+ try {
343
+ // Children declared by a destroyed module go first, while the
344
+ // providers they hold through their link are still alive. Their
345
+ // failures are reported after the unload has finished.
346
+ let closedChildren = 0;
347
+ let childFailure;
348
+ if (this.unloadingHook && result.destroyedModules.length > 0) {
349
+ const closing = await this.unloadingHook(result.destroyedModules);
350
+ closedChildren = closing.closed;
351
+ childFailure = closing.error;
352
+ }
353
+ try {
354
+ // Runs every hook and empties the cache even if some throw.
355
+ await this.moduleGraphResolver?.destroy(result.destroyedProviders);
356
+ }
357
+ catch (error) {
358
+ if (childFailure === undefined) {
359
+ throw error;
360
+ }
361
+ // Neither failure is dropped.
362
+ throw new AggregateError([...errorList(childFailure), ...errorList(error)], "Unloading failed: child applications and onModuleDestroy hooks");
363
+ }
364
+ if (childFailure !== undefined) {
365
+ throw childFailure;
366
+ }
367
+ return { ...result, closedChildren };
368
+ }
369
+ finally {
370
+ for (const moduleToken of result.destroyedModules) {
371
+ this.modulesContainer.removeModule(moduleToken);
372
+ }
373
+ this.segments.delete(lazyModule.id);
374
+ this.loadedSegments.delete(lazyModule.id);
375
+ }
376
+ });
377
+ }
378
+ /**
379
+ * Registers the hook `unload` calls once the graph has dropped a segment
380
+ * and before that segment's providers are destroyed, with the tokens of
381
+ * the modules being destroyed. The application closes the child
382
+ * applications those modules declared there. One hook per container; a
383
+ * later call replaces it.
384
+ */
385
+ onUnloading(hook) {
386
+ this.unloadingHook = hook;
387
+ }
137
388
  /**
138
389
  * Gets the dependency graph.
139
390
  *
@@ -177,6 +428,43 @@ class Container {
177
428
  get errors() {
178
429
  return this.graph.errors;
179
430
  }
431
+ /** Whether run() has built the graph, so get()/resolve() can be used. */
432
+ get isCompiled() {
433
+ return this._graph !== null && this.moduleGraphResolver !== null;
434
+ }
435
+ /** Whether the container has been closed (or is closing). */
436
+ get isClosed() {
437
+ return this.closed;
438
+ }
439
+ assertOpen() {
440
+ if (this.closed) {
441
+ throw new errors_1.ContainerClosedError();
442
+ }
443
+ }
444
+ /**
445
+ * Synchronously marks the container closed: every later public
446
+ * `get`/`resolve`/`load`/`unload` call throws `ContainerClosedError`.
447
+ * Work already in flight (a load past its guard, its singleton warm-up)
448
+ * is not interrupted. `close()` calls this too; callers that need the
449
+ * flag set before they drain their own work call it first.
450
+ */
451
+ markClosed() {
452
+ this.closed = true;
453
+ }
454
+ /**
455
+ * Closes the container and cleans up resources: marks it closed, waits
456
+ * for in-flight segment loads, then destroys every created provider on
457
+ * the compile queue.
458
+ *
459
+ * @returns A promise that resolves when the container is closed
460
+ */
461
+ async close() {
462
+ this.markClosed();
463
+ await Promise.all([...this.segments.values()].map((segment) => segment.catch(() => undefined)));
464
+ await this.enqueueCompile(async () => {
465
+ await this.moduleGraphResolver?.close();
466
+ });
467
+ }
180
468
  }
181
469
  exports.Container = Container;
182
470
  //# sourceMappingURL=container.js.map