@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":"container.js","sourceRoot":"","sources":["../../../../src/core/modules/container.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,SAAS;IASrB;;;;OAIG;IACH,YAA6B,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;QAbxC,qBAAgB,GAAG,IAAI,gBAAgB,CACvD,IAAI,CAAC,SAAS,EACd,IAAI,CACJ,CAAC;QAEM,WAAM,GAAgC,IAAI,CAAC;QAC3C,wBAAmB,GAAoB,IAAI,CAAC;IAOQ,CAAC;IAE7D;;;;;;;;;;;;;;;OAeG;IACI,KAAK,CAAC,SAAS,CACrB,MAA8B;QAE9B,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACI,KAAK,CAAC,aAAa,CACzB,eAAuB,EACvB,SAAiB;QAEjB,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAC/C,eAAe,EACf,SAAS,CACT,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,SAAS,CACrB,MAAc;QAEd,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,KAAK,CAAC,GAAG,CAAI,KAAqB;QACxC,OAAO,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAI,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,KAAK,CAAC,GAAG,CAAC,UAAkB;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE/D,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,IAAW,KAAK;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACd,yEAAyE,CACzE,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC1B,CAAC;CACD"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/core/modules/container.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,8 @@ export class ModuleContainerFactory {
5
5
  constructor(moduleTokenFactory) {
6
6
  this.moduleTokenFactory = moduleTokenFactory;
7
7
  }
8
- async create(module, container) {
9
- const moduleContainer = new ModuleContainer(module, container);
8
+ async create(module, container, resolveReplacement) {
9
+ const moduleContainer = new ModuleContainer(module, container, resolveReplacement);
10
10
  moduleContainer.token = await this.getModuleToken(module);
11
11
  Reflect.defineMetadata(MODULE_TOKEN_WATERMARK, moduleContainer.token, module);
12
12
  return moduleContainer;
@@ -1 +1 @@
1
- {"version":3,"file":"module-container-factory.js","sourceRoot":"","sources":["../../../../src/core/modules/module-container-factory.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAS1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,sBAAsB;IAClC,YACkB,kBAA+C;QAA/C,uBAAkB,GAAlB,kBAAkB,CAA6B;IAC9D,CAAC;IAEG,KAAK,CAAC,MAAM,CAClB,MAA8B,EAC9B,SAAiC;QAEjC,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE/D,eAAe,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE1D,OAAO,CAAC,cAAc,CACrB,sBAAsB,EACtB,eAAe,CAAC,KAAK,EACrB,MAAM,CACN,CAAC;QAEF,OAAO,eAAe,CAAC;IACxB,CAAC;IAEM,cAAc,CAAC,MAA8B;QACnD,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,yBAAyB,CACrC,MAAgC;QAEhC,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;CACD"}
1
+ {"version":3,"file":"module-container-factory.js","sourceRoot":"","sources":["../../../../src/core/modules/module-container-factory.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAS1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,sBAAsB;IAClC,YACkB,kBAA+C;QAA/C,uBAAkB,GAAlB,kBAAkB,CAA6B;IAC9D,CAAC;IAEG,KAAK,CAAC,MAAM,CAClB,MAA4B,EAC5B,SAAiC,EACjC,kBAA2C;QAE3C,MAAM,eAAe,GAAG,IAAI,eAAe,CAC1C,MAAM,EACN,SAAS,EACT,kBAAkB,CAClB,CAAC;QAEF,eAAe,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE1D,OAAO,CAAC,cAAc,CACrB,sBAAsB,EACtB,eAAe,CAAC,KAAK,EACrB,MAAM,CACN,CAAC;QAEF,OAAO,eAAe,CAAC;IACxB,CAAC;IAEM,cAAc,CAAC,MAA4B;QACjD,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,yBAAyB,CACrC,MAAgC;QAEhC,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;CACD"}
@@ -1,10 +1,13 @@
1
1
  import "reflect-metadata";
2
- import { MODULE_METADATA } from "../../interfaces/index.js";
2
+ import { ProviderNotFoundError } from "../../errors/index.js";
3
+ import { MODULE_METADATA, MODULE_WATERMARK } from "../../interfaces/index.js";
3
4
  import { isDynamicModule } from "../../utils/helpers.js";
5
+ import { isLazyModule } from "../../utils/lazy-module.js";
4
6
  export class ModuleContainer {
5
- constructor(_metatype, container) {
7
+ constructor(_metatype, container, resolveReplacement = (module) => module) {
6
8
  this._metatype = _metatype;
7
9
  this.container = container;
10
+ this.resolveReplacement = resolveReplacement;
8
11
  this._token = "";
9
12
  }
10
13
  get token() {
@@ -16,26 +19,41 @@ export class ModuleContainer {
16
19
  get metatype() {
17
20
  return this._metatype;
18
21
  }
19
- get imports() {
20
- let modules;
22
+ get declaredImports() {
21
23
  if (isDynamicModule(this.metatype)) {
22
- modules = this.metatype.imports || [];
23
- }
24
- else {
25
- modules =
26
- Reflect.getMetadata(MODULE_METADATA.IMPORTS, this.metatype) || [];
24
+ return this.metatype.imports || [];
27
25
  }
26
+ return Reflect.getMetadata(MODULE_METADATA.IMPORTS, this.metatype) || [];
27
+ }
28
+ get resolvedImports() {
29
+ return this._resolvedImports;
30
+ }
31
+ get imports() {
32
+ const modules = this.declaredImports.filter((item) => !isLazyModule(item));
28
33
  const self = this;
29
34
  return new Promise((resolved) => {
30
35
  async function run() {
31
- const imports = await Promise.all(modules.map((item) => {
32
- return self.container.addModule(item);
33
- }));
36
+ const imports = await Promise.all(modules.map((item) => self.container.addModule(item)));
37
+ self._resolvedImports = imports;
34
38
  resolved(imports);
35
39
  }
36
40
  run();
37
41
  });
38
42
  }
43
+ get lazyImports() {
44
+ return this.declaredImports.filter(isLazyModule);
45
+ }
46
+ /**
47
+ * Children declared by the module class's `@Module` decorator. A dynamic
48
+ * module literal cannot declare children, but one built from a class that
49
+ * declares them (`forX()`, extra child providers) keeps them.
50
+ */
51
+ get children() {
52
+ const target = isDynamicModule(this.metatype)
53
+ ? this.metatype.module
54
+ : this.metatype;
55
+ return Reflect.getMetadata(MODULE_METADATA.CHILDREN, target) || [];
56
+ }
39
57
  get providers() {
40
58
  if (isDynamicModule(this.metatype)) {
41
59
  return this.metatype.providers || [];
@@ -43,14 +61,34 @@ export class ModuleContainer {
43
61
  return Reflect.getMetadata(MODULE_METADATA.PROVIDERS, this.metatype) || [];
44
62
  }
45
63
  get exports() {
46
- if (isDynamicModule(this.metatype)) {
47
- return this.metatype.exports || [];
48
- }
49
- return Reflect.getMetadata(MODULE_METADATA.EXPORTS, this.metatype) || [];
64
+ const exported = isDynamicModule(this.metatype)
65
+ ? this.metatype.exports || []
66
+ : Reflect.getMetadata(MODULE_METADATA.EXPORTS, this.metatype) || [];
67
+ // A re-exported module class that was replaced (`replaceModule`) is
68
+ // exported as its replacement, which is the module registered instead.
69
+ return exported.map((token) => typeof token === "function" &&
70
+ Reflect.hasMetadata(MODULE_WATERMARK, token)
71
+ ? this.resolveReplacement(token)
72
+ : token);
50
73
  }
51
- get(token) {
74
+ get(token, options = {}) {
75
+ if (!this.container.hasProvider(token)) {
76
+ if (options.optional) {
77
+ return undefined;
78
+ }
79
+ throw new ProviderNotFoundError(token);
80
+ }
52
81
  return this.container.get(token);
53
82
  }
83
+ async resolve(token, options = {}) {
84
+ if (!this.container.hasProvider(token)) {
85
+ if (options.optional) {
86
+ return undefined;
87
+ }
88
+ throw new ProviderNotFoundError(token);
89
+ }
90
+ return this.container.resolve(token);
91
+ }
54
92
  get errors() {
55
93
  return this.container.errors;
56
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module-container.js","sourceRoot":"","sources":["../../../../src/core/modules/module-container.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAS1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,OAAO,eAAe;IAG3B,YACkB,SAAiC,EACjC,SAAiC;QADjC,cAAS,GAAT,SAAS,CAAwB;QACjC,cAAS,GAAT,SAAS,CAAwB;QAJ3C,WAAM,GAAG,EAAE,CAAC;IAKjB,CAAC;IAEJ,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAW,KAAK,CAAC,KAAa;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAW,OAAO;QACjB,IAAI,OAAmC,CAAC;QACxC,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,OAAO;gBACN,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpE,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAA6B,CAAC,QAAQ,EAAE,EAAE;YAC3D,KAAK,UAAU,GAAG;gBACjB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,OAAO,CAAC,GAAG,CAAC,CAAC,IAA4B,EAAE,EAAE;oBAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvC,CAAC,CAAC,CACF,CAAC;gBAEF,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;YAED,GAAG,EAAE,CAAC;QACP,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAW,SAAS;QACnB,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;QACtC,CAAC;QAED,OAAO,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5E,CAAC;IAED,IAAW,OAAO;QACjB,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1E,CAAC;IAEM,GAAG,CAAI,KAAqB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC9B,CAAC;CACD"}
1
+ {"version":3,"file":"module-container.js","sourceRoot":"","sources":["../../../../src/core/modules/module-container.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"module-token-factory.js","sourceRoot":"","sources":["../../../../src/core/modules/module-token-factory.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,OAAO,kBAAkB;IAQ9B,YAA6B,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;QAPxC,qBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,iBAAY,GAAG,IAAI,OAAO,EAAkC,CAAC;QAC7D,mBAAc,GAAG,IAAI,OAAO,EAG1C,CAAC;IAEwD,CAAC;IAEtD,KAAK,CAAC,MAAM,CAAC,QAAgC;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO,WAAW,CAAC;QACpB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAC5C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAC5B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAC5B,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEvC,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,oBAAoB,CACjC,QAAgB,EAChB,UAAkB;QAElB,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAW,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,aAAa,CAAC,QAAgC;QACrD,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnD,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,UAAU,CAAC;QACnB,CAAC;QAED,UAAU,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;QAE1E,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAC;IACnB,CAAC;IAEO,aAAa,CAAC,QAAgC;QACrD,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7B,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC;IACtB,CAAC;CACD"}
1
+ {"version":3,"file":"module-token-factory.js","sourceRoot":"","sources":["../../../../src/core/modules/module-token-factory.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,OAAO,kBAAkB;IAK9B,YAA6B,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;QAJxC,qBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,iBAAY,GAAG,IAAI,OAAO,EAAgC,CAAC;QAC3D,mBAAc,GAAG,IAAI,OAAO,EAAgC,CAAC;IAElB,CAAC;IAEtD,KAAK,CAAC,MAAM,CAAC,QAA8B;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO,WAAW,CAAC;QACpB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAC5C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAC5B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAC5B,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEvC,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,oBAAoB,CACjC,QAAgB,EAChB,UAAkB;QAElB,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAW,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,aAAa,CAAC,QAA8B;QACnD,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnD,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,UAAU,CAAC;QACnB,CAAC;QAED,UAAU,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;QAE1E,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAC;IACnB,CAAC;IAEO,aAAa,CAAC,QAA8B;QACnD,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7B,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC;IACtB,CAAC;CACD"}
@@ -1,5 +1,6 @@
1
1
  import "reflect-metadata";
2
2
  import { MODULE_TOKEN_WATERMARK, } from "../../interfaces/index.js";
3
+ import { isDynamicModule } from "../../utils/helpers.js";
3
4
  import { ModuleContainerFactory } from "./module-container-factory.js";
4
5
  import { ModuleTokenFactory } from "./module-token-factory.js";
5
6
  export class ModulesContainer {
@@ -7,10 +8,19 @@ export class ModulesContainer {
7
8
  this.hashUtils = hashUtils;
8
9
  this.container = container;
9
10
  this.containers = new Map();
11
+ /**
12
+ * Modules registered through `replaceModule`, keyed by the replaced class.
13
+ * Every lookup of a replaced module (`addModule`, `getModule`) is redirected
14
+ * to its replacement, even when the replaced module was not registered yet.
15
+ * Modules that were not replaced are never affected. This holds for
16
+ * everything this container adds later too, lazy modules included.
17
+ */
18
+ this.replacements = new Map();
10
19
  this.moduleTokenFactory = new ModuleTokenFactory(this.hashUtils);
11
20
  this.moduleContainerFactory = new ModuleContainerFactory(this.moduleTokenFactory);
12
21
  }
13
22
  async addModule(module) {
23
+ module = this.applyReplacement(module);
14
24
  const cacheModule = await this.getModule(module);
15
25
  if (cacheModule) {
16
26
  return cacheModule;
@@ -18,16 +28,46 @@ export class ModulesContainer {
18
28
  return this.setModule(module);
19
29
  }
20
30
  getModule(module) {
21
- return this.getModuleFromCache(module);
31
+ return this.getModuleFromCache(this.applyReplacement(module));
32
+ }
33
+ removeModule(token) {
34
+ this.containers.delete(token);
22
35
  }
23
36
  async replaceModule(moduleToReplace, newModule) {
24
- const tokenToReplace = this.getModule(moduleToReplace);
37
+ if (moduleToReplace === newModule) {
38
+ return this.addModule(newModule);
39
+ }
40
+ const tokenToReplace = this.getModuleFromCache(moduleToReplace);
41
+ this.replacements.set(moduleToReplace, newModule);
25
42
  const newModuleContainer = await this.setModule(newModule);
26
43
  this.containers.set(tokenToReplace?.token || newModuleContainer.token, newModuleContainer);
27
44
  return newModuleContainer;
28
45
  }
46
+ /**
47
+ * Maps a module through the replacements. The chain is followed
48
+ * (`A -> B -> C` gives `C`) and stops at a cycle (`A -> B`, `B -> A`).
49
+ *
50
+ * A `DynamicModule` whose `module` class is replaced is swapped for the
51
+ * replacement class used as a plain static module: the replacement is a
52
+ * class, so the dynamic module's own providers, imports and exports (meant
53
+ * for the replaced class) are dropped.
54
+ */
55
+ applyReplacement(module) {
56
+ if (this.replacements.size === 0) {
57
+ return module;
58
+ }
59
+ let current = isDynamicModule(module) ? module.module : module;
60
+ const seen = new Set([current]);
61
+ let replaced = false;
62
+ for (let next = this.replacements.get(current); next !== undefined && !seen.has(next); next = this.replacements.get(current)) {
63
+ seen.add(next);
64
+ current = next;
65
+ replaced = true;
66
+ }
67
+ return replaced ? current : module;
68
+ }
29
69
  async setModule(module) {
30
- const moduleContainer = await this.moduleContainerFactory.create(module, this.container);
70
+ const moduleContainer = await this.moduleContainerFactory.create(module, this.container, (exported) => this.applyReplacement(exported));
31
71
  this.containers.set(moduleContainer.token, moduleContainer);
32
72
  return moduleContainer;
33
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"modules-container.js","sourceRoot":"","sources":["../../../../src/core/modules/modules-container.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAIN,sBAAsB,GAItB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAI5D,MAAM,OAAO,gBAAgB;IAO5B,YACkB,SAA4B,EAC5B,SAA6B;QAD7B,cAAS,GAAT,SAAS,CAAmB;QAC5B,cAAS,GAAT,SAAS,CAAoB;QAR9B,eAAU,GAAG,IAAI,GAAG,EAAmC,CAAC;QACxD,uBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,2BAAsB,GAAG,IAAI,sBAAsB,CACnE,IAAI,CAAC,kBAAkB,CACvB,CAAC;IAKC,CAAC;IAEJ,KAAK,CAAC,SAAS,CACd,MAA8B;QAE9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO,WAAW,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,CACR,MAA8B;QAE9B,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CAClB,eAAuB,EACvB,SAAiB;QAEjB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACvD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE3D,IAAI,CAAC,UAAU,CAAC,GAAG,CAClB,cAAc,EAAE,KAAK,IAAI,kBAAkB,CAAC,KAAK,EACjD,kBAAkB,CAClB,CAAC;QAEF,OAAO,kBAAkB,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,SAAS,CACtB,MAA8B;QAE9B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAC/D,MAAM,EACN,IAAI,CAAC,SAAS,CACd,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAE5D,OAAO,eAAe,CAAC;IACxB,CAAC;IAEO,kBAAkB,CACzB,MAA8B;QAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,sBAAsB,EAAE,MAAM,CAAU,CAAC;QAE3E,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACD"}
1
+ {"version":3,"file":"modules-container.js","sourceRoot":"","sources":["../../../../src/core/modules/modules-container.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,23 @@
1
+ import { ContainerNotCompiledError } from "@nexus-ioc/shared";
2
+ import { ContainerClosedError, ProviderNotFoundError } from "../errors/index.js";
1
3
  import { HashUtilBrowser } from "../utils/hash-utils.browser.js";
4
+ import { ModuleRef } from "./module-ref.js";
2
5
  import { Container } from "./modules/container.js";
3
6
  /**
4
7
  * @deprecated
5
8
  * It will be removed in version 1.0.0.
6
- * these classes work the same way. For the new behavior, use @NexusApplications
9
+ * these classes work the same way. For the new behavior, use @NexusApplication
7
10
  */
8
- export class NexusApplicationsBrowser {
11
+ export class NexusApplicationBrowser {
9
12
  constructor(rootModule) {
10
13
  this.rootModule = rootModule;
11
14
  this.hashUtil = new HashUtilBrowser();
12
15
  this.scannerPlugins = [];
13
16
  this.container = new Container(this.hashUtil);
14
- this._parentContainer = null;
17
+ this.closePromise = null;
15
18
  }
16
19
  static create(rootModule) {
17
- return new NexusApplicationsBrowser(rootModule);
20
+ return new NexusApplicationBrowser(rootModule);
18
21
  }
19
22
  async bootstrap() {
20
23
  await this.container.run(this.rootModule);
@@ -28,22 +31,61 @@ export class NexusApplicationsBrowser {
28
31
  this.scannerPlugins.push(...plugins);
29
32
  return this;
30
33
  }
31
- async get(token) {
32
- const dependency = await this.container.get(token);
33
- if (!dependency) {
34
- return this._parentContainer?.get(token);
34
+ get(token, options = {}) {
35
+ this.assertUsable();
36
+ if (this.container.hasProvider(token)) {
37
+ return this.container.get(token);
35
38
  }
36
- return dependency;
39
+ if (options.optional) {
40
+ return undefined;
41
+ }
42
+ throw new ProviderNotFoundError(token);
43
+ }
44
+ async resolve(token, options = {}) {
45
+ this.assertUsable();
46
+ if (this.container.hasProvider(token)) {
47
+ return this.container.resolve(token);
48
+ }
49
+ if (options.optional) {
50
+ return undefined;
51
+ }
52
+ throw new ProviderNotFoundError(token);
37
53
  }
38
54
  get errors() {
39
55
  return this.container.errors;
40
56
  }
41
- async() {
42
- return this;
57
+ async load(lazyModule) {
58
+ this.assertOpen();
59
+ return new ModuleRef(this.container, await this.container.load(lazyModule));
60
+ }
61
+ async unload(ref) {
62
+ return ref.unload();
43
63
  }
44
- setParent(parentContainer) {
45
- this._parentContainer = parentContainer;
64
+ lazy() {
46
65
  return this;
47
66
  }
67
+ close() {
68
+ if (!this.closePromise) {
69
+ this.closePromise = this.container.close();
70
+ }
71
+ return this.closePromise;
72
+ }
73
+ get isClosed() {
74
+ return this.closePromise !== null;
75
+ }
76
+ assertOpen() {
77
+ if (this.closePromise) {
78
+ throw new ContainerClosedError();
79
+ }
80
+ }
81
+ assertUsable() {
82
+ this.assertOpen();
83
+ if (!this.container.isCompiled) {
84
+ throw new ContainerNotCompiledError();
85
+ }
86
+ }
87
+ async createChild(_child, _options) {
88
+ throw new Error("createChild is not supported by the deprecated NexusApplicationBrowser/Server; use NexusApplication");
89
+ }
48
90
  }
49
91
  //# sourceMappingURL=nexus-applications.browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nexus-applications.browser.js","sourceRoot":"","sources":["../../../src/core/nexus-applications.browser.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,OAAO,wBAAwB;IAMpC,YAAqC,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QALtC,aAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACjC,mBAAc,GAA6B,EAAE,CAAC;QAC9C,cAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,qBAAgB,GAAqC,IAAI,CAAC;IAER,CAAC;IAE3D,MAAM,CAAC,MAAM,CAAC,UAAkB;QAC/B,OAAO,IAAI,wBAAwB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,SAAS;QACrB,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1C,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACjD,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,gBAAgB,CACtB,OAA0D;QAE1D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,KAAK,CAAC,GAAG,CAAI,KAAqB;QACxC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAI,KAAK,CAAC,CAAC;QAEtD,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAI,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,SAAS,CAAC,eAA0C;QAC1D,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,OAAO,IAAI,CAAC;IACb,CAAC;CACD"}
1
+ {"version":3,"file":"nexus-applications.browser.js","sourceRoot":"","sources":["../../../src/core/nexus-applications.browser.ts"],"names":[],"mappings":"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"}