@depup/nestjs__core 11.1.17-depup.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 (371) hide show
  1. package/LICENSE +22 -0
  2. package/PACKAGE.md +1 -0
  3. package/README.md +25 -0
  4. package/Readme.md +146 -0
  5. package/adapters/http-adapter.d.ts +80 -0
  6. package/adapters/http-adapter.js +90 -0
  7. package/adapters/index.d.ts +1 -0
  8. package/adapters/index.js +4 -0
  9. package/application-config.d.ts +47 -0
  10. package/application-config.js +107 -0
  11. package/changes.json +5 -0
  12. package/constants.d.ts +14 -0
  13. package/constants.js +21 -0
  14. package/discovery/discoverable-meta-host-collection.d.ts +46 -0
  15. package/discovery/discoverable-meta-host-collection.js +98 -0
  16. package/discovery/discovery-module.d.ts +5 -0
  17. package/discovery/discovery-module.js +19 -0
  18. package/discovery/discovery-service.d.ts +76 -0
  19. package/discovery/discovery-service.js +98 -0
  20. package/discovery/index.d.ts +2 -0
  21. package/discovery/index.js +5 -0
  22. package/errors/exception-handler.d.ts +4 -0
  23. package/errors/exception-handler.js +11 -0
  24. package/errors/exceptions/circular-dependency.exception.d.ts +4 -0
  25. package/errors/exceptions/circular-dependency.exception.js +11 -0
  26. package/errors/exceptions/index.d.ts +8 -0
  27. package/errors/exceptions/index.js +11 -0
  28. package/errors/exceptions/invalid-class-module.exception.d.ts +4 -0
  29. package/errors/exceptions/invalid-class-module.exception.js +11 -0
  30. package/errors/exceptions/invalid-class-scope.exception.d.ts +5 -0
  31. package/errors/exceptions/invalid-class-scope.exception.js +16 -0
  32. package/errors/exceptions/invalid-class.exception.d.ts +4 -0
  33. package/errors/exceptions/invalid-class.exception.js +11 -0
  34. package/errors/exceptions/invalid-exception-filter.exception.d.ts +4 -0
  35. package/errors/exceptions/invalid-exception-filter.exception.js +11 -0
  36. package/errors/exceptions/invalid-middleware-configuration.exception.d.ts +4 -0
  37. package/errors/exceptions/invalid-middleware-configuration.exception.js +11 -0
  38. package/errors/exceptions/invalid-middleware.exception.d.ts +4 -0
  39. package/errors/exceptions/invalid-middleware.exception.js +11 -0
  40. package/errors/exceptions/invalid-module.exception.d.ts +4 -0
  41. package/errors/exceptions/invalid-module.exception.js +11 -0
  42. package/errors/exceptions/runtime.exception.d.ts +4 -0
  43. package/errors/exceptions/runtime.exception.js +12 -0
  44. package/errors/exceptions/undefined-dependency.exception.d.ts +6 -0
  45. package/errors/exceptions/undefined-dependency.exception.js +11 -0
  46. package/errors/exceptions/undefined-forwardref.exception.d.ts +5 -0
  47. package/errors/exceptions/undefined-forwardref.exception.js +11 -0
  48. package/errors/exceptions/undefined-module.exception.d.ts +4 -0
  49. package/errors/exceptions/undefined-module.exception.js +11 -0
  50. package/errors/exceptions/unknown-dependencies.exception.d.ts +16 -0
  51. package/errors/exceptions/unknown-dependencies.exception.js +15 -0
  52. package/errors/exceptions/unknown-element.exception.d.ts +4 -0
  53. package/errors/exceptions/unknown-element.exception.js +11 -0
  54. package/errors/exceptions/unknown-export.exception.d.ts +4 -0
  55. package/errors/exceptions/unknown-export.exception.js +11 -0
  56. package/errors/exceptions/unknown-module.exception.d.ts +4 -0
  57. package/errors/exceptions/unknown-module.exception.js +10 -0
  58. package/errors/exceptions/unknown-request-mapping.exception.d.ts +5 -0
  59. package/errors/exceptions/unknown-request-mapping.exception.js +11 -0
  60. package/errors/exceptions-zone.d.ts +5 -0
  61. package/errors/exceptions-zone.js +34 -0
  62. package/errors/messages.d.ts +17 -0
  63. package/errors/messages.js +174 -0
  64. package/exceptions/base-exception-filter-context.d.ts +14 -0
  65. package/exceptions/base-exception-filter-context.js +56 -0
  66. package/exceptions/base-exception-filter.d.ts +20 -0
  67. package/exceptions/base-exception-filter.js +72 -0
  68. package/exceptions/exceptions-handler.d.ts +10 -0
  69. package/exceptions/exceptions-handler.js +34 -0
  70. package/exceptions/external-exception-filter-context.d.ts +12 -0
  71. package/exceptions/external-exception-filter-context.js +42 -0
  72. package/exceptions/external-exception-filter.d.ts +5 -0
  73. package/exceptions/external-exception-filter.js +15 -0
  74. package/exceptions/external-exceptions-handler.d.ts +9 -0
  75. package/exceptions/external-exceptions-handler.js +34 -0
  76. package/exceptions/index.d.ts +1 -0
  77. package/exceptions/index.js +4 -0
  78. package/guards/constants.d.ts +1 -0
  79. package/guards/constants.js +4 -0
  80. package/guards/guards-consumer.d.ts +9 -0
  81. package/guards/guards-consumer.js +39 -0
  82. package/guards/guards-context-creator.d.ts +17 -0
  83. package/guards/guards-context-creator.js +70 -0
  84. package/guards/index.d.ts +3 -0
  85. package/guards/index.js +6 -0
  86. package/helpers/barrier.d.ts +30 -0
  87. package/helpers/barrier.js +46 -0
  88. package/helpers/context-creator.d.ts +10 -0
  89. package/helpers/context-creator.js +33 -0
  90. package/helpers/context-id-factory.d.ts +41 -0
  91. package/helpers/context-id-factory.js +67 -0
  92. package/helpers/context-utils.d.ts +23 -0
  93. package/helpers/context-utils.js +55 -0
  94. package/helpers/execution-context-host.d.ts +19 -0
  95. package/helpers/execution-context-host.js +50 -0
  96. package/helpers/external-context-creator.d.ts +51 -0
  97. package/helpers/external-context-creator.js +166 -0
  98. package/helpers/external-proxy.d.ts +5 -0
  99. package/helpers/external-proxy.js +19 -0
  100. package/helpers/get-class-scope.d.ts +3 -0
  101. package/helpers/get-class-scope.js +8 -0
  102. package/helpers/handler-metadata-storage.d.ts +27 -0
  103. package/helpers/handler-metadata-storage.js +26 -0
  104. package/helpers/http-adapter-host.d.ts +51 -0
  105. package/helpers/http-adapter-host.js +73 -0
  106. package/helpers/index.d.ts +3 -0
  107. package/helpers/index.js +6 -0
  108. package/helpers/interfaces/external-handler-metadata.interface.d.ts +11 -0
  109. package/helpers/interfaces/external-handler-metadata.interface.js +2 -0
  110. package/helpers/interfaces/index.d.ts +2 -0
  111. package/helpers/interfaces/index.js +5 -0
  112. package/helpers/interfaces/params-metadata.interface.d.ts +6 -0
  113. package/helpers/interfaces/params-metadata.interface.js +2 -0
  114. package/helpers/is-durable.d.ts +2 -0
  115. package/helpers/is-durable.js +8 -0
  116. package/helpers/load-adapter.d.ts +1 -0
  117. package/helpers/load-adapter.js +15 -0
  118. package/helpers/messages.d.ts +7 -0
  119. package/helpers/messages.js +29 -0
  120. package/helpers/optional-require.d.ts +1 -0
  121. package/helpers/optional-require.js +11 -0
  122. package/helpers/rethrow.d.ts +1 -0
  123. package/helpers/rethrow.js +7 -0
  124. package/helpers/router-method-factory.d.ts +23 -0
  125. package/helpers/router-method-factory.js +33 -0
  126. package/hooks/before-app-shutdown.hook.d.ts +9 -0
  127. package/hooks/before-app-shutdown.hook.js +51 -0
  128. package/hooks/index.d.ts +5 -0
  129. package/hooks/index.js +8 -0
  130. package/hooks/on-app-bootstrap.hook.d.ts +8 -0
  131. package/hooks/on-app-bootstrap.hook.js +53 -0
  132. package/hooks/on-app-shutdown.hook.d.ts +9 -0
  133. package/hooks/on-app-shutdown.hook.js +54 -0
  134. package/hooks/on-module-destroy.hook.d.ts +8 -0
  135. package/hooks/on-module-destroy.hook.js +53 -0
  136. package/hooks/on-module-init.hook.d.ts +8 -0
  137. package/hooks/on-module-init.hook.js +53 -0
  138. package/hooks/utils/get-instances-grouped-by-hierarchy-level.d.ts +3 -0
  139. package/hooks/utils/get-instances-grouped-by-hierarchy-level.js +27 -0
  140. package/hooks/utils/get-sorted-hierarchy-levels.d.ts +1 -0
  141. package/hooks/utils/get-sorted-hierarchy-levels.js +7 -0
  142. package/index.d.ts +17 -0
  143. package/index.js +32 -0
  144. package/injector/abstract-instance-resolver.d.ts +16 -0
  145. package/injector/abstract-instance-resolver.js +49 -0
  146. package/injector/compiler.d.ts +18 -0
  147. package/injector/compiler.js +35 -0
  148. package/injector/constants.d.ts +3 -0
  149. package/injector/constants.js +8 -0
  150. package/injector/container.d.ts +67 -0
  151. package/injector/container.js +233 -0
  152. package/injector/helpers/provider-classifier.d.ts +4 -0
  153. package/injector/helpers/provider-classifier.js +16 -0
  154. package/injector/helpers/silent-logger.d.ts +10 -0
  155. package/injector/helpers/silent-logger.js +18 -0
  156. package/injector/helpers/transient-instances.d.ts +12 -0
  157. package/injector/helpers/transient-instances.js +28 -0
  158. package/injector/index.d.ts +6 -0
  159. package/injector/index.js +8 -0
  160. package/injector/injector.d.ts +104 -0
  161. package/injector/injector.js +554 -0
  162. package/injector/inquirer/index.d.ts +1 -0
  163. package/injector/inquirer/index.js +4 -0
  164. package/injector/inquirer/inquirer-constants.d.ts +1 -0
  165. package/injector/inquirer/inquirer-constants.js +4 -0
  166. package/injector/inquirer/inquirer-providers.d.ts +2 -0
  167. package/injector/inquirer/inquirer-providers.js +11 -0
  168. package/injector/instance-links-host.d.ts +22 -0
  169. package/injector/instance-links-host.js +56 -0
  170. package/injector/instance-loader.d.ts +23 -0
  171. package/injector/instance-loader.js +88 -0
  172. package/injector/instance-wrapper.d.ts +99 -0
  173. package/injector/instance-wrapper.js +350 -0
  174. package/injector/internal-core-module/index.d.ts +1 -0
  175. package/injector/internal-core-module/index.js +4 -0
  176. package/injector/internal-core-module/internal-core-module-factory.d.ts +9 -0
  177. package/injector/internal-core-module/internal-core-module-factory.js +52 -0
  178. package/injector/internal-core-module/internal-core-module.d.ts +5 -0
  179. package/injector/internal-core-module/internal-core-module.js +40 -0
  180. package/injector/internal-providers-storage.d.ts +9 -0
  181. package/injector/internal-providers-storage.js +19 -0
  182. package/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts +6 -0
  183. package/injector/lazy-module-loader/lazy-module-loader-options.interface.js +2 -0
  184. package/injector/lazy-module-loader/lazy-module-loader.d.ts +20 -0
  185. package/injector/lazy-module-loader/lazy-module-loader.js +49 -0
  186. package/injector/module-ref.d.ts +106 -0
  187. package/injector/module-ref.js +66 -0
  188. package/injector/module.d.ts +82 -0
  189. package/injector/module.js +432 -0
  190. package/injector/modules-container.d.ts +27 -0
  191. package/injector/modules-container.js +42 -0
  192. package/injector/opaque-key-factory/by-reference-module-opaque-key-factory.d.ts +15 -0
  193. package/injector/opaque-key-factory/by-reference-module-opaque-key-factory.js +41 -0
  194. package/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.d.ts +15 -0
  195. package/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.js +83 -0
  196. package/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.d.ts +18 -0
  197. package/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.js +2 -0
  198. package/injector/settlement-signal.d.ts +37 -0
  199. package/injector/settlement-signal.js +55 -0
  200. package/injector/topology-tree/topology-tree.d.ts +8 -0
  201. package/injector/topology-tree/topology-tree.js +51 -0
  202. package/injector/topology-tree/tree-node.d.ts +14 -0
  203. package/injector/topology-tree/tree-node.js +54 -0
  204. package/inspector/deterministic-uuid-registry.d.ts +6 -0
  205. package/inspector/deterministic-uuid-registry.js +24 -0
  206. package/inspector/graph-inspector.d.ts +26 -0
  207. package/inspector/graph-inspector.js +166 -0
  208. package/inspector/index.d.ts +4 -0
  209. package/inspector/index.js +7 -0
  210. package/inspector/initialize-on-preview.allowlist.d.ts +6 -0
  211. package/inspector/initialize-on-preview.allowlist.js +13 -0
  212. package/inspector/interfaces/edge.interface.d.ts +28 -0
  213. package/inspector/interfaces/edge.interface.js +2 -0
  214. package/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts +12 -0
  215. package/inspector/interfaces/enhancer-metadata-cache-entry.interface.js +2 -0
  216. package/inspector/interfaces/entrypoint.interface.d.ts +23 -0
  217. package/inspector/interfaces/entrypoint.interface.js +2 -0
  218. package/inspector/interfaces/extras.interface.d.ts +18 -0
  219. package/inspector/interfaces/extras.interface.js +2 -0
  220. package/inspector/interfaces/node.interface.d.ts +48 -0
  221. package/inspector/interfaces/node.interface.js +2 -0
  222. package/inspector/interfaces/serialized-graph-json.interface.d.ts +14 -0
  223. package/inspector/interfaces/serialized-graph-json.interface.js +2 -0
  224. package/inspector/interfaces/serialized-graph-metadata.interface.d.ts +10 -0
  225. package/inspector/interfaces/serialized-graph-metadata.interface.js +2 -0
  226. package/inspector/noop-graph-inspector.d.ts +2 -0
  227. package/inspector/noop-graph-inspector.js +8 -0
  228. package/inspector/partial-graph.host.d.ts +7 -0
  229. package/inspector/partial-graph.host.js +15 -0
  230. package/inspector/serialized-graph.d.ts +52 -0
  231. package/inspector/serialized-graph.js +124 -0
  232. package/inspector/uuid-factory.d.ts +9 -0
  233. package/inspector/uuid-factory.js +22 -0
  234. package/interceptors/index.d.ts +2 -0
  235. package/interceptors/index.js +5 -0
  236. package/interceptors/interceptors-consumer.d.ts +9 -0
  237. package/interceptors/interceptors-consumer.js +37 -0
  238. package/interceptors/interceptors-context-creator.d.ts +16 -0
  239. package/interceptors/interceptors-context-creator.js +69 -0
  240. package/interfaces/index.d.ts +2 -0
  241. package/interfaces/index.js +2 -0
  242. package/interfaces/module-definition.interface.d.ts +3 -0
  243. package/interfaces/module-definition.interface.js +2 -0
  244. package/interfaces/module-override.interface.d.ts +5 -0
  245. package/interfaces/module-override.interface.js +2 -0
  246. package/internal.d.ts +38 -0
  247. package/internal.js +46 -0
  248. package/metadata-scanner.d.ts +17 -0
  249. package/metadata-scanner.js +83 -0
  250. package/middleware/builder.d.ts +15 -0
  251. package/middleware/builder.js +91 -0
  252. package/middleware/container.d.ts +14 -0
  253. package/middleware/container.js +49 -0
  254. package/middleware/index.d.ts +1 -0
  255. package/middleware/index.js +4 -0
  256. package/middleware/middleware-module.d.ts +33 -0
  257. package/middleware/middleware-module.js +208 -0
  258. package/middleware/resolver.d.ts +10 -0
  259. package/middleware/resolver.js +18 -0
  260. package/middleware/route-info-path-extractor.d.ts +15 -0
  261. package/middleware/route-info-path-extractor.js +81 -0
  262. package/middleware/routes-mapper.d.ts +19 -0
  263. package/middleware/routes-mapper.js +117 -0
  264. package/middleware/utils.d.ts +8 -0
  265. package/middleware/utils.js +106 -0
  266. package/nest-application-context.d.ts +173 -0
  267. package/nest-application-context.js +327 -0
  268. package/nest-application.d.ts +64 -0
  269. package/nest-application.js +328 -0
  270. package/nest-factory.d.ts +83 -0
  271. package/nest-factory.js +232 -0
  272. package/package.json +73 -0
  273. package/pipes/index.d.ts +3 -0
  274. package/pipes/index.js +6 -0
  275. package/pipes/params-token-factory.d.ts +5 -0
  276. package/pipes/params-token-factory.js +19 -0
  277. package/pipes/pipes-consumer.d.ts +10 -0
  278. package/pipes/pipes-consumer.js +21 -0
  279. package/pipes/pipes-context-creator.d.ts +17 -0
  280. package/pipes/pipes-context-creator.js +72 -0
  281. package/repl/assign-to-object.util.d.ts +5 -0
  282. package/repl/assign-to-object.util.js +14 -0
  283. package/repl/constants.d.ts +1 -0
  284. package/repl/constants.js +4 -0
  285. package/repl/index.d.ts +1 -0
  286. package/repl/index.js +4 -0
  287. package/repl/native-functions/debug-repl-fn.d.ts +9 -0
  288. package/repl/native-functions/debug-repl-fn.js +46 -0
  289. package/repl/native-functions/get-repl-fn.d.ts +7 -0
  290. package/repl/native-functions/get-repl-fn.js +19 -0
  291. package/repl/native-functions/help-repl-fn.d.ts +7 -0
  292. package/repl/native-functions/help-repl-fn.js +29 -0
  293. package/repl/native-functions/index.d.ts +6 -0
  294. package/repl/native-functions/index.js +9 -0
  295. package/repl/native-functions/methods-repl-fn.d.ts +8 -0
  296. package/repl/native-functions/methods-repl-fn.js +28 -0
  297. package/repl/native-functions/resolve-repl-fn.d.ts +7 -0
  298. package/repl/native-functions/resolve-repl-fn.js +18 -0
  299. package/repl/native-functions/select-relp-fn.d.ts +7 -0
  300. package/repl/native-functions/select-relp-fn.js +18 -0
  301. package/repl/repl-context.d.ts +26 -0
  302. package/repl/repl-context.js +126 -0
  303. package/repl/repl-function.d.ts +18 -0
  304. package/repl/repl-function.js +19 -0
  305. package/repl/repl-logger.d.ts +5 -0
  306. package/repl/repl-logger.js +22 -0
  307. package/repl/repl-native-commands.d.ts +2 -0
  308. package/repl/repl-native-commands.js +46 -0
  309. package/repl/repl.d.ts +3 -0
  310. package/repl/repl.interfaces.d.ts +16 -0
  311. package/repl/repl.interfaces.js +2 -0
  312. package/repl/repl.js +32 -0
  313. package/router/index.d.ts +3 -0
  314. package/router/index.js +8 -0
  315. package/router/interfaces/exceptions-filter.interface.d.ts +6 -0
  316. package/router/interfaces/exceptions-filter.interface.js +2 -0
  317. package/router/interfaces/exclude-route-metadata.interface.d.ts +15 -0
  318. package/router/interfaces/exclude-route-metadata.interface.js +2 -0
  319. package/router/interfaces/index.d.ts +1 -0
  320. package/router/interfaces/index.js +4 -0
  321. package/router/interfaces/resolver.interface.d.ts +5 -0
  322. package/router/interfaces/resolver.interface.js +2 -0
  323. package/router/interfaces/route-params-factory.interface.d.ts +8 -0
  324. package/router/interfaces/route-params-factory.interface.js +2 -0
  325. package/router/interfaces/route-path-metadata.interface.d.ts +32 -0
  326. package/router/interfaces/route-path-metadata.interface.js +2 -0
  327. package/router/interfaces/routes.interface.d.ts +7 -0
  328. package/router/interfaces/routes.interface.js +2 -0
  329. package/router/legacy-route-converter.d.ts +16 -0
  330. package/router/legacy-route-converter.js +61 -0
  331. package/router/paths-explorer.d.ts +18 -0
  332. package/router/paths-explorer.js +45 -0
  333. package/router/request/index.d.ts +1 -0
  334. package/router/request/index.js +5 -0
  335. package/router/request/request-constants.d.ts +2 -0
  336. package/router/request/request-constants.js +5 -0
  337. package/router/request/request-providers.d.ts +2 -0
  338. package/router/request/request-providers.js +11 -0
  339. package/router/route-params-factory.d.ts +9 -0
  340. package/router/route-params-factory.js +41 -0
  341. package/router/route-path-factory.d.ts +14 -0
  342. package/router/route-path-factory.js +101 -0
  343. package/router/router-exception-filters.d.ts +14 -0
  344. package/router/router-exception-filters.js +40 -0
  345. package/router/router-execution-context.d.ts +54 -0
  346. package/router/router-execution-context.js +186 -0
  347. package/router/router-explorer.d.ts +47 -0
  348. package/router/router-explorer.js +234 -0
  349. package/router/router-module.d.ts +19 -0
  350. package/router/router-module.js +80 -0
  351. package/router/router-proxy.d.ts +6 -0
  352. package/router/router-proxy.js +31 -0
  353. package/router/router-response-controller.d.ts +28 -0
  354. package/router/router-response-controller.js +98 -0
  355. package/router/routes-resolver.d.ts +27 -0
  356. package/router/routes-resolver.js +129 -0
  357. package/router/sse-stream.d.ts +43 -0
  358. package/router/sse-stream.js +83 -0
  359. package/router/utils/exclude-route.util.d.ts +4 -0
  360. package/router/utils/exclude-route.util.js +19 -0
  361. package/router/utils/flatten-route-paths.util.d.ts +6 -0
  362. package/router/utils/flatten-route-paths.util.js +25 -0
  363. package/router/utils/index.d.ts +2 -0
  364. package/router/utils/index.js +5 -0
  365. package/scanner.d.ts +89 -0
  366. package/scanner.js +416 -0
  367. package/services/index.d.ts +1 -0
  368. package/services/index.js +4 -0
  369. package/services/reflector.service.d.ts +111 -0
  370. package/services/reflector.service.js +100 -0
  371. package/tsconfig.build.json +21 -0
@@ -0,0 +1,327 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NestApplicationContext = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
6
+ const iterare_1 = require("iterare");
7
+ const constants_1 = require("./constants");
8
+ const exceptions_1 = require("./errors/exceptions");
9
+ const context_id_factory_1 = require("./helpers/context-id-factory");
10
+ const hooks_1 = require("./hooks");
11
+ const abstract_instance_resolver_1 = require("./injector/abstract-instance-resolver");
12
+ const injector_1 = require("./injector/injector");
13
+ const instance_links_host_1 = require("./injector/instance-links-host");
14
+ /**
15
+ * @publicApi
16
+ */
17
+ class NestApplicationContext extends abstract_instance_resolver_1.AbstractInstanceResolver {
18
+ get instanceLinksHost() {
19
+ if (!this._instanceLinksHost) {
20
+ this._instanceLinksHost = new instance_links_host_1.InstanceLinksHost(this.container);
21
+ }
22
+ return this._instanceLinksHost;
23
+ }
24
+ constructor(container, appOptions = {}, contextModule = null, scope = new Array()) {
25
+ super();
26
+ this.container = container;
27
+ this.appOptions = appOptions;
28
+ this.contextModule = contextModule;
29
+ this.scope = scope;
30
+ this.isInitialized = false;
31
+ this.logger = new common_1.Logger(NestApplicationContext.name, {
32
+ timestamp: true,
33
+ });
34
+ this.shouldFlushLogsOnOverride = false;
35
+ this.activeShutdownSignals = new Array();
36
+ this.injector = new injector_1.Injector();
37
+ this.moduleCompiler = container.getModuleCompiler();
38
+ if (this.appOptions.preview) {
39
+ this.printInPreviewModeWarning();
40
+ }
41
+ }
42
+ selectContextModule() {
43
+ const modules = this.container.getModules().values();
44
+ this.contextModule = modules.next().value;
45
+ }
46
+ /**
47
+ * Allows navigating through the modules tree, for example, to pull out a specific instance from the selected module.
48
+ * @returns {INestApplicationContext}
49
+ */
50
+ select(moduleType, selectOptions) {
51
+ const modulesContainer = this.container.getModules();
52
+ const contextModuleCtor = this.contextModule.metatype;
53
+ const scope = this.scope.concat(contextModuleCtor);
54
+ const moduleTokenFactory = this.container.getModuleTokenFactory();
55
+ const { type, dynamicMetadata } = this.moduleCompiler.extractMetadata(moduleType);
56
+ const token = dynamicMetadata
57
+ ? moduleTokenFactory.createForDynamic(type, dynamicMetadata, moduleType)
58
+ : moduleTokenFactory.createForStatic(type, moduleType);
59
+ const selectedModule = modulesContainer.get(token);
60
+ if (!selectedModule) {
61
+ throw new exceptions_1.UnknownModuleException(type.name);
62
+ }
63
+ const options = typeof selectOptions?.abortOnError !== 'undefined'
64
+ ? {
65
+ ...this.appOptions,
66
+ ...selectOptions,
67
+ }
68
+ : this.appOptions;
69
+ return new NestApplicationContext(this.container, options, selectedModule, scope);
70
+ }
71
+ /**
72
+ * Retrieves an instance (or a list of instances) of either injectable or controller, otherwise, throws exception.
73
+ * @returns {TResult | Array<TResult>}
74
+ */
75
+ get(typeOrToken, options = { strict: false }) {
76
+ return !(options && options.strict)
77
+ ? this.find(typeOrToken, options)
78
+ : this.find(typeOrToken, {
79
+ moduleId: this.contextModule?.id,
80
+ each: options.each,
81
+ });
82
+ }
83
+ /**
84
+ * Resolves transient or request-scoped instance (or a list of instances) of either injectable or controller, otherwise, throws exception.
85
+ * @returns {Promise<TResult | Array<TResult>>}
86
+ */
87
+ resolve(typeOrToken, contextId = (0, context_id_factory_1.createContextId)(), options = { strict: false }) {
88
+ return this.resolvePerContext(typeOrToken, this.contextModule, contextId, options);
89
+ }
90
+ /**
91
+ * Registers the request/context object for a given context ID (DI container sub-tree).
92
+ * @returns {void}
93
+ */
94
+ registerRequestByContextId(request, contextId) {
95
+ this.container.registerRequestProvider(request, contextId);
96
+ }
97
+ /**
98
+ * Initializes the Nest application.
99
+ * Calls the Nest lifecycle events.
100
+ *
101
+ * @returns {Promise<this>} The NestApplicationContext instance as Promise
102
+ */
103
+ async init() {
104
+ if (this.isInitialized) {
105
+ return this;
106
+ }
107
+ /* eslint-disable-next-line no-async-promise-executor */
108
+ this.initializationPromise = new Promise(async (resolve, reject) => {
109
+ try {
110
+ await this.callInitHook();
111
+ await this.callBootstrapHook();
112
+ resolve();
113
+ }
114
+ catch (err) {
115
+ reject(err);
116
+ }
117
+ });
118
+ await this.initializationPromise;
119
+ this.isInitialized = true;
120
+ return this;
121
+ }
122
+ /**
123
+ * Terminates the application
124
+ * @returns {Promise<void>}
125
+ */
126
+ async close(signal) {
127
+ await this.initializationPromise;
128
+ await this.callDestroyHook();
129
+ await this.callBeforeShutdownHook(signal);
130
+ await this.dispose();
131
+ await this.callShutdownHook(signal);
132
+ this.unsubscribeFromProcessSignals();
133
+ }
134
+ /**
135
+ * Sets custom logger service.
136
+ * Flushes buffered logs if auto flush is on.
137
+ * @returns {void}
138
+ */
139
+ useLogger(logger) {
140
+ common_1.Logger.overrideLogger(logger);
141
+ if (this.shouldFlushLogsOnOverride) {
142
+ this.flushLogs();
143
+ }
144
+ }
145
+ /**
146
+ * Prints buffered logs and detaches buffer.
147
+ * @returns {void}
148
+ */
149
+ flushLogs() {
150
+ common_1.Logger.flush();
151
+ }
152
+ /**
153
+ * Define that it must flush logs right after defining a custom logger.
154
+ */
155
+ flushLogsOnOverride() {
156
+ this.shouldFlushLogsOnOverride = true;
157
+ }
158
+ /**
159
+ * Enables the usage of shutdown hooks. Will call the
160
+ * `onApplicationShutdown` function of a provider if the
161
+ * process receives a shutdown signal.
162
+ *
163
+ * @param {ShutdownSignal[]} [signals=[]] The system signals it should listen to
164
+ * @param {ShutdownHooksOptions} [options={}] Options for configuring shutdown hooks behavior
165
+ *
166
+ * @returns {this} The Nest application context instance
167
+ */
168
+ enableShutdownHooks(signals = [], options = {}) {
169
+ if ((0, shared_utils_1.isEmpty)(signals)) {
170
+ signals = Object.keys(common_1.ShutdownSignal).map((key) => common_1.ShutdownSignal[key]);
171
+ }
172
+ else {
173
+ // given signals array should be unique because
174
+ // process shouldn't listen to the same signal more than once.
175
+ signals = Array.from(new Set(signals));
176
+ }
177
+ signals = (0, iterare_1.iterate)(signals)
178
+ .map((signal) => signal.toString().toUpperCase().trim())
179
+ // filter out the signals which is already listening to
180
+ .filter(signal => !this.activeShutdownSignals.includes(signal))
181
+ .toArray();
182
+ this.listenToShutdownSignals(signals, options);
183
+ return this;
184
+ }
185
+ async dispose() {
186
+ // Nest application context has no server
187
+ // to dispose, therefore just call a noop
188
+ return Promise.resolve();
189
+ }
190
+ /**
191
+ * Listens to shutdown signals by listening to
192
+ * process events
193
+ *
194
+ * @param {string[]} signals The system signals it should listen to
195
+ * @param {ShutdownHooksOptions} options Options for configuring shutdown hooks behavior
196
+ */
197
+ listenToShutdownSignals(signals, options = {}) {
198
+ let receivedSignal = false;
199
+ const cleanup = async (signal) => {
200
+ try {
201
+ if (receivedSignal) {
202
+ // If we receive another signal while we're waiting
203
+ // for the server to stop, just ignore it.
204
+ return;
205
+ }
206
+ receivedSignal = true;
207
+ await this.initializationPromise;
208
+ await this.callDestroyHook();
209
+ await this.callBeforeShutdownHook(signal);
210
+ await this.dispose();
211
+ await this.callShutdownHook(signal);
212
+ signals.forEach(sig => process.removeListener(sig, cleanup));
213
+ if (options.useProcessExit) {
214
+ // Use process.exit() to ensure the 'exit' event is properly triggered.
215
+ // This is required for async loggers (like Pino with transports)
216
+ // to flush their buffers before the process terminates.
217
+ process.exit(0);
218
+ }
219
+ else {
220
+ process.kill(process.pid, signal);
221
+ }
222
+ }
223
+ catch (err) {
224
+ common_1.Logger.error(constants_1.MESSAGES.ERROR_DURING_SHUTDOWN, err?.stack, NestApplicationContext.name);
225
+ process.exit(1);
226
+ }
227
+ };
228
+ this.shutdownCleanupRef = cleanup;
229
+ signals.forEach((signal) => {
230
+ this.activeShutdownSignals.push(signal);
231
+ process.on(signal, cleanup);
232
+ });
233
+ }
234
+ /**
235
+ * Unsubscribes from shutdown signals (process events)
236
+ */
237
+ unsubscribeFromProcessSignals() {
238
+ if (!this.shutdownCleanupRef) {
239
+ return;
240
+ }
241
+ this.activeShutdownSignals.forEach(signal => {
242
+ process.removeListener(signal, this.shutdownCleanupRef);
243
+ });
244
+ }
245
+ /**
246
+ * Calls the `onModuleInit` function on the registered
247
+ * modules and its children.
248
+ */
249
+ async callInitHook() {
250
+ const modulesSortedByDistance = this.getModulesToTriggerHooksOn();
251
+ for (const module of modulesSortedByDistance) {
252
+ await (0, hooks_1.callModuleInitHook)(module);
253
+ }
254
+ }
255
+ /**
256
+ * Calls the `onModuleDestroy` function on the registered
257
+ * modules and its children.
258
+ */
259
+ async callDestroyHook() {
260
+ const modulesSortedByDistance = [
261
+ ...this.getModulesToTriggerHooksOn(),
262
+ ].reverse();
263
+ for (const module of modulesSortedByDistance) {
264
+ await (0, hooks_1.callModuleDestroyHook)(module);
265
+ }
266
+ }
267
+ /**
268
+ * Calls the `onApplicationBootstrap` function on the registered
269
+ * modules and its children.
270
+ */
271
+ async callBootstrapHook() {
272
+ const modulesSortedByDistance = this.getModulesToTriggerHooksOn();
273
+ for (const module of modulesSortedByDistance) {
274
+ await (0, hooks_1.callModuleBootstrapHook)(module);
275
+ }
276
+ }
277
+ /**
278
+ * Calls the `onApplicationShutdown` function on the registered
279
+ * modules and children.
280
+ */
281
+ async callShutdownHook(signal) {
282
+ const modulesSortedByDistance = [
283
+ ...this.getModulesToTriggerHooksOn(),
284
+ ].reverse();
285
+ for (const module of modulesSortedByDistance) {
286
+ await (0, hooks_1.callAppShutdownHook)(module, signal);
287
+ }
288
+ }
289
+ /**
290
+ * Calls the `beforeApplicationShutdown` function on the registered
291
+ * modules and children.
292
+ */
293
+ async callBeforeShutdownHook(signal) {
294
+ const modulesSortedByDistance = [
295
+ ...this.getModulesToTriggerHooksOn(),
296
+ ].reverse();
297
+ for (const module of modulesSortedByDistance) {
298
+ await (0, hooks_1.callBeforeAppShutdownHook)(module, signal);
299
+ }
300
+ }
301
+ assertNotInPreviewMode(methodName) {
302
+ if (this.appOptions.preview) {
303
+ const error = `Calling the "${methodName}" in the preview mode is not supported.`;
304
+ this.logger.error(error);
305
+ throw new Error(error);
306
+ }
307
+ }
308
+ getModulesToTriggerHooksOn() {
309
+ if (this._moduleRefsForHooksByDistance) {
310
+ return this._moduleRefsForHooksByDistance;
311
+ }
312
+ const modulesContainer = this.container.getModules();
313
+ const compareFn = (a, b) => b.distance - a.distance;
314
+ const modulesSortedByDistance = Array.from(modulesContainer.values()).sort(compareFn);
315
+ this._moduleRefsForHooksByDistance = this.appOptions?.preview
316
+ ? modulesSortedByDistance.filter(moduleRef => moduleRef.initOnPreview)
317
+ : modulesSortedByDistance;
318
+ return this._moduleRefsForHooksByDistance;
319
+ }
320
+ printInPreviewModeWarning() {
321
+ this.logger.warn('------------------------------------------------');
322
+ this.logger.warn('Application is running in the PREVIEW mode!');
323
+ this.logger.warn('Providers/controllers will not be instantiated.');
324
+ this.logger.warn('------------------------------------------------');
325
+ }
326
+ }
327
+ exports.NestApplicationContext = NestApplicationContext;
@@ -0,0 +1,64 @@
1
+ import { CanActivate, ExceptionFilter, HttpServer, INestApplication, INestMicroservice, NestHybridApplicationOptions, NestInterceptor, PipeTransform, VersioningOptions, WebSocketAdapter } from '@nestjs/common';
2
+ import { GlobalPrefixOptions, NestApplicationOptions } from '@nestjs/common/interfaces';
3
+ import { Logger } from '@nestjs/common/services/logger.service';
4
+ import { AbstractHttpAdapter } from './adapters';
5
+ import { ApplicationConfig } from './application-config';
6
+ import { NestContainer } from './injector/container';
7
+ import { GraphInspector } from './inspector/graph-inspector';
8
+ import { NestApplicationContext } from './nest-application-context';
9
+ /**
10
+ * @publicApi
11
+ */
12
+ export declare class NestApplication extends NestApplicationContext<NestApplicationOptions> implements INestApplication {
13
+ private readonly httpAdapter;
14
+ private readonly config;
15
+ private readonly graphInspector;
16
+ protected readonly logger: Logger;
17
+ private readonly middlewareModule;
18
+ private readonly middlewareContainer;
19
+ private readonly microservicesModule;
20
+ private readonly socketModule;
21
+ private readonly routesResolver;
22
+ private readonly microservices;
23
+ private httpServer;
24
+ private isListening;
25
+ constructor(container: NestContainer, httpAdapter: HttpServer, config: ApplicationConfig, graphInspector: GraphInspector, appOptions?: NestApplicationOptions);
26
+ protected dispose(): Promise<void>;
27
+ getHttpAdapter(): AbstractHttpAdapter;
28
+ registerHttpServer(): void;
29
+ getUnderlyingHttpServer<T>(): T;
30
+ applyOptions(): void;
31
+ createServer<T = any>(): T;
32
+ registerModules(): Promise<void>;
33
+ registerWsModule(): void;
34
+ init(): Promise<this>;
35
+ registerParserMiddleware(): void;
36
+ registerRouter(): Promise<void>;
37
+ registerRouterHooks(): Promise<void>;
38
+ connectMicroservice<T extends object>(microserviceOptions: T, hybridAppOptions?: NestHybridApplicationOptions): INestMicroservice;
39
+ getMicroservices(): INestMicroservice[];
40
+ getHttpServer(): any;
41
+ startAllMicroservices(): Promise<this>;
42
+ use(...args: [any, any?]): this;
43
+ useBodyParser(...args: [any, any?]): this;
44
+ enableCors(options?: any): void;
45
+ enableVersioning(options?: VersioningOptions): this;
46
+ listen(port: number | string): Promise<any>;
47
+ listen(port: number | string, hostname: string): Promise<any>;
48
+ getUrl(): Promise<string>;
49
+ private formatAddress;
50
+ setGlobalPrefix(prefix: string, options?: GlobalPrefixOptions): this;
51
+ useWebSocketAdapter(adapter: WebSocketAdapter): this;
52
+ useGlobalFilters(...filters: ExceptionFilter[]): this;
53
+ useGlobalPipes(...pipes: PipeTransform<any>[]): this;
54
+ useGlobalInterceptors(...interceptors: NestInterceptor[]): this;
55
+ useGlobalGuards(...guards: CanActivate[]): this;
56
+ useStaticAssets(options: any): this;
57
+ useStaticAssets(path: string, options?: any): this;
58
+ setBaseViewsDir(path: string | string[]): this;
59
+ setViewEngine(engineOrOptions: any): this;
60
+ private host;
61
+ private getProtocol;
62
+ private registerMiddleware;
63
+ private applyInstanceDecoratorIfRegistered;
64
+ }