@expressots/core 3.0.0 → 4.0.0-preview.1

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 (1090) hide show
  1. package/README.md +43 -95
  2. package/lib/CHANGELOG.md +35 -0
  3. package/lib/README.md +43 -95
  4. package/lib/cjs/application/application-container.js +467 -33
  5. package/lib/cjs/application/application-factory.js +105 -5
  6. package/lib/cjs/application/application.types.js +32 -2
  7. package/lib/cjs/application/bootstrap.js +812 -0
  8. package/lib/cjs/application/index.js +10 -7
  9. package/lib/cjs/authorization/authorization-config.interface.js +2 -0
  10. package/lib/cjs/authorization/decorators/convenience.js +80 -0
  11. package/lib/cjs/authorization/guard-constants.js +12 -0
  12. package/lib/cjs/authorization/guard-decorators.js +159 -0
  13. package/lib/cjs/authorization/guard-executor.js +101 -0
  14. package/lib/cjs/authorization/guard-registry.js +133 -0
  15. package/lib/cjs/authorization/guard.interface.js +75 -0
  16. package/lib/cjs/authorization/guards/attribute-based.guard.js +109 -0
  17. package/lib/cjs/authorization/guards/authenticated.guard.js +49 -0
  18. package/lib/cjs/authorization/guards/composition.guard.js +67 -0
  19. package/lib/cjs/authorization/guards/conditional.guard.js +41 -0
  20. package/lib/cjs/authorization/guards/index.js +24 -0
  21. package/lib/cjs/authorization/guards/permission.guard.js +82 -0
  22. package/lib/cjs/authorization/guards/resource-owner.guard.js +61 -0
  23. package/lib/cjs/authorization/guards/role.guard.js +64 -0
  24. package/lib/cjs/authorization/index.js +40 -0
  25. package/lib/cjs/authorization/services/guard-cache.interface.js +2 -0
  26. package/lib/cjs/authorization/services/guard-cache.js +56 -0
  27. package/lib/cjs/authorization/services/permission-hierarchy.interface.js +2 -0
  28. package/lib/cjs/authorization/services/permission-hierarchy.js +54 -0
  29. package/lib/cjs/authorization/services/permission-service.interface.js +2 -0
  30. package/lib/cjs/authorization/services/permission-service.js +58 -0
  31. package/lib/cjs/authorization/services/security-context.interface.js +2 -0
  32. package/lib/cjs/authorization/services/security-context.js +75 -0
  33. package/lib/cjs/authorization/setup.js +141 -0
  34. package/lib/cjs/config/config-resolver.js +719 -0
  35. package/lib/cjs/config/config.interfaces.js +14 -0
  36. package/lib/cjs/config/define-config.js +495 -0
  37. package/lib/cjs/config/env-field-builders.js +402 -0
  38. package/lib/cjs/config/index.js +83 -0
  39. package/lib/cjs/config/secret-value.js +201 -0
  40. package/lib/cjs/console/color-codes.js +4 -0
  41. package/lib/cjs/console/console.js +72 -9
  42. package/lib/cjs/console/index.js +2 -2
  43. package/lib/cjs/container-module/container-module.js +257 -26
  44. package/lib/cjs/container-module/index.js +6 -4
  45. package/lib/cjs/decorator/index.js +1 -1
  46. package/lib/cjs/decorator/scope-binding.js +307 -16
  47. package/lib/cjs/di/annotation/decorator_utils.js +4 -4
  48. package/lib/cjs/di/annotation/inject.js +3 -3
  49. package/lib/cjs/di/annotation/inject_base.js +5 -5
  50. package/lib/cjs/di/annotation/injectable.js +2 -2
  51. package/lib/cjs/di/annotation/multi_inject.js +3 -3
  52. package/lib/cjs/di/annotation/named.js +4 -4
  53. package/lib/cjs/di/annotation/optional.js +4 -4
  54. package/lib/cjs/di/annotation/post_construct.js +4 -4
  55. package/lib/cjs/di/annotation/pre_destroy.js +4 -4
  56. package/lib/cjs/di/annotation/property_event_decorator.js +2 -2
  57. package/lib/cjs/di/annotation/tagged.js +3 -3
  58. package/lib/cjs/di/annotation/target_name.js +5 -5
  59. package/lib/cjs/di/annotation/unmanaged.js +5 -5
  60. package/lib/cjs/di/binding-decorator/constants.js +3 -0
  61. package/lib/cjs/di/binding-decorator/decorator/fluent_provide.js +7 -7
  62. package/lib/cjs/di/binding-decorator/decorator/provide.js +7 -7
  63. package/lib/cjs/di/binding-decorator/factory/module_factory.js +23 -4
  64. package/lib/cjs/di/binding-decorator/index.js +11 -9
  65. package/lib/cjs/di/binding-decorator/syntax/provide_done_syntax.js +7 -7
  66. package/lib/cjs/di/binding-decorator/syntax/provide_in_syntax.js +19 -12
  67. package/lib/cjs/di/binding-decorator/syntax/provide_in_when_on_syntax.js +3 -0
  68. package/lib/cjs/di/binding-decorator/syntax/provide_on_syntax.js +4 -4
  69. package/lib/cjs/di/binding-decorator/syntax/provide_when_syntax.js +30 -30
  70. package/lib/cjs/di/binding-decorator/utils/auto_wire.js +4 -4
  71. package/lib/cjs/di/bindings/binding.js +5 -6
  72. package/lib/cjs/di/constants/error_msgs.js +6 -2
  73. package/lib/cjs/di/constants/literal_types.js +3 -3
  74. package/lib/cjs/di/container/container.js +44 -44
  75. package/lib/cjs/di/container/container_module.js +3 -3
  76. package/lib/cjs/di/container/lookup.js +3 -3
  77. package/lib/cjs/di/container/module_activation_store.js +3 -3
  78. package/lib/cjs/di/container-introspection.js +42 -0
  79. package/lib/cjs/di/inversify.js +85 -52
  80. package/lib/cjs/di/planning/context.js +2 -2
  81. package/lib/cjs/di/planning/metadata.js +1 -1
  82. package/lib/cjs/di/planning/metadata_reader.js +1 -1
  83. package/lib/cjs/di/planning/planner.js +37 -37
  84. package/lib/cjs/di/planning/reflection_utils.js +12 -12
  85. package/lib/cjs/di/planning/request.js +2 -2
  86. package/lib/cjs/di/planning/target.js +10 -10
  87. package/lib/cjs/di/resolution/instantiation.js +13 -13
  88. package/lib/cjs/di/resolution/resolver.js +22 -22
  89. package/lib/cjs/di/scope/scope-registry.js +115 -0
  90. package/lib/cjs/di/scope/scope.js +38 -8
  91. package/lib/cjs/di/syntax/binding_in_syntax.js +18 -8
  92. package/lib/cjs/di/syntax/binding_in_when_on_syntax.js +9 -6
  93. package/lib/cjs/di/syntax/binding_on_syntax.js +3 -3
  94. package/lib/cjs/di/syntax/binding_to_syntax.js +27 -27
  95. package/lib/cjs/di/syntax/binding_when_on_syntax.js +4 -4
  96. package/lib/cjs/di/syntax/binding_when_syntax.js +30 -30
  97. package/lib/cjs/di/syntax/constraint_helpers.js +3 -3
  98. package/lib/cjs/di/utils/binding_utils.js +18 -18
  99. package/lib/cjs/di/utils/exceptions.js +1 -1
  100. package/lib/cjs/di/utils/serialization.js +1 -1
  101. package/lib/cjs/error/app-error.js +152 -8
  102. package/lib/cjs/error/base-exception-filter.js +135 -0
  103. package/lib/cjs/error/error-handler-middleware.js +7 -7
  104. package/lib/cjs/error/exception-filter-constants.js +12 -0
  105. package/lib/cjs/error/exception-filter-decorators.js +161 -0
  106. package/lib/cjs/error/exception-filter-registry.js +163 -0
  107. package/lib/cjs/error/exception-filter.interface.js +2 -0
  108. package/lib/cjs/error/exception-handler-middleware.js +378 -0
  109. package/lib/cjs/error/filters/app-error.filter.js +31 -0
  110. package/lib/cjs/error/filters/global-exception.filter.js +39 -0
  111. package/lib/cjs/error/filters/not-found.filter.js +35 -0
  112. package/lib/cjs/error/filters/validation-error.filter.js +35 -0
  113. package/lib/cjs/error/index.js +28 -7
  114. package/lib/cjs/error/not-found.error.js +17 -0
  115. package/lib/cjs/error/report.js +104 -9
  116. package/lib/cjs/error/status-code.js +20 -0
  117. package/lib/cjs/error/utils.js +247 -33
  118. package/lib/cjs/error/validation.error.js +18 -0
  119. package/lib/cjs/event/event-decorators.js +280 -0
  120. package/lib/cjs/event/event-emitter.js +373 -0
  121. package/lib/cjs/event/event-flow-tracker.js +236 -0
  122. package/lib/cjs/event/event-recorder.js +289 -0
  123. package/lib/cjs/event/event-registry.js +207 -0
  124. package/lib/cjs/event/event.interfaces.js +54 -0
  125. package/lib/cjs/event/index.js +80 -0
  126. package/lib/cjs/index.js +29 -8
  127. package/lib/cjs/interceptor/conditional-interceptor.js +108 -0
  128. package/lib/cjs/interceptor/execution-context.js +66 -0
  129. package/lib/cjs/interceptor/index.js +64 -0
  130. package/lib/cjs/interceptor/interceptor-composition.js +130 -0
  131. package/lib/cjs/interceptor/interceptor-constants.js +20 -0
  132. package/lib/cjs/interceptor/interceptor-decorators.js +155 -0
  133. package/lib/cjs/interceptor/interceptor-executor.js +140 -0
  134. package/lib/cjs/interceptor/interceptor-registry.js +159 -0
  135. package/lib/cjs/interceptor/interceptor.interface.js +20 -0
  136. package/lib/cjs/interceptor/interceptors/index.js +22 -0
  137. package/lib/cjs/interceptor/interceptors/logging.interceptor.js +70 -0
  138. package/lib/cjs/interceptor/interceptors/performance.interceptor.js +251 -0
  139. package/lib/cjs/interceptor/interceptors/timeout.interceptor.js +66 -0
  140. package/lib/cjs/lazy-loading/index.js +73 -0
  141. package/lib/cjs/lazy-loading/lazy-load-metrics.js +355 -0
  142. package/lib/cjs/lazy-loading/lazy-module-loader.js +311 -0
  143. package/lib/cjs/lazy-loading/lazy-module-manager.js +244 -0
  144. package/lib/cjs/lazy-loading/lazy-module-warmup.js +294 -0
  145. package/lib/cjs/lazy-loading/lazy-module.js +380 -0
  146. package/lib/cjs/lazy-loading/lazy.interfaces.js +18 -0
  147. package/lib/cjs/lifecycle/index.js +15 -0
  148. package/lib/cjs/lifecycle/lifecycle-registry.js +301 -0
  149. package/lib/cjs/lifecycle/lifecycle.interface.js +37 -0
  150. package/lib/cjs/middleware/content-negotiation/accept-header-parser.js +110 -0
  151. package/lib/cjs/middleware/content-negotiation/content-negotiation-service.js +288 -0
  152. package/lib/cjs/middleware/content-negotiation/formatter-registry.js +168 -0
  153. package/lib/cjs/middleware/content-negotiation/formatters/csv-formatter.js +114 -0
  154. package/lib/cjs/middleware/content-negotiation/formatters/index.js +16 -0
  155. package/lib/cjs/middleware/content-negotiation/formatters/json-formatter.js +34 -0
  156. package/lib/cjs/middleware/content-negotiation/formatters/plain-text-formatter.js +44 -0
  157. package/lib/cjs/middleware/content-negotiation/formatters/xml-formatter.js +124 -0
  158. package/lib/cjs/middleware/content-negotiation/formatters/yaml-formatter.js +134 -0
  159. package/lib/cjs/middleware/content-negotiation/index.js +27 -0
  160. package/lib/cjs/middleware/index.js +59 -30
  161. package/lib/cjs/middleware/interfaces/content-negotiation.interface.js +7 -0
  162. package/lib/cjs/middleware/middleware-config.js +10 -0
  163. package/lib/cjs/middleware/middleware-presets.js +294 -0
  164. package/lib/cjs/middleware/middleware-profiler.js +310 -0
  165. package/lib/cjs/middleware/middleware-registry.js +160 -0
  166. package/lib/cjs/middleware/middleware-resolver.js +318 -57
  167. package/lib/cjs/middleware/middleware-service.js +1636 -308
  168. package/lib/cjs/middleware/middleware-utils.js +280 -0
  169. package/lib/cjs/middleware/upload-registry.js +91 -0
  170. package/lib/cjs/path-resolver/index.js +252 -0
  171. package/lib/cjs/provider/db-in-memory/adapter/adapter.interface.js +10 -0
  172. package/lib/cjs/provider/db-in-memory/adapter/in-memory.adapter.js +665 -0
  173. package/lib/cjs/provider/db-in-memory/adapter/index.js +10 -0
  174. package/lib/cjs/provider/db-in-memory/base-repo.repository.js +4 -4
  175. package/lib/cjs/provider/db-in-memory/db-in-memory.provider.js +14 -18
  176. package/lib/cjs/provider/db-in-memory/db.provider.js +402 -0
  177. package/lib/cjs/provider/db-in-memory/index.js +115 -9
  178. package/lib/cjs/provider/db-in-memory/query/index.js +24 -0
  179. package/lib/cjs/provider/db-in-memory/query/query-engine.js +573 -0
  180. package/lib/cjs/provider/db-in-memory/query/query.types.js +10 -0
  181. package/lib/cjs/provider/db-in-memory/schema/decorators.js +402 -0
  182. package/lib/cjs/provider/db-in-memory/schema/entity.interface.js +9 -0
  183. package/lib/cjs/provider/db-in-memory/schema/index.js +21 -0
  184. package/lib/cjs/provider/db-in-memory/storage/index.js +14 -0
  185. package/lib/cjs/provider/db-in-memory/storage/memory-store.js +706 -0
  186. package/lib/cjs/provider/dto-validator/dto-validator.provider.js +8 -8
  187. package/lib/cjs/provider/dto-validator/package-resolver.js +2 -2
  188. package/lib/cjs/provider/index.js +14 -10
  189. package/lib/cjs/provider/logger/decorators/index.js +17 -0
  190. package/lib/cjs/provider/logger/decorators/log-performance.decorator.js +178 -0
  191. package/lib/cjs/provider/logger/index.js +35 -0
  192. package/lib/cjs/provider/logger/logger.banner.js +473 -0
  193. package/lib/cjs/provider/logger/logger.config.js +22 -0
  194. package/lib/cjs/provider/logger/logger.context.js +341 -0
  195. package/lib/cjs/provider/logger/logger.flow.js +255 -0
  196. package/lib/cjs/provider/logger/logger.formatter.js +676 -0
  197. package/lib/cjs/provider/logger/logger.grouping.js +319 -0
  198. package/lib/cjs/provider/logger/logger.health.js +295 -0
  199. package/lib/cjs/provider/logger/logger.metrics-collector.js +184 -0
  200. package/lib/cjs/provider/logger/logger.metrics.js +91 -0
  201. package/lib/cjs/provider/logger/logger.performance.js +300 -0
  202. package/lib/cjs/provider/logger/logger.provider.js +698 -75
  203. package/lib/cjs/provider/logger/logger.query.js +532 -0
  204. package/lib/cjs/provider/logger/logger.redaction.js +456 -0
  205. package/lib/cjs/provider/logger/logger.suggestions.js +480 -0
  206. package/lib/cjs/provider/logger/transports/console.transport.js +78 -0
  207. package/lib/cjs/provider/logger/transports/file.transport.js +287 -0
  208. package/lib/cjs/provider/logger/transports/http-server.js +141 -0
  209. package/lib/cjs/provider/logger/transports/http.transport.js +151 -0
  210. package/lib/cjs/provider/logger/transports/index.js +21 -0
  211. package/lib/cjs/provider/logger/transports/transport.interface.js +2 -0
  212. package/lib/cjs/provider/logger/utils/index.js +18 -0
  213. package/lib/cjs/provider/logger/utils/log-entry.js +26 -0
  214. package/lib/cjs/provider/logger/utils/log-levels.js +106 -0
  215. package/lib/cjs/provider/provider-manager.js +209 -16
  216. package/lib/cjs/provider/provider-registry.js +414 -0
  217. package/lib/cjs/provider/provider.interface.js +49 -0
  218. package/lib/cjs/provider/validation/adapters/class-validator.adapter.js +264 -0
  219. package/lib/cjs/provider/validation/adapters/index.js +14 -0
  220. package/lib/cjs/provider/validation/helpful-error-formatter.js +228 -0
  221. package/lib/cjs/provider/validation/index.js +35 -0
  222. package/lib/cjs/provider/validation/smart-field-detector.js +543 -0
  223. package/lib/cjs/provider/validation/type-inference.js +192 -0
  224. package/lib/cjs/provider/validation/validation-registry.js +220 -0
  225. package/lib/cjs/provider/validation/validation.interface.js +9 -0
  226. package/lib/cjs/render/adapters/base-adapter.js +134 -0
  227. package/lib/cjs/render/adapters/ejs-adapter.js +172 -0
  228. package/lib/cjs/render/adapters/handlebars-adapter.js +191 -0
  229. package/lib/cjs/render/adapters/index.js +20 -0
  230. package/lib/cjs/render/adapters/pug-adapter.js +164 -0
  231. package/lib/cjs/render/adapters/react-adapter.js +336 -0
  232. package/lib/cjs/render/features/auto-detection.js +228 -0
  233. package/lib/cjs/render/features/hot-reload.js +155 -0
  234. package/lib/cjs/render/features/index.js +20 -0
  235. package/lib/cjs/render/features/streaming.js +106 -0
  236. package/lib/cjs/render/features/type-generator.js +221 -0
  237. package/lib/cjs/render/features/view-debugger.js +174 -0
  238. package/lib/cjs/render/index.js +80 -0
  239. package/lib/cjs/render/presets/index.js +216 -0
  240. package/lib/cjs/render/render-config.js +10 -0
  241. package/lib/cjs/render/render-interface.js +2 -0
  242. package/lib/cjs/render/render-registry.js +130 -0
  243. package/lib/cjs/render/render-service.js +418 -0
  244. package/lib/cjs/render/utils/cache-manager.js +199 -0
  245. package/lib/cjs/render/utils/index.js +20 -0
  246. package/lib/cjs/render/utils/package-resolver.js +121 -0
  247. package/lib/cjs/render/utils/view-scanner.js +208 -0
  248. package/lib/cjs/testing/create-test-app.js +366 -0
  249. package/lib/cjs/testing/create-test-database.js +416 -0
  250. package/lib/cjs/testing/fluent-request.js +454 -0
  251. package/lib/cjs/testing/index.js +142 -0
  252. package/lib/cjs/testing/load-test.js +484 -0
  253. package/lib/cjs/testing/matchers.js +444 -0
  254. package/lib/cjs/testing/mock-context.js +406 -0
  255. package/lib/cjs/testing/mock-provider.js +339 -0
  256. package/lib/cjs/testing/snapshot-request.js +378 -0
  257. package/lib/cjs/testing/testing.interfaces.js +10 -0
  258. package/lib/cjs/types/application/application-container.d.ts +320 -20
  259. package/lib/cjs/types/application/application-factory.d.ts +99 -3
  260. package/lib/cjs/types/application/application.types.d.ts +177 -2
  261. package/lib/cjs/types/application/bootstrap.d.ts +484 -0
  262. package/lib/cjs/types/application/index.d.ts +4 -3
  263. package/lib/cjs/types/authorization/authorization-config.interface.d.ts +45 -0
  264. package/lib/cjs/types/authorization/decorators/convenience.d.ts +64 -0
  265. package/lib/cjs/types/authorization/guard-constants.d.ts +9 -0
  266. package/lib/cjs/types/authorization/guard-decorators.d.ts +128 -0
  267. package/lib/cjs/types/authorization/guard-executor.d.ts +26 -0
  268. package/lib/cjs/types/authorization/guard-registry.d.ts +35 -0
  269. package/lib/cjs/types/authorization/guard.interface.d.ts +335 -0
  270. package/lib/cjs/types/authorization/guards/attribute-based.guard.d.ts +60 -0
  271. package/lib/cjs/types/authorization/guards/authenticated.guard.d.ts +26 -0
  272. package/lib/cjs/types/authorization/guards/composition.guard.d.ts +42 -0
  273. package/lib/cjs/types/authorization/guards/conditional.guard.d.ts +21 -0
  274. package/lib/cjs/types/authorization/guards/index.d.ts +7 -0
  275. package/lib/cjs/types/authorization/guards/permission.guard.d.ts +29 -0
  276. package/lib/cjs/types/authorization/guards/resource-owner.guard.d.ts +29 -0
  277. package/lib/cjs/types/authorization/guards/role.guard.d.ts +28 -0
  278. package/lib/cjs/types/authorization/index.d.ts +18 -0
  279. package/lib/cjs/types/authorization/services/guard-cache.d.ts +26 -0
  280. package/lib/cjs/types/authorization/services/guard-cache.interface.d.ts +29 -0
  281. package/lib/cjs/types/authorization/services/permission-hierarchy.d.ts +21 -0
  282. package/lib/cjs/types/authorization/services/permission-hierarchy.interface.d.ts +22 -0
  283. package/lib/cjs/types/authorization/services/permission-service.d.ts +21 -0
  284. package/lib/cjs/types/authorization/services/permission-service.interface.d.ts +19 -0
  285. package/lib/cjs/types/authorization/services/security-context.d.ts +32 -0
  286. package/lib/cjs/types/authorization/services/security-context.interface.d.ts +25 -0
  287. package/lib/cjs/types/authorization/setup.d.ts +84 -0
  288. package/lib/cjs/types/config/config-resolver.d.ts +40 -0
  289. package/lib/cjs/types/config/config.interfaces.d.ts +570 -0
  290. package/lib/cjs/types/config/define-config.d.ts +109 -0
  291. package/lib/cjs/types/config/env-field-builders.d.ts +288 -0
  292. package/lib/cjs/types/config/index.d.ts +61 -0
  293. package/lib/cjs/types/config/secret-value.d.ts +99 -0
  294. package/lib/cjs/types/console/color-codes.d.ts +1 -1
  295. package/lib/cjs/types/console/console.d.ts +65 -2
  296. package/lib/cjs/types/console/index.d.ts +1 -1
  297. package/lib/cjs/types/container-module/container-module.d.ts +215 -8
  298. package/lib/cjs/types/container-module/index.d.ts +1 -1
  299. package/lib/cjs/types/decorator/index.d.ts +1 -1
  300. package/lib/cjs/types/decorator/scope-binding.d.ts +339 -11
  301. package/lib/cjs/types/di/annotation/decorator_utils.d.ts +1 -1
  302. package/lib/cjs/types/di/annotation/inject.d.ts +1 -1
  303. package/lib/cjs/types/di/annotation/inject_base.d.ts +2 -2
  304. package/lib/cjs/types/di/annotation/lazy_service_identifier.d.ts +1 -1
  305. package/lib/cjs/types/di/annotation/multi_inject.d.ts +1 -1
  306. package/lib/cjs/types/di/annotation/named.d.ts +1 -1
  307. package/lib/cjs/types/di/annotation/target_name.d.ts +1 -1
  308. package/lib/cjs/types/di/annotation/unmanaged.d.ts +1 -1
  309. package/lib/cjs/types/di/binding-decorator/constants.d.ts +3 -0
  310. package/lib/cjs/types/di/binding-decorator/decorator/fluent_provide.d.ts +2 -2
  311. package/lib/cjs/types/di/binding-decorator/decorator/provide.d.ts +1 -1
  312. package/lib/cjs/types/di/binding-decorator/factory/module_factory.d.ts +20 -1
  313. package/lib/cjs/types/di/binding-decorator/index.d.ts +6 -4
  314. package/lib/cjs/types/di/binding-decorator/interfaces/interfaces.d.ts +2 -1
  315. package/lib/cjs/types/di/binding-decorator/syntax/provide_done_syntax.d.ts +1 -1
  316. package/lib/cjs/types/di/binding-decorator/syntax/provide_in_syntax.d.ts +3 -2
  317. package/lib/cjs/types/di/binding-decorator/syntax/provide_in_when_on_syntax.d.ts +3 -2
  318. package/lib/cjs/types/di/binding-decorator/syntax/provide_on_syntax.d.ts +2 -2
  319. package/lib/cjs/types/di/binding-decorator/syntax/provide_when_on_syntax.d.ts +2 -2
  320. package/lib/cjs/types/di/binding-decorator/syntax/provide_when_syntax.d.ts +2 -2
  321. package/lib/cjs/types/di/binding-decorator/utils/auto_wire.d.ts +1 -1
  322. package/lib/cjs/types/di/bindings/binding.d.ts +1 -1
  323. package/lib/cjs/types/di/constants/literal_types.d.ts +3 -3
  324. package/lib/cjs/types/di/container/container.d.ts +1 -1
  325. package/lib/cjs/types/di/container/container_module.d.ts +1 -1
  326. package/lib/cjs/types/di/container/container_snapshot.d.ts +1 -1
  327. package/lib/cjs/types/di/container/lookup.d.ts +1 -1
  328. package/lib/cjs/types/di/container/module_activation_store.d.ts +1 -1
  329. package/lib/cjs/types/di/container-introspection.d.ts +25 -0
  330. package/lib/cjs/types/di/interfaces/interfaces.d.ts +4 -3
  331. package/lib/cjs/types/di/inversify.d.ts +53 -24
  332. package/lib/cjs/types/di/planning/context.d.ts +1 -1
  333. package/lib/cjs/types/di/planning/metadata.d.ts +1 -1
  334. package/lib/cjs/types/di/planning/metadata_reader.d.ts +1 -1
  335. package/lib/cjs/types/di/planning/plan.d.ts +1 -1
  336. package/lib/cjs/types/di/planning/planner.d.ts +1 -1
  337. package/lib/cjs/types/di/planning/queryable_string.d.ts +1 -1
  338. package/lib/cjs/types/di/planning/reflection_utils.d.ts +2 -2
  339. package/lib/cjs/types/di/planning/request.d.ts +1 -1
  340. package/lib/cjs/types/di/planning/target.d.ts +2 -2
  341. package/lib/cjs/types/di/resolution/instantiation.d.ts +1 -1
  342. package/lib/cjs/types/di/resolution/resolver.d.ts +1 -1
  343. package/lib/cjs/types/di/scope/scope-registry.d.ts +91 -0
  344. package/lib/cjs/types/di/scope/scope.d.ts +1 -1
  345. package/lib/cjs/types/di/syntax/binding_in_syntax.d.ts +2 -1
  346. package/lib/cjs/types/di/syntax/binding_in_when_on_syntax.d.ts +2 -1
  347. package/lib/cjs/types/di/syntax/binding_on_syntax.d.ts +1 -1
  348. package/lib/cjs/types/di/syntax/binding_to_syntax.d.ts +2 -2
  349. package/lib/cjs/types/di/syntax/binding_when_on_syntax.d.ts +1 -1
  350. package/lib/cjs/types/di/syntax/binding_when_syntax.d.ts +1 -1
  351. package/lib/cjs/types/di/syntax/constraint_helpers.d.ts +1 -1
  352. package/lib/cjs/types/di/utils/binding_utils.d.ts +1 -1
  353. package/lib/cjs/types/di/utils/clonable.d.ts +1 -1
  354. package/lib/cjs/types/di/utils/serialization.d.ts +1 -1
  355. package/lib/cjs/types/error/app-error.d.ts +155 -7
  356. package/lib/cjs/types/error/base-exception-filter.d.ts +73 -0
  357. package/lib/cjs/types/error/exception-filter-constants.d.ts +9 -0
  358. package/lib/cjs/types/error/exception-filter-decorators.d.ts +126 -0
  359. package/lib/cjs/types/error/exception-filter-registry.d.ts +38 -0
  360. package/lib/cjs/types/error/exception-filter.interface.d.ts +82 -0
  361. package/lib/cjs/types/error/exception-handler-middleware.d.ts +35 -0
  362. package/lib/cjs/types/error/filters/app-error.filter.d.ts +10 -0
  363. package/lib/cjs/types/error/filters/global-exception.filter.d.ts +9 -0
  364. package/lib/cjs/types/error/filters/not-found.filter.d.ts +10 -0
  365. package/lib/cjs/types/error/filters/validation-error.filter.d.ts +10 -0
  366. package/lib/cjs/types/error/index.d.ts +14 -3
  367. package/lib/cjs/types/error/not-found.error.d.ts +7 -0
  368. package/lib/cjs/types/error/report.d.ts +84 -6
  369. package/lib/cjs/types/error/status-code.d.ts +20 -0
  370. package/lib/cjs/types/error/utils.d.ts +16 -0
  371. package/lib/cjs/types/error/validation.error.d.ts +8 -0
  372. package/lib/cjs/types/event/event-decorators.d.ts +199 -0
  373. package/lib/cjs/types/event/event-emitter.d.ts +109 -0
  374. package/lib/cjs/types/event/event-flow-tracker.d.ts +88 -0
  375. package/lib/cjs/types/event/event-recorder.d.ts +121 -0
  376. package/lib/cjs/types/event/event-registry.d.ts +84 -0
  377. package/lib/cjs/types/event/event.interfaces.d.ts +528 -0
  378. package/lib/cjs/types/event/index.d.ts +55 -0
  379. package/lib/cjs/types/index.d.ts +27 -8
  380. package/lib/cjs/types/interceptor/conditional-interceptor.d.ts +91 -0
  381. package/lib/cjs/types/interceptor/execution-context.d.ts +41 -0
  382. package/lib/cjs/types/interceptor/index.d.ts +41 -0
  383. package/lib/cjs/types/interceptor/interceptor-composition.d.ts +115 -0
  384. package/lib/cjs/types/interceptor/interceptor-constants.d.ts +17 -0
  385. package/lib/cjs/types/interceptor/interceptor-decorators.d.ts +124 -0
  386. package/lib/cjs/types/interceptor/interceptor-executor.d.ts +46 -0
  387. package/lib/cjs/types/interceptor/interceptor-registry.d.ts +65 -0
  388. package/lib/cjs/types/interceptor/interceptor.interface.d.ts +281 -0
  389. package/lib/cjs/types/interceptor/interceptors/index.d.ts +6 -0
  390. package/lib/cjs/types/interceptor/interceptors/logging.interceptor.d.ts +28 -0
  391. package/lib/cjs/types/interceptor/interceptors/performance.interceptor.d.ts +197 -0
  392. package/lib/cjs/types/interceptor/interceptors/timeout.interceptor.d.ts +42 -0
  393. package/lib/cjs/types/lazy-loading/index.d.ts +42 -0
  394. package/lib/cjs/types/lazy-loading/lazy-load-metrics.d.ts +139 -0
  395. package/lib/cjs/types/lazy-loading/lazy-module-loader.d.ts +169 -0
  396. package/lib/cjs/types/lazy-loading/lazy-module-manager.d.ts +148 -0
  397. package/lib/cjs/types/lazy-loading/lazy-module-warmup.d.ts +130 -0
  398. package/lib/cjs/types/lazy-loading/lazy-module.d.ts +168 -0
  399. package/lib/cjs/types/lazy-loading/lazy.interfaces.d.ts +480 -0
  400. package/lib/cjs/types/lifecycle/index.d.ts +9 -0
  401. package/lib/cjs/types/lifecycle/lifecycle-registry.d.ts +213 -0
  402. package/lib/cjs/types/lifecycle/lifecycle.interface.d.ts +191 -0
  403. package/lib/cjs/types/middleware/content-negotiation/accept-header-parser.d.ts +26 -0
  404. package/lib/cjs/types/middleware/content-negotiation/content-negotiation-service.d.ts +64 -0
  405. package/lib/cjs/types/middleware/content-negotiation/formatter-registry.d.ts +60 -0
  406. package/lib/cjs/types/middleware/content-negotiation/formatters/csv-formatter.d.ts +34 -0
  407. package/lib/cjs/types/middleware/content-negotiation/formatters/index.d.ts +8 -0
  408. package/lib/cjs/types/middleware/content-negotiation/formatters/json-formatter.d.ts +14 -0
  409. package/lib/cjs/types/middleware/content-negotiation/formatters/plain-text-formatter.d.ts +12 -0
  410. package/lib/cjs/types/middleware/content-negotiation/formatters/xml-formatter.d.ts +26 -0
  411. package/lib/cjs/types/middleware/content-negotiation/formatters/yaml-formatter.d.ts +26 -0
  412. package/lib/cjs/types/middleware/content-negotiation/index.d.ts +7 -0
  413. package/lib/cjs/types/middleware/index.d.ts +25 -15
  414. package/lib/cjs/types/middleware/interfaces/content-negotiation.interface.d.ts +142 -0
  415. package/lib/cjs/types/middleware/interfaces/cookie-session/cookie-session.interface.d.ts +1 -1
  416. package/lib/cjs/types/middleware/middleware-config.d.ts +574 -0
  417. package/lib/cjs/types/middleware/middleware-interface.d.ts +594 -88
  418. package/lib/cjs/types/middleware/middleware-presets.d.ts +90 -0
  419. package/lib/cjs/types/middleware/middleware-profiler.d.ts +199 -0
  420. package/lib/cjs/types/middleware/middleware-registry.d.ts +103 -0
  421. package/lib/cjs/types/middleware/middleware-resolver.d.ts +156 -8
  422. package/lib/cjs/types/middleware/middleware-service.d.ts +634 -112
  423. package/lib/cjs/types/middleware/middleware-utils.d.ts +145 -0
  424. package/lib/cjs/types/middleware/upload-registry.d.ts +50 -0
  425. package/lib/cjs/types/path-resolver/index.d.ts +80 -0
  426. package/lib/cjs/types/provider/db-in-memory/adapter/adapter.interface.d.ts +222 -0
  427. package/lib/cjs/types/provider/db-in-memory/adapter/in-memory.adapter.d.ts +239 -0
  428. package/lib/cjs/types/provider/db-in-memory/adapter/index.d.ts +6 -0
  429. package/lib/cjs/types/provider/db-in-memory/base-repo.repository.d.ts +1 -1
  430. package/lib/cjs/types/provider/db-in-memory/db-in-memory.interface.d.ts +1 -1
  431. package/lib/cjs/types/provider/db-in-memory/db-in-memory.provider.d.ts +8 -2
  432. package/lib/cjs/types/provider/db-in-memory/db.provider.d.ts +281 -0
  433. package/lib/cjs/types/provider/db-in-memory/index.d.ts +63 -4
  434. package/lib/cjs/types/provider/db-in-memory/query/index.d.ts +6 -0
  435. package/lib/cjs/types/provider/db-in-memory/query/query-engine.d.ts +101 -0
  436. package/lib/cjs/types/provider/db-in-memory/query/query.types.d.ts +318 -0
  437. package/lib/cjs/types/provider/db-in-memory/schema/decorators.d.ts +314 -0
  438. package/lib/cjs/types/provider/db-in-memory/schema/entity.interface.d.ts +60 -0
  439. package/lib/cjs/types/provider/db-in-memory/schema/index.d.ts +6 -0
  440. package/lib/cjs/types/provider/db-in-memory/storage/index.d.ts +5 -0
  441. package/lib/cjs/types/provider/db-in-memory/storage/memory-store.d.ts +326 -0
  442. package/lib/cjs/types/provider/index.d.ts +7 -5
  443. package/lib/cjs/types/provider/logger/decorators/index.d.ts +1 -0
  444. package/lib/cjs/types/provider/logger/decorators/log-performance.decorator.d.ts +49 -0
  445. package/lib/cjs/types/provider/logger/index.d.ts +17 -0
  446. package/lib/cjs/types/provider/logger/logger.banner.d.ts +94 -0
  447. package/lib/cjs/types/provider/logger/logger.config.d.ts +55 -0
  448. package/lib/cjs/types/provider/logger/logger.context.d.ts +189 -0
  449. package/lib/cjs/types/provider/logger/logger.flow.d.ts +165 -0
  450. package/lib/cjs/types/provider/logger/logger.formatter.d.ts +44 -0
  451. package/lib/cjs/types/provider/logger/logger.grouping.d.ts +124 -0
  452. package/lib/cjs/types/provider/logger/logger.health.d.ts +123 -0
  453. package/lib/cjs/types/provider/logger/logger.metrics-collector.d.ts +44 -0
  454. package/lib/cjs/types/provider/logger/logger.metrics.d.ts +162 -0
  455. package/lib/cjs/types/provider/logger/logger.performance.d.ts +179 -0
  456. package/lib/cjs/types/provider/logger/logger.provider.d.ts +303 -30
  457. package/lib/cjs/types/provider/logger/logger.query.d.ts +232 -0
  458. package/lib/cjs/types/provider/logger/logger.redaction.d.ts +169 -0
  459. package/lib/cjs/types/provider/logger/logger.suggestions.d.ts +124 -0
  460. package/lib/cjs/types/provider/logger/transports/console.transport.d.ts +49 -0
  461. package/lib/cjs/types/provider/logger/transports/file.transport.d.ts +87 -0
  462. package/lib/cjs/types/provider/logger/transports/http-server.d.ts +88 -0
  463. package/lib/cjs/types/provider/logger/transports/http.transport.d.ts +74 -0
  464. package/lib/cjs/types/provider/logger/transports/index.d.ts +5 -0
  465. package/lib/cjs/types/provider/logger/transports/transport.interface.d.ts +31 -0
  466. package/lib/cjs/types/provider/logger/utils/index.d.ts +2 -0
  467. package/lib/cjs/types/provider/logger/utils/log-entry.d.ts +82 -0
  468. package/lib/cjs/types/provider/logger/utils/log-levels.d.ts +53 -0
  469. package/lib/cjs/types/provider/provider-manager.d.ts +165 -13
  470. package/lib/cjs/types/provider/provider-registry.d.ts +192 -0
  471. package/lib/cjs/types/provider/provider.interface.d.ts +337 -0
  472. package/lib/cjs/types/provider/validation/adapters/class-validator.adapter.d.ts +68 -0
  473. package/lib/cjs/types/provider/validation/adapters/index.d.ts +10 -0
  474. package/lib/cjs/types/provider/validation/helpful-error-formatter.d.ts +110 -0
  475. package/lib/cjs/types/provider/validation/index.d.ts +19 -0
  476. package/lib/cjs/types/provider/validation/smart-field-detector.d.ts +91 -0
  477. package/lib/cjs/types/provider/validation/type-inference.d.ts +81 -0
  478. package/lib/cjs/types/provider/validation/validation-registry.d.ts +105 -0
  479. package/lib/cjs/types/provider/validation/validation.interface.d.ts +178 -0
  480. package/lib/cjs/types/render/adapters/base-adapter.d.ts +95 -0
  481. package/lib/cjs/types/render/adapters/ejs-adapter.d.ts +57 -0
  482. package/lib/cjs/types/render/adapters/handlebars-adapter.d.ts +74 -0
  483. package/lib/cjs/types/render/adapters/index.d.ts +12 -0
  484. package/lib/cjs/types/render/adapters/pug-adapter.d.ts +57 -0
  485. package/lib/cjs/types/render/adapters/react-adapter.d.ts +99 -0
  486. package/lib/cjs/types/render/features/auto-detection.d.ts +58 -0
  487. package/lib/cjs/types/render/features/hot-reload.d.ts +65 -0
  488. package/lib/cjs/types/render/features/index.d.ts +12 -0
  489. package/lib/cjs/types/render/features/streaming.d.ts +39 -0
  490. package/lib/cjs/types/render/features/type-generator.d.ts +64 -0
  491. package/lib/cjs/types/render/features/view-debugger.d.ts +42 -0
  492. package/lib/cjs/types/render/index.d.ts +50 -0
  493. package/lib/cjs/types/render/presets/index.d.ts +119 -0
  494. package/lib/cjs/types/render/render-config.d.ts +213 -0
  495. package/lib/cjs/types/render/render-interface.d.ts +126 -0
  496. package/lib/cjs/types/render/render-registry.d.ts +86 -0
  497. package/lib/cjs/types/render/render-service.d.ts +157 -0
  498. package/lib/cjs/types/render/utils/cache-manager.d.ts +106 -0
  499. package/lib/cjs/types/render/utils/index.d.ts +11 -0
  500. package/lib/cjs/types/render/utils/package-resolver.d.ts +57 -0
  501. package/lib/cjs/types/render/utils/view-scanner.d.ts +74 -0
  502. package/lib/cjs/types/testing/create-test-app.d.ts +71 -0
  503. package/lib/cjs/types/testing/create-test-database.d.ts +100 -0
  504. package/lib/cjs/types/testing/fluent-request.d.ts +37 -0
  505. package/lib/cjs/types/testing/index.d.ts +93 -0
  506. package/lib/cjs/types/testing/load-test.d.ts +139 -0
  507. package/lib/cjs/types/testing/matchers.d.ts +184 -0
  508. package/lib/cjs/types/testing/mock-context.d.ts +117 -0
  509. package/lib/cjs/types/testing/mock-provider.d.ts +93 -0
  510. package/lib/cjs/types/testing/snapshot-request.d.ts +46 -0
  511. package/lib/cjs/types/testing/testing.interfaces.d.ts +948 -0
  512. package/lib/cjs/types/utils/node-require.d.ts +11 -0
  513. package/lib/cjs/utils/node-require.js +59 -0
  514. package/lib/esm/application/application-container.js +526 -0
  515. package/lib/esm/application/application-factory.js +134 -0
  516. package/lib/esm/application/application.types.js +41 -0
  517. package/lib/esm/application/bootstrap.js +805 -0
  518. package/lib/esm/application/index.js +4 -0
  519. package/lib/esm/authorization/authorization-config.interface.js +1 -0
  520. package/lib/esm/authorization/decorators/convenience.js +74 -0
  521. package/lib/esm/authorization/guard-constants.js +9 -0
  522. package/lib/esm/authorization/guard-decorators.js +155 -0
  523. package/lib/esm/authorization/guard-executor.js +101 -0
  524. package/lib/esm/authorization/guard-registry.js +132 -0
  525. package/lib/esm/authorization/guard.interface.js +73 -0
  526. package/lib/esm/authorization/guards/attribute-based.guard.js +106 -0
  527. package/lib/esm/authorization/guards/authenticated.guard.js +45 -0
  528. package/lib/esm/authorization/guards/composition.guard.js +63 -0
  529. package/lib/esm/authorization/guards/conditional.guard.js +38 -0
  530. package/lib/esm/authorization/guards/index.js +8 -0
  531. package/lib/esm/authorization/guards/permission.guard.js +80 -0
  532. package/lib/esm/authorization/guards/resource-owner.guard.js +58 -0
  533. package/lib/esm/authorization/guards/role.guard.js +61 -0
  534. package/lib/esm/authorization/index.js +24 -0
  535. package/lib/esm/authorization/services/guard-cache.interface.js +1 -0
  536. package/lib/esm/authorization/services/guard-cache.js +51 -0
  537. package/lib/esm/authorization/services/permission-hierarchy.interface.js +1 -0
  538. package/lib/esm/authorization/services/permission-hierarchy.js +49 -0
  539. package/lib/esm/authorization/services/permission-service.interface.js +1 -0
  540. package/lib/esm/authorization/services/permission-service.js +56 -0
  541. package/lib/esm/authorization/services/security-context.interface.js +1 -0
  542. package/lib/esm/authorization/services/security-context.js +74 -0
  543. package/lib/esm/authorization/setup.js +137 -0
  544. package/lib/esm/config/config-resolver.js +714 -0
  545. package/lib/esm/config/config.interfaces.js +13 -0
  546. package/lib/esm/config/define-config.js +492 -0
  547. package/lib/esm/config/env-field-builders.js +392 -0
  548. package/lib/esm/config/index.js +67 -0
  549. package/lib/esm/config/secret-value.js +175 -0
  550. package/lib/esm/console/color-codes.js +46 -0
  551. package/lib/esm/console/console.js +107 -0
  552. package/lib/esm/console/index.js +1 -0
  553. package/lib/esm/container-module/container-module.js +322 -0
  554. package/lib/esm/container-module/index.js +1 -0
  555. package/lib/esm/decorator/index.js +1 -0
  556. package/lib/esm/decorator/scope-binding.js +344 -0
  557. package/lib/esm/di/annotation/decorator_utils.js +93 -0
  558. package/lib/esm/di/annotation/inject.js +18 -0
  559. package/lib/esm/di/annotation/inject_base.js +14 -0
  560. package/lib/esm/di/annotation/injectable.js +19 -0
  561. package/lib/esm/di/annotation/lazy_service_identifier.js +9 -0
  562. package/lib/esm/di/annotation/multi_inject.js +4 -0
  563. package/lib/esm/di/annotation/named.js +9 -0
  564. package/lib/esm/di/annotation/optional.js +7 -0
  565. package/lib/esm/di/annotation/post_construct.js +5 -0
  566. package/lib/esm/di/annotation/pre_destroy.js +5 -0
  567. package/lib/esm/di/annotation/property_event_decorator.js +13 -0
  568. package/lib/esm/di/annotation/tagged.js +7 -0
  569. package/lib/esm/di/annotation/target_name.js +10 -0
  570. package/lib/esm/di/annotation/unmanaged.js +10 -0
  571. package/lib/esm/di/binding-decorator/constants.js +7 -0
  572. package/lib/esm/di/binding-decorator/decorator/fluent_provide.js +15 -0
  573. package/lib/esm/di/binding-decorator/decorator/provide.js +35 -0
  574. package/lib/esm/di/binding-decorator/factory/module_factory.js +34 -0
  575. package/lib/esm/di/binding-decorator/index.js +10 -0
  576. package/lib/esm/di/binding-decorator/interfaces/interfaces.js +1 -0
  577. package/lib/esm/di/binding-decorator/syntax/provide_done_syntax.js +41 -0
  578. package/lib/esm/di/binding-decorator/syntax/provide_in_syntax.js +37 -0
  579. package/lib/esm/di/binding-decorator/syntax/provide_in_when_on_syntax.js +68 -0
  580. package/lib/esm/di/binding-decorator/syntax/provide_on_syntax.js +19 -0
  581. package/lib/esm/di/binding-decorator/syntax/provide_when_on_syntax.js +57 -0
  582. package/lib/esm/di/binding-decorator/syntax/provide_when_syntax.js +86 -0
  583. package/lib/esm/di/binding-decorator/utils/auto_wire.js +13 -0
  584. package/lib/esm/di/bindings/binding.js +64 -0
  585. package/lib/esm/di/bindings/binding_count.js +5 -0
  586. package/lib/esm/di/constants/error_msgs.js +54 -0
  587. package/lib/esm/di/constants/literal_types.js +21 -0
  588. package/lib/esm/di/constants/metadata_keys.js +35 -0
  589. package/lib/esm/di/container/container.js +505 -0
  590. package/lib/esm/di/container/container_module.js +17 -0
  591. package/lib/esm/di/container/container_snapshot.js +17 -0
  592. package/lib/esm/di/container/lookup.js +108 -0
  593. package/lib/esm/di/container/module_activation_store.js +43 -0
  594. package/lib/esm/di/container-introspection.js +38 -0
  595. package/lib/esm/di/interfaces/interfaces.js +1 -0
  596. package/lib/esm/di/inversify.js +53 -0
  597. package/lib/esm/di/planning/context.js +18 -0
  598. package/lib/esm/di/planning/metadata.js +18 -0
  599. package/lib/esm/di/planning/metadata_reader.js +19 -0
  600. package/lib/esm/di/planning/plan.js +9 -0
  601. package/lib/esm/di/planning/planner.js +159 -0
  602. package/lib/esm/di/planning/queryable_string.js +25 -0
  603. package/lib/esm/di/planning/reflection_utils.js +150 -0
  604. package/lib/esm/di/planning/request.js +28 -0
  605. package/lib/esm/di/planning/target.js +89 -0
  606. package/lib/esm/di/resolution/instantiation.js +125 -0
  607. package/lib/esm/di/resolution/resolver.js +163 -0
  608. package/lib/esm/di/scope/scope-registry.js +109 -0
  609. package/lib/esm/di/scope/scope.js +75 -0
  610. package/lib/esm/di/syntax/binding_in_syntax.js +31 -0
  611. package/lib/esm/di/syntax/binding_in_when_on_syntax.js +79 -0
  612. package/lib/esm/di/syntax/binding_on_syntax.js +16 -0
  613. package/lib/esm/di/syntax/binding_to_syntax.js +89 -0
  614. package/lib/esm/di/syntax/binding_when_on_syntax.js +64 -0
  615. package/lib/esm/di/syntax/binding_when_syntax.js +82 -0
  616. package/lib/esm/di/syntax/constraint_helpers.js +39 -0
  617. package/lib/esm/di/utils/async.js +12 -0
  618. package/lib/esm/di/utils/binding_utils.js +48 -0
  619. package/lib/esm/di/utils/clonable.js +7 -0
  620. package/lib/esm/di/utils/exceptions.js +18 -0
  621. package/lib/esm/di/utils/factory_type.js +6 -0
  622. package/lib/esm/di/utils/id.js +5 -0
  623. package/lib/esm/di/utils/js.js +12 -0
  624. package/lib/esm/di/utils/serialization.js +102 -0
  625. package/lib/esm/error/app-error.js +209 -0
  626. package/lib/esm/error/base-exception-filter.js +134 -0
  627. package/lib/esm/error/error-handler-middleware.js +34 -0
  628. package/lib/esm/error/exception-filter-constants.js +9 -0
  629. package/lib/esm/error/exception-filter-decorators.js +157 -0
  630. package/lib/esm/error/exception-filter-registry.js +162 -0
  631. package/lib/esm/error/exception-filter.interface.js +1 -0
  632. package/lib/esm/error/exception-handler-middleware.js +378 -0
  633. package/lib/esm/error/filters/app-error.filter.js +28 -0
  634. package/lib/esm/error/filters/global-exception.filter.js +36 -0
  635. package/lib/esm/error/filters/not-found.filter.js +32 -0
  636. package/lib/esm/error/filters/validation-error.filter.js +32 -0
  637. package/lib/esm/error/index.js +13 -0
  638. package/lib/esm/error/not-found.error.js +13 -0
  639. package/lib/esm/error/report.js +153 -0
  640. package/lib/esm/error/status-code.js +106 -0
  641. package/lib/esm/error/utils.js +252 -0
  642. package/lib/esm/error/validation.error.js +15 -0
  643. package/lib/esm/event/event-decorators.js +268 -0
  644. package/lib/esm/event/event-emitter.js +376 -0
  645. package/lib/esm/event/event-flow-tracker.js +230 -0
  646. package/lib/esm/event/event-recorder.js +286 -0
  647. package/lib/esm/event/event-registry.js +201 -0
  648. package/lib/esm/event/event.interfaces.js +51 -0
  649. package/lib/esm/event/index.js +58 -0
  650. package/lib/esm/index.mjs +27 -0
  651. package/lib/esm/interceptor/conditional-interceptor.js +104 -0
  652. package/lib/esm/interceptor/execution-context.js +66 -0
  653. package/lib/esm/interceptor/index.js +48 -0
  654. package/lib/esm/interceptor/interceptor-composition.js +126 -0
  655. package/lib/esm/interceptor/interceptor-constants.js +17 -0
  656. package/lib/esm/interceptor/interceptor-decorators.js +151 -0
  657. package/lib/esm/interceptor/interceptor-executor.js +139 -0
  658. package/lib/esm/interceptor/interceptor-registry.js +158 -0
  659. package/lib/esm/interceptor/interceptor.interface.js +16 -0
  660. package/lib/esm/interceptor/interceptors/index.js +6 -0
  661. package/lib/esm/interceptor/interceptors/logging.interceptor.js +68 -0
  662. package/lib/esm/interceptor/interceptors/performance.interceptor.js +253 -0
  663. package/lib/esm/interceptor/interceptors/timeout.interceptor.js +65 -0
  664. package/lib/esm/lazy-loading/index.js +56 -0
  665. package/lib/esm/lazy-loading/lazy-load-metrics.js +352 -0
  666. package/lib/esm/lazy-loading/lazy-module-loader.js +305 -0
  667. package/lib/esm/lazy-loading/lazy-module-manager.js +241 -0
  668. package/lib/esm/lazy-loading/lazy-module-warmup.js +291 -0
  669. package/lib/esm/lazy-loading/lazy-module.js +352 -0
  670. package/lib/esm/lazy-loading/lazy.interfaces.js +17 -0
  671. package/lib/esm/lifecycle/index.js +9 -0
  672. package/lib/esm/lifecycle/lifecycle-registry.js +298 -0
  673. package/lib/esm/lifecycle/lifecycle.interface.js +33 -0
  674. package/lib/esm/middleware/content-negotiation/accept-header-parser.js +106 -0
  675. package/lib/esm/middleware/content-negotiation/content-negotiation-service.js +286 -0
  676. package/lib/esm/middleware/content-negotiation/formatter-registry.js +165 -0
  677. package/lib/esm/middleware/content-negotiation/formatters/csv-formatter.js +111 -0
  678. package/lib/esm/middleware/content-negotiation/formatters/index.js +8 -0
  679. package/lib/esm/middleware/content-negotiation/formatters/json-formatter.js +30 -0
  680. package/lib/esm/middleware/content-negotiation/formatters/plain-text-formatter.js +40 -0
  681. package/lib/esm/middleware/content-negotiation/formatters/xml-formatter.js +121 -0
  682. package/lib/esm/middleware/content-negotiation/formatters/yaml-formatter.js +131 -0
  683. package/lib/esm/middleware/content-negotiation/index.js +7 -0
  684. package/lib/esm/middleware/index.js +19 -0
  685. package/lib/esm/middleware/interfaces/body-parser.interface.js +1 -0
  686. package/lib/esm/middleware/interfaces/compression.interface.js +1 -0
  687. package/lib/esm/middleware/interfaces/content-negotiation.interface.js +6 -0
  688. package/lib/esm/middleware/interfaces/cookie-parser.interface.js +1 -0
  689. package/lib/esm/middleware/interfaces/cookie-session/cookie-session.interface.js +1 -0
  690. package/lib/esm/middleware/interfaces/cookie-session/keygrip.interface.js +1 -0
  691. package/lib/esm/middleware/interfaces/cors.interface.js +1 -0
  692. package/lib/esm/middleware/interfaces/express-rate-limit.interface.js +1 -0
  693. package/lib/esm/middleware/interfaces/express-session.interface.js +1 -0
  694. package/lib/esm/middleware/interfaces/helmet.interface.js +1 -0
  695. package/lib/esm/middleware/interfaces/morgan.interface.js +1 -0
  696. package/lib/esm/middleware/interfaces/multer.interface.js +1 -0
  697. package/lib/esm/middleware/interfaces/serve-favicon.interface.js +1 -0
  698. package/lib/esm/middleware/interfaces/serve-static.interface.js +1 -0
  699. package/lib/esm/middleware/interfaces/url-encoded.interface.js +1 -0
  700. package/lib/esm/middleware/middleware-config.js +9 -0
  701. package/lib/esm/middleware/middleware-interface.js +1 -0
  702. package/lib/esm/middleware/middleware-presets.js +286 -0
  703. package/lib/esm/middleware/middleware-profiler.js +307 -0
  704. package/lib/esm/middleware/middleware-registry.js +152 -0
  705. package/lib/esm/middleware/middleware-resolver.js +320 -0
  706. package/lib/esm/middleware/middleware-service.js +1797 -0
  707. package/lib/esm/middleware/middleware-utils.js +273 -0
  708. package/lib/esm/middleware/upload-registry.js +84 -0
  709. package/lib/esm/package.json +3 -0
  710. package/lib/esm/path-resolver/index.js +224 -0
  711. package/lib/esm/provider/db-in-memory/adapter/adapter.interface.js +9 -0
  712. package/lib/esm/provider/db-in-memory/adapter/in-memory.adapter.js +667 -0
  713. package/lib/esm/provider/db-in-memory/adapter/index.js +5 -0
  714. package/lib/esm/provider/db-in-memory/base-repo.repository.js +54 -0
  715. package/lib/esm/provider/db-in-memory/db-in-memory.interface.js +1 -0
  716. package/lib/esm/provider/db-in-memory/db-in-memory.provider.js +104 -0
  717. package/lib/esm/provider/db-in-memory/db-in-memory.types.js +20 -0
  718. package/lib/esm/provider/db-in-memory/db.provider.js +405 -0
  719. package/lib/esm/provider/db-in-memory/index.js +90 -0
  720. package/lib/esm/provider/db-in-memory/query/index.js +6 -0
  721. package/lib/esm/provider/db-in-memory/query/query-engine.js +570 -0
  722. package/lib/esm/provider/db-in-memory/query/query.types.js +9 -0
  723. package/lib/esm/provider/db-in-memory/schema/decorators.js +387 -0
  724. package/lib/esm/provider/db-in-memory/schema/entity.interface.js +8 -0
  725. package/lib/esm/provider/db-in-memory/schema/index.js +5 -0
  726. package/lib/esm/provider/db-in-memory/storage/index.js +5 -0
  727. package/lib/esm/provider/db-in-memory/storage/memory-store.js +709 -0
  728. package/lib/esm/provider/dto-validator/dto-validator.provider.js +49 -0
  729. package/lib/esm/provider/dto-validator/package-resolver.js +30 -0
  730. package/lib/esm/provider/index.js +7 -0
  731. package/lib/esm/provider/logger/decorators/index.js +1 -0
  732. package/lib/esm/provider/logger/decorators/log-performance.decorator.js +175 -0
  733. package/lib/esm/provider/logger/index.js +17 -0
  734. package/lib/esm/provider/logger/logger.banner.js +471 -0
  735. package/lib/esm/provider/logger/logger.config.js +19 -0
  736. package/lib/esm/provider/logger/logger.context.js +334 -0
  737. package/lib/esm/provider/logger/logger.flow.js +248 -0
  738. package/lib/esm/provider/logger/logger.formatter.js +670 -0
  739. package/lib/esm/provider/logger/logger.grouping.js +314 -0
  740. package/lib/esm/provider/logger/logger.health.js +291 -0
  741. package/lib/esm/provider/logger/logger.metrics-collector.js +180 -0
  742. package/lib/esm/provider/logger/logger.metrics.js +85 -0
  743. package/lib/esm/provider/logger/logger.performance.js +299 -0
  744. package/lib/esm/provider/logger/logger.provider.js +746 -0
  745. package/lib/esm/provider/logger/logger.query.js +529 -0
  746. package/lib/esm/provider/logger/logger.redaction.js +450 -0
  747. package/lib/esm/provider/logger/logger.suggestions.js +471 -0
  748. package/lib/esm/provider/logger/transports/console.transport.js +81 -0
  749. package/lib/esm/provider/logger/transports/file.transport.js +291 -0
  750. package/lib/esm/provider/logger/transports/http-server.js +141 -0
  751. package/lib/esm/provider/logger/transports/http.transport.js +157 -0
  752. package/lib/esm/provider/logger/transports/index.js +5 -0
  753. package/lib/esm/provider/logger/transports/transport.interface.js +1 -0
  754. package/lib/esm/provider/logger/utils/index.js +2 -0
  755. package/lib/esm/provider/logger/utils/log-entry.js +23 -0
  756. package/lib/esm/provider/logger/utils/log-levels.js +100 -0
  757. package/lib/esm/provider/provider-manager.js +283 -0
  758. package/lib/esm/provider/provider-registry.js +411 -0
  759. package/lib/esm/provider/provider.interface.js +44 -0
  760. package/lib/esm/provider/validation/adapters/class-validator.adapter.js +258 -0
  761. package/lib/esm/provider/validation/adapters/index.js +10 -0
  762. package/lib/esm/provider/validation/helpful-error-formatter.js +225 -0
  763. package/lib/esm/provider/validation/index.js +21 -0
  764. package/lib/esm/provider/validation/smart-field-detector.js +539 -0
  765. package/lib/esm/provider/validation/type-inference.js +183 -0
  766. package/lib/esm/provider/validation/validation-registry.js +214 -0
  767. package/lib/esm/provider/validation/validation.interface.js +8 -0
  768. package/lib/esm/render/adapters/base-adapter.js +131 -0
  769. package/lib/esm/render/adapters/ejs-adapter.js +142 -0
  770. package/lib/esm/render/adapters/handlebars-adapter.js +161 -0
  771. package/lib/esm/render/adapters/index.js +12 -0
  772. package/lib/esm/render/adapters/pug-adapter.js +134 -0
  773. package/lib/esm/render/adapters/react-adapter.js +303 -0
  774. package/lib/esm/render/features/auto-detection.js +202 -0
  775. package/lib/esm/render/features/hot-reload.js +153 -0
  776. package/lib/esm/render/features/index.js +12 -0
  777. package/lib/esm/render/features/streaming.js +103 -0
  778. package/lib/esm/render/features/type-generator.js +195 -0
  779. package/lib/esm/render/features/view-debugger.js +172 -0
  780. package/lib/esm/render/index.js +54 -0
  781. package/lib/esm/render/presets/index.js +207 -0
  782. package/lib/esm/render/render-config.js +9 -0
  783. package/lib/esm/render/render-interface.js +1 -0
  784. package/lib/esm/render/render-registry.js +124 -0
  785. package/lib/esm/render/render-service.js +394 -0
  786. package/lib/esm/render/utils/cache-manager.js +196 -0
  787. package/lib/esm/render/utils/index.js +10 -0
  788. package/lib/esm/render/utils/package-resolver.js +118 -0
  789. package/lib/esm/render/utils/view-scanner.js +178 -0
  790. package/lib/esm/testing/create-test-app.js +365 -0
  791. package/lib/esm/testing/create-test-database.js +411 -0
  792. package/lib/esm/testing/fluent-request.js +452 -0
  793. package/lib/esm/testing/index.js +102 -0
  794. package/lib/esm/testing/load-test.js +479 -0
  795. package/lib/esm/testing/matchers.js +440 -0
  796. package/lib/esm/testing/mock-context.js +400 -0
  797. package/lib/esm/testing/mock-provider.js +333 -0
  798. package/lib/esm/testing/snapshot-request.js +356 -0
  799. package/lib/esm/testing/testing.interfaces.js +9 -0
  800. package/lib/esm/types/application/application-container.d.ts +352 -0
  801. package/lib/esm/types/application/application-factory.d.ts +118 -0
  802. package/lib/esm/types/application/application.types.d.ts +185 -0
  803. package/lib/esm/types/application/bootstrap.d.ts +484 -0
  804. package/lib/esm/types/application/index.d.ts +4 -0
  805. package/lib/esm/types/authorization/authorization-config.interface.d.ts +45 -0
  806. package/lib/esm/types/authorization/decorators/convenience.d.ts +64 -0
  807. package/lib/esm/types/authorization/guard-constants.d.ts +9 -0
  808. package/lib/esm/types/authorization/guard-decorators.d.ts +128 -0
  809. package/lib/esm/types/authorization/guard-executor.d.ts +26 -0
  810. package/lib/esm/types/authorization/guard-registry.d.ts +35 -0
  811. package/lib/esm/types/authorization/guard.interface.d.ts +335 -0
  812. package/lib/esm/types/authorization/guards/attribute-based.guard.d.ts +60 -0
  813. package/lib/esm/types/authorization/guards/authenticated.guard.d.ts +26 -0
  814. package/lib/esm/types/authorization/guards/composition.guard.d.ts +42 -0
  815. package/lib/esm/types/authorization/guards/conditional.guard.d.ts +21 -0
  816. package/lib/esm/types/authorization/guards/index.d.ts +7 -0
  817. package/lib/esm/types/authorization/guards/permission.guard.d.ts +29 -0
  818. package/lib/esm/types/authorization/guards/resource-owner.guard.d.ts +29 -0
  819. package/lib/esm/types/authorization/guards/role.guard.d.ts +28 -0
  820. package/lib/esm/types/authorization/index.d.ts +18 -0
  821. package/lib/esm/types/authorization/services/guard-cache.d.ts +26 -0
  822. package/lib/esm/types/authorization/services/guard-cache.interface.d.ts +29 -0
  823. package/lib/esm/types/authorization/services/permission-hierarchy.d.ts +21 -0
  824. package/lib/esm/types/authorization/services/permission-hierarchy.interface.d.ts +22 -0
  825. package/lib/esm/types/authorization/services/permission-service.d.ts +21 -0
  826. package/lib/esm/types/authorization/services/permission-service.interface.d.ts +19 -0
  827. package/lib/esm/types/authorization/services/security-context.d.ts +32 -0
  828. package/lib/esm/types/authorization/services/security-context.interface.d.ts +25 -0
  829. package/lib/esm/types/authorization/setup.d.ts +84 -0
  830. package/lib/esm/types/config/config-resolver.d.ts +40 -0
  831. package/lib/esm/types/config/config.interfaces.d.ts +570 -0
  832. package/lib/esm/types/config/define-config.d.ts +109 -0
  833. package/lib/esm/types/config/env-field-builders.d.ts +288 -0
  834. package/lib/esm/types/config/index.d.ts +61 -0
  835. package/lib/esm/types/config/secret-value.d.ts +99 -0
  836. package/lib/esm/types/console/color-codes.d.ts +29 -0
  837. package/lib/esm/types/console/console.d.ts +83 -0
  838. package/lib/esm/types/console/index.d.ts +2 -0
  839. package/lib/esm/types/container-module/container-module.d.ts +242 -0
  840. package/lib/esm/types/container-module/index.d.ts +1 -0
  841. package/lib/esm/types/decorator/index.d.ts +1 -0
  842. package/lib/esm/types/decorator/scope-binding.d.ts +374 -0
  843. package/lib/esm/types/di/annotation/decorator_utils.d.ts +16 -0
  844. package/lib/esm/types/di/annotation/inject.d.ts +16 -0
  845. package/lib/esm/types/di/annotation/inject_base.d.ts +3 -0
  846. package/lib/esm/types/di/annotation/injectable.d.ts +7 -0
  847. package/lib/esm/types/di/annotation/lazy_service_identifier.d.ts +7 -0
  848. package/lib/esm/types/di/annotation/multi_inject.d.ts +2 -0
  849. package/lib/esm/types/di/annotation/named.d.ts +2 -0
  850. package/lib/esm/types/di/annotation/optional.d.ts +2 -0
  851. package/lib/esm/types/di/annotation/post_construct.d.ts +4 -0
  852. package/lib/esm/types/di/annotation/pre_destroy.d.ts +4 -0
  853. package/lib/esm/types/di/annotation/property_event_decorator.d.ts +4 -0
  854. package/lib/esm/types/di/annotation/tagged.d.ts +2 -0
  855. package/lib/esm/types/di/annotation/target_name.d.ts +3 -0
  856. package/lib/esm/types/di/annotation/unmanaged.d.ts +3 -0
  857. package/lib/esm/types/di/binding-decorator/constants.d.ts +7 -0
  858. package/lib/esm/types/di/binding-decorator/decorator/fluent_provide.d.ts +4 -0
  859. package/lib/esm/types/di/binding-decorator/decorator/provide.d.ts +4 -0
  860. package/lib/esm/types/di/binding-decorator/factory/module_factory.d.ts +23 -0
  861. package/lib/esm/types/di/binding-decorator/index.d.ts +10 -0
  862. package/lib/esm/types/di/binding-decorator/interfaces/interfaces.d.ts +40 -0
  863. package/lib/esm/types/di/binding-decorator/syntax/provide_done_syntax.d.ts +7 -0
  864. package/lib/esm/types/di/binding-decorator/syntax/provide_in_syntax.d.ts +12 -0
  865. package/lib/esm/types/di/binding-decorator/syntax/provide_in_when_on_syntax.d.ts +28 -0
  866. package/lib/esm/types/di/binding-decorator/syntax/provide_on_syntax.d.ts +10 -0
  867. package/lib/esm/types/di/binding-decorator/syntax/provide_when_on_syntax.d.ts +24 -0
  868. package/lib/esm/types/di/binding-decorator/syntax/provide_when_syntax.d.ts +23 -0
  869. package/lib/esm/types/di/binding-decorator/utils/auto_wire.d.ts +3 -0
  870. package/lib/esm/types/di/bindings/binding.d.ts +20 -0
  871. package/lib/esm/types/di/bindings/binding_count.d.ts +5 -0
  872. package/lib/esm/types/di/constants/error_msgs.d.ts +32 -0
  873. package/lib/esm/types/di/constants/literal_types.d.ts +5 -0
  874. package/lib/esm/types/di/constants/metadata_keys.d.ts +13 -0
  875. package/lib/esm/types/di/container/container.d.ts +73 -0
  876. package/lib/esm/types/di/container/container_module.d.ts +11 -0
  877. package/lib/esm/types/di/container/container_snapshot.d.ts +10 -0
  878. package/lib/esm/types/di/container/lookup.d.ts +16 -0
  879. package/lib/esm/types/di/container/module_activation_store.d.ts +10 -0
  880. package/lib/esm/types/di/container-introspection.d.ts +25 -0
  881. package/lib/esm/types/di/interfaces/interfaces.d.ts +300 -0
  882. package/lib/esm/types/di/inversify.d.ts +54 -0
  883. package/lib/esm/types/di/planning/context.d.ts +11 -0
  884. package/lib/esm/types/di/planning/metadata.d.ts +8 -0
  885. package/lib/esm/types/di/planning/metadata_reader.d.ts +6 -0
  886. package/lib/esm/types/di/planning/plan.d.ts +7 -0
  887. package/lib/esm/types/di/planning/planner.d.ts +5 -0
  888. package/lib/esm/types/di/planning/queryable_string.d.ts +11 -0
  889. package/lib/esm/types/di/planning/reflection_utils.d.ts +5 -0
  890. package/lib/esm/types/di/planning/request.d.ts +14 -0
  891. package/lib/esm/types/di/planning/target.d.ts +23 -0
  892. package/lib/esm/types/di/resolution/instantiation.d.ts +3 -0
  893. package/lib/esm/types/di/resolution/resolver.d.ts +3 -0
  894. package/lib/esm/types/di/scope/scope-registry.d.ts +91 -0
  895. package/lib/esm/types/di/scope/scope.d.ts +3 -0
  896. package/lib/esm/types/di/syntax/binding_in_syntax.d.ts +10 -0
  897. package/lib/esm/types/di/syntax/binding_in_when_on_syntax.d.ts +30 -0
  898. package/lib/esm/types/di/syntax/binding_on_syntax.d.ts +8 -0
  899. package/lib/esm/types/di/syntax/binding_to_syntax.d.ts +18 -0
  900. package/lib/esm/types/di/syntax/binding_when_on_syntax.d.ts +25 -0
  901. package/lib/esm/types/di/syntax/binding_when_syntax.d.ts +21 -0
  902. package/lib/esm/types/di/syntax/constraint_helpers.d.ts +6 -0
  903. package/lib/esm/types/di/utils/async.d.ts +3 -0
  904. package/lib/esm/types/di/utils/binding_utils.d.ts +4 -0
  905. package/lib/esm/types/di/utils/clonable.d.ts +3 -0
  906. package/lib/esm/types/di/utils/exceptions.d.ts +2 -0
  907. package/lib/esm/types/di/utils/factory_type.d.ts +5 -0
  908. package/lib/esm/types/di/utils/id.d.ts +2 -0
  909. package/lib/esm/types/di/utils/js.d.ts +1 -0
  910. package/lib/esm/types/di/utils/serialization.d.ts +10 -0
  911. package/lib/esm/types/error/app-error.d.ts +177 -0
  912. package/lib/esm/types/error/base-exception-filter.d.ts +73 -0
  913. package/lib/esm/types/error/error-handler-middleware.d.ts +11 -0
  914. package/lib/esm/types/error/exception-filter-constants.d.ts +9 -0
  915. package/lib/esm/types/error/exception-filter-decorators.d.ts +126 -0
  916. package/lib/esm/types/error/exception-filter-registry.d.ts +38 -0
  917. package/lib/esm/types/error/exception-filter.interface.d.ts +82 -0
  918. package/lib/esm/types/error/exception-handler-middleware.d.ts +35 -0
  919. package/lib/esm/types/error/filters/app-error.filter.d.ts +10 -0
  920. package/lib/esm/types/error/filters/global-exception.filter.d.ts +9 -0
  921. package/lib/esm/types/error/filters/not-found.filter.d.ts +10 -0
  922. package/lib/esm/types/error/filters/validation-error.filter.d.ts +10 -0
  923. package/lib/esm/types/error/index.d.ts +14 -0
  924. package/lib/esm/types/error/not-found.error.d.ts +7 -0
  925. package/lib/esm/types/error/report.d.ts +105 -0
  926. package/lib/esm/types/error/status-code.d.ts +156 -0
  927. package/lib/esm/types/error/utils.d.ts +17 -0
  928. package/lib/esm/types/error/validation.error.d.ts +8 -0
  929. package/lib/esm/types/event/event-decorators.d.ts +199 -0
  930. package/lib/esm/types/event/event-emitter.d.ts +109 -0
  931. package/lib/esm/types/event/event-flow-tracker.d.ts +88 -0
  932. package/lib/esm/types/event/event-recorder.d.ts +121 -0
  933. package/lib/esm/types/event/event-registry.d.ts +84 -0
  934. package/lib/esm/types/event/event.interfaces.d.ts +528 -0
  935. package/lib/esm/types/event/index.d.ts +55 -0
  936. package/lib/esm/types/index.d.ts +27 -0
  937. package/lib/esm/types/interceptor/conditional-interceptor.d.ts +91 -0
  938. package/lib/esm/types/interceptor/execution-context.d.ts +41 -0
  939. package/lib/esm/types/interceptor/index.d.ts +41 -0
  940. package/lib/esm/types/interceptor/interceptor-composition.d.ts +115 -0
  941. package/lib/esm/types/interceptor/interceptor-constants.d.ts +17 -0
  942. package/lib/esm/types/interceptor/interceptor-decorators.d.ts +124 -0
  943. package/lib/esm/types/interceptor/interceptor-executor.d.ts +46 -0
  944. package/lib/esm/types/interceptor/interceptor-registry.d.ts +65 -0
  945. package/lib/esm/types/interceptor/interceptor.interface.d.ts +281 -0
  946. package/lib/esm/types/interceptor/interceptors/index.d.ts +6 -0
  947. package/lib/esm/types/interceptor/interceptors/logging.interceptor.d.ts +28 -0
  948. package/lib/esm/types/interceptor/interceptors/performance.interceptor.d.ts +197 -0
  949. package/lib/esm/types/interceptor/interceptors/timeout.interceptor.d.ts +42 -0
  950. package/lib/esm/types/lazy-loading/index.d.ts +42 -0
  951. package/lib/esm/types/lazy-loading/lazy-load-metrics.d.ts +139 -0
  952. package/lib/esm/types/lazy-loading/lazy-module-loader.d.ts +169 -0
  953. package/lib/esm/types/lazy-loading/lazy-module-manager.d.ts +148 -0
  954. package/lib/esm/types/lazy-loading/lazy-module-warmup.d.ts +130 -0
  955. package/lib/esm/types/lazy-loading/lazy-module.d.ts +168 -0
  956. package/lib/esm/types/lazy-loading/lazy.interfaces.d.ts +480 -0
  957. package/lib/esm/types/lifecycle/index.d.ts +9 -0
  958. package/lib/esm/types/lifecycle/lifecycle-registry.d.ts +213 -0
  959. package/lib/esm/types/lifecycle/lifecycle.interface.d.ts +191 -0
  960. package/lib/esm/types/middleware/content-negotiation/accept-header-parser.d.ts +26 -0
  961. package/lib/esm/types/middleware/content-negotiation/content-negotiation-service.d.ts +64 -0
  962. package/lib/esm/types/middleware/content-negotiation/formatter-registry.d.ts +60 -0
  963. package/lib/esm/types/middleware/content-negotiation/formatters/csv-formatter.d.ts +34 -0
  964. package/lib/esm/types/middleware/content-negotiation/formatters/index.d.ts +8 -0
  965. package/lib/esm/types/middleware/content-negotiation/formatters/json-formatter.d.ts +14 -0
  966. package/lib/esm/types/middleware/content-negotiation/formatters/plain-text-formatter.d.ts +12 -0
  967. package/lib/esm/types/middleware/content-negotiation/formatters/xml-formatter.d.ts +26 -0
  968. package/lib/esm/types/middleware/content-negotiation/formatters/yaml-formatter.d.ts +26 -0
  969. package/lib/esm/types/middleware/content-negotiation/index.d.ts +7 -0
  970. package/lib/esm/types/middleware/index.d.ts +25 -0
  971. package/lib/esm/types/middleware/interfaces/body-parser.interface.d.ts +31 -0
  972. package/lib/esm/types/middleware/interfaces/compression.interface.d.ts +98 -0
  973. package/lib/esm/types/middleware/interfaces/content-negotiation.interface.d.ts +142 -0
  974. package/lib/esm/types/middleware/interfaces/cookie-parser.interface.d.ts +9 -0
  975. package/lib/esm/types/middleware/interfaces/cookie-session/cookie-session.interface.d.ts +57 -0
  976. package/lib/esm/types/middleware/interfaces/cookie-session/keygrip.interface.d.ts +27 -0
  977. package/lib/esm/types/middleware/interfaces/cors.interface.d.ts +57 -0
  978. package/lib/esm/types/middleware/interfaces/express-rate-limit.interface.d.ts +292 -0
  979. package/lib/esm/types/middleware/interfaces/express-session.interface.d.ts +207 -0
  980. package/lib/esm/types/middleware/interfaces/helmet.interface.d.ts +210 -0
  981. package/lib/esm/types/middleware/interfaces/morgan.interface.d.ts +39 -0
  982. package/lib/esm/types/middleware/interfaces/multer.interface.d.ts +253 -0
  983. package/lib/esm/types/middleware/interfaces/serve-favicon.interface.d.ts +11 -0
  984. package/lib/esm/types/middleware/interfaces/serve-static.interface.d.ts +69 -0
  985. package/lib/esm/types/middleware/interfaces/url-encoded.interface.d.ts +37 -0
  986. package/lib/esm/types/middleware/middleware-config.d.ts +574 -0
  987. package/lib/esm/types/middleware/middleware-interface.d.ts +691 -0
  988. package/lib/esm/types/middleware/middleware-presets.d.ts +90 -0
  989. package/lib/esm/types/middleware/middleware-profiler.d.ts +199 -0
  990. package/lib/esm/types/middleware/middleware-registry.d.ts +103 -0
  991. package/lib/esm/types/middleware/middleware-resolver.d.ts +159 -0
  992. package/lib/esm/types/middleware/middleware-service.d.ts +767 -0
  993. package/lib/esm/types/middleware/middleware-utils.d.ts +145 -0
  994. package/lib/esm/types/middleware/upload-registry.d.ts +50 -0
  995. package/lib/esm/types/path-resolver/index.d.ts +80 -0
  996. package/lib/esm/types/provider/db-in-memory/adapter/adapter.interface.d.ts +222 -0
  997. package/lib/esm/types/provider/db-in-memory/adapter/in-memory.adapter.d.ts +239 -0
  998. package/lib/esm/types/provider/db-in-memory/adapter/index.d.ts +6 -0
  999. package/lib/esm/types/provider/db-in-memory/base-repo.repository.d.ts +18 -0
  1000. package/lib/esm/types/provider/db-in-memory/db-in-memory.interface.d.ts +43 -0
  1001. package/lib/esm/types/provider/db-in-memory/db-in-memory.provider.d.ts +39 -0
  1002. package/lib/esm/types/provider/db-in-memory/db-in-memory.types.d.ts +14 -0
  1003. package/lib/esm/types/provider/db-in-memory/db.provider.d.ts +281 -0
  1004. package/lib/esm/types/provider/db-in-memory/index.d.ts +63 -0
  1005. package/lib/esm/types/provider/db-in-memory/query/index.d.ts +6 -0
  1006. package/lib/esm/types/provider/db-in-memory/query/query-engine.d.ts +101 -0
  1007. package/lib/esm/types/provider/db-in-memory/query/query.types.d.ts +318 -0
  1008. package/lib/esm/types/provider/db-in-memory/schema/decorators.d.ts +314 -0
  1009. package/lib/esm/types/provider/db-in-memory/schema/entity.interface.d.ts +60 -0
  1010. package/lib/esm/types/provider/db-in-memory/schema/index.d.ts +6 -0
  1011. package/lib/esm/types/provider/db-in-memory/storage/index.d.ts +5 -0
  1012. package/lib/esm/types/provider/db-in-memory/storage/memory-store.d.ts +326 -0
  1013. package/lib/esm/types/provider/dto-validator/dto-validator.provider.d.ts +10 -0
  1014. package/lib/esm/types/provider/dto-validator/package-resolver.d.ts +7 -0
  1015. package/lib/esm/types/provider/index.d.ts +7 -0
  1016. package/lib/esm/types/provider/logger/decorators/index.d.ts +1 -0
  1017. package/lib/esm/types/provider/logger/decorators/log-performance.decorator.d.ts +49 -0
  1018. package/lib/esm/types/provider/logger/index.d.ts +17 -0
  1019. package/lib/esm/types/provider/logger/logger.banner.d.ts +94 -0
  1020. package/lib/esm/types/provider/logger/logger.config.d.ts +55 -0
  1021. package/lib/esm/types/provider/logger/logger.context.d.ts +189 -0
  1022. package/lib/esm/types/provider/logger/logger.flow.d.ts +165 -0
  1023. package/lib/esm/types/provider/logger/logger.formatter.d.ts +44 -0
  1024. package/lib/esm/types/provider/logger/logger.grouping.d.ts +124 -0
  1025. package/lib/esm/types/provider/logger/logger.health.d.ts +123 -0
  1026. package/lib/esm/types/provider/logger/logger.metrics-collector.d.ts +44 -0
  1027. package/lib/esm/types/provider/logger/logger.metrics.d.ts +162 -0
  1028. package/lib/esm/types/provider/logger/logger.performance.d.ts +179 -0
  1029. package/lib/esm/types/provider/logger/logger.provider.d.ts +332 -0
  1030. package/lib/esm/types/provider/logger/logger.query.d.ts +232 -0
  1031. package/lib/esm/types/provider/logger/logger.redaction.d.ts +169 -0
  1032. package/lib/esm/types/provider/logger/logger.suggestions.d.ts +124 -0
  1033. package/lib/esm/types/provider/logger/transports/console.transport.d.ts +49 -0
  1034. package/lib/esm/types/provider/logger/transports/file.transport.d.ts +87 -0
  1035. package/lib/esm/types/provider/logger/transports/http-server.d.ts +88 -0
  1036. package/lib/esm/types/provider/logger/transports/http.transport.d.ts +74 -0
  1037. package/lib/esm/types/provider/logger/transports/index.d.ts +5 -0
  1038. package/lib/esm/types/provider/logger/transports/transport.interface.d.ts +31 -0
  1039. package/lib/esm/types/provider/logger/utils/index.d.ts +2 -0
  1040. package/lib/esm/types/provider/logger/utils/log-entry.d.ts +82 -0
  1041. package/lib/esm/types/provider/logger/utils/log-levels.d.ts +53 -0
  1042. package/lib/esm/types/provider/provider-manager.d.ts +208 -0
  1043. package/lib/esm/types/provider/provider-registry.d.ts +192 -0
  1044. package/lib/esm/types/provider/provider.interface.d.ts +337 -0
  1045. package/lib/esm/types/provider/validation/adapters/class-validator.adapter.d.ts +68 -0
  1046. package/lib/esm/types/provider/validation/adapters/index.d.ts +10 -0
  1047. package/lib/esm/types/provider/validation/helpful-error-formatter.d.ts +110 -0
  1048. package/lib/esm/types/provider/validation/index.d.ts +19 -0
  1049. package/lib/esm/types/provider/validation/smart-field-detector.d.ts +91 -0
  1050. package/lib/esm/types/provider/validation/type-inference.d.ts +81 -0
  1051. package/lib/esm/types/provider/validation/validation-registry.d.ts +105 -0
  1052. package/lib/esm/types/provider/validation/validation.interface.d.ts +178 -0
  1053. package/lib/esm/types/render/adapters/base-adapter.d.ts +95 -0
  1054. package/lib/esm/types/render/adapters/ejs-adapter.d.ts +57 -0
  1055. package/lib/esm/types/render/adapters/handlebars-adapter.d.ts +74 -0
  1056. package/lib/esm/types/render/adapters/index.d.ts +12 -0
  1057. package/lib/esm/types/render/adapters/pug-adapter.d.ts +57 -0
  1058. package/lib/esm/types/render/adapters/react-adapter.d.ts +99 -0
  1059. package/lib/esm/types/render/features/auto-detection.d.ts +58 -0
  1060. package/lib/esm/types/render/features/hot-reload.d.ts +65 -0
  1061. package/lib/esm/types/render/features/index.d.ts +12 -0
  1062. package/lib/esm/types/render/features/streaming.d.ts +39 -0
  1063. package/lib/esm/types/render/features/type-generator.d.ts +64 -0
  1064. package/lib/esm/types/render/features/view-debugger.d.ts +42 -0
  1065. package/lib/esm/types/render/index.d.ts +50 -0
  1066. package/lib/esm/types/render/presets/index.d.ts +119 -0
  1067. package/lib/esm/types/render/render-config.d.ts +213 -0
  1068. package/lib/esm/types/render/render-interface.d.ts +126 -0
  1069. package/lib/esm/types/render/render-registry.d.ts +86 -0
  1070. package/lib/esm/types/render/render-service.d.ts +157 -0
  1071. package/lib/esm/types/render/utils/cache-manager.d.ts +106 -0
  1072. package/lib/esm/types/render/utils/index.d.ts +11 -0
  1073. package/lib/esm/types/render/utils/package-resolver.d.ts +57 -0
  1074. package/lib/esm/types/render/utils/view-scanner.d.ts +74 -0
  1075. package/lib/esm/types/testing/create-test-app.d.ts +71 -0
  1076. package/lib/esm/types/testing/create-test-database.d.ts +100 -0
  1077. package/lib/esm/types/testing/fluent-request.d.ts +37 -0
  1078. package/lib/esm/types/testing/index.d.ts +93 -0
  1079. package/lib/esm/types/testing/load-test.d.ts +139 -0
  1080. package/lib/esm/types/testing/matchers.d.ts +184 -0
  1081. package/lib/esm/types/testing/mock-context.d.ts +117 -0
  1082. package/lib/esm/types/testing/mock-provider.d.ts +93 -0
  1083. package/lib/esm/types/testing/snapshot-request.d.ts +46 -0
  1084. package/lib/esm/types/testing/testing.interfaces.d.ts +948 -0
  1085. package/lib/esm/types/utils/node-require.d.ts +11 -0
  1086. package/lib/esm/utils/node-require.js +56 -0
  1087. package/lib/package.json +152 -151
  1088. package/package.json +152 -151
  1089. package/lib/cjs/provider/environment/env-validator.provider.js +0 -100
  1090. package/lib/cjs/types/provider/environment/env-validator.provider.d.ts +0 -39
@@ -1,18 +1,11 @@
1
1
  import { ErrorRequestHandler, NextFunction, Request, RequestHandler, RequestParamHandler, Response } from "express";
2
- import { ErrorHandlerOptions, IMiddleware } from "./middleware-interface";
3
- import { OptionsJson } from "./interfaces/body-parser.interface";
4
- import { CompressionOptions } from "./interfaces/compression.interface";
5
- import { CookieParserOptions } from "./interfaces/cookie-parser.interface";
6
- import { CookieSessionOptions } from "./interfaces/cookie-session/cookie-session.interface";
7
- import { CorsOptions } from "./interfaces/cors.interface";
8
- import { RateLimitOptions } from "./interfaces/express-rate-limit.interface";
9
- import { SessionOptions } from "./interfaces/express-session.interface";
10
- import { OptionsHelmet } from "./interfaces/helmet.interface";
11
- import { FormatFn, OptionsMorgan } from "./interfaces/morgan.interface";
12
- import { multer } from "./interfaces/multer.interface";
13
- import { ServeFaviconOptions } from "./interfaces/serve-favicon.interface";
14
- import { ServeStaticOptions } from "./interfaces/serve-static.interface";
15
- import { OptionsUrlencoded } from "./interfaces/url-encoded.interface";
2
+ import { ErrorHandlerOptions, IMiddleware } from "./middleware-interface.js";
3
+ import { MiddlewareEntry as RegistryEntry } from "./middleware-registry.js";
4
+ import type { ParseOptions, MiddlewareLoggerConfig, SecurityConfig, SecurityPreset, CompressConfig, SessionConfig as V4SessionConfig, UploadConfig, UploadHandler, StaticConfig, MiddlewareConfig as V4MiddlewareConfig, OptimizationConfig, PipelineAnalysis, Recommendation } from "./middleware-config.js";
5
+ import { ContentNegotiationService } from "./content-negotiation/content-negotiation-service.js";
6
+ import { ContentNegotiationOptions } from "./interfaces/content-negotiation.interface.js";
7
+ import type { ValidationConfig } from "../provider/validation/validation.interface.js";
8
+ import { MiddlewareProfiler, MiddlewareMetrics, ProfilerStats } from "./middleware-profiler.js";
16
9
  /**
17
10
  * ExpressHandler Type
18
11
  *
@@ -32,8 +25,42 @@ interface IExpressoMiddleware {
32
25
  }
33
26
  /**
34
27
  * Abstract class for creating custom Expresso middleware.
35
- * Custom middleware classes should extend this class and implement the use method.
36
28
  *
29
+ * @layer public
30
+ * @audience application-developers
31
+ * @concept custom-middleware
32
+ * @difficulty intermediate
33
+ *
34
+ * @summary Quick Start
35
+ * Create custom middleware classes by extending this abstract class.
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * class AuthMiddleware extends ExpressoMiddleware {
40
+ * use(req: Request, res: Response, next: NextFunction): void {
41
+ * const token = req.headers.authorization;
42
+ * if (!token) {
43
+ * return res.status(401).json({ error: "Unauthorized" });
44
+ * }
45
+ * next();
46
+ * }
47
+ * }
48
+ *
49
+ * // Use in application
50
+ * services.Middleware.addMiddleware(new AuthMiddleware());
51
+ * ```
52
+ *
53
+ * @layer internal
54
+ * @audience framework-developers
55
+ *
56
+ * **Internal Behavior**
57
+ * - Provides `name` getter (returns constructor name)
58
+ * - Abstract `use()` method must be implemented
59
+ * - Compatible with Express middleware signature
60
+ *
61
+ * @see {@link IMiddleware.addMiddleware} for adding middleware
62
+ *
63
+ * @public API
37
64
  */
38
65
  export declare abstract class ExpressoMiddleware implements IExpressoMiddleware {
39
66
  get name(): string;
@@ -57,29 +84,196 @@ type MiddlewareConfig = {
57
84
  path?: string;
58
85
  middlewares: Array<ExpressHandler | IExpressoMiddleware>;
59
86
  };
87
+ /**
88
+ * Middleware category for banner display and organization.
89
+ * @public API
90
+ */
91
+ export type MiddlewareCategory = "parser" | "security" | "logging" | "validation" | "error" | "session" | "static" | "other";
92
+ /**
93
+ * Enhanced middleware entry with metadata for introspection.
94
+ * @public API
95
+ */
96
+ export interface MiddlewareEntry {
97
+ /** Display name of the middleware */
98
+ name: string;
99
+ /** Whether this is a built-in or custom middleware */
100
+ type: "built-in" | "custom";
101
+ /** Category for organization */
102
+ category: MiddlewareCategory;
103
+ /** Order in the pipeline (0-based) */
104
+ order: number;
105
+ /** Route path (or "Global" for global middleware) */
106
+ path: string;
107
+ /** The actual middleware */
108
+ middleware: ExpressHandler | MiddlewareConfig | IExpressoMiddleware;
109
+ }
60
110
  /**
61
111
  * MiddlewarePipeline Interface
62
112
  *
63
113
  * The MiddlewarePipeline interface represents the metadata and actual middleware to be executed in a middleware pipeline.
64
- * - timestamp: The date and time at which the middleware was added to the pipeline.
114
+ * - order: The insertion order of the middleware (for stable sorting).
65
115
  * - middleware: Can be either an ExpressHandler function or a MiddlewareConfig object defining a more complex middleware setup.
66
116
  */
67
117
  interface MiddlewarePipeline {
68
- timestamp: Date;
118
+ /** Insertion order for stable sorting */
119
+ order: number;
120
+ /** The middleware handler or config */
69
121
  middleware: ExpressHandler | MiddlewareConfig | IExpressoMiddleware;
122
+ /** Middleware name for lookup */
123
+ name?: string;
124
+ /** Middleware category */
125
+ category?: MiddlewareCategory;
126
+ /** Whether this is built-in */
127
+ isBuiltIn?: boolean;
128
+ /** Condition function for conditional middleware */
129
+ condition?: (req: Request) => boolean;
130
+ }
131
+ /**
132
+ * Middleware pipeline info for banner display.
133
+ * @public API
134
+ */
135
+ export interface MiddlewarePipelineInfo {
136
+ /** Total middleware count */
137
+ total: number;
138
+ /** Middleware entries */
139
+ entries: Array<MiddlewareEntry>;
140
+ /** Middleware count by category */
141
+ byCategory: Record<MiddlewareCategory, number>;
142
+ }
143
+ /**
144
+ * Conditional middleware configuration.
145
+ * @public API
146
+ */
147
+ export interface ConditionalMiddlewareConfig {
148
+ /** The middleware handler */
149
+ middleware: ExpressHandler;
150
+ /** Condition function - middleware runs only if this returns true */
151
+ condition: (req: Request) => boolean;
152
+ /** Optional name for the middleware */
153
+ name?: string;
154
+ /** Optional category */
155
+ category?: MiddlewareCategory;
70
156
  }
71
157
  /**
72
- * Singleton class that implements the IConfigure interface.
73
- * Manages the middleware configuration for the application,
74
- * including adding Body Parser and retrieving all configured middlewares.
158
+ * Middleware service for managing Express middleware pipeline.
159
+ *
160
+ * @layer public
161
+ * @audience application-developers
162
+ * @concept middleware-management
163
+ * @difficulty beginner
164
+ *
165
+ * @summary Quick Start
166
+ * Configure and manage middleware for your ExpressoTS application.
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * @provide(App)
171
+ * export class App extends AppFactory {
172
+ * configureServices(services: IService): void {
173
+ * // Add built-in middleware
174
+ * services.Middleware.addCors();
175
+ * services.Middleware.addBodyParser();
176
+ * services.Middleware.addHelmet();
177
+ *
178
+ * // Add custom middleware
179
+ * services.Middleware.addMiddleware((req, res, next) => {
180
+ * // Custom logic
181
+ * next();
182
+ * });
183
+ * }
184
+ * }
185
+ * ```
186
+ *
187
+ * **Features:**
188
+ * - Built-in middleware helpers (CORS, Helmet, Body Parser, etc.)
189
+ * - Custom middleware support
190
+ * - Middleware presets for common configurations
191
+ * - Conditional middleware execution
192
+ * - Content negotiation
193
+ * - Request validation
194
+ * - Performance profiling
195
+ *
196
+ * @layer internal
197
+ * @audience framework-developers
198
+ *
199
+ * **Internal Architecture**
200
+ *
201
+ * Middleware service:
202
+ * - Maintains ordered pipeline array
203
+ * - Uses Map for O(1) middleware lookup
204
+ * - Caches sorted pipeline for performance
205
+ * - Supports conditional middleware execution
206
+ * - Integrates with middleware resolver for auto-discovery
207
+ *
208
+ * **Design Decisions**
209
+ * - Singleton pattern (one instance per app)
210
+ * - Ordered pipeline (insertion order preserved)
211
+ * - Cached sorting (invalidated on changes)
212
+ * - Built-in middleware auto-discovery
213
+ *
214
+ * @see {@link IMiddleware} for interface definition
215
+ * @see {@link middlewareResolver} for middleware resolution
216
+ *
217
+ * @layer advanced
218
+ * @audience power-users
219
+ *
220
+ * **Advanced Usage**
221
+ *
222
+ * Conditional middleware:
223
+ * ```typescript
224
+ * services.Middleware.addConditional({
225
+ * middleware: rateLimiter,
226
+ * condition: (req) => !req.headers["x-internal-service"],
227
+ * name: "conditional-rate-limit"
228
+ * });
229
+ * ```
230
+ *
231
+ * Middleware presets:
232
+ * ```typescript
233
+ * services.Middleware.usePreset("api", {
234
+ * overrides: {
235
+ * Cors: { origin: "https://myapp.com" }
236
+ * }
237
+ * });
238
+ * ```
75
239
  *
76
- * @see IConfigure
77
240
  * @public API
78
241
  */
79
242
  export declare class Middleware implements IMiddleware {
243
+ private middlewareMap;
80
244
  private middlewarePipeline;
245
+ private insertionOrder;
246
+ private sortedPipelineCache;
81
247
  private errorHandler;
82
- private logger;
248
+ private _logger;
249
+ private contentNegotiationService;
250
+ private profiler;
251
+ private profilingEnabled;
252
+ private customPresets;
253
+ private registry;
254
+ private startupLogs;
255
+ private registeredMiddlewareNames;
256
+ constructor();
257
+ /**
258
+ * Buffer a startup log message to be displayed after the banner.
259
+ * Only buffers in development mode.
260
+ * @param message - The message to buffer
261
+ * @param type - Log type: "info" or "warn"
262
+ */
263
+ private bufferStartupLog;
264
+ /**
265
+ * Get all buffered startup logs for display after the banner.
266
+ * Includes warnings from the middleware resolver (e.g., missing packages).
267
+ * @returns Array of startup log entries
268
+ */
269
+ getStartupLogs(): Array<{
270
+ message: string;
271
+ type: "info" | "warn";
272
+ }>;
273
+ /**
274
+ * Clear all buffered startup logs.
275
+ */
276
+ clearStartupLogs(): void;
83
277
  /**
84
278
  * Retrieves the type of the middleware.
85
279
  *
@@ -89,157 +283,485 @@ export declare class Middleware implements IMiddleware {
89
283
  private getMiddlewareType;
90
284
  /**
91
285
  * Checks if a middleware with the given name exists in the middleware collection.
286
+ * Uses O(1) Map lookup instead of O(n) array scan.
92
287
  *
93
288
  * @param middlewareName - The name of the middleware to be checked.
94
289
  * @returns A boolean value indicating whether the middleware exists or not.
95
290
  */
96
291
  private middlewareExists;
97
292
  /**
98
- * Adds a URL Encoded Parser middleware to the middleware collection.
99
- * The URL Encoded Parser is responsible for parsing the URL-encoded data in the incoming request bodies.
100
- *
101
- * @param options - Optional configuration options for the URL Encoded Parser.
293
+ * Invalidate the sorted pipeline cache.
102
294
  */
103
- addUrlEncodedParser(options?: OptionsUrlencoded): void;
104
- addRateLimiter(options?: RateLimitOptions): void;
295
+ private invalidateCache;
105
296
  /**
106
- * Adds a Body Parser middleware to the middleware collection using the given options.
297
+ * Generic method to add built-in middleware with consistent pattern.
107
298
  *
108
- * @param options - Optional configuration options for the JSON body parser.
299
+ * @param name - Middleware name for lookup
300
+ * @param category - Middleware category
301
+ * @param middlewareFactory - Factory function that creates the middleware
302
+ * @returns True if middleware was added, false if skipped
109
303
  */
110
- addBodyParser(options?: OptionsJson): void;
304
+ private addBuiltInMiddleware;
111
305
  /**
112
- * Adds Cross-Origin Resource Sharing (CORS) middleware to enable or control cross-origin requests.
113
- *
114
- * @param options - Optional configuration options for CORS. Defines the behavior of CORS requests like allowed origins, methods, headers, etc.
306
+ * Get middleware name from a pipeline entry.
115
307
  */
116
- addCors(options?: CorsOptions): void;
308
+ private getMiddlewareName;
117
309
  /**
118
- * Adds Compression middleware to reduce the size of the response body and improve the speed of the client-server communication.
119
- *
120
- * @param options - Optional configuration options for Compression. Allows fine-tuning the compression behavior, such as setting the compression level, threshold, and filter functions to determine which requests should be compressed.
310
+ * Get the category of a middleware.
121
311
  */
122
- addCompression(options?: CompressionOptions): void;
312
+ private getMiddlewareCategory;
123
313
  /**
124
- * Adds Morgan middleware to log HTTP requests.
125
- *
126
- * @param format - The log format. Can be a string or a function.
127
- * @param options - Optional configuration options for Morgan. Defines the behavior of the logger like the output stream, buffer duration, etc.
314
+ * Get the path for a middleware.
128
315
  */
129
- addMorgan(format: string | FormatFn, options?: OptionsMorgan | undefined): void;
316
+ private getMiddlewarePath;
130
317
  /**
131
- * Adds Cookie Parser middleware to parse the cookie header and populate req.cookies with an object keyed by the cookie names.
132
- *
133
- * @param secret - A string or array used for signing cookies. This is optional and if not specified, the cookie-parser will not parse signed cookies.
134
- * @param options - Optional configuration options for Cookie Parser.
318
+ * Internal: Sets up Multer middleware for handling multipart/form-data.
319
+ * Used by upload() method.
320
+ * @internal
135
321
  */
136
- addCookieParser(secret?: string | Array<string> | undefined, options?: CookieParserOptions | undefined): void;
322
+ private setupMulter;
137
323
  /**
138
- * Adds Cookie Session middleware to enable cookie-based sessions.
139
- *
140
- * @param options - Optional configuration options for Cookie Session. Defines the behavior of cookie sessions like the name of the cookie, keys to sign the cookie, etc.
324
+ * Internal: Adds a middleware to serve static files.
325
+ * Used by static() method.
326
+ * @internal
141
327
  */
142
- addCookieSession(options: CookieSessionOptions): void;
328
+ private serveStatic;
143
329
  /**
144
- * Adds a middleware to serve the favicon to the middleware collection.
145
- * The favicon is the icon that is displayed in the browser tab for the application.
146
- *
147
- * @param path - The path to the favicon file.
148
- * @param options - Optional configuration options for serving the favicon. Defines the behavior of the favicon middleware like cache control, custom headers, etc.
330
+ * Helper method to add middleware configuration objects.
331
+ */
332
+ private addConfigMiddleware;
333
+ /**
334
+ * Helper method to add express request handler functions.
149
335
  */
150
- addServeFavicon(path: string | Buffer, options?: ServeFaviconOptions): void;
151
- setupMulter(options?: multer.Options): multer.Multer;
336
+ private addExpressHandlerMiddleware;
337
+ /**
338
+ * Helper method to add custom Expresso middleware.
339
+ */
340
+ private addIExpressoMiddleware;
152
341
  /**
153
- * Adds a middleware to enhance security by setting various HTTP headers.
342
+ * Adds a middleware to the middleware collection.
343
+ *
344
+ * @param options - The Express request handler function, middleware configuration object,
345
+ * or a custom Expresso middleware.
154
346
  *
155
- * @param options - Optional configuration options for Helmet.
347
+ * @example Express Handler
348
+ * ```typescript
349
+ * const middleware = (req, res, next) => {
350
+ * // Your middleware logic here
351
+ * next();
352
+ * }
353
+ * ```
354
+ *
355
+ * @example Middleware Configuration Object
356
+ * ```typescript
357
+ * const middleware = {
358
+ * path: "/",
359
+ * middlewares: [] // Array of Express Handlers
360
+ * }
361
+ * ```
156
362
  *
363
+ * @example Expresso Middleware
364
+ * ```typescript
365
+ * class CustomMiddleware implements IExpressoMiddleware {
366
+ * use(req: Request, res: Response, next: NextFunction): Promise<void> | void {
367
+ * // Your middleware logic here
368
+ * next();
369
+ * }
370
+ * }
371
+ * ```
157
372
  */
158
- addHelmet(options?: OptionsHelmet): void;
373
+ addMiddleware(options: MiddlewareOptions): void;
159
374
  /**
160
- * Add a middleware to enable express-session.
375
+ * Add middleware that only executes when a condition is met.
376
+ *
377
+ * @param config - Conditional middleware configuration
161
378
  *
162
- * @param options - Optional configuration options for Session.
379
+ * @example
380
+ * ```typescript
381
+ * // Only apply rate limiting for non-internal requests
382
+ * middleware.addConditional({
383
+ * middleware: rateLimiter,
384
+ * condition: (req) => !req.headers["x-internal-service"],
385
+ * name: "conditional-rate-limit"
386
+ * });
163
387
  *
388
+ * // Only apply auth for non-public routes
389
+ * middleware.addConditional({
390
+ * middleware: authMiddleware,
391
+ * condition: (req) => !req.path.startsWith("/public"),
392
+ * name: "conditional-auth"
393
+ * });
394
+ * ```
395
+ *
396
+ * @public API
164
397
  */
165
- addSession(options: SessionOptions): void;
398
+ addConditional(config: ConditionalMiddlewareConfig): void;
166
399
  /**
167
400
  * Configures the error handling middleware for the application.
168
401
  *
169
402
  * @param options - The object containing the configuration options for the error handler middleware.
170
- * @param errorHandler - The Express error handler function that takes care of processing errors and formulating the response.
171
- * @param showStackTrace - A boolean value indicating whether to show the stack trace in the response.
172
403
  */
173
404
  setErrorHandler(options?: ErrorHandlerOptions): void;
174
405
  /**
175
- * Adds a middleware to serve static files from the specified root directory.
176
- * Allows the application to serve files like images, CSS, JavaScript, etc.
406
+ * Gets the configured error handler middleware.
177
407
  *
178
- * @param root - The root directory from which the static assets are to be served.
179
- * @param options - Optional configuration options for serving static files. Defines behavior like cache control, custom headers, etc.
408
+ * @returns The error handler middleware.
180
409
  */
181
- serveStatic(root: string, options?: ServeStaticOptions): void;
410
+ getErrorHandler(): ExpressHandler;
182
411
  /**
183
- * Helper method to add middleware configuration objects to the middleware collection.
184
- * @param middleware - The middleware configuration object to be added to the middleware collection.
185
- * @returns void
412
+ * Configures content negotiation middleware for automatic response format selection.
413
+ *
414
+ * @param options - Configuration options for content negotiation
415
+ * @public API
186
416
  */
187
- private addConfigMiddleware;
417
+ addContentNegotiation(options?: ContentNegotiationOptions): void;
188
418
  /**
189
- * Helper method to add express request handler functions to the middleware collection.
190
- * @param middleware - The express request handler function to be added to the middleware collection.
191
- * @returns void
419
+ * Gets the content negotiation service instance.
420
+ * @returns Content negotiation service or undefined if not configured
421
+ * @internal
192
422
  */
193
- private addExpressHandlerMiddleware;
423
+ getContentNegotiationService(): ContentNegotiationService | undefined;
424
+ private validationServiceFactory?;
194
425
  /**
195
- * Helper method to add custom Expresso middleware to the middleware collection.
196
- * @param middleware - The custom Expresso middleware to be added to the middleware collection.
197
- * @returns void
426
+ * Configures validation for automatic request parameter validation.
427
+ *
428
+ * @param options - Configuration options for validation
429
+ * @public API
198
430
  */
199
- private addIExpressoMiddleware;
431
+ addValidation(options?: ValidationConfig): void;
200
432
  /**
201
- * Adds a middleware to the middleware collection.
433
+ * Gets the validation configuration.
434
+ * @internal
435
+ */
436
+ getValidationConfig(): ValidationConfig | undefined;
437
+ /**
438
+ * Sets the validation service factory (called by adapter-express).
439
+ * @internal
440
+ */
441
+ setValidationServiceFactory(factory: () => unknown): void;
442
+ /**
443
+ * Gets the validation service instance.
444
+ * @internal
445
+ */
446
+ getValidationService(): unknown;
447
+ /**
448
+ * Enable middleware profiling to track execution times.
202
449
  *
203
- * @param options - The Express request handler function to be added to the middleware collection, or a middleware configuration object
204
- * that is composed by a route and an expressjs handler, or a custom Expresso middleware.
450
+ * @param options - Profiler options
451
+ * @returns The profiler instance
205
452
  *
206
- * @example Express Handler
207
- * const middleware = (req, res, next) => {
208
- * // Your middleware logic here
209
- * next();
210
- * }
453
+ * @example
454
+ * ```typescript
455
+ * const profiler = middleware.enableProfiling();
211
456
  *
212
- * @example Middleware Configuration Object
213
- * const middleware = {
214
- * path: "/",
215
- * middlewares: [] // Array of Express Handlers
216
- * }
457
+ * // Later, get metrics
458
+ * const stats = profiler.getStats();
459
+ * console.log(stats.metrics);
460
+ * ```
217
461
  *
218
- * @example Expresso Middleware
219
- * class CustomMiddleware implements IExpressoMiddleware {
220
- * use(req: Request, res: Response, next: NextFunction): Promise<void> | void {
221
- * // Your middleware logic here
222
- * next();
223
- * }
224
- * }
462
+ * @public API
225
463
  */
226
- addMiddleware(options: MiddlewareOptions): void;
464
+ enableProfiling(options?: {
465
+ maxSamples?: number;
466
+ }): MiddlewareProfiler;
467
+ /**
468
+ * Disable middleware profiling.
469
+ * @public API
470
+ */
471
+ disableProfiling(): void;
472
+ /**
473
+ * Get the profiler instance.
474
+ * @returns The profiler or null if not enabled
475
+ * @public API
476
+ */
477
+ getProfiler(): MiddlewareProfiler | null;
478
+ /**
479
+ * Get profiling metrics for all middleware.
480
+ *
481
+ * @returns Array of middleware metrics or empty array if profiling is disabled
482
+ * @public API
483
+ */
484
+ getProfilingMetrics(): Array<MiddlewareMetrics>;
485
+ /**
486
+ * Get profiling statistics.
487
+ *
488
+ * @returns Profiler statistics or null if profiling is disabled
489
+ * @public API
490
+ */
491
+ getProfilingStats(): ProfilerStats | null;
492
+ /**
493
+ * Add a health check endpoint that reports middleware status.
494
+ *
495
+ * @param options - Health check options
496
+ *
497
+ * @example
498
+ * ```typescript
499
+ * middleware.addHealthCheck({
500
+ * path: "/health/middleware",
501
+ * includeMetrics: true
502
+ * });
503
+ * ```
504
+ *
505
+ * @public API
506
+ */
507
+ addHealthCheck(options?: {
508
+ path?: string;
509
+ includeMetrics?: boolean;
510
+ detailed?: boolean;
511
+ }): void;
227
512
  /**
228
513
  * Retrieves middleware pipeline in the order they were added.
514
+ * Uses cached sorting for performance.
229
515
  *
230
- * @returns An array of Express request handlers representing the middlewares.
516
+ * @returns An array of middleware pipeline entries.
231
517
  */
232
518
  getMiddlewarePipeline(): Array<MiddlewarePipeline>;
233
519
  /**
234
- * View middleware pipeline formatted.
235
- * @returns void
520
+ * View middleware pipeline formatted as a table.
236
521
  */
237
522
  viewMiddlewarePipeline(): void;
238
523
  /**
239
- * Gets the configured error handler middleware.
524
+ * Get a visual ASCII representation of the middleware pipeline.
240
525
  *
241
- * @returns The error handler middleware.
526
+ * @returns ASCII art diagram of the pipeline
527
+ *
528
+ * @example
529
+ * ```typescript
530
+ * console.log(middleware.visualizePipeline());
531
+ * // ╔══════════════════════════════════════════════════════════════╗
532
+ * // ║ MIDDLEWARE PIPELINE ║
533
+ * // ╠══════════════════════════════════════════════════════════════╣
534
+ * // ║ 📦 jsonParser [parser] ║
535
+ * // ║ ↓ ║
536
+ * // ║ 🔒 cors [security] ║
537
+ * // ║ ↓ ║
538
+ * // ║ 🔒 helmet [security] ║
539
+ * // ╚══════════════════════════════════════════════════════════════╝
540
+ * ```
541
+ *
542
+ * @public API
242
543
  */
243
- getErrorHandler(): ExpressHandler;
544
+ visualizePipeline(): string;
545
+ /**
546
+ * Get a compact summary of the middleware pipeline.
547
+ *
548
+ * @returns Single-line summary
549
+ * @public API
550
+ */
551
+ getPipelineSummary(): string;
552
+ /**
553
+ * Get structured pipeline info for banner display and introspection.
554
+ * @returns Middleware pipeline information
555
+ * @public API
556
+ */
557
+ getPipelineInfo(): MiddlewarePipelineInfo;
558
+ /**
559
+ * Get a formatted view for banner display.
560
+ * @param maxDisplay - Maximum number of middleware to show
561
+ * @returns Formatted middleware view
562
+ * @public API
563
+ */
564
+ getFormattedView(maxDisplay?: number): {
565
+ entries: Array<{
566
+ name: string;
567
+ category: MiddlewareCategory;
568
+ type: "built-in" | "custom";
569
+ }>;
570
+ total: number;
571
+ remaining: number;
572
+ };
573
+ /**
574
+ * Get middleware count by category.
575
+ * @returns Record of category to count
576
+ * @public API
577
+ */
578
+ getCountByCategory(): Record<MiddlewareCategory, number>;
579
+ /**
580
+ * Get middleware by name.
581
+ * @param name - The middleware name
582
+ * @returns The middleware entry or undefined
583
+ * @public API
584
+ */
585
+ getByName(name: string): MiddlewareEntry | undefined;
586
+ /**
587
+ * Remove a middleware from the pipeline by name.
588
+ *
589
+ * @param name - The middleware name to remove
590
+ * @returns True if removed, false if not found
591
+ * @public API
592
+ */
593
+ remove(name: string): boolean;
594
+ /**
595
+ * Clear all middleware from the pipeline.
596
+ * @public API
597
+ */
598
+ clear(): void;
599
+ /**
600
+ * Get the total number of middleware in the pipeline.
601
+ * @returns Number of middleware
602
+ * @public API
603
+ */
604
+ count(): number;
605
+ /**
606
+ * Configure request parsing (unified method).
607
+ * Replaces: addBodyParser, addUrlEncodedParser, addCookieParser
608
+ */
609
+ parse(options?: ParseOptions): void;
610
+ /**
611
+ * Configure logging with any implementation.
612
+ * Replaces: addMorgan
613
+ */
614
+ logger(config?: MiddlewareLoggerConfig): void;
615
+ private get loggerInstance();
616
+ /**
617
+ * Detect the best available logger.
618
+ */
619
+ private detectBestLogger;
620
+ /**
621
+ * Resolve logger implementation.
622
+ */
623
+ private resolveLoggerImplementation;
624
+ /**
625
+ * Unified security configuration.
626
+ * Replaces: addHelmet, addCors, addRateLimiter
627
+ */
628
+ security(config?: SecurityConfig | SecurityPreset): void;
629
+ /**
630
+ * Get security preset configuration.
631
+ */
632
+ private getSecurityPreset;
633
+ /**
634
+ * Configure compression.
635
+ * Replaces: addCompression
636
+ */
637
+ compress(config?: CompressConfig): void;
638
+ /**
639
+ * Unified session management.
640
+ * Replaces: addSession, addCookieSession
641
+ */
642
+ session(config: V4SessionConfig): void;
643
+ /**
644
+ * Enhanced file upload handling.
645
+ * Configures global upload settings and returns upload handlers.
646
+ *
647
+ * When called, this stores the configuration globally so that
648
+ * @FileUpload decorators can use these settings as defaults.
649
+ *
650
+ * @param config - Upload configuration
651
+ * @returns Upload handler with single, array, fields, any, none methods
652
+ *
653
+ * @example
654
+ * ```typescript
655
+ * // In app.ts - configure globally
656
+ * this.Middleware.upload({
657
+ * destination: './uploads',
658
+ * limits: { fileSize: 10 * 1024 * 1024 }
659
+ * });
660
+ *
661
+ * // In controller - @FileUpload uses global config
662
+ * @FileUpload({ fieldName: 'avatar' })
663
+ * uploadAvatar(req: Request) { }
664
+ * ```
665
+ *
666
+ * @public API
667
+ */
668
+ upload(config?: UploadConfig): UploadHandler;
669
+ /**
670
+ * Enhanced static file serving.
671
+ * Replaces: serveStatic, addServeFavicon
672
+ */
673
+ static(config: StaticConfig | string | Array<StaticConfig | string>): void;
674
+ /**
675
+ * Register a named middleware for use in routes.
676
+ */
677
+ register(name: string, handler: RequestHandler | Array<RequestHandler> | RegistryEntry): void;
678
+ /**
679
+ * Get a registered middleware by name.
680
+ */
681
+ get(name: string): RequestHandler | Array<RequestHandler> | undefined;
682
+ /**
683
+ * Check if a middleware is registered.
684
+ */
685
+ has(name: string): boolean;
686
+ /**
687
+ * Get all registered middleware names.
688
+ */
689
+ getRegisteredNames(): Array<string>;
690
+ /**
691
+ * Define a custom reusable preset.
692
+ */
693
+ definePreset(name: string, config: V4MiddlewareConfig): void;
694
+ /**
695
+ * Apply a preset configuration.
696
+ */
697
+ applyPreset(preset: string, overrides?: Partial<V4MiddlewareConfig>): void;
698
+ /**
699
+ * Get all available presets.
700
+ */
701
+ getAllPresets(): Record<string, V4MiddlewareConfig>;
702
+ /**
703
+ * Get built-in presets.
704
+ */
705
+ private getBuiltInPresets;
706
+ /**
707
+ * Get preset config by name.
708
+ */
709
+ private getPresetConfig;
710
+ /**
711
+ * Get available preset names.
712
+ */
713
+ private getAvailablePresetNames;
714
+ /**
715
+ * Merge two configs.
716
+ */
717
+ private mergeConfigs;
718
+ /**
719
+ * Conditional middleware application.
720
+ */
721
+ when(condition: boolean | (() => boolean), handler: RequestHandler | (() => void)): void;
722
+ /**
723
+ * Auto-optimize middleware pipeline.
724
+ */
725
+ optimize(config?: OptimizationConfig): void;
726
+ /**
727
+ * Reorder middleware for optimal performance.
728
+ */
729
+ private reorderForPerformance;
730
+ /**
731
+ * Analyze middleware pipeline.
732
+ */
733
+ analyze(): PipelineAnalysis;
734
+ /**
735
+ * Get recommendations for improvement.
736
+ */
737
+ getRecommendations(): Array<Recommendation>;
738
+ /**
739
+ * Add custom middleware to global pipeline.
740
+ * Alias for addMiddleware() with shorter name.
741
+ */
742
+ add(middleware: MiddlewareOptions): void;
743
+ /** Render service instance (lazy initialized) */
744
+ private renderService;
745
+ /** Express app reference for render service */
746
+ private expressApp;
747
+ /**
748
+ * Set the Express app reference for render service initialization.
749
+ * Called internally by AppExpress.
750
+ * @internal
751
+ */
752
+ setExpressApp(app: import("express").Application): void;
753
+ /**
754
+ * Configure view rendering with unified API.
755
+ * Supports traditional engines (EJS, Pug, Handlebars) and modern frameworks (React, Vue, Svelte).
756
+ *
757
+ * @param config - Render configuration or preset name
758
+ */
759
+ render(config?: import("../render/render-config.js").RenderConfig | import("../render/render-config.js").PresetName): Promise<void>;
760
+ /**
761
+ * Get the render service instance.
762
+ *
763
+ * @returns Render service or null if not configured
764
+ */
765
+ getRenderService(): import("../render/render-service.js").RenderService | null;
244
766
  }
245
767
  export {};