@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,37 @@
1
+ /**
2
+ * SettlementSignal is used to signal the resolution of a provider/instance.
3
+ * Calling `complete` or `error` will resolve the promise returned by `asPromise`.
4
+ * Can be used to detect circular dependencies.
5
+ */
6
+ export declare class SettlementSignal {
7
+ private readonly _refs;
8
+ private readonly settledPromise;
9
+ private settleFn;
10
+ private completed;
11
+ constructor();
12
+ /**
13
+ * Resolves the promise returned by `asPromise`.
14
+ */
15
+ complete(): void;
16
+ /**
17
+ * Rejects the promise returned by `asPromise` with the given error.
18
+ * @param err Error to reject the promise returned by `asPromise` with.
19
+ */
20
+ error(err: unknown): void;
21
+ /**
22
+ * Returns a promise that will be resolved when `complete` or `error` is called.
23
+ * @returns Promise that will be resolved when `complete` or `error` is called.
24
+ */
25
+ asPromise(): Promise<unknown>;
26
+ /**
27
+ * Inserts a wrapper id that the host of this signal depends on.
28
+ * @param wrapperId Wrapper id to insert.
29
+ */
30
+ insertRef(wrapperId: string): void;
31
+ /**
32
+ * Check if relationship is circular.
33
+ * @param wrapperId Wrapper id to check.
34
+ * @returns True if relationship is circular, false otherwise.
35
+ */
36
+ isCycle(wrapperId: string): boolean;
37
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettlementSignal = void 0;
4
+ /**
5
+ * SettlementSignal is used to signal the resolution of a provider/instance.
6
+ * Calling `complete` or `error` will resolve the promise returned by `asPromise`.
7
+ * Can be used to detect circular dependencies.
8
+ */
9
+ class SettlementSignal {
10
+ constructor() {
11
+ this._refs = new Set();
12
+ this.completed = false;
13
+ this.settledPromise = new Promise(resolve => {
14
+ this.settleFn = resolve;
15
+ });
16
+ }
17
+ /**
18
+ * Resolves the promise returned by `asPromise`.
19
+ */
20
+ complete() {
21
+ this.completed = true;
22
+ this.settleFn();
23
+ }
24
+ /**
25
+ * Rejects the promise returned by `asPromise` with the given error.
26
+ * @param err Error to reject the promise returned by `asPromise` with.
27
+ */
28
+ error(err) {
29
+ this.completed = true;
30
+ this.settleFn(err);
31
+ }
32
+ /**
33
+ * Returns a promise that will be resolved when `complete` or `error` is called.
34
+ * @returns Promise that will be resolved when `complete` or `error` is called.
35
+ */
36
+ asPromise() {
37
+ return this.settledPromise;
38
+ }
39
+ /**
40
+ * Inserts a wrapper id that the host of this signal depends on.
41
+ * @param wrapperId Wrapper id to insert.
42
+ */
43
+ insertRef(wrapperId) {
44
+ this._refs.add(wrapperId);
45
+ }
46
+ /**
47
+ * Check if relationship is circular.
48
+ * @param wrapperId Wrapper id to check.
49
+ * @returns True if relationship is circular, false otherwise.
50
+ */
51
+ isCycle(wrapperId) {
52
+ return !this.completed && this._refs.has(wrapperId);
53
+ }
54
+ }
55
+ exports.SettlementSignal = SettlementSignal;
@@ -0,0 +1,8 @@
1
+ import { Module } from '../module';
2
+ export declare class TopologyTree {
3
+ private root;
4
+ private links;
5
+ constructor(moduleRef: Module);
6
+ walk(callback: (value: Module, depth: number) => void): void;
7
+ private traverseAndMapToTree;
8
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TopologyTree = void 0;
4
+ const tree_node_1 = require("./tree-node");
5
+ class TopologyTree {
6
+ constructor(moduleRef) {
7
+ this.links = new Map();
8
+ this.root = new tree_node_1.TreeNode({
9
+ value: moduleRef,
10
+ parent: null,
11
+ });
12
+ this.links.set(moduleRef, this.root);
13
+ this.traverseAndMapToTree(this.root);
14
+ }
15
+ walk(callback) {
16
+ function walkNode(node, depth = 1) {
17
+ callback(node.value, depth);
18
+ node.children.forEach(child => walkNode(child, depth + 1));
19
+ }
20
+ walkNode(this.root);
21
+ }
22
+ traverseAndMapToTree(node, depth = 1) {
23
+ if (!node.value.imports) {
24
+ return;
25
+ }
26
+ node.value.imports.forEach(child => {
27
+ if (!child) {
28
+ return;
29
+ }
30
+ if (this.links.has(child)) {
31
+ const existingSubtree = this.links.get(child);
32
+ if (node.hasCycleWith(child)) {
33
+ return;
34
+ }
35
+ const existingDepth = existingSubtree.getDepth();
36
+ if (existingDepth < depth) {
37
+ existingSubtree.relink(node);
38
+ }
39
+ return;
40
+ }
41
+ const childNode = new tree_node_1.TreeNode({
42
+ value: child,
43
+ parent: node,
44
+ });
45
+ node.addChild(childNode);
46
+ this.links.set(child, childNode);
47
+ this.traverseAndMapToTree(childNode, depth + 1);
48
+ });
49
+ }
50
+ }
51
+ exports.TopologyTree = TopologyTree;
@@ -0,0 +1,14 @@
1
+ export declare class TreeNode<T> {
2
+ readonly value: T;
3
+ readonly children: Set<TreeNode<T>>;
4
+ private parent;
5
+ constructor({ value, parent }: {
6
+ value: T;
7
+ parent: TreeNode<T> | null;
8
+ });
9
+ addChild(child: TreeNode<T>): void;
10
+ removeChild(child: TreeNode<T>): void;
11
+ relink(parent: TreeNode<T>): void;
12
+ getDepth(): number;
13
+ hasCycleWith(target: T): boolean;
14
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TreeNode = void 0;
4
+ class TreeNode {
5
+ constructor({ value, parent }) {
6
+ this.children = new Set();
7
+ this.value = value;
8
+ this.parent = parent;
9
+ }
10
+ addChild(child) {
11
+ this.children.add(child);
12
+ }
13
+ removeChild(child) {
14
+ this.children.delete(child);
15
+ }
16
+ relink(parent) {
17
+ this.parent?.removeChild(this);
18
+ this.parent = parent;
19
+ this.parent.addChild(this);
20
+ }
21
+ getDepth() {
22
+ const visited = new Set();
23
+ let depth = 0;
24
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
25
+ let current = this;
26
+ while (current) {
27
+ depth++;
28
+ current = current.parent;
29
+ // Stop on cycle
30
+ if (visited.has(current)) {
31
+ return -1;
32
+ }
33
+ visited.add(current);
34
+ }
35
+ return depth;
36
+ }
37
+ hasCycleWith(target) {
38
+ const visited = new Set();
39
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
40
+ let current = this;
41
+ while (current) {
42
+ if (current.value === target) {
43
+ return true;
44
+ }
45
+ current = current.parent;
46
+ if (visited.has(current)) {
47
+ return false;
48
+ }
49
+ visited.add(current);
50
+ }
51
+ return false;
52
+ }
53
+ }
54
+ exports.TreeNode = TreeNode;
@@ -0,0 +1,6 @@
1
+ export declare class DeterministicUuidRegistry {
2
+ private static readonly registry;
3
+ static get(str: string, inc?: number): any;
4
+ static clear(): void;
5
+ private static hashCode;
6
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeterministicUuidRegistry = void 0;
4
+ class DeterministicUuidRegistry {
5
+ static get(str, inc = 0) {
6
+ const id = inc ? this.hashCode(`${str}_${inc}`) : this.hashCode(str);
7
+ if (this.registry.has(id)) {
8
+ return this.get(str, inc + 1);
9
+ }
10
+ this.registry.set(id, true);
11
+ return id;
12
+ }
13
+ static clear() {
14
+ this.registry.clear();
15
+ }
16
+ static hashCode(s) {
17
+ let h = 0;
18
+ for (let i = 0; i < s.length; i++)
19
+ h = (Math.imul(31, h) + s.charCodeAt(i)) | 0;
20
+ return h.toString();
21
+ }
22
+ }
23
+ exports.DeterministicUuidRegistry = DeterministicUuidRegistry;
24
+ DeterministicUuidRegistry.registry = new Map();
@@ -0,0 +1,26 @@
1
+ import { NestContainer } from '../injector/container';
2
+ import { InstanceWrapper } from '../injector/instance-wrapper';
3
+ import { Module } from '../injector/module';
4
+ import { EnhancerMetadataCacheEntry } from './interfaces/enhancer-metadata-cache-entry.interface';
5
+ import { Entrypoint } from './interfaces/entrypoint.interface';
6
+ import { OrphanedEnhancerDefinition } from './interfaces/extras.interface';
7
+ import { Node } from './interfaces/node.interface';
8
+ export declare class GraphInspector {
9
+ private readonly container;
10
+ private readonly graph;
11
+ private readonly enhancersMetadataCache;
12
+ constructor(container: NestContainer);
13
+ inspectModules(modules?: Map<string, Module>): void;
14
+ registerPartial(error: unknown): void;
15
+ inspectInstanceWrapper<T = any>(source: InstanceWrapper<T>, moduleRef: Module): void;
16
+ insertEnhancerMetadataCache(entry: EnhancerMetadataCacheEntry): void;
17
+ insertOrphanedEnhancer(entry: OrphanedEnhancerDefinition): void;
18
+ insertAttachedEnhancer(wrapper: InstanceWrapper): void;
19
+ insertEntrypointDefinition<T>(definition: Entrypoint<T>, parentId: string): void;
20
+ insertClassNode(moduleRef: Module, wrapper: InstanceWrapper, type: Exclude<Node['metadata']['type'], 'module'>): void;
21
+ private insertModuleNode;
22
+ private insertModuleToModuleEdges;
23
+ private insertEnhancerEdge;
24
+ private insertClassToClassEdge;
25
+ private insertClassNodes;
26
+ }
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphInspector = void 0;
4
+ const unknown_dependencies_exception_1 = require("../errors/exceptions/unknown-dependencies.exception");
5
+ const deterministic_uuid_registry_1 = require("./deterministic-uuid-registry");
6
+ const partial_graph_host_1 = require("./partial-graph.host");
7
+ class GraphInspector {
8
+ constructor(container) {
9
+ this.container = container;
10
+ this.enhancersMetadataCache = new Array();
11
+ this.graph = container.serializedGraph;
12
+ }
13
+ inspectModules(modules = this.container.getModules()) {
14
+ for (const moduleRef of modules.values()) {
15
+ this.insertModuleNode(moduleRef);
16
+ this.insertClassNodes(moduleRef);
17
+ this.insertModuleToModuleEdges(moduleRef);
18
+ }
19
+ this.enhancersMetadataCache.forEach(entry => this.insertEnhancerEdge(entry));
20
+ deterministic_uuid_registry_1.DeterministicUuidRegistry.clear();
21
+ }
22
+ registerPartial(error) {
23
+ this.graph.status = 'partial';
24
+ if (error instanceof unknown_dependencies_exception_1.UnknownDependenciesException) {
25
+ this.graph.metadata = {
26
+ cause: {
27
+ type: 'unknown-dependencies',
28
+ context: error.context,
29
+ moduleId: error.moduleRef?.id,
30
+ nodeId: error.metadata?.id,
31
+ },
32
+ };
33
+ }
34
+ else {
35
+ this.graph.metadata = {
36
+ cause: {
37
+ type: 'unknown',
38
+ error,
39
+ },
40
+ };
41
+ }
42
+ partial_graph_host_1.PartialGraphHost.register(this.graph);
43
+ }
44
+ inspectInstanceWrapper(source, moduleRef) {
45
+ const ctorMetadata = source.getCtorMetadata();
46
+ ctorMetadata?.forEach((target, index) => this.insertClassToClassEdge(source, target, moduleRef, index, 'constructor'));
47
+ const propertiesMetadata = source.getPropertiesMetadata();
48
+ propertiesMetadata?.forEach(({ key, wrapper: target }) => this.insertClassToClassEdge(source, target, moduleRef, key, 'property'));
49
+ }
50
+ insertEnhancerMetadataCache(entry) {
51
+ this.enhancersMetadataCache.push(entry);
52
+ }
53
+ insertOrphanedEnhancer(entry) {
54
+ this.graph.insertOrphanedEnhancer({
55
+ ...entry,
56
+ ref: entry.ref?.constructor?.name ?? 'Object',
57
+ });
58
+ }
59
+ insertAttachedEnhancer(wrapper) {
60
+ const existingNode = this.graph.getNodeById(wrapper.id);
61
+ existingNode.metadata.global = true;
62
+ this.graph.insertAttachedEnhancer(existingNode.id);
63
+ }
64
+ insertEntrypointDefinition(definition, parentId) {
65
+ definition = {
66
+ ...definition,
67
+ id: `${definition.classNodeId}_${definition.methodName}`,
68
+ };
69
+ this.graph.insertEntrypoint(definition, parentId);
70
+ }
71
+ insertClassNode(moduleRef, wrapper, type) {
72
+ this.graph.insertNode({
73
+ id: wrapper.id,
74
+ label: wrapper.name,
75
+ parent: moduleRef.id,
76
+ metadata: {
77
+ type,
78
+ internal: wrapper.metatype === moduleRef.metatype,
79
+ sourceModuleName: moduleRef.name,
80
+ durable: wrapper.isDependencyTreeDurable(),
81
+ static: wrapper.isDependencyTreeStatic(),
82
+ scope: wrapper.scope,
83
+ transient: wrapper.isTransient,
84
+ exported: moduleRef.exports.has(wrapper.token),
85
+ token: wrapper.token,
86
+ subtype: wrapper.subtype,
87
+ initTime: wrapper.initTime,
88
+ },
89
+ });
90
+ }
91
+ insertModuleNode(moduleRef) {
92
+ const dynamicMetadata = this.container.getDynamicMetadataByToken(moduleRef.token);
93
+ const node = {
94
+ id: moduleRef.id,
95
+ label: moduleRef.name,
96
+ metadata: {
97
+ type: 'module',
98
+ global: moduleRef.isGlobal,
99
+ dynamic: !!dynamicMetadata,
100
+ internal: moduleRef.name === 'InternalCoreModule',
101
+ },
102
+ };
103
+ this.graph.insertNode(node);
104
+ }
105
+ insertModuleToModuleEdges(moduleRef) {
106
+ for (const targetModuleRef of moduleRef.imports) {
107
+ this.graph.insertEdge({
108
+ source: moduleRef.id,
109
+ target: targetModuleRef.id,
110
+ metadata: {
111
+ type: 'module-to-module',
112
+ sourceModuleName: moduleRef.name,
113
+ targetModuleName: targetModuleRef.name,
114
+ },
115
+ });
116
+ }
117
+ }
118
+ insertEnhancerEdge(entry) {
119
+ const moduleRef = this.container.getModuleByKey(entry.moduleToken);
120
+ const sourceInstanceWrapper = moduleRef.controllers.get(entry.classRef) ??
121
+ moduleRef.providers.get(entry.classRef);
122
+ const existingSourceNode = this.graph.getNodeById(sourceInstanceWrapper.id);
123
+ const enhancers = existingSourceNode.metadata.enhancers ?? [];
124
+ if (entry.enhancerInstanceWrapper) {
125
+ this.insertClassToClassEdge(sourceInstanceWrapper, entry.enhancerInstanceWrapper, moduleRef, undefined, 'decorator');
126
+ enhancers.push({
127
+ id: entry.enhancerInstanceWrapper.id,
128
+ methodKey: entry.methodKey,
129
+ subtype: entry.subtype,
130
+ });
131
+ }
132
+ else {
133
+ const name = entry.enhancerRef.constructor?.name ??
134
+ entry.enhancerRef.name;
135
+ enhancers.push({
136
+ name,
137
+ methodKey: entry.methodKey,
138
+ subtype: entry.subtype,
139
+ });
140
+ }
141
+ existingSourceNode.metadata.enhancers = enhancers;
142
+ }
143
+ insertClassToClassEdge(source, target, moduleRef, keyOrIndex, injectionType) {
144
+ this.graph.insertEdge({
145
+ source: source.id,
146
+ target: target.id,
147
+ metadata: {
148
+ type: 'class-to-class',
149
+ sourceModuleName: moduleRef.name,
150
+ sourceClassName: source.name,
151
+ targetClassName: target.name,
152
+ sourceClassToken: source.token,
153
+ targetClassToken: target.token,
154
+ targetModuleName: target.host?.name,
155
+ keyOrIndex,
156
+ injectionType,
157
+ },
158
+ });
159
+ }
160
+ insertClassNodes(moduleRef) {
161
+ moduleRef.providers.forEach(value => this.insertClassNode(moduleRef, value, 'provider'));
162
+ moduleRef.injectables.forEach(value => this.insertClassNode(moduleRef, value, 'injectable'));
163
+ moduleRef.controllers.forEach(value => this.insertClassNode(moduleRef, value, 'controller'));
164
+ }
165
+ }
166
+ exports.GraphInspector = GraphInspector;
@@ -0,0 +1,4 @@
1
+ export * from './graph-inspector';
2
+ export * from './initialize-on-preview.allowlist';
3
+ export * from './partial-graph.host';
4
+ export * from './serialized-graph';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./graph-inspector"), exports);
5
+ tslib_1.__exportStar(require("./initialize-on-preview.allowlist"), exports);
6
+ tslib_1.__exportStar(require("./partial-graph.host"), exports);
7
+ tslib_1.__exportStar(require("./serialized-graph"), exports);
@@ -0,0 +1,6 @@
1
+ import { Type } from '@nestjs/common';
2
+ export declare class InitializeOnPreviewAllowlist {
3
+ private static readonly allowlist;
4
+ static add(type: Type): void;
5
+ static has(type: Type): boolean;
6
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InitializeOnPreviewAllowlist = void 0;
4
+ class InitializeOnPreviewAllowlist {
5
+ static add(type) {
6
+ this.allowlist.set(type, true);
7
+ }
8
+ static has(type) {
9
+ return this.allowlist.has(type);
10
+ }
11
+ }
12
+ exports.InitializeOnPreviewAllowlist = InitializeOnPreviewAllowlist;
13
+ InitializeOnPreviewAllowlist.allowlist = new WeakMap();
@@ -0,0 +1,28 @@
1
+ import { InjectionToken } from '@nestjs/common';
2
+ type CommonEdgeMetadata = {
3
+ sourceModuleName: string;
4
+ targetModuleName: string;
5
+ };
6
+ type ModuleToModuleEdgeMetadata = {
7
+ type: 'module-to-module';
8
+ } & CommonEdgeMetadata;
9
+ type ClassToClassEdgeMetadata = {
10
+ type: 'class-to-class';
11
+ sourceClassName: string;
12
+ targetClassName: string;
13
+ sourceClassToken: InjectionToken;
14
+ targetClassToken: InjectionToken;
15
+ injectionType: 'constructor' | 'property' | 'decorator';
16
+ keyOrIndex?: string | number | symbol;
17
+ /**
18
+ * If true, indicates that this edge represents an internal providers connection
19
+ */
20
+ internal?: boolean;
21
+ } & CommonEdgeMetadata;
22
+ export interface Edge {
23
+ id: string;
24
+ source: string;
25
+ target: string;
26
+ metadata: ModuleToModuleEdgeMetadata | ClassToClassEdgeMetadata;
27
+ }
28
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { EnhancerSubtype } from '@nestjs/common/constants';
3
+ import { InstanceWrapper } from '../../injector/instance-wrapper';
4
+ export interface EnhancerMetadataCacheEntry {
5
+ targetNodeId?: string;
6
+ moduleToken: string;
7
+ classRef: Type;
8
+ methodKey: string | undefined;
9
+ enhancerRef?: unknown;
10
+ enhancerInstanceWrapper?: InstanceWrapper;
11
+ subtype: EnhancerSubtype;
12
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,23 @@
1
+ import { RequestMethod } from '@nestjs/common';
2
+ import { VersionValue } from '@nestjs/common/interfaces';
3
+ export type HttpEntrypointMetadata = {
4
+ path: string;
5
+ requestMethod: keyof typeof RequestMethod;
6
+ methodVersion?: VersionValue;
7
+ controllerVersion?: VersionValue;
8
+ };
9
+ export type MiddlewareEntrypointMetadata = {
10
+ path: string;
11
+ requestMethod: keyof typeof RequestMethod;
12
+ version?: VersionValue;
13
+ };
14
+ export type Entrypoint<T> = {
15
+ id?: string;
16
+ type: string;
17
+ methodName: string;
18
+ className: string;
19
+ classNodeId: string;
20
+ metadata: {
21
+ key: string;
22
+ } & T;
23
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,18 @@
1
+ import { EnhancerSubtype } from '@nestjs/common/constants';
2
+ /**
3
+ * Enhancers attached through APP_PIPE, APP_GUARD, APP_INTERCEPTOR, and APP_FILTER tokens.
4
+ */
5
+ export interface AttachedEnhancerDefinition {
6
+ nodeId: string;
7
+ }
8
+ /**
9
+ * Enhancers registered through "app.useGlobalPipes()", "app.useGlobalGuards()", "app.useGlobalInterceptors()", and "app.useGlobalFilters()" methods.
10
+ */
11
+ export interface OrphanedEnhancerDefinition {
12
+ subtype: EnhancerSubtype;
13
+ ref: unknown;
14
+ }
15
+ export interface Extras {
16
+ orphanedEnhancers: Array<OrphanedEnhancerDefinition>;
17
+ attachedEnhancers: Array<AttachedEnhancerDefinition>;
18
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,48 @@
1
+ import { InjectionToken, Scope } from '@nestjs/common';
2
+ import { EnhancerSubtype } from '@nestjs/common/constants';
3
+ export type ModuleNode = {
4
+ metadata: {
5
+ type: 'module';
6
+ global: boolean;
7
+ dynamic: boolean;
8
+ internal: boolean;
9
+ };
10
+ };
11
+ export type ClassNode = {
12
+ parent: string;
13
+ metadata: {
14
+ type: 'provider' | 'controller' | 'middleware' | 'injectable';
15
+ subtype?: EnhancerSubtype;
16
+ sourceModuleName: string;
17
+ durable: boolean;
18
+ static: boolean;
19
+ transient: boolean;
20
+ exported: boolean;
21
+ scope: Scope;
22
+ token: InjectionToken;
23
+ initTime: number;
24
+ /**
25
+ * Enhancers metadata collection
26
+ */
27
+ enhancers?: Array<{
28
+ id: string;
29
+ subtype: EnhancerSubtype;
30
+ } | {
31
+ name: string;
32
+ methodKey?: string;
33
+ subtype: EnhancerSubtype;
34
+ }>;
35
+ /**
36
+ * If true, node is a globally registered enhancer
37
+ */
38
+ global?: boolean;
39
+ /**
40
+ * If true, indicates that this node represents an internal provider
41
+ */
42
+ internal?: boolean;
43
+ };
44
+ };
45
+ export type Node = {
46
+ id: string;
47
+ label: string;
48
+ } & (ClassNode | ModuleNode);
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ import { SerializedGraphStatus } from '../serialized-graph';
2
+ import { Edge } from './edge.interface';
3
+ import { Entrypoint } from './entrypoint.interface';
4
+ import { Extras } from './extras.interface';
5
+ import { Node } from './node.interface';
6
+ import { SerializedGraphMetadata } from './serialized-graph-metadata.interface';
7
+ export interface SerializedGraphJson {
8
+ nodes: Record<string, Node>;
9
+ edges: Record<string, Edge>;
10
+ entrypoints: Record<string, Entrypoint<unknown>[]>;
11
+ extras: Extras;
12
+ status?: SerializedGraphStatus;
13
+ metadata?: SerializedGraphMetadata;
14
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });