@nexus-ioc/core 0.6.2 → 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 (220) 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 +21 -4
  219. package/dist/cjs/decorators/nsModule.js.map +0 -1
  220. package/dist/esm/decorators/nsModule.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/core/modules/container.ts"],"names":[],"mappings":";;;AASA,wDAAoD;AACpD,mDAAgD;AAChD,2DAAuD;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,SAAS;IASrB;;;;OAIG;IACH,YAA6B,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;QAbxC,qBAAgB,GAAG,IAAI,oCAAgB,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,0BAAW,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAQ,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;AArLD,8BAqLC"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/core/modules/container.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,8 @@ class ModuleContainerFactory {
8
8
  constructor(moduleTokenFactory) {
9
9
  this.moduleTokenFactory = moduleTokenFactory;
10
10
  }
11
- async create(module, container) {
12
- const moduleContainer = new module_container_1.ModuleContainer(module, container);
11
+ async create(module, container, resolveReplacement) {
12
+ const moduleContainer = new module_container_1.ModuleContainer(module, container, resolveReplacement);
13
13
  moduleContainer.token = await this.getModuleToken(module);
14
14
  Reflect.defineMetadata(interfaces_1.MODULE_TOKEN_WATERMARK, moduleContainer.token, module);
15
15
  return moduleContainer;
@@ -1 +1 @@
1
- {"version":3,"file":"module-container-factory.js","sourceRoot":"","sources":["../../../../src/core/modules/module-container-factory.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAS1B,iDAA0D;AAC1D,yDAAqD;AAErD,MAAa,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,kCAAe,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,mCAAsB,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;AA/BD,wDA+BC"}
1
+ {"version":3,"file":"module-container-factory.js","sourceRoot":"","sources":["../../../../src/core/modules/module-container-factory.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAS1B,iDAA0D;AAC1D,yDAAqD;AAErD,MAAa,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,kCAAe,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,mCAAsB,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;AApCD,wDAoCC"}
@@ -2,12 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModuleContainer = void 0;
4
4
  require("reflect-metadata");
5
+ const errors_1 = require("../../errors");
5
6
  const interfaces_1 = require("../../interfaces");
6
7
  const helpers_1 = require("../../utils/helpers");
8
+ const lazy_module_1 = require("../../utils/lazy-module");
7
9
  class ModuleContainer {
8
- constructor(_metatype, container) {
10
+ constructor(_metatype, container, resolveReplacement = (module) => module) {
9
11
  this._metatype = _metatype;
10
12
  this.container = container;
13
+ this.resolveReplacement = resolveReplacement;
11
14
  this._token = "";
12
15
  }
13
16
  get token() {
@@ -19,26 +22,41 @@ class ModuleContainer {
19
22
  get metatype() {
20
23
  return this._metatype;
21
24
  }
22
- get imports() {
23
- let modules;
25
+ get declaredImports() {
24
26
  if ((0, helpers_1.isDynamicModule)(this.metatype)) {
25
- modules = this.metatype.imports || [];
26
- }
27
- else {
28
- modules =
29
- Reflect.getMetadata(interfaces_1.MODULE_METADATA.IMPORTS, this.metatype) || [];
27
+ return this.metatype.imports || [];
30
28
  }
29
+ return Reflect.getMetadata(interfaces_1.MODULE_METADATA.IMPORTS, this.metatype) || [];
30
+ }
31
+ get resolvedImports() {
32
+ return this._resolvedImports;
33
+ }
34
+ get imports() {
35
+ const modules = this.declaredImports.filter((item) => !(0, lazy_module_1.isLazyModule)(item));
31
36
  const self = this;
32
37
  return new Promise((resolved) => {
33
38
  async function run() {
34
- const imports = await Promise.all(modules.map((item) => {
35
- return self.container.addModule(item);
36
- }));
39
+ const imports = await Promise.all(modules.map((item) => self.container.addModule(item)));
40
+ self._resolvedImports = imports;
37
41
  resolved(imports);
38
42
  }
39
43
  run();
40
44
  });
41
45
  }
46
+ get lazyImports() {
47
+ return this.declaredImports.filter(lazy_module_1.isLazyModule);
48
+ }
49
+ /**
50
+ * Children declared by the module class's `@Module` decorator. A dynamic
51
+ * module literal cannot declare children, but one built from a class that
52
+ * declares them (`forX()`, extra child providers) keeps them.
53
+ */
54
+ get children() {
55
+ const target = (0, helpers_1.isDynamicModule)(this.metatype)
56
+ ? this.metatype.module
57
+ : this.metatype;
58
+ return Reflect.getMetadata(interfaces_1.MODULE_METADATA.CHILDREN, target) || [];
59
+ }
42
60
  get providers() {
43
61
  if ((0, helpers_1.isDynamicModule)(this.metatype)) {
44
62
  return this.metatype.providers || [];
@@ -46,14 +64,34 @@ class ModuleContainer {
46
64
  return Reflect.getMetadata(interfaces_1.MODULE_METADATA.PROVIDERS, this.metatype) || [];
47
65
  }
48
66
  get exports() {
49
- if ((0, helpers_1.isDynamicModule)(this.metatype)) {
50
- return this.metatype.exports || [];
51
- }
52
- return Reflect.getMetadata(interfaces_1.MODULE_METADATA.EXPORTS, this.metatype) || [];
67
+ const exported = (0, helpers_1.isDynamicModule)(this.metatype)
68
+ ? this.metatype.exports || []
69
+ : Reflect.getMetadata(interfaces_1.MODULE_METADATA.EXPORTS, this.metatype) || [];
70
+ // A re-exported module class that was replaced (`replaceModule`) is
71
+ // exported as its replacement, which is the module registered instead.
72
+ return exported.map((token) => typeof token === "function" &&
73
+ Reflect.hasMetadata(interfaces_1.MODULE_WATERMARK, token)
74
+ ? this.resolveReplacement(token)
75
+ : token);
53
76
  }
54
- get(token) {
77
+ get(token, options = {}) {
78
+ if (!this.container.hasProvider(token)) {
79
+ if (options.optional) {
80
+ return undefined;
81
+ }
82
+ throw new errors_1.ProviderNotFoundError(token);
83
+ }
55
84
  return this.container.get(token);
56
85
  }
86
+ async resolve(token, options = {}) {
87
+ if (!this.container.hasProvider(token)) {
88
+ if (options.optional) {
89
+ return undefined;
90
+ }
91
+ throw new errors_1.ProviderNotFoundError(token);
92
+ }
93
+ return this.container.resolve(token);
94
+ }
57
95
  get errors() {
58
96
  return this.container.errors;
59
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module-container.js","sourceRoot":"","sources":["../../../../src/core/modules/module-container.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAS1B,iDAAmD;AACnD,iDAAsD;AAEtD,MAAa,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,IAAA,yBAAe,EAAC,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,4BAAe,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,IAAA,yBAAe,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;QACtC,CAAC;QAED,OAAO,OAAO,CAAC,WAAW,CAAC,4BAAe,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5E,CAAC;IAED,IAAW,OAAO;QACjB,IAAI,IAAA,yBAAe,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,OAAO,CAAC,WAAW,CAAC,4BAAe,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;AApED,0CAoEC"}
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,iDAAsD;AAEtD,MAAa,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,IAAA,yBAAe,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7B,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC;IACtB,CAAC;CACD;AA7DD,gDA6DC"}
1
+ {"version":3,"file":"module-token-factory.js","sourceRoot":"","sources":["../../../../src/core/modules/module-token-factory.ts"],"names":[],"mappings":";;;AAMA,iDAAsD;AAEtD,MAAa,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,IAAA,yBAAe,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7B,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC;IACtB,CAAC;CACD;AA1DD,gDA0DC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModulesContainer = void 0;
4
4
  require("reflect-metadata");
5
5
  const interfaces_1 = require("../../interfaces");
6
+ const helpers_1 = require("../../utils/helpers");
6
7
  const module_container_factory_1 = require("./module-container-factory");
7
8
  const module_token_factory_1 = require("./module-token-factory");
8
9
  class ModulesContainer {
@@ -10,10 +11,19 @@ class ModulesContainer {
10
11
  this.hashUtils = hashUtils;
11
12
  this.container = container;
12
13
  this.containers = new Map();
14
+ /**
15
+ * Modules registered through `replaceModule`, keyed by the replaced class.
16
+ * Every lookup of a replaced module (`addModule`, `getModule`) is redirected
17
+ * to its replacement, even when the replaced module was not registered yet.
18
+ * Modules that were not replaced are never affected. This holds for
19
+ * everything this container adds later too, lazy modules included.
20
+ */
21
+ this.replacements = new Map();
13
22
  this.moduleTokenFactory = new module_token_factory_1.ModuleTokenFactory(this.hashUtils);
14
23
  this.moduleContainerFactory = new module_container_factory_1.ModuleContainerFactory(this.moduleTokenFactory);
15
24
  }
16
25
  async addModule(module) {
26
+ module = this.applyReplacement(module);
17
27
  const cacheModule = await this.getModule(module);
18
28
  if (cacheModule) {
19
29
  return cacheModule;
@@ -21,16 +31,46 @@ class ModulesContainer {
21
31
  return this.setModule(module);
22
32
  }
23
33
  getModule(module) {
24
- return this.getModuleFromCache(module);
34
+ return this.getModuleFromCache(this.applyReplacement(module));
35
+ }
36
+ removeModule(token) {
37
+ this.containers.delete(token);
25
38
  }
26
39
  async replaceModule(moduleToReplace, newModule) {
27
- const tokenToReplace = this.getModule(moduleToReplace);
40
+ if (moduleToReplace === newModule) {
41
+ return this.addModule(newModule);
42
+ }
43
+ const tokenToReplace = this.getModuleFromCache(moduleToReplace);
44
+ this.replacements.set(moduleToReplace, newModule);
28
45
  const newModuleContainer = await this.setModule(newModule);
29
46
  this.containers.set(tokenToReplace?.token || newModuleContainer.token, newModuleContainer);
30
47
  return newModuleContainer;
31
48
  }
49
+ /**
50
+ * Maps a module through the replacements. The chain is followed
51
+ * (`A -> B -> C` gives `C`) and stops at a cycle (`A -> B`, `B -> A`).
52
+ *
53
+ * A `DynamicModule` whose `module` class is replaced is swapped for the
54
+ * replacement class used as a plain static module: the replacement is a
55
+ * class, so the dynamic module's own providers, imports and exports (meant
56
+ * for the replaced class) are dropped.
57
+ */
58
+ applyReplacement(module) {
59
+ if (this.replacements.size === 0) {
60
+ return module;
61
+ }
62
+ let current = (0, helpers_1.isDynamicModule)(module) ? module.module : module;
63
+ const seen = new Set([current]);
64
+ let replaced = false;
65
+ for (let next = this.replacements.get(current); next !== undefined && !seen.has(next); next = this.replacements.get(current)) {
66
+ seen.add(next);
67
+ current = next;
68
+ replaced = true;
69
+ }
70
+ return replaced ? current : module;
71
+ }
32
72
  async setModule(module) {
33
- const moduleContainer = await this.moduleContainerFactory.create(module, this.container);
73
+ const moduleContainer = await this.moduleContainerFactory.create(module, this.container, (exported) => this.applyReplacement(exported));
34
74
  this.containers.set(moduleContainer.token, moduleContainer);
35
75
  return moduleContainer;
36
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"modules-container.js","sourceRoot":"","sources":["../../../../src/core/modules/modules-container.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,iDAQ0B;AAC1B,yEAAoE;AACpE,iEAA4D;AAI5D,MAAa,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,yCAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,2BAAsB,GAAG,IAAI,iDAAsB,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,mCAAsB,EAAE,MAAM,CAAU,CAAC;QAE3E,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACD;AAjED,4CAiEC"}
1
+ {"version":3,"file":"modules-container.js","sourceRoot":"","sources":["../../../../src/core/modules/modules-container.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NexusApplicationsBrowser = void 0;
3
+ exports.NexusApplicationBrowser = void 0;
4
+ const shared_1 = require("@nexus-ioc/shared");
5
+ const errors_1 = require("../errors");
4
6
  const hash_utils_browser_1 = require("../utils/hash-utils.browser");
7
+ const module_ref_1 = require("./module-ref");
5
8
  const container_1 = require("./modules/container");
6
9
  /**
7
10
  * @deprecated
8
11
  * It will be removed in version 1.0.0.
9
- * these classes work the same way. For the new behavior, use @NexusApplications
12
+ * these classes work the same way. For the new behavior, use @NexusApplication
10
13
  */
11
- class NexusApplicationsBrowser {
14
+ class NexusApplicationBrowser {
12
15
  constructor(rootModule) {
13
16
  this.rootModule = rootModule;
14
17
  this.hashUtil = new hash_utils_browser_1.HashUtilBrowser();
15
18
  this.scannerPlugins = [];
16
19
  this.container = new container_1.Container(this.hashUtil);
17
- this._parentContainer = null;
20
+ this.closePromise = null;
18
21
  }
19
22
  static create(rootModule) {
20
- return new NexusApplicationsBrowser(rootModule);
23
+ return new NexusApplicationBrowser(rootModule);
21
24
  }
22
25
  async bootstrap() {
23
26
  await this.container.run(this.rootModule);
@@ -31,23 +34,62 @@ class NexusApplicationsBrowser {
31
34
  this.scannerPlugins.push(...plugins);
32
35
  return this;
33
36
  }
34
- async get(token) {
35
- const dependency = await this.container.get(token);
36
- if (!dependency) {
37
- return this._parentContainer?.get(token);
37
+ get(token, options = {}) {
38
+ this.assertUsable();
39
+ if (this.container.hasProvider(token)) {
40
+ return this.container.get(token);
38
41
  }
39
- return dependency;
42
+ if (options.optional) {
43
+ return undefined;
44
+ }
45
+ throw new errors_1.ProviderNotFoundError(token);
46
+ }
47
+ async resolve(token, options = {}) {
48
+ this.assertUsable();
49
+ if (this.container.hasProvider(token)) {
50
+ return this.container.resolve(token);
51
+ }
52
+ if (options.optional) {
53
+ return undefined;
54
+ }
55
+ throw new errors_1.ProviderNotFoundError(token);
40
56
  }
41
57
  get errors() {
42
58
  return this.container.errors;
43
59
  }
44
- async() {
45
- return this;
60
+ async load(lazyModule) {
61
+ this.assertOpen();
62
+ return new module_ref_1.ModuleRef(this.container, await this.container.load(lazyModule));
63
+ }
64
+ async unload(ref) {
65
+ return ref.unload();
46
66
  }
47
- setParent(parentContainer) {
48
- this._parentContainer = parentContainer;
67
+ lazy() {
49
68
  return this;
50
69
  }
70
+ close() {
71
+ if (!this.closePromise) {
72
+ this.closePromise = this.container.close();
73
+ }
74
+ return this.closePromise;
75
+ }
76
+ get isClosed() {
77
+ return this.closePromise !== null;
78
+ }
79
+ assertOpen() {
80
+ if (this.closePromise) {
81
+ throw new errors_1.ContainerClosedError();
82
+ }
83
+ }
84
+ assertUsable() {
85
+ this.assertOpen();
86
+ if (!this.container.isCompiled) {
87
+ throw new shared_1.ContainerNotCompiledError();
88
+ }
89
+ }
90
+ async createChild(_child, _options) {
91
+ throw new Error("createChild is not supported by the deprecated NexusApplicationBrowser/Server; use NexusApplication");
92
+ }
51
93
  }
52
- exports.NexusApplicationsBrowser = NexusApplicationsBrowser;
94
+ exports.NexusApplicationBrowser = NexusApplicationBrowser;
53
95
  //# 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,oEAA8D;AAC9D,mDAAgD;AAEhD;;;;GAIG;AACH,MAAa,wBAAwB;IAMpC,YAAqC,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QALtC,aAAQ,GAAG,IAAI,oCAAe,EAAE,CAAC;QACjC,mBAAc,GAA6B,EAAE,CAAC;QAC9C,cAAS,GAAG,IAAI,qBAAS,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;AApDD,4DAoDC"}
1
+ {"version":3,"file":"nexus-applications.browser.js","sourceRoot":"","sources":["../../../src/core/nexus-applications.browser.ts"],"names":[],"mappings":"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"}