@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,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MiddlewareBuilder = void 0;
4
+ const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
5
+ const iterare_1 = require("iterare");
6
+ const utils_1 = require("./utils");
7
+ class MiddlewareBuilder {
8
+ constructor(routesMapper, httpAdapter, routeInfoPathExtractor) {
9
+ this.routesMapper = routesMapper;
10
+ this.httpAdapter = httpAdapter;
11
+ this.routeInfoPathExtractor = routeInfoPathExtractor;
12
+ this.middlewareCollection = new Set();
13
+ }
14
+ apply(...middleware) {
15
+ return new MiddlewareBuilder.ConfigProxy(this, middleware.flat(), this.routeInfoPathExtractor);
16
+ }
17
+ build() {
18
+ return [...this.middlewareCollection];
19
+ }
20
+ getHttpAdapter() {
21
+ return this.httpAdapter;
22
+ }
23
+ }
24
+ exports.MiddlewareBuilder = MiddlewareBuilder;
25
+ MiddlewareBuilder.ConfigProxy = class {
26
+ constructor(builder, middleware, routeInfoPathExtractor) {
27
+ this.builder = builder;
28
+ this.middleware = middleware;
29
+ this.routeInfoPathExtractor = routeInfoPathExtractor;
30
+ this.excludedRoutes = [];
31
+ }
32
+ getExcludedRoutes() {
33
+ return this.excludedRoutes;
34
+ }
35
+ exclude(...routes) {
36
+ this.excludedRoutes = [
37
+ ...this.excludedRoutes,
38
+ ...this.getRoutesFlatList(routes).reduce((excludedRoutes, route) => {
39
+ for (const routePath of this.routeInfoPathExtractor.extractPathFrom(route)) {
40
+ excludedRoutes.push({
41
+ ...route,
42
+ path: routePath,
43
+ });
44
+ }
45
+ return excludedRoutes;
46
+ }, []),
47
+ ];
48
+ return this;
49
+ }
50
+ forRoutes(...routes) {
51
+ const { middlewareCollection } = this.builder;
52
+ const flattedRoutes = this.getRoutesFlatList(routes);
53
+ const forRoutes = this.removeOverlappedRoutes(flattedRoutes);
54
+ const configuration = {
55
+ middleware: (0, utils_1.filterMiddleware)(this.middleware, this.excludedRoutes, this.builder.getHttpAdapter()),
56
+ forRoutes,
57
+ };
58
+ middlewareCollection.add(configuration);
59
+ return this.builder;
60
+ }
61
+ getRoutesFlatList(routes) {
62
+ const { routesMapper } = this.builder;
63
+ return (0, iterare_1.iterate)(routes)
64
+ .map(route => routesMapper.mapRouteToRouteInfo(route))
65
+ .flatten()
66
+ .toArray();
67
+ }
68
+ removeOverlappedRoutes(routes) {
69
+ const regexMatchParams = /(:[^/]*)/g;
70
+ const wildcard = '([^/]*)';
71
+ const routesWithRegex = routes
72
+ .filter(route => route.path.includes(':'))
73
+ .map(route => ({
74
+ method: route.method,
75
+ path: route.path,
76
+ regex: new RegExp('^(' + route.path.replace(regexMatchParams, wildcard) + ')$', 'g'),
77
+ }));
78
+ return routes.filter(route => {
79
+ const isOverlapped = (item) => {
80
+ if (route.method !== item.method) {
81
+ return false;
82
+ }
83
+ const normalizedRoutePath = (0, shared_utils_1.stripEndSlash)(route.path);
84
+ return (normalizedRoutePath !== item.path &&
85
+ item.regex.test(normalizedRoutePath));
86
+ };
87
+ const routeMatch = routesWithRegex.find(isOverlapped);
88
+ return routeMatch === undefined;
89
+ });
90
+ }
91
+ };
@@ -0,0 +1,14 @@
1
+ import { InjectionToken } from '@nestjs/common';
2
+ import { MiddlewareConfiguration } from '@nestjs/common/interfaces/middleware/middleware-configuration.interface';
3
+ import { NestContainer } from '../injector/container';
4
+ import { InstanceWrapper } from '../injector/instance-wrapper';
5
+ export declare class MiddlewareContainer {
6
+ private readonly container;
7
+ private readonly middleware;
8
+ private readonly configurationSets;
9
+ constructor(container: NestContainer);
10
+ getMiddlewareCollection(moduleKey: string): Map<InjectionToken, InstanceWrapper>;
11
+ getConfigurations(): Map<string, Set<MiddlewareConfiguration>>;
12
+ insertConfig(configList: MiddlewareConfiguration[], moduleKey: string): void;
13
+ private getTargetConfig;
14
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MiddlewareContainer = void 0;
4
+ const get_class_scope_1 = require("../helpers/get-class-scope");
5
+ const is_durable_1 = require("../helpers/is-durable");
6
+ const instance_wrapper_1 = require("../injector/instance-wrapper");
7
+ class MiddlewareContainer {
8
+ constructor(container) {
9
+ this.container = container;
10
+ this.middleware = new Map();
11
+ this.configurationSets = new Map();
12
+ }
13
+ getMiddlewareCollection(moduleKey) {
14
+ if (!this.middleware.has(moduleKey)) {
15
+ const moduleRef = this.container.getModuleByKey(moduleKey);
16
+ this.middleware.set(moduleKey, moduleRef.middlewares);
17
+ }
18
+ return this.middleware.get(moduleKey);
19
+ }
20
+ getConfigurations() {
21
+ return this.configurationSets;
22
+ }
23
+ insertConfig(configList, moduleKey) {
24
+ const middleware = this.getMiddlewareCollection(moduleKey);
25
+ const targetConfig = this.getTargetConfig(moduleKey);
26
+ const configurations = configList || [];
27
+ const insertMiddleware = (metatype) => {
28
+ const token = metatype;
29
+ middleware.set(token, new instance_wrapper_1.InstanceWrapper({
30
+ scope: (0, get_class_scope_1.getClassScope)(metatype),
31
+ durable: (0, is_durable_1.isDurable)(metatype),
32
+ name: token?.name ?? token,
33
+ metatype,
34
+ token,
35
+ }));
36
+ };
37
+ configurations.forEach(config => {
38
+ [].concat(config.middleware).map(insertMiddleware);
39
+ targetConfig.add(config);
40
+ });
41
+ }
42
+ getTargetConfig(moduleName) {
43
+ if (!this.configurationSets.has(moduleName)) {
44
+ this.configurationSets.set(moduleName, new Set());
45
+ }
46
+ return this.configurationSets.get(moduleName);
47
+ }
48
+ }
49
+ exports.MiddlewareContainer = MiddlewareContainer;
@@ -0,0 +1 @@
1
+ export * from './builder';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./builder"), exports);
@@ -0,0 +1,33 @@
1
+ import { HttpServer } from '@nestjs/common';
2
+ import { MiddlewareConfiguration, RouteInfo } from '@nestjs/common/interfaces/middleware';
3
+ import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface';
4
+ import { ApplicationConfig } from '../application-config';
5
+ import { NestContainer } from '../injector/container';
6
+ import { Injector } from '../injector/injector';
7
+ import { Module } from '../injector/module';
8
+ import { GraphInspector } from '../inspector/graph-inspector';
9
+ import { MiddlewareContainer } from './container';
10
+ export declare class MiddlewareModule<TAppOptions extends NestApplicationContextOptions = NestApplicationContextOptions> {
11
+ private readonly routerProxy;
12
+ private readonly exceptionFiltersCache;
13
+ private readonly logger;
14
+ private injector;
15
+ private routerExceptionFilter;
16
+ private routesMapper;
17
+ private resolver;
18
+ private container;
19
+ private httpAdapter;
20
+ private graphInspector;
21
+ private appOptions;
22
+ private routeInfoPathExtractor;
23
+ register(middlewareContainer: MiddlewareContainer, container: NestContainer, config: ApplicationConfig, injector: Injector, httpAdapter: HttpServer, graphInspector: GraphInspector, options: TAppOptions): Promise<void>;
24
+ resolveMiddleware(middlewareContainer: MiddlewareContainer, modules: Map<string, Module>): Promise<void>;
25
+ loadConfiguration(middlewareContainer: MiddlewareContainer, moduleRef: Module, moduleKey: string): Promise<void>;
26
+ registerMiddleware(middlewareContainer: MiddlewareContainer, applicationRef: any): Promise<void>;
27
+ registerMiddlewareConfig(middlewareContainer: MiddlewareContainer, config: MiddlewareConfiguration, moduleKey: string, applicationRef: any): Promise<void>;
28
+ registerRouteMiddleware(middlewareContainer: MiddlewareContainer, routeInfo: RouteInfo, config: MiddlewareConfiguration, moduleKey: string, applicationRef: any): Promise<void>;
29
+ private bindHandler;
30
+ private createProxy;
31
+ private registerHandler;
32
+ private getContextId;
33
+ }
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MiddlewareModule = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const request_method_enum_1 = require("@nestjs/common/enums/request-method.enum");
6
+ const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
7
+ const invalid_middleware_exception_1 = require("../errors/exceptions/invalid-middleware.exception");
8
+ const runtime_exception_1 = require("../errors/exceptions/runtime.exception");
9
+ const context_id_factory_1 = require("../helpers/context-id-factory");
10
+ const execution_context_host_1 = require("../helpers/execution-context-host");
11
+ const constants_1 = require("../injector/constants");
12
+ const request_constants_1 = require("../router/request/request-constants");
13
+ const router_exception_filters_1 = require("../router/router-exception-filters");
14
+ const router_proxy_1 = require("../router/router-proxy");
15
+ const utils_1 = require("../router/utils");
16
+ const builder_1 = require("./builder");
17
+ const resolver_1 = require("./resolver");
18
+ const route_info_path_extractor_1 = require("./route-info-path-extractor");
19
+ const routes_mapper_1 = require("./routes-mapper");
20
+ class MiddlewareModule {
21
+ constructor() {
22
+ this.routerProxy = new router_proxy_1.RouterProxy();
23
+ this.exceptionFiltersCache = new WeakMap();
24
+ this.logger = new common_1.Logger(MiddlewareModule.name);
25
+ }
26
+ async register(middlewareContainer, container, config, injector, httpAdapter, graphInspector, options) {
27
+ this.appOptions = options;
28
+ const appRef = container.getHttpAdapterRef();
29
+ this.routerExceptionFilter = new router_exception_filters_1.RouterExceptionFilters(container, config, appRef);
30
+ this.routesMapper = new routes_mapper_1.RoutesMapper(container, config);
31
+ this.resolver = new resolver_1.MiddlewareResolver(middlewareContainer, injector);
32
+ this.routeInfoPathExtractor = new route_info_path_extractor_1.RouteInfoPathExtractor(config);
33
+ this.injector = injector;
34
+ this.container = container;
35
+ this.httpAdapter = httpAdapter;
36
+ this.graphInspector = graphInspector;
37
+ const modules = container.getModules();
38
+ await this.resolveMiddleware(middlewareContainer, modules);
39
+ }
40
+ async resolveMiddleware(middlewareContainer, modules) {
41
+ const moduleEntries = [...modules.entries()];
42
+ const loadMiddlewareConfiguration = async ([moduleName, moduleRef]) => {
43
+ await this.loadConfiguration(middlewareContainer, moduleRef, moduleName);
44
+ await this.resolver.resolveInstances(moduleRef, moduleName);
45
+ };
46
+ await Promise.all(moduleEntries.map(loadMiddlewareConfiguration));
47
+ }
48
+ async loadConfiguration(middlewareContainer, moduleRef, moduleKey) {
49
+ const { instance } = moduleRef;
50
+ if (!instance.configure) {
51
+ return;
52
+ }
53
+ const middlewareBuilder = new builder_1.MiddlewareBuilder(this.routesMapper, this.httpAdapter, this.routeInfoPathExtractor);
54
+ try {
55
+ await instance.configure(middlewareBuilder);
56
+ }
57
+ catch (err) {
58
+ if (!this.appOptions.preview) {
59
+ throw err;
60
+ }
61
+ const warningMessage = `Warning! "${moduleRef.name}" module exposes a "configure" method that throws an exception in the preview mode` +
62
+ ` (possibly due to missing dependencies). Note: you can ignore this message, just be aware that some of those conditional middlewares will not be reflected in your graph.`;
63
+ this.logger.warn(warningMessage);
64
+ }
65
+ if (!(middlewareBuilder instanceof builder_1.MiddlewareBuilder)) {
66
+ return;
67
+ }
68
+ const config = middlewareBuilder.build();
69
+ middlewareContainer.insertConfig(config, moduleKey);
70
+ }
71
+ async registerMiddleware(middlewareContainer, applicationRef) {
72
+ const configs = middlewareContainer.getConfigurations();
73
+ const registerAllConfigs = async (moduleKey, middlewareConfig) => {
74
+ for (const config of middlewareConfig) {
75
+ await this.registerMiddlewareConfig(middlewareContainer, config, moduleKey, applicationRef);
76
+ }
77
+ };
78
+ const entriesSortedByDistance = [...configs.entries()].sort(([moduleA], [moduleB]) => {
79
+ const moduleARef = this.container.getModuleByKey(moduleA);
80
+ const moduleBRef = this.container.getModuleByKey(moduleB);
81
+ const isModuleAGlobal = moduleARef.distance === Number.MAX_VALUE;
82
+ const isModuleBGlobal = moduleBRef.distance === Number.MAX_VALUE;
83
+ if (isModuleAGlobal && isModuleBGlobal) {
84
+ return 0;
85
+ }
86
+ if (isModuleAGlobal) {
87
+ return -1;
88
+ }
89
+ if (isModuleBGlobal) {
90
+ return 1;
91
+ }
92
+ return moduleARef.distance - moduleBRef.distance;
93
+ });
94
+ for (const [moduleRef, moduleConfigurations] of entriesSortedByDistance) {
95
+ await registerAllConfigs(moduleRef, [...moduleConfigurations]);
96
+ }
97
+ }
98
+ async registerMiddlewareConfig(middlewareContainer, config, moduleKey, applicationRef) {
99
+ const { forRoutes } = config;
100
+ for (const routeInfo of forRoutes) {
101
+ await this.registerRouteMiddleware(middlewareContainer, routeInfo, config, moduleKey, applicationRef);
102
+ }
103
+ }
104
+ async registerRouteMiddleware(middlewareContainer, routeInfo, config, moduleKey, applicationRef) {
105
+ const middlewareCollection = [].concat(config.middleware);
106
+ const moduleRef = this.container.getModuleByKey(moduleKey);
107
+ for (const metatype of middlewareCollection) {
108
+ const collection = middlewareContainer.getMiddlewareCollection(moduleKey);
109
+ const instanceWrapper = collection.get(metatype);
110
+ if ((0, shared_utils_1.isUndefined)(instanceWrapper)) {
111
+ throw new runtime_exception_1.RuntimeException();
112
+ }
113
+ if (instanceWrapper.isTransient) {
114
+ return;
115
+ }
116
+ this.graphInspector.insertClassNode(moduleRef, instanceWrapper, 'middleware');
117
+ const middlewareDefinition = {
118
+ type: 'middleware',
119
+ methodName: 'use',
120
+ className: instanceWrapper.name,
121
+ classNodeId: instanceWrapper.id,
122
+ metadata: {
123
+ key: routeInfo.path,
124
+ path: routeInfo.path,
125
+ requestMethod: request_method_enum_1.RequestMethod[routeInfo.method] ??
126
+ 'ALL',
127
+ version: routeInfo.version,
128
+ },
129
+ };
130
+ this.graphInspector.insertEntrypointDefinition(middlewareDefinition, instanceWrapper.id);
131
+ await this.bindHandler(instanceWrapper, applicationRef, routeInfo, moduleRef, collection);
132
+ }
133
+ }
134
+ async bindHandler(wrapper, applicationRef, routeInfo, moduleRef, collection) {
135
+ const { instance, metatype } = wrapper;
136
+ if ((0, shared_utils_1.isUndefined)(instance?.use)) {
137
+ throw new invalid_middleware_exception_1.InvalidMiddlewareException(metatype.name);
138
+ }
139
+ const isStatic = wrapper.isDependencyTreeStatic();
140
+ if (isStatic) {
141
+ const proxy = await this.createProxy(instance);
142
+ return this.registerHandler(applicationRef, routeInfo, proxy);
143
+ }
144
+ const isTreeDurable = wrapper.isDependencyTreeDurable();
145
+ await this.registerHandler(applicationRef, routeInfo, async (req, res, next) => {
146
+ try {
147
+ const contextId = this.getContextId(req, isTreeDurable);
148
+ const contextInstance = await this.injector.loadPerContext(instance, moduleRef, collection, contextId);
149
+ const proxy = await this.createProxy(contextInstance, contextId);
150
+ return proxy(req, res, next);
151
+ }
152
+ catch (err) {
153
+ let exceptionsHandler = this.exceptionFiltersCache.get(instance.use);
154
+ if (!exceptionsHandler) {
155
+ exceptionsHandler = this.routerExceptionFilter.create(instance, instance.use, undefined);
156
+ this.exceptionFiltersCache.set(instance.use, exceptionsHandler);
157
+ }
158
+ const host = new execution_context_host_1.ExecutionContextHost([req, res, next]);
159
+ exceptionsHandler.next(err, host);
160
+ }
161
+ });
162
+ }
163
+ async createProxy(instance, contextId = constants_1.STATIC_CONTEXT) {
164
+ const exceptionsHandler = this.routerExceptionFilter.create(instance, instance.use, undefined, contextId);
165
+ const middleware = instance.use.bind(instance);
166
+ return this.routerProxy.createProxy(middleware, exceptionsHandler);
167
+ }
168
+ async registerHandler(applicationRef, routeInfo, proxy) {
169
+ const { method } = routeInfo;
170
+ const paths = this.routeInfoPathExtractor.extractPathsFrom(routeInfo);
171
+ const isMethodAll = (0, utils_1.isRequestMethodAll)(method);
172
+ const requestMethod = request_method_enum_1.RequestMethod[method];
173
+ const router = await applicationRef.createMiddlewareFactory(method);
174
+ const middlewareFunction = isMethodAll
175
+ ? proxy
176
+ : (req, res, next) => {
177
+ const actualRequestMethod = applicationRef.getRequestMethod?.(req);
178
+ if (actualRequestMethod === requestMethod ||
179
+ (actualRequestMethod === request_method_enum_1.RequestMethod[request_method_enum_1.RequestMethod.HEAD] &&
180
+ requestMethod === request_method_enum_1.RequestMethod[request_method_enum_1.RequestMethod.GET])) {
181
+ return proxy(req, res, next);
182
+ }
183
+ return next();
184
+ };
185
+ const pathsToApplyMiddleware = [];
186
+ paths.some(path => path.match(/^\/?$/))
187
+ ? pathsToApplyMiddleware.push('/')
188
+ : pathsToApplyMiddleware.push(...paths);
189
+ pathsToApplyMiddleware.forEach(path => router(path, middlewareFunction));
190
+ }
191
+ getContextId(request, isTreeDurable) {
192
+ const contextId = context_id_factory_1.ContextIdFactory.getByRequest(request);
193
+ if (!request[request_constants_1.REQUEST_CONTEXT_ID]) {
194
+ Object.defineProperty(request, request_constants_1.REQUEST_CONTEXT_ID, {
195
+ value: contextId,
196
+ enumerable: false,
197
+ writable: false,
198
+ configurable: false,
199
+ });
200
+ const requestProviderValue = isTreeDurable
201
+ ? contextId.payload
202
+ : Object.assign(request, contextId.payload);
203
+ this.container.registerRequestProvider(requestProviderValue, contextId);
204
+ }
205
+ return contextId;
206
+ }
207
+ }
208
+ exports.MiddlewareModule = MiddlewareModule;
@@ -0,0 +1,10 @@
1
+ import { Injector } from '../injector/injector';
2
+ import { Module } from '../injector/module';
3
+ import { MiddlewareContainer } from './container';
4
+ export declare class MiddlewareResolver {
5
+ private readonly middlewareContainer;
6
+ private readonly injector;
7
+ constructor(middlewareContainer: MiddlewareContainer, injector: Injector);
8
+ resolveInstances(moduleRef: Module, moduleName: string): Promise<void>;
9
+ private resolveMiddlewareInstance;
10
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MiddlewareResolver = void 0;
4
+ class MiddlewareResolver {
5
+ constructor(middlewareContainer, injector) {
6
+ this.middlewareContainer = middlewareContainer;
7
+ this.injector = injector;
8
+ }
9
+ async resolveInstances(moduleRef, moduleName) {
10
+ const middlewareMap = this.middlewareContainer.getMiddlewareCollection(moduleName);
11
+ const resolveInstance = async (wrapper) => this.resolveMiddlewareInstance(wrapper, middlewareMap, moduleRef);
12
+ await Promise.all([...middlewareMap.values()].map(resolveInstance));
13
+ }
14
+ async resolveMiddlewareInstance(wrapper, middlewareMap, moduleRef) {
15
+ await this.injector.loadMiddleware(wrapper, middlewareMap, moduleRef);
16
+ }
17
+ }
18
+ exports.MiddlewareResolver = MiddlewareResolver;
@@ -0,0 +1,15 @@
1
+ import { RouteInfo } from '@nestjs/common/interfaces';
2
+ import { ApplicationConfig } from '../application-config';
3
+ export declare class RouteInfoPathExtractor {
4
+ private readonly applicationConfig;
5
+ private readonly routePathFactory;
6
+ private readonly prefixPath;
7
+ private readonly excludedGlobalPrefixRoutes;
8
+ private readonly versioningConfig?;
9
+ constructor(applicationConfig: ApplicationConfig);
10
+ extractPathsFrom({ path, method, version }: RouteInfo): string[];
11
+ extractPathFrom(route: RouteInfo): string[];
12
+ private isAWildcard;
13
+ private extractNonWildcardPathsFrom;
14
+ private extractVersionPathFrom;
15
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RouteInfoPathExtractor = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
6
+ const utils_1 = require("../router/utils");
7
+ const route_path_factory_1 = require("./../router/route-path-factory");
8
+ class RouteInfoPathExtractor {
9
+ constructor(applicationConfig) {
10
+ this.applicationConfig = applicationConfig;
11
+ this.routePathFactory = new route_path_factory_1.RoutePathFactory(applicationConfig);
12
+ this.prefixPath = (0, shared_utils_1.stripEndSlash)((0, shared_utils_1.addLeadingSlash)(this.applicationConfig.getGlobalPrefix()));
13
+ this.excludedGlobalPrefixRoutes =
14
+ this.applicationConfig.getGlobalPrefixOptions().exclude;
15
+ this.versioningConfig = this.applicationConfig.getVersioning();
16
+ }
17
+ extractPathsFrom({ path, method, version }) {
18
+ const versionPaths = this.extractVersionPathFrom(version);
19
+ if (this.isAWildcard(path)) {
20
+ const entries = versionPaths.length > 0
21
+ ? versionPaths
22
+ .map(versionPath => [
23
+ this.prefixPath + versionPath + '$',
24
+ this.prefixPath + versionPath + (0, shared_utils_1.addLeadingSlash)(path),
25
+ ])
26
+ .flat()
27
+ : this.prefixPath
28
+ ? [this.prefixPath + '$', this.prefixPath + (0, shared_utils_1.addLeadingSlash)(path)]
29
+ : [(0, shared_utils_1.addLeadingSlash)(path)];
30
+ return Array.isArray(this.excludedGlobalPrefixRoutes)
31
+ ? [
32
+ ...entries,
33
+ ...this.excludedGlobalPrefixRoutes
34
+ .map(route => Array.isArray(versionPaths) && versionPaths.length > 0
35
+ ? versionPaths.map(v => v + (0, shared_utils_1.addLeadingSlash)(route.path))
36
+ : (0, shared_utils_1.addLeadingSlash)(route.path))
37
+ .flat(),
38
+ ]
39
+ : entries;
40
+ }
41
+ return this.extractNonWildcardPathsFrom({ path, method, version });
42
+ }
43
+ extractPathFrom(route) {
44
+ if (this.isAWildcard(route.path) && !route.version) {
45
+ return [(0, shared_utils_1.addLeadingSlash)(route.path)];
46
+ }
47
+ return this.extractNonWildcardPathsFrom(route);
48
+ }
49
+ isAWildcard(path) {
50
+ const isSimpleWildcard = ['*', '/*', '/*/', '(.*)', '/(.*)'];
51
+ if (isSimpleWildcard.includes(path)) {
52
+ return true;
53
+ }
54
+ const wildcardRegexp = /^\/\{.*\}.*|^\/\*.*$/;
55
+ return wildcardRegexp.test(path);
56
+ }
57
+ extractNonWildcardPathsFrom({ path, method, version, }) {
58
+ const versionPaths = this.extractVersionPathFrom(version);
59
+ if (Array.isArray(this.excludedGlobalPrefixRoutes) &&
60
+ (0, utils_1.isRouteExcluded)(this.excludedGlobalPrefixRoutes, path, method)) {
61
+ if (!versionPaths.length) {
62
+ return [(0, shared_utils_1.addLeadingSlash)(path)];
63
+ }
64
+ return versionPaths.map(versionPath => versionPath + (0, shared_utils_1.addLeadingSlash)(path));
65
+ }
66
+ if (!versionPaths.length) {
67
+ return [this.prefixPath + (0, shared_utils_1.addLeadingSlash)(path)];
68
+ }
69
+ return versionPaths.map(versionPath => this.prefixPath + versionPath + (0, shared_utils_1.addLeadingSlash)(path));
70
+ }
71
+ extractVersionPathFrom(versionValue) {
72
+ if (!versionValue || this.versioningConfig?.type !== common_1.VersioningType.URI)
73
+ return [];
74
+ const versionPrefix = this.routePathFactory.getVersionPrefix(this.versioningConfig);
75
+ if (Array.isArray(versionValue)) {
76
+ return versionValue.map(version => (0, shared_utils_1.addLeadingSlash)(versionPrefix + version.toString()));
77
+ }
78
+ return [(0, shared_utils_1.addLeadingSlash)(versionPrefix + versionValue.toString())];
79
+ }
80
+ }
81
+ exports.RouteInfoPathExtractor = RouteInfoPathExtractor;
@@ -0,0 +1,19 @@
1
+ import { RouteInfo, Type } from '@nestjs/common/interfaces';
2
+ import { ApplicationConfig } from '../application-config';
3
+ import { NestContainer } from '../injector/container';
4
+ export declare class RoutesMapper {
5
+ private readonly container;
6
+ private readonly applicationConfig;
7
+ private readonly pathsExplorer;
8
+ constructor(container: NestContainer, applicationConfig: ApplicationConfig);
9
+ mapRouteToRouteInfo(controllerOrRoute: Type<any> | RouteInfo | string): RouteInfo[];
10
+ private getRouteInfoFromPath;
11
+ private getRouteInfoFromObject;
12
+ private getRouteInfoFromController;
13
+ private isRouteInfo;
14
+ private normalizeGlobalPath;
15
+ private getRoutePath;
16
+ private getHostModuleOfController;
17
+ private getModulePath;
18
+ private getVersionMetadata;
19
+ }