@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":"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":"AAAA,OAAO,EAEN,YAAY,EAIZ,sBAAsB,EACtB,gBAAgB,EAKhB,YAAY,EACZ,sBAAsB,EACtB,+BAA+B,EAG/B,2BAA2B,EAC3B,oCAAoC,GAGpC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACN,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,QAAQ,GACR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACN,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,GACzB,MAAM,WAAW,CAAC;AAInB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;GAEG;AACH,SAAS,aAAa,CAAC,KAAoB;IAC1C,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,OAAO,WAAW;IA6CvB,YACkB,KAA+B,EAC/B,iBAA6C,EAAE,EAC/C,UAA8B,EAAE;QAFhC,UAAK,GAAL,KAAK,CAA0B;QAC/B,mBAAc,GAAd,cAAc,CAAiC;QAC/C,YAAO,GAAP,OAAO,CAAyB;QA/C1C,WAAM,GAA6B,IAAI,GAAG,EAAE,CAAC;QAC7C,WAAM,GAA+B,IAAI,GAAG,EAAE,CAAC;QAC/C,mBAAc,GACrB,IAAI,GAAG,EAAE,CAAC;QACX,wDAAwD;QACvC,qBAAgB,GAChC,IAAI,GAAG,EAAE,CAAC;QACX;;;;;WAKG;QACc,qBAAgB,GAA6B,IAAI,GAAG,EAAE,CAAC;QACxE;;;;;;;;;;WAUG;QACc,eAAU,GAAG,IAAI,GAAG,EAGlC,CAAC;QACJ;;;WAGG;QACc,uBAAkB,GAAG,IAAI,GAAG,EAAyB,CAAC;QACtD,YAAO,GAAiB,EAAE,CAAC;QAC5C;;;;WAIG;QACK,eAAU,GAAwB,IAAI,CAAC;QAC/C,qBAAqB;QACb,aAAQ,GAAG,CAAC,CAAC;IAMlB,CAAC;IAEJ,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,IAAW,kBAAkB;QAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,uEAAuE;IAC/D,SAAS,CAAC,KAAiB;QAClC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO;QACnB,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,cAAc,GAAoB,EAAE,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEjD,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;YACzC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,KAAK,CAAC,cAAc,CAC1B,IAA8B,EAC9B,UAAsB;QAEtB,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE3D,IAAI,kBAAkB,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QAEzB,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEhD,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC5D,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAErD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,YAAY,CAAC;oBACjB,GAAG,KAAK,CAAC,YAAY;oBACrB,GAAG,KAAK,CAAC,cAAc;oBACvB,GAAG,KAAK,CAAC,UAAU;oBACnB,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9C,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAuB,CAAC,UAAU,CAC/D,IAAI,CAAC,KAAK,CACV,CAAC;YACH,CAAC;YAED,OAAO;gBACN,UAAU;gBACV,eAAe,EAAE,IAAI;gBACrB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,MAAM;aACN,CAAC;QACH,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;YAC/B,4DAA4D;YAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjB,CAAC;IACF,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACK,aAAa,CACpB,iBAA2B,EAC3B,mBAAoC;QAEpC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO;QACR,CAAC;QACD,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACnD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAC9B,CAAC;QACF,MAAM,OAAO,GAAG,UAAU;YACzB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAErE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC7D,SAAS;YACV,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAGzC,CAAC;YACF,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,KAAK,IAAI,QAAQ,EAAE,IAAI,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;oBACvD,SAAS;gBACV,CAAC;gBACD,IACC,IAAI,CAAC,iBAAiB,CACpB,QAA4B,CAAC,eAAe,EAC7C,MAAM,CACN,EACA,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC1B,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACtD,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,MAAuB;QAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAgB,MAAM,CAAC,CAAC;QAC/C,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACjD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;gBACvC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACxB,CAAC;qBAAM,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC5B,CAAC;YACF,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACF,CAAC;IACF,CAAC;IAED;;;;;;;;;;OAUG;IACK,YAAY,CAAC,MAAuB;QAC3C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED;;;;;;;;OAQG;IACI,aAAa,CACnB,UAAsB,EACtB,cAA2B;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAErC,CAAC;QAEb,IACC,CAAC,WAAW;YACZ,CAAC,WAAW,CAAC,MAAM;YACnB,WAAW,CAAC,WAAW,KAAK,IAAI,EAC/B,CAAC;YACF,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;QACzD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CACxC,WAAW,CAAC,WAAW,EACvB,cAAc,CACd,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEhD,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,MAAM,kBAAkB,GAAoB,EAAE,CAAC;QAE/C,KAAK,MAAM,WAAW,IAAI,UAAU,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACV,CAAC;YACD,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACnC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC;gBACjE,EAAE,EAAE,CAAC;gBACL,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACxC,CAAC;QACF,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAC9D,WAAW,CAAC,YAAY,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACjD,CAAC;IAED;;wEAEoE;IAC5D,kBAAkB,CAAC,WAAmB;QAC7C,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;gBACvC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;QAED,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBAChD,IACC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU;oBACrC,IAAI,CAAC,QAAQ,CAAC,SAAS;oBACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ;oBACtB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS;wBACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,EAC9D,CAAC;oBACF,SAAS;gBACV,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,UAAU,EAAE,IAAI,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;oBAChD,YAAY,CAAC,IAAI,CACf,UAA8B,CAAC,eAAe,CAAC,KAAK,CACrD,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,YAAY,CAAC;IACrB,CAAC;IAEO,iBAAiB,CACxB,SAAiB,EACjB,cAA2B;QAE3B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,MAAM,KAAK,GAAa,CAAC,SAAS,CAAC,CAAC;QAEpC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAY,CAAC;YAE5C,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpE,SAAS;YACV,CAAC;YAED,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACK,gBAAgB,CAAC,UAAuB;QAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,WAAW,IAAI,UAAU,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzD,MAAM,kBAAkB,GACvB,SAAS;gBACT,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE9D,IAAI,kBAAkB,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzB,CAAC;QACF,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAY,CAAC;YAE5C,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACV,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CACT,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACxD,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CACrB,CACD,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,kBAAkB,CACzB,YAAsB,EACtB,cAA+B;QAE/B,mEAAmE;QACnE,qEAAqE;QACrE,mEAAmE;QACnE,iBAAiB;QACjB,EAAE;QACF,qEAAqE;QACrE,kEAAkE;QAClE,uDAAuD;QACvD,qEAAqE;QACrE,gEAAgE;QAChE,iEAAiE;QACjE,mEAAmE;QACnE,oEAAoE;QACpE,mBAAmB;QACnB,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAEpC,wEAAwE;QACxE,oEAAoE;QACpE,uEAAuE;QACvE,0EAA0E;QAC1E,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAgB,cAAc,CAAC,CAAC;QAClE,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,SAAS;YACV,CAAC;YACD,IACC,KAAK,CAAC,IAAI,CACT,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CACpE,EACA,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CACd,MAAM,EACN,KAAK,CAAC,MAAM,CACX,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CACA,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS;oBAC/B,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAChC,CACF,CACD,CAAC;YACH,CAAC;QACF,CAAC;QAED,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,kBAAkB,CAAC,MAAuB;QACjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,KAAK,MAAM,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAe,CAAC,EAAE,CAAC;gBACzE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,KAAe,CAAC,CAAC;YACtE,CAAC;QACF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAgB,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACzD,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;QACF,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC;YAC9C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC;IAEM,oBAAoB,CAC1B,MAAqB,EACrB,MAAqB;QAErB,sEAAsE;QACtE,mEAAmE;QACnE,mEAAmE;QACnE,+DAA+D;QAC/D,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CACvC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CACzE,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACZ,iEAAiE;YACjE,mDAAmD;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO;QACR,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACpB,IAAI,EAAE,YAAY,CAAC,UAAU;YAC7B,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;SACpE,CAAC,CAAC;IACJ,CAAC;IAEM,oBAAoB,CAC1B,KAAwB;QAExB,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,IAAI,YAAY,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC;IAEM,OAAO,CAAC,KAAoB;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEM,OAAO,CAAC,KAAoB;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAEM,WAAW;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;IAEM,WAAW;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB;IACV,KAAK,CAAC,UAAU,CACvB,IAA8B,EAC9B,YAAqB;QAMrB,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;QACzC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;QAEvB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAErC,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,SAAS;YACV,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAEhC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,kEAAkE;gBAClE,SAAS;YACV,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;YAEtD,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACpC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACpC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACjE,cAAc,CAAC,IAAI,CAClB,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAC/D,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,aAA4B;QACnD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAElC,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC1E,CAAC;IACF,CAAC;IAED;;;;OAIG;IACK,aAAa,CAAC,aAA4B;QACjD,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;YAC5D,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,QAAQ,KAAK,aAAa,CAAC,EAAE,EAAE,CAAC;gBAC1C,4DAA4D;gBAC5D,kDAAkD;gBAClD,IAAI,CAAC,SAAS,CAAC;oBACd,IAAI,EAAE,sBAAsB;oBAC5B,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,OAAO,EAAE;wBACR,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;wBAC1B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;qBAClC;iBACD,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACF,CAAC;IAEO,WAAW,CAAC,WAAmB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,IAAI,YAAY,aAAa,EAAE,CAAC;YACnC,OAAO,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,WAAW,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB,CAC7B,aAA4B;QAE5B,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC;QAE1C,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAgB,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC/D,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,cAAc,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC/B,aAA4B,EAC5B,YAAqB;QAErB,MAAM,KAAK,GAAoB,EAAE,CAAC;QAElC,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,eAAe,GAAG,eAAe,CACtC,QAAQ,EACR,aAAa,CAAC,eAAe,CAC7B,CAAC;YAEF,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;gBAC9B,SAAS;YACV,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAErD,IACC,YAAY;gBACZ,QAAQ;gBACR,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,QAAQ;gBACtC,QAA4B,CAAC,eAAe,CAAC,KAAK;oBAClD,aAAa,CAAC,eAAe,CAAC,KAAK,EACnC,CAAC;gBACF,IAAI,CAAC,SAAS,CAAC;oBACd,IAAI,EAAE,yBAAyB;oBAC/B,KAAK,EAAE,eAAe,CAAC,KAAK;oBAC5B,MAAM,EAAE,aAAa,CAAC,KAAK;oBAC3B,cAAc,EAAE,cAAc,CAC5B,QAA4B,CAAC,eAAe,CAAC,QAAQ,CACtD;iBACD,CAAC,CAAC;gBACH,SAAS;YACV,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IACD,kBAAkB;IAElB,gBAAgB;IACR,OAAO,CAAC,KAAoB,EAAE,IAAU;QAC/C,MAAM,KAAK,GAAW,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAEnD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEO,OAAO,CAAC,KAAoB,EAAE,IAAU;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,iBAAiB,CAAC,WAAmB,EAAE,aAA4B;QAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACtE,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAEO,iBAAiB,CAAC,gBAAwB,EAAE,cAAsB;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAC3E,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAC7B,MAAqB,EACrB,MAAqB,EACrB,gBAAyB,EACzB,SAAkB;QAElB,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACjE,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;;;;;OAWG;IACK,yBAAyB,CAChC,aAA4B,EAC5B,eAA8B,EAC9B,gBAAyB;QAEzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,OAAO;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAEpD,IACC,QAAQ,EAAE,IAAI,KAAK,YAAY,CAAC,QAAQ;YACxC,UAAU,EAAE,IAAI,KAAK,YAAY,CAAC,QAAQ,EACzC,CAAC;YACF,OAAO;QACR,CAAC;QAED,MAAM,cAAc,GAAI,QAA4B,CAAC,eAAe,CAAC,KAAK,CAAC;QAC3E,MAAM,gBAAgB,GAAI,UAA8B,CAAC,eAAe;aACtE,KAAK,CAAC;QAER,IAAI,cAAc,KAAK,gBAAgB,EAAE,CAAC;YACzC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IACD,gBAAgB;IAEhB,yBAAyB;IACjB,KAAK,CAAC,eAAe,CAAC,cAA+B;QAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;QAEzC,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEpC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxE,SAAS;YACV,CAAC;YAED,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC/B,KAAoB,EACpB,IAA6B;QAE7B,MAAM,uBAAuB,GAAG,IAAI,CAAC,0BAA0B,CAC9D,IAAI,CAAC,QAAQ,CACb,CAAC;QACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,kCAAkC,CACjE,IAAI,CAAC,QAAQ,CACb,CAAC;QAEF,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,eAAe,GAAkB,MAAM;gBAC5C,CAAC,CACC,UAAU,CAAC,KACX,CAAC,UAAU,EAAoB;gBACjC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CACpE,IAAI,CAAC,eAAe,EACpB,eAAe,EACf,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClC,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,CAAC;oBACd,IAAI,EAAE,2BAA2B;oBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC;oBAC1C,QAAQ,EAAE,UAAU,CAAC,KAAK;iBAC1B,CAAC,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAS;gBACrB,IAAI,EAAE,YAAY,CAAC,UAAU;gBAC7B,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,eAAe;gBACvB,QAAQ,EAAE;oBACT,SAAS,EAAE,CAAC,SAAS;oBACrB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oBACnC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACrC,UAAU,EAAE,KAAK;oBACjB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,MAAM,EAAE,aAAa;iBACrB;aACD,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,sBAAsB,CAC1B,KAAK,EACL,eAAe,EACf,SAAS,IAAI,CAAC,QAAQ,EACtB,SAAS,CACT,CAAC;QACH,CAAC;QAED,MAAM,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,CAC5D,IAAI,CAAC,QAAQ,CACb,CAAC;QACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,+BAA+B,CAC9D,IAAI,CAAC,QAAQ,CACb,CAAC;QAEF,KAAK,MAAM,UAAU,IAAI,sBAAsB,EAAE,CAAC;YACjD,MAAM,eAAe,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CACpE,IAAI,CAAC,eAAe,EACpB,eAAe,EACf,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAC3C,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,CAAC;oBACd,IAAI,EAAE,wBAAwB;oBAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC;oBAC1C,GAAG,EAAE,UAAU,CAAC,GAAG;iBACnB,CAAC,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAS;gBACrB,IAAI,EAAE,YAAY,CAAC,UAAU;gBAC7B,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,eAAe;gBACvB,QAAQ,EAAE;oBACT,SAAS,EAAE,CAAC,SAAS;oBACrB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oBACnC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACrC,UAAU,EAAE,KAAK;oBACjB,GAAG,EAAE,UAAU,CAAC,GAAG;oBACnB,MAAM,EAAE,UAAU;iBAClB;aACD,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,sBAAsB,CAC1B,KAAK,EACL,eAAe,EACf,SAAS,IAAI,CAAC,QAAQ,EACtB,SAAS,CACT,CAAC;QACH,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,0BAA0B,CACvC,KAAoB,EACpB,IAA0B;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5B,MAAM,uBAAuB,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,kBAAkB,GAAG,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;QAE1E,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,eAAe,GAAkB,MAAM;gBAC5C,CAAC,CACC,UAAU,CAAC,KACX,CAAC,UAAU,EAAoB;gBACjC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CACpE,IAAI,CAAC,eAAe,EACpB,eAAe,EACf,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClC,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,CAAC;oBACd,IAAI,EAAE,2BAA2B;oBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC;oBAC1C,QAAQ,EAAE,UAAU,CAAC,KAAK;iBAC1B,CAAC,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAS;gBACrB,IAAI,EAAE,YAAY,CAAC,UAAU;gBAC7B,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,eAAe;gBACvB,QAAQ,EAAE;oBACT,SAAS,EAAE,CAAC,SAAS;oBACrB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oBACnC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACrC,UAAU,EAAE,KAAK;oBACjB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,MAAM,EAAE,aAAa;iBACrB;aACD,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,sBAAsB,CAC1B,KAAK,EACL,eAAe,EACf,SAAS,IAAI,CAAC,QAAQ,EACtB,SAAS,CACT,CAAC;QACH,CAAC;QAED,MAAM,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACrE,MAAM,gBAAgB,GAAG,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;QAErE,KAAK,MAAM,UAAU,IAAI,sBAAsB,EAAE,CAAC;YACjD,MAAM,eAAe,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CACpE,IAAI,CAAC,eAAe,EACpB,eAAe,EACf,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CACzC,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,CAAC;oBACd,IAAI,EAAE,wBAAwB;oBAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC;oBAC1C,GAAG,EAAE,UAAU,CAAC,GAAG;iBACnB,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBACnB,IAAI,EAAE,YAAY,CAAC,UAAU;gBAC7B,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,eAAe;gBACvB,QAAQ,EAAE;oBACT,SAAS,EAAE,CAAC,SAAS;oBACrB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oBACnC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACrC,UAAU,EAAE,KAAK;oBACjB,GAAG,EAAE,UAAU,CAAC,GAAG;oBACnB,MAAM,EAAE,UAAU;iBAClB;aACD,CAAC,CAAC;YACH,IAAI,CAAC,sBAAsB,CAC1B,KAAK,EACL,eAAe,EACf,SAAS,IAAI,CAAC,QAAQ,EACtB,SAAS,CACT,CAAC;QACH,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,4BAA4B,CACzC,KAAoB,EACpB,IAA4B;QAE5B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QACvC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,eAAe,GAAkB,MAAM;gBAC5C,CAAC,CAAG,UAAyB,CAAC,UAAU,EAAoB;gBAC5D,CAAC,CAAE,UAA4B,CAAC;YAEjC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CACpE,IAAI,CAAC,eAAe,EACpB,eAAe,EACf,KAAK,CACL,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,CAAC;oBACd,IAAI,EAAE,uBAAuB;oBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC;oBAC1C,GAAG,EAAE,KAAK;iBACV,CAAC,CAAC;YACJ,CAAC;YAED,MAAM,iBAAiB,GAAS;gBAC/B,IAAI,EAAE,YAAY,CAAC,UAAU;gBAC7B,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,eAAe;gBACvB,QAAQ,EAAE;oBACT,SAAS,EAAE,CAAC,SAAS;oBACrB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oBACnC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACrC,UAAU,EAAE,KAAK;oBACjB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,KAAK,EAAE;oBACd,MAAM,EAAE,aAAa;iBACrB;aACD,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YACvC,IAAI,CAAC,sBAAsB,CAC1B,KAAK,EACL,eAAe,EACf,SAAS,IAAI,CAAC,QAAQ,EACtB,SAAS,CACT,CAAC;QACH,CAAC;IACF,CAAC;IACD;;;;;;;OAOG;IACK,KAAK,CAAC,eAAe,CAC5B,eAAyC,EACzC,KAAoB,EACpB,QAAiB;QAEjB,IAAI,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC/D,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9D,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtE,CAAC;IACD,yBAAyB;IAElB,KAAK,CAAC,kBAAkB,CAC9B,eAAyC,EACzC,eAA8B;QAE9B,MAAM,eAAe,CAAC,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACjE,CAAC;IAEM,iBAAiB,CACvB,eAAyC,EACzC,eAA8B;QAE9B,gEAAgE;QAChE,MAAM,aAAa,GAA6B,EAAE,CAAC;QACnD,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACzD,aAAa,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,gBAAgB;QAChB,IACC,eAAe,CAAC,SAAS,CAAC,IAAI,CAC7B,CAAC,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,eAAe,CAC5D,EACA,CAAC;YACF,OAAO,IAAI,CAAC;QACb,CAAC;QAED,UAAU;QACV,MAAM,gBAAgB,GAAG,eAAe,CAAC,eAAe,CAAC;QACzD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CACvB,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EACxD,eAAe,CACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,YAAY,CACnB,OAAiC,EACjC,eAA8B;QAE9B,MAAM,cAAc,GAAG,IAAI,GAAG,EAAwB,CAAC;QACvD,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAE3B,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,kBAAkB,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAEzC,IAAI,CAAC,kBAAkB,IAAI,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACnE,SAAS;YACV,CAAC;YAED,IAAI,kBAAkB,KAAK,eAAe,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACb,CAAC;YAED,IACC,QAAQ,CAAC,kBAAkB,CAAC;gBAC5B,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EACxD,CAAC;gBACF,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAChC,sBAAsB,EACtB,kBAAkB,CAClB,CAAC;gBACF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAE5C,IAAI,eAAe,IAAI,eAAe,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;wBACrE,KAAK,CAAC,IAAI,CAAC,GAAI,eAAiC,CAAC,OAAO,CAAC,CAAC;oBAC3D,CAAC;gBACF,CAAC;YACF,CAAC;YAED,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,0BAA0B,CACvC,WAA4B;QAE5B,MAAM,KAAK,GAAG,CACb,MAAqB,EACrB,IAAqB,EACrB,OAA2B,EAC3B,KAAyB,EACf,EAAE;YACZ,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAqC,IAAI,CAAC,GAAG,CAC3D,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAClD,CAAC;gBAEF,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAE3C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvB,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;wBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACpC,IAAI,KAAK,EAAE,CAAC;4BACX,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;4BAChD,IAAI,IAAI,EAAE,CAAC;gCACV,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;4BACjC,CAAC;wBACF,CAAC;oBACF,CAAC;oBAED,mEAAmE;oBACnE,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;wBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACpC,IAAI,CAAC,KAAK;4BAAE,OAAO,KAAK,CAAC;wBACzB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU,CAC5D,CAAC;wBACF,OAAO,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;oBACrC,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC,aAAa,EAAE,CAAC;wBACpB,IAAI,CAAC,SAAS,CAAC;4BACd,IAAI,EAAE,cAAc;4BACpB,IAAI,EAAE,SAAS;yBACf,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC;YAED,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC;YACd,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAElB,kEAAkE;YAClE,gEAAgE;YAChE,iEAAiE;YACjE,4DAA4D;YAC5D,2DAA2D;YAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,oEAAoE;gBACpE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;oBAAE,SAAS;gBACrC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACd,CAAC,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,EAAiB,EAAE,IAAI,GAAG,EAAiB,CAAC,CAAC;QACvE,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,WAAqB;QACxD,MAAM,KAAK,GAAG,CACb,MAAqB,EACrB,IAAqB,EACrB,OAA2B,EAC3B,KAAyB,EAClB,EAAE;YACT,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC1B,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACpC,IAAI,KAAK,EAAE,CAAC;wBACX,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;wBAEhD,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;4BAC/C,IAAI,CAAC,SAAS,CAAC;gCACd,IAAI,EAAE,YAAY;gCAClB,IAAI,EAAE,SAAS;qCACb,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qCACnC,MAAM,CAAC,CAAC,IAAI,EAAgB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;qCAClD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;6BAC3B,CAAC,CAAC;4BACH,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;wBACjC,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,OAAO;YACR,CAAC;YAED,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,OAAO;YACR,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAElB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;oBACvC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC1C,CAAC;YACF,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,EAAiB,EAAE,IAAI,GAAG,EAAiB,CAAC,CAAC;QACvE,CAAC;IACF,CAAC;IAEO,0BAA0B,CACjC,QAAc;QAEd,OAAO,CACN,OAAO,CAAC,WAAW,CAAC,2BAA2B,EAAE,QAAQ,CAAC,IAAI,EAAE,CAChE,CAAC,IAAI,CAAC,CAAC,CAAoB,EAAE,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAEO,kCAAkC,CAAC,QAAkB;QAC5D,OAAO,CACN,OAAO,CAAC,WAAW,CAAC,oCAAoC,EAAE,QAAQ,CAAC,IAAI,EAAE,CACzE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAEO,+BAA+B,CAAC,QAAkB;QACzD,OAAO,CACN,OAAO,CAAC,WAAW,CAAC,+BAA+B,EAAE,QAAQ,CAAC,IAAI,EAAE,CACpE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAEO,yBAAyB,CAChC,QAAkB;QAElB,OAAO,OAAO,CAAC,WAAW,CAAC,sBAAsB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IACpE,CAAC;CACD"}
@@ -0,0 +1,25 @@
1
+ import { InjectionContextError } from "../../errors/injection-errors.js";
2
+ let current = null;
3
+ /**
4
+ * Runs `fn` with `ctx` as the current injection context (`null` = none)
5
+ * and restores the previous one afterwards, even if `fn` throws.
6
+ *
7
+ * @internal Not exported from the package entry point.
8
+ */
9
+ export function withInjectionContext(ctx, fn) {
10
+ const previous = current;
11
+ current = ctx;
12
+ try {
13
+ return fn();
14
+ }
15
+ finally {
16
+ current = previous;
17
+ }
18
+ }
19
+ export function inject(token, options = {}) {
20
+ if (!current) {
21
+ throw new InjectionContextError(token);
22
+ }
23
+ return current.inject(token, options);
24
+ }
25
+ //# 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":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAYtE,IAAI,OAAO,GAA4B,IAAI,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,UAAU,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,MAAM,UAAU,MAAM,CACrB,KAAuB,EACvB,UAAyB,EAAE;IAE3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAkB,CAAC;AACxD,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { __decorate } from "tslib";
2
+ import "reflect-metadata";
3
+ import { Global } from "../decorators/global.js";
4
+ import { Module } from "../decorators/module.js";
5
+ /**
6
+ * Built-in provider that lets any service load a lazy module on demand.
7
+ * Registered automatically by `NexusApplication`; inject it with
8
+ * `@Inject(LazyModuleLoader)`.
9
+ */
10
+ export class LazyModuleLoader {
11
+ constructor(loadFn, unloadFn) {
12
+ this.loadFn = loadFn;
13
+ this.unloadFn = unloadFn;
14
+ }
15
+ load(lazyModule) {
16
+ return this.loadFn(lazyModule);
17
+ }
18
+ unload(ref) {
19
+ return this.unloadFn(ref);
20
+ }
21
+ }
22
+ let NexusInternalModule = class NexusInternalModule {
23
+ };
24
+ NexusInternalModule = __decorate([
25
+ Global(),
26
+ Module({})
27
+ ], NexusInternalModule);
28
+ /** Global module carrying the application's built-in providers. */
29
+ export function createInternalModule(loader) {
30
+ return {
31
+ module: NexusInternalModule,
32
+ providers: [{ provide: LazyModuleLoader, useValue: loader }],
33
+ exports: [LazyModuleLoader],
34
+ };
35
+ }
36
+ //# 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":";AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C;;;;GAIG;AACH,MAAM,OAAO,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;AAID,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,mBAAmB;IAFxB,MAAM,EAAE;IACR,MAAM,CAAC,EAAE,CAAC;GACL,mBAAmB,CAAG;AAE5B,mEAAmE;AACnE,MAAM,UAAU,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,80 @@
1
+ import { ContainerNotCompiledError } from "@nexus-ioc/shared";
2
+ import { ContainerClosedError } from "../errors/index.js";
3
+ import { isDynamicModule } from "../utils/helpers.js";
4
+ /**
5
+ * Handle to a lazily loaded module. Providers physically live in the
6
+ * application's single container; `get()` and `resolve()` only scope what is
7
+ * visible. `get()` is synchronous and returns already-created singletons;
8
+ * `resolve()` is async and creates transient/scoped/uncreated providers on demand.
9
+ */
10
+ export class ModuleRef {
11
+ constructor(container, segment) {
12
+ this.container = container;
13
+ this.segment = segment;
14
+ this._loaded = true;
15
+ }
16
+ get name() {
17
+ return this.segment.lazyModule.name;
18
+ }
19
+ get module() {
20
+ const metatype = this.segment.moduleContainer.metatype;
21
+ return isDynamicModule(metatype) ? metatype.module : metatype;
22
+ }
23
+ /** `false` once `unload()` has run; a later `load()` of the same ref
24
+ * returns a new `ModuleRef` instead of reactivating this one. */
25
+ get loaded() {
26
+ return this._loaded;
27
+ }
28
+ get(token, options = {}) {
29
+ if (!this.canSee(token, options)) {
30
+ return undefined;
31
+ }
32
+ return this.container.get(token);
33
+ }
34
+ async resolve(token, options = {}) {
35
+ if (!this.canSee(token, options)) {
36
+ return undefined;
37
+ }
38
+ return this.container.resolve(token);
39
+ }
40
+ canSee(token, options) {
41
+ if (!this._loaded) {
42
+ return false;
43
+ }
44
+ if (!this.container.hasProvider(token)) {
45
+ return false;
46
+ }
47
+ const strict = options.strict ?? true;
48
+ return (!strict ||
49
+ this.container.graph.isProviderVisible(this.segment.moduleContainer, token));
50
+ }
51
+ /**
52
+ * Unloads this segment: destroys every singleton and module nothing else
53
+ * still needs. A no-op if already unloaded.
54
+ */
55
+ async unload() {
56
+ if (!this._loaded) {
57
+ return {
58
+ destroyedModules: [],
59
+ destroyedProviders: [],
60
+ closedChildren: 0,
61
+ };
62
+ }
63
+ try {
64
+ const result = await this.container.unload(this.segment.lazyModule);
65
+ this._loaded = false;
66
+ return result;
67
+ }
68
+ catch (error) {
69
+ // A closed or not-compiled container refuses before unloading
70
+ // anything. Any other failure (an onModuleDestroy hook, a child's
71
+ // close) comes after the segment was dropped, so it is unloaded.
72
+ if (!(error instanceof ContainerClosedError) &&
73
+ !(error instanceof ContainerNotCompiledError)) {
74
+ this._loaded = false;
75
+ }
76
+ throw error;
77
+ }
78
+ }
79
+ }
80
+ //# 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,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAQjD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAWnD;;;;;GAKG;AACH,MAAM,OAAO,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,eAAe,CAAC,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,oBAAoB,CAAC;gBACxC,CAAC,CAAC,KAAK,YAAY,yBAAyB,CAAC,EAC5C,CAAC;gBACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACtB,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;CACD"}
@@ -1,6 +1,14 @@
1
+ import "reflect-metadata";
2
+ import { ContainerNotCompiledError } from "@nexus-ioc/shared";
3
+ import { ContainerClosedError, LazyModuleGraphError, LazyModuleLoadError, ProviderNotFoundError, ProviderNotInstantiatedError, ProviderScopeError, } from "../../errors/index.js";
4
+ import { MODULE_WATERMARK, NodeTypeEnum, Scope } from "../../interfaces/index.js";
5
+ import { isDynamicModule } from "../../utils/helpers.js";
1
6
  import { ModuleGraph } from "../graph/module-graph.js";
2
7
  import { Resolver } from "../resolver/resolver.js";
3
8
  import { ModulesContainer } from "./modules-container.js";
9
+ function errorList(error) {
10
+ return error instanceof AggregateError ? [...error.errors] : [error];
11
+ }
4
12
  /**
5
13
  * Container is the core IoC (Inversion of Control) container that manages
6
14
  * modules, providers, and dependency injection.
@@ -15,7 +23,7 @@ import { ModulesContainer } from "./modules-container.js";
15
23
  * ```typescript
16
24
  * const container = new Container(hashUtils);
17
25
  * await container.run(AppModule);
18
- * const service = await container.get(MyService);
26
+ * const service = container.get(MyService);
19
27
  * ```
20
28
  */
21
29
  export class Container {
@@ -29,6 +37,23 @@ export class Container {
29
37
  this.modulesContainer = new ModulesContainer(this.hashUtils, this);
30
38
  this._graph = null;
31
39
  this.moduleGraphResolver = null;
40
+ /** The parent chain of a child container; kept for runtime resolution. */
41
+ this.link = null;
42
+ this.closed = false;
43
+ this.segments = new Map();
44
+ /**
45
+ * Root module token of every currently loaded segment, by ref id. Used
46
+ * to compute `protectedRoots` for `unload`; set once a segment's
47
+ * compile succeeds, cleared once it is unloaded.
48
+ */
49
+ this.loadedSegments = new Map();
50
+ /**
51
+ * Tail of the segment compilation chain. Loader functions run in parallel,
52
+ * but the graph mutation that follows each of them runs one at a time.
53
+ */
54
+ this.compileQueue = Promise.resolve();
55
+ /** See `onUnloading`. */
56
+ this.unloadingHook = null;
32
57
  }
33
58
  /**
34
59
  * Adds a module to the container.
@@ -82,26 +107,83 @@ export class Container {
82
107
  return this.modulesContainer.getModule(module);
83
108
  }
84
109
  /**
85
- * Resolves and returns an instance of a provider by its injection token.
110
+ * True iff the graph has a provider node for the token.
111
+ */
112
+ hasProvider(token) {
113
+ return this._graph?.getNode(token)?.type === NodeTypeEnum.PROVIDER;
114
+ }
115
+ /**
116
+ * Synchronously returns an already-created singleton.
86
117
  *
87
- * This is the main method for retrieving dependencies from the container.
88
- * The instance is created according to its scope:
89
- * - Singleton: Same instance returned every time
90
- * - Request: New instance for each get() call
91
- * - Transient: New instance every time, even within the same dependency tree
118
+ * @throws {ProviderNotFoundError} If no provider has this token
119
+ * @throws {ProviderScopeError} If the provider is Transient
120
+ * @throws {ProviderNotInstantiatedError} If the singleton is not created yet
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * await container.run(AppModule);
125
+ * const userService = container.get(UserService);
126
+ * ```
127
+ */
128
+ get(token) {
129
+ this.assertOpen();
130
+ if (!this._graph || !this.moduleGraphResolver) {
131
+ throw new ContainerNotCompiledError();
132
+ }
133
+ const node = this._graph.getNode(token);
134
+ if (!node || node.type !== NodeTypeEnum.PROVIDER) {
135
+ throw new ProviderNotFoundError(token);
136
+ }
137
+ if (node.scope !== Scope.Singleton) {
138
+ throw new ProviderScopeError(token, node.scope);
139
+ }
140
+ const cached = this.moduleGraphResolver.getInstantiated(token);
141
+ if (!cached.found) {
142
+ throw new ProviderNotInstantiatedError(token);
143
+ }
144
+ return cached.instance;
145
+ }
146
+ /**
147
+ * Resolves an instance of a provider, creating it according to its scope.
92
148
  *
93
- * @template T - The type of the provider to resolve
94
- * @param token - The injection token (class, string, or symbol)
95
- * @returns A promise that resolves to the provider instance, or undefined if not found
149
+ * @throws {ProviderNotFoundError} If no provider has this token
96
150
  *
97
151
  * @example
98
152
  * ```typescript
99
- * const userService = await container.get(UserService);
100
- * const config = await container.get('CONFIG');
153
+ * const userService = await container.resolve(UserService);
101
154
  * ```
102
155
  */
103
- async get(token) {
104
- return this.moduleGraphResolver?.resolveProvider(token);
156
+ async resolve(token) {
157
+ this.assertOpen();
158
+ if (!this._graph || !this.moduleGraphResolver) {
159
+ throw new ContainerNotCompiledError();
160
+ }
161
+ if (!this.hasProvider(token)) {
162
+ throw new ProviderNotFoundError(token);
163
+ }
164
+ return (await this.moduleGraphResolver.resolveProvider(token));
165
+ }
166
+ /**
167
+ * Pre-instantiates every singleton provider named by `tokens` (other
168
+ * tokens are skipped). Uses the resolver directly, without the closed
169
+ * guard, so a load that was already in flight when `close()` started can
170
+ * still finish its warm-up; those singletons are destroyed by the
171
+ * teardown that follows.
172
+ *
173
+ * @throws {ContainerNotCompiledError} If run() has not been called yet
174
+ */
175
+ async instantiateSingletons(tokens) {
176
+ if (!this._graph || !this.moduleGraphResolver) {
177
+ throw new ContainerNotCompiledError();
178
+ }
179
+ for (const token of tokens) {
180
+ const node = this._graph.getNode(token);
181
+ if (node &&
182
+ node.type === NodeTypeEnum.PROVIDER &&
183
+ node.scope === Scope.Singleton) {
184
+ await this.moduleGraphResolver.resolveProvider(token);
185
+ }
186
+ }
105
187
  }
106
188
  /**
107
189
  * Initializes and runs the container with the specified root module.
@@ -115,6 +197,10 @@ export class Container {
115
197
  * This method must be called before using get() to resolve dependencies.
116
198
  *
117
199
  * @param rootModule - The root module of the application
200
+ * @param internalModules - Framework-provided global modules compiled before
201
+ * the user root, so their exports are visible to every user module
202
+ * @param options.link - The parent chain of a child container. Dependencies
203
+ * not visible locally but provided by the link compile as external edges.
118
204
  * @returns A promise that resolves when initialization is complete
119
205
  * @throws {Error} If there are circular dependencies or missing providers
120
206
  *
@@ -125,12 +211,177 @@ export class Container {
125
211
  * // Now you can use container.get() to resolve dependencies
126
212
  * ```
127
213
  */
128
- async run(rootModule) {
214
+ async run(rootModule, internalModules = [], options = {}) {
129
215
  const root = await this.modulesContainer.addModule(rootModule);
130
- this._graph = new ModuleGraph(root);
131
- this.moduleGraphResolver = new Resolver(this._graph);
216
+ const internals = await Promise.all(internalModules.map((module) => this.modulesContainer.addModule(module)));
217
+ this.link = options.link ?? null;
218
+ const link = this.link;
219
+ this._graph = new ModuleGraph(root, internals, link ? { externalLookup: (token) => link.canProvide(token) } : {});
220
+ this.moduleGraphResolver = new Resolver(this._graph, link);
221
+ if (this.closed) {
222
+ // close() ran before there was a resolver to close: nothing may be
223
+ // created from here on (a warm-up would otherwise outlive it).
224
+ this.moduleGraphResolver.markClosed();
225
+ }
132
226
  await this._graph.compile();
133
227
  }
228
+ /**
229
+ * Loads a lazy module into this container: runs its loader, registers the
230
+ * module and compiles only the new part of the graph. Idempotent per ref;
231
+ * concurrent calls share one in-flight load. A failed load is not cached,
232
+ * so the caller may retry.
233
+ *
234
+ * @param lazyModule - The lazy module reference, created via `lazy()`
235
+ * @returns A promise that resolves to the graph segment added by this load
236
+ * @throws {ContainerNotCompiledError} If run() has not been called yet
237
+ * @throws {LazyModuleLoadError} If the loader rejects or does not return a @Module() class
238
+ * @throws {LazyModuleGraphError} If the loaded module fails to compile
239
+ */
240
+ async load(lazyModule) {
241
+ this.assertOpen();
242
+ if (!this._graph) {
243
+ throw new ContainerNotCompiledError();
244
+ }
245
+ const inFlight = this.segments.get(lazyModule.id);
246
+ if (inFlight) {
247
+ return inFlight;
248
+ }
249
+ const loading = this.loadSegment(lazyModule).catch((error) => {
250
+ this.segments.delete(lazyModule.id);
251
+ throw error;
252
+ });
253
+ this.segments.set(lazyModule.id, loading);
254
+ return loading;
255
+ }
256
+ /**
257
+ * Runs `fn` after every previously enqueued task has settled, so segment
258
+ * registration and compilation never interleave. A rejected task does not
259
+ * break the chain for the tasks behind it.
260
+ */
261
+ enqueueCompile(fn) {
262
+ const run = this.compileQueue.then(fn, fn);
263
+ this.compileQueue = run.then(() => undefined, () => undefined);
264
+ return run;
265
+ }
266
+ async loadSegment(lazyModule) {
267
+ let loaded;
268
+ try {
269
+ loaded = await lazyModule.load();
270
+ }
271
+ catch (error) {
272
+ throw new LazyModuleLoadError(lazyModule.name, error instanceof Error ? error.message : String(error));
273
+ }
274
+ const metatype = loaded && isDynamicModule(loaded) ? loaded.module : loaded;
275
+ if (typeof metatype !== "function" ||
276
+ !Reflect.hasMetadata(MODULE_WATERMARK, metatype)) {
277
+ throw new LazyModuleLoadError(lazyModule.name, "loader did not return a class decorated with @Module()");
278
+ }
279
+ const segment = await this.enqueueCompile(async () => {
280
+ const moduleContainer = await this.modulesContainer.addModule(loaded);
281
+ const compiled = await this.graph.compileSegment(moduleContainer, lazyModule);
282
+ if (compiled.errors.length === 0) {
283
+ this.loadedSegments.set(lazyModule.id, compiled.moduleContainer.token);
284
+ }
285
+ return compiled;
286
+ });
287
+ if (segment.errors.length > 0) {
288
+ throw new LazyModuleGraphError(lazyModule.name, segment.errors);
289
+ }
290
+ return segment;
291
+ }
292
+ /**
293
+ * Unloads a previously loaded lazy segment: destroys every singleton and
294
+ * module nothing else still needs, and leaves the rest untouched (a
295
+ * shared module, a `@Global()` module another segment depends on, a
296
+ * nested lazy module loaded from inside this one). Runs on the same
297
+ * compile queue as `load`, so it never interleaves with a concurrent
298
+ * load or unload of a different ref. Waits for an in-flight load of the
299
+ * same ref to settle first. A ref that was never loaded is a no-op.
300
+ * Concurrent `unload()` calls for the *same* ref are also safe, but only
301
+ * because `ModuleGraph.unloadSegment` is idempotent (a second call
302
+ * against an already-unloaded placeholder is a no-op) — `Container.unload`
303
+ * itself does not enforce this, so a future change to `unloadSegment`
304
+ * must preserve that idempotency or this guarantee silently breaks.
305
+ */
306
+ async unload(lazyModule) {
307
+ this.assertOpen();
308
+ if (!this._graph) {
309
+ throw new ContainerNotCompiledError();
310
+ }
311
+ const inFlight = this.segments.get(lazyModule.id);
312
+ if (!inFlight) {
313
+ return {
314
+ destroyedModules: [],
315
+ destroyedProviders: [],
316
+ closedChildren: 0,
317
+ };
318
+ }
319
+ await inFlight.catch(() => undefined);
320
+ if (!this.loadedSegments.has(lazyModule.id)) {
321
+ return {
322
+ destroyedModules: [],
323
+ destroyedProviders: [],
324
+ closedChildren: 0,
325
+ };
326
+ }
327
+ return this.enqueueCompile(async () => {
328
+ const protectedRoots = new Set([
329
+ this.graph.rootToken,
330
+ ...this.graph.internalRootTokens,
331
+ ...[...this.loadedSegments.entries()]
332
+ .filter(([id]) => id !== lazyModule.id)
333
+ .map(([, token]) => token),
334
+ ]);
335
+ const result = this.graph.unloadSegment(lazyModule, protectedRoots);
336
+ // The graph has dropped the segment, so whatever fails below, the
337
+ // container forgets it too (see the finally); otherwise the ref
338
+ // could never be loaded again.
339
+ try {
340
+ // Children declared by a destroyed module go first, while the
341
+ // providers they hold through their link are still alive. Their
342
+ // failures are reported after the unload has finished.
343
+ let closedChildren = 0;
344
+ let childFailure;
345
+ if (this.unloadingHook && result.destroyedModules.length > 0) {
346
+ const closing = await this.unloadingHook(result.destroyedModules);
347
+ closedChildren = closing.closed;
348
+ childFailure = closing.error;
349
+ }
350
+ try {
351
+ // Runs every hook and empties the cache even if some throw.
352
+ await this.moduleGraphResolver?.destroy(result.destroyedProviders);
353
+ }
354
+ catch (error) {
355
+ if (childFailure === undefined) {
356
+ throw error;
357
+ }
358
+ // Neither failure is dropped.
359
+ throw new AggregateError([...errorList(childFailure), ...errorList(error)], "Unloading failed: child applications and onModuleDestroy hooks");
360
+ }
361
+ if (childFailure !== undefined) {
362
+ throw childFailure;
363
+ }
364
+ return { ...result, closedChildren };
365
+ }
366
+ finally {
367
+ for (const moduleToken of result.destroyedModules) {
368
+ this.modulesContainer.removeModule(moduleToken);
369
+ }
370
+ this.segments.delete(lazyModule.id);
371
+ this.loadedSegments.delete(lazyModule.id);
372
+ }
373
+ });
374
+ }
375
+ /**
376
+ * Registers the hook `unload` calls once the graph has dropped a segment
377
+ * and before that segment's providers are destroyed, with the tokens of
378
+ * the modules being destroyed. The application closes the child
379
+ * applications those modules declared there. One hook per container; a
380
+ * later call replaces it.
381
+ */
382
+ onUnloading(hook) {
383
+ this.unloadingHook = hook;
384
+ }
134
385
  /**
135
386
  * Gets the dependency graph.
136
387
  *
@@ -174,5 +425,42 @@ export class Container {
174
425
  get errors() {
175
426
  return this.graph.errors;
176
427
  }
428
+ /** Whether run() has built the graph, so get()/resolve() can be used. */
429
+ get isCompiled() {
430
+ return this._graph !== null && this.moduleGraphResolver !== null;
431
+ }
432
+ /** Whether the container has been closed (or is closing). */
433
+ get isClosed() {
434
+ return this.closed;
435
+ }
436
+ assertOpen() {
437
+ if (this.closed) {
438
+ throw new ContainerClosedError();
439
+ }
440
+ }
441
+ /**
442
+ * Synchronously marks the container closed: every later public
443
+ * `get`/`resolve`/`load`/`unload` call throws `ContainerClosedError`.
444
+ * Work already in flight (a load past its guard, its singleton warm-up)
445
+ * is not interrupted. `close()` calls this too; callers that need the
446
+ * flag set before they drain their own work call it first.
447
+ */
448
+ markClosed() {
449
+ this.closed = true;
450
+ }
451
+ /**
452
+ * Closes the container and cleans up resources: marks it closed, waits
453
+ * for in-flight segment loads, then destroys every created provider on
454
+ * the compile queue.
455
+ *
456
+ * @returns A promise that resolves when the container is closed
457
+ */
458
+ async close() {
459
+ this.markClosed();
460
+ await Promise.all([...this.segments.values()].map((segment) => segment.catch(() => undefined)));
461
+ await this.enqueueCompile(async () => {
462
+ await this.moduleGraphResolver?.close();
463
+ });
464
+ }
177
465
  }
178
466
  //# sourceMappingURL=container.js.map