jimpex 8.0.0 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +2 -2
  3. package/dist/app/index.d.mts +14 -0
  4. package/dist/app/index.d.ts +5 -4
  5. package/dist/app/index.js +4 -0
  6. package/dist/app/jimpex.d.mts +14 -0
  7. package/dist/app/jimpex.d.ts +3 -2
  8. package/dist/app/jimpex.js +225 -0
  9. package/dist/app/jimpex.js.map +1 -1
  10. package/dist/controllers/common/config.d.mts +79 -0
  11. package/dist/controllers/common/config.d.ts +3 -2
  12. package/dist/controllers/common/config.js +18 -0
  13. package/dist/controllers/common/config.js.map +1 -1
  14. package/dist/controllers/common/health.d.mts +83 -0
  15. package/dist/controllers/common/health.d.ts +4 -3
  16. package/dist/controllers/common/health.js +18 -0
  17. package/dist/controllers/common/health.js.map +1 -1
  18. package/dist/controllers/common/index.d.mts +21 -0
  19. package/dist/controllers/common/index.d.ts +4 -4
  20. package/dist/controllers/common/index.js +6 -0
  21. package/dist/controllers/common/statics.d.mts +215 -0
  22. package/dist/controllers/common/statics.d.ts +4 -4
  23. package/dist/controllers/common/statics.js +51 -0
  24. package/dist/controllers/common/statics.js.map +1 -1
  25. package/dist/controllers/index.d.mts +24 -0
  26. package/dist/controllers/index.d.ts +4 -4
  27. package/dist/controllers/index.js +5 -0
  28. package/dist/controllers/utils/gateway.d.mts +725 -0
  29. package/dist/controllers/utils/gateway.d.ts +4 -3
  30. package/dist/controllers/utils/gateway.js +152 -0
  31. package/dist/controllers/utils/gateway.js.map +1 -1
  32. package/dist/controllers/utils/index.d.mts +17 -0
  33. package/dist/controllers/utils/index.d.ts +4 -3
  34. package/dist/controllers/utils/index.js +4 -0
  35. package/dist/esm/app/jimpex.js +222 -1
  36. package/dist/esm/app/jimpex.js.map +1 -1
  37. package/dist/esm/{chunk-T2T6Q22Z.js → chunk-2B2CG5KL.js} +1 -1
  38. package/dist/esm/controllers/common/config.js +19 -1
  39. package/dist/esm/controllers/common/config.js.map +1 -1
  40. package/dist/esm/controllers/common/health.js +19 -1
  41. package/dist/esm/controllers/common/health.js.map +1 -1
  42. package/dist/esm/controllers/common/statics.js +48 -1
  43. package/dist/esm/controllers/common/statics.js.map +1 -1
  44. package/dist/esm/controllers/utils/gateway.js +153 -1
  45. package/dist/esm/controllers/utils/gateway.js.map +1 -1
  46. package/dist/esm/middlewares/common/errorHandler.js +25 -1
  47. package/dist/esm/middlewares/common/errorHandler.js.map +1 -1
  48. package/dist/esm/middlewares/common/forceHTTPS.js +13 -1
  49. package/dist/esm/middlewares/common/forceHTTPS.js.map +1 -1
  50. package/dist/esm/middlewares/common/hsts.js +22 -1
  51. package/dist/esm/middlewares/common/hsts.js.map +1 -1
  52. package/dist/esm/middlewares/html/fastHTML.js +55 -1
  53. package/dist/esm/middlewares/html/fastHTML.js.map +1 -1
  54. package/dist/esm/middlewares/html/showHTML.js +33 -1
  55. package/dist/esm/middlewares/html/showHTML.js.map +1 -1
  56. package/dist/esm/middlewares/utils/versionValidator.js +35 -1
  57. package/dist/esm/middlewares/utils/versionValidator.js.map +1 -1
  58. package/dist/esm/services/common/appError.js +48 -2
  59. package/dist/esm/services/common/appError.js.map +1 -1
  60. package/dist/esm/services/common/httpError.js +10 -1
  61. package/dist/esm/services/common/httpError.js.map +1 -1
  62. package/dist/esm/services/common/index.js +1 -1
  63. package/dist/esm/services/common/sendFile.js +1 -1
  64. package/dist/esm/services/frontend/frontendFs.js +29 -1
  65. package/dist/esm/services/frontend/frontendFs.js.map +1 -1
  66. package/dist/esm/services/frontend/index.js +1 -1
  67. package/dist/esm/services/html/htmlGenerator.js +51 -1
  68. package/dist/esm/services/html/htmlGenerator.js.map +1 -1
  69. package/dist/esm/services/html/index.js +1 -1
  70. package/dist/esm/services/http/apiClient.js +27 -1
  71. package/dist/esm/services/http/apiClient.js.map +1 -1
  72. package/dist/esm/services/http/http.js +50 -1
  73. package/dist/esm/services/http/http.js.map +1 -1
  74. package/dist/esm/services/http/index.js +1 -1
  75. package/dist/esm/services/http/responsesBuilder.js +49 -2
  76. package/dist/esm/services/http/responsesBuilder.js.map +1 -1
  77. package/dist/esm/services/utils/ensureBearerToken.js +17 -1
  78. package/dist/esm/services/utils/ensureBearerToken.js.map +1 -1
  79. package/dist/esm/services/utils/index.js +1 -1
  80. package/dist/esm/utils/fns/others.js +1 -1
  81. package/dist/esm/utils/fns/routes.js +1 -1
  82. package/dist/esm/utils/fns/routes.js.map +1 -1
  83. package/dist/esm/utils/fns/statuses.js +1 -1
  84. package/dist/esm/utils/fns/text.js +1 -1
  85. package/dist/esm/utils/wrappers.js +1 -1
  86. package/dist/{jimpex-7eaee271.d.ts → index-b2a04c78.d.ts} +9 -5
  87. package/dist/index-efeb437e.d.ts +1282 -0
  88. package/dist/index.d.mts +46 -0
  89. package/dist/index.d.ts +1 -1
  90. package/dist/index.js +9 -0
  91. package/dist/middlewares/common/errorHandler.d.mts +132 -0
  92. package/dist/middlewares/common/errorHandler.d.ts +4 -3
  93. package/dist/middlewares/common/errorHandler.js +24 -0
  94. package/dist/middlewares/common/errorHandler.js.map +1 -1
  95. package/dist/middlewares/common/forceHTTPS.d.mts +69 -0
  96. package/dist/middlewares/common/forceHTTPS.d.ts +5 -4
  97. package/dist/middlewares/common/forceHTTPS.js +12 -0
  98. package/dist/middlewares/common/forceHTTPS.js.map +1 -1
  99. package/dist/middlewares/common/hsts.d.mts +110 -0
  100. package/dist/middlewares/common/hsts.d.ts +5 -4
  101. package/dist/middlewares/common/hsts.js +21 -0
  102. package/dist/middlewares/common/hsts.js.map +1 -1
  103. package/dist/middlewares/common/index.d.mts +22 -0
  104. package/dist/middlewares/common/index.d.ts +4 -3
  105. package/dist/middlewares/common/index.js +6 -0
  106. package/dist/middlewares/html/fastHTML.d.mts +180 -0
  107. package/dist/middlewares/html/fastHTML.d.ts +4 -4
  108. package/dist/middlewares/html/fastHTML.js +54 -0
  109. package/dist/middlewares/html/fastHTML.js.map +1 -1
  110. package/dist/middlewares/html/index.d.mts +21 -0
  111. package/dist/middlewares/html/index.d.ts +4 -4
  112. package/dist/middlewares/html/index.js +5 -0
  113. package/dist/middlewares/html/showHTML.d.mts +127 -0
  114. package/dist/middlewares/html/showHTML.d.ts +4 -4
  115. package/dist/middlewares/html/showHTML.js +32 -0
  116. package/dist/middlewares/html/showHTML.js.map +1 -1
  117. package/dist/middlewares/index.d.mts +30 -0
  118. package/dist/middlewares/index.d.ts +4 -4
  119. package/dist/middlewares/index.js +6 -0
  120. package/dist/middlewares/utils/index.d.mts +20 -0
  121. package/dist/middlewares/utils/index.d.ts +4 -3
  122. package/dist/middlewares/utils/index.js +4 -0
  123. package/dist/middlewares/utils/versionValidator.d.mts +215 -0
  124. package/dist/middlewares/utils/versionValidator.d.ts +4 -3
  125. package/dist/middlewares/utils/versionValidator.js +34 -0
  126. package/dist/middlewares/utils/versionValidator.js.map +1 -1
  127. package/dist/services/common/appError.d.mts +139 -0
  128. package/dist/services/common/appError.d.ts +4 -3
  129. package/dist/services/common/appError.js +47 -1
  130. package/dist/services/common/appError.js.map +1 -1
  131. package/dist/services/common/httpError.d.mts +80 -0
  132. package/dist/services/common/httpError.d.ts +4 -3
  133. package/dist/services/common/httpError.js +9 -0
  134. package/dist/services/common/httpError.js.map +1 -1
  135. package/dist/services/common/index.d.mts +47 -0
  136. package/dist/services/common/index.d.ts +4 -4
  137. package/dist/services/common/index.js +4 -1
  138. package/dist/services/common/sendFile.d.mts +102 -0
  139. package/dist/services/common/sendFile.d.ts +3 -3
  140. package/dist/services/frontend/frontendFs.d.mts +96 -0
  141. package/dist/services/frontend/frontendFs.d.ts +3 -3
  142. package/dist/services/frontend/frontendFs.js +32 -0
  143. package/dist/services/frontend/frontendFs.js.map +1 -1
  144. package/dist/services/frontend/index.d.mts +40 -0
  145. package/dist/services/frontend/index.d.ts +4 -4
  146. package/dist/services/frontend/index.js +2 -1
  147. package/dist/services/html/htmlGenerator.d.mts +237 -0
  148. package/dist/services/html/htmlGenerator.d.ts +2 -2
  149. package/dist/services/html/htmlGenerator.js +50 -0
  150. package/dist/services/html/htmlGenerator.js.map +1 -1
  151. package/dist/services/html/index.d.mts +43 -0
  152. package/dist/services/html/index.d.ts +4 -4
  153. package/dist/services/html/index.js +2 -1
  154. package/dist/services/http/apiClient.d.mts +170 -0
  155. package/dist/services/http/apiClient.d.ts +4 -3
  156. package/dist/services/http/apiClient.js +26 -0
  157. package/dist/services/http/apiClient.js.map +1 -1
  158. package/dist/services/http/http.d.mts +176 -0
  159. package/dist/services/http/http.d.ts +4 -3
  160. package/dist/services/http/http.js +53 -0
  161. package/dist/services/http/http.js.map +1 -1
  162. package/dist/services/http/index.d.mts +51 -0
  163. package/dist/services/http/index.d.ts +4 -3
  164. package/dist/services/http/index.js +4 -1
  165. package/dist/services/http/responsesBuilder.d.mts +179 -0
  166. package/dist/services/http/responsesBuilder.d.ts +3 -2
  167. package/dist/services/http/responsesBuilder.js +48 -1
  168. package/dist/services/http/responsesBuilder.js.map +1 -1
  169. package/dist/services/index.d.mts +33 -0
  170. package/dist/services/index.d.ts +4 -4
  171. package/dist/services/index.js +8 -0
  172. package/dist/services/utils/ensureBearerToken.d.mts +158 -0
  173. package/dist/services/utils/ensureBearerToken.d.ts +5 -4
  174. package/dist/services/utils/ensureBearerToken.js +16 -0
  175. package/dist/services/utils/ensureBearerToken.js.map +1 -1
  176. package/dist/services/utils/index.d.mts +44 -0
  177. package/dist/services/utils/index.d.ts +4 -3
  178. package/dist/services/utils/index.js +2 -1
  179. package/dist/types/events.d.mts +14 -0
  180. package/dist/types/events.d.ts +5 -4
  181. package/dist/types/express.d.mts +10 -0
  182. package/dist/types/http.d.mts +79 -0
  183. package/dist/types/index.d.mts +14 -0
  184. package/dist/types/index.d.ts +1 -1
  185. package/dist/types/index.js +9 -0
  186. package/dist/types/options.d.mts +14 -0
  187. package/dist/types/options.d.ts +4 -3
  188. package/dist/types/utils.d.mts +48 -0
  189. package/dist/types/wootils.d.mts +4 -0
  190. package/dist/utils/fns/index.d.mts +5 -0
  191. package/dist/utils/fns/index.js +7 -0
  192. package/dist/utils/fns/others.d.mts +17 -0
  193. package/dist/utils/fns/routes.d.mts +39 -0
  194. package/dist/utils/fns/routes.js.map +1 -1
  195. package/dist/utils/fns/statuses.d.mts +45 -0
  196. package/dist/utils/fns/statuses.js +4 -0
  197. package/dist/utils/fns/statuses.js.map +1 -1
  198. package/dist/utils/fns/text.d.mts +9 -0
  199. package/dist/utils/index.d.mts +19 -0
  200. package/dist/utils/index.d.ts +5 -4
  201. package/dist/utils/index.js +5 -0
  202. package/dist/utils/wrappers.d.mts +14 -0
  203. package/dist/utils/wrappers.d.ts +4 -3
  204. package/package.json +43 -43
  205. /package/dist/esm/{chunk-T2T6Q22Z.js.map → chunk-2B2CG5KL.js.map} +0 -0
@@ -0,0 +1,46 @@
1
+ export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, E as EventPayload, l as Events, J as Jimpex, m as JimpexConfigOptions, k as JimpexEventListener, b as JimpexEventName, i as JimpexEventNameLike, c as JimpexEventPayload, a as JimpexEvents, o as JimpexExpressOptions, s as JimpexHealthCheckFn, r as JimpexHealthStatus, t as JimpexOptions, p as JimpexPathOptions, f as JimpexReducerEventName, h as JimpexReducerEventPayload, e as JimpexReducerEventPayloads, g as JimpexReducerEventTarget, d as JimpexReducerEventTargets, q as JimpexServicesOptions, u as JimpexStartCallback, n as JimpexStaticsOptions, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, j as jimpex, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from './index-efeb437e.js';
2
+ export { AsyncExpressMiddleware, ExpressErrorHandler, ExpressMiddleware, ExpressMiddlewareLike, RouterMethod } from './types/express.mjs';
3
+ export { JimpexHTTP2Options, JimpexHTTPSCredentials, JimpexHTTPSOptions, JimpexServer, JimpexServerInstance } from './types/http.mjs';
4
+ export { DeepPartial, DeepReadonly, Dict, NoStringIndex } from './types/utils.mjs';
5
+ export { PathUtils } from '@homer0/path-utils';
6
+ export { SimpleLogger as Logger } from '@homer0/simple-logger';
7
+ export { SimpleConfig as Config } from '@homer0/simple-config';
8
+ export { EventsHub } from '@homer0/events-hub';
9
+ export { ConfigController, ConfigControllerOptions, configController } from './controllers/common/config.mjs';
10
+ export { GetHealthStatus, HealthController, HealthControllerOptions, healthController } from './controllers/common/health.mjs';
11
+ export { AddStaticRouteOptions, StaticsController, StaticsControllerConstructorOptions, StaticsControllerCreatorOptions, StaticsControllerFile, StaticsControllerGetMiddlewaresFn, StaticsControllerOptions, StaticsControllerPathsOptions, staticsController } from './controllers/common/statics.mjs';
12
+ export { AddGatewayRouteOptions, GatewayConfig, GatewayConfigEndpointDefinition, GatewayConfigEndpointProps, GatewayConfigEndpoints, GatewayController, GatewayControllerAPIConfig, GatewayControllerAPIConfigOptions, GatewayControllerConstructorOptions, GatewayControllerCreatorOptions, GatewayControllerEndpointInfo, GatewayControllerExtraOptions, GatewayControllerGetMiddlewaresFn, GatewayControllerHeaderOptions, GatewayControllerHelperOptions, GatewayControllerOptions, GatewayControllerRequest, GatewayControllerRoute, GatewayControllerRouteMethod, GatewayHelperService, GatewayHelperServiceBaseFnOptions, GatewayHelperServiceErrorHandler, GatewayHelperServiceErrorHandlerOptions, GatewayHelperServiceRequestReducer, GatewayHelperServiceRequestReducerOptions, GatewayHelperServiceResponseHandler, GatewayHelperServiceResponseReducer, GatewayHelperServiceResponseReducerOptions, GatewayHelperServiceStreamVerification, gatewayController } from './controllers/utils/gateway.mjs';
13
+ export { ErrorHandler, ErrorHandlerConstructorOptions, ErrorHandlerOptions, ErrorHandlerPartialOptions, ErrorHandlerResponseOptions, errorHandlerMiddleware } from './middlewares/common/errorHandler.mjs';
14
+ export { ForceHTTPS, ForceHTTPSOptions, ForceHTTPSPartialOptions, forceHTTPSMiddleware } from './middlewares/common/forceHTTPS.mjs';
15
+ export { HSTS, HSTSMiddlewareOptions, HSTSMiddlewarePartialOptions, HSTSMiddlewareSettings, hstsMiddleware } from './middlewares/common/hsts.mjs';
16
+ export { FastHTML, FastHTMLConstructorOptions, FastHTMLMiddlewareOptions, FastHTMLOptions, fastHTMLMiddleware } from './middlewares/html/fastHTML.mjs';
17
+ export { ShowHTML, ShowHTMLConstructorOptions, ShowHTMLMiddlewareOptions, ShowHTMLOptions, showHTMLMiddleware } from './middlewares/html/showHTML.mjs';
18
+ export { VersionValidator, VersionValidatorConstructorOptions, VersionValidatorLatestOptions, VersionValidatorMiddlewareOptions, VersionValidatorOptions, VersionValidatorPartialOptions, VersionValidatorPopupOptions, versionValidatorMiddleware } from './middlewares/utils/versionValidator.mjs';
19
+ export { commonServicesProvider } from './services/common/index.mjs';
20
+ export { frontendServicesProvider } from './services/frontend/index.mjs';
21
+ export { htmlServicesProvider } from './services/html/index.mjs';
22
+ export { httpServicesProvider } from './services/http/index.mjs';
23
+ export { utilsServicesProvider } from './services/utils/index.mjs';
24
+ export { notUndefined } from './utils/fns/others.mjs';
25
+ export { createRouteExpression, removeLeadingSlash, removeSlashes, removeTrailingSlash } from './utils/fns/routes.mjs';
26
+ export { Statuses } from './utils/fns/statuses.mjs';
27
+ export { escapeForRegExp } from './utils/fns/text.mjs';
28
+ export { Express, NextFunction, Request, Response, Router } from 'express';
29
+ export { Response as HTTPResponse } from 'node-fetch';
30
+ export { Server as HTTPSServer } from 'https';
31
+ export { Server as HTTPServer } from 'http';
32
+ export { AppError, AppErrorClass, AppErrorContext, CreateAppErrorFn, appErrorProvider, createAppError } from './services/common/appError.mjs';
33
+ export { CreateHTTPErrorFn, HTTPError, HTTPErrorClass, createHTTPError, httpErrorProvider } from './services/common/httpError.mjs';
34
+ export { SendFile, SendFileGeneratorOptions, SendFileOptions, sendFile, sendFileProvider } from './services/common/sendFile.mjs';
35
+ export { FrontendFs, FrontendFsOptions, frontendFsProvider } from './services/frontend/frontendFs.mjs';
36
+ export { HTMLGenerator, HTMLGeneratorConstructorOptions, HTMLGeneratorOptions, HTMLGeneratorProviderOptions, HTMLGeneratorValuesService, htmlGeneratorProvider } from './services/html/htmlGenerator.mjs';
37
+ export { ErrorResponse } from '@homer0/api-utils';
38
+ export { APIClient, APIClientConfig, APIClientConstructorOptions, APIClientProviderOptions, APIClientSettings, EndpointsType, apiClientProvider } from './services/http/apiClient.mjs';
39
+ export { GetCustomHeadersFromRequestOptions, HTTP, HTTPContructorOptions, HTTPFetchBody, HTTPFetchOptions, HTTPOptions, httpProvider } from './services/http/http.mjs';
40
+ export { HTMLPostMessageResponseOptions, JSONResponseOptions, ResponsesBuilder, ResponsesBuilderConstructorOptions, responsesBuilderProvider } from './services/http/responsesBuilder.mjs';
41
+ export { EnsureBearerConstructorOptions, EnsureBearerToken, EnsureBearerTokenErrorOptions, EnsureBearerTokenOptions, EnsureBearerTokenProviderOptions, ensureBearerTokenProvider } from './services/utils/ensureBearerToken.mjs';
42
+ export { default as statuses } from 'statuses';
43
+ import '@homer0/jimple';
44
+ import 'spdy';
45
+ import 'fs/promises';
46
+ import '@homer0/deferred';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, E as EventPayload, l as Events, J as Jimpex, m as JimpexConfigOptions, k as JimpexEventListener, b as JimpexEventName, i as JimpexEventNameLike, c as JimpexEventPayload, a as JimpexEvents, o as JimpexExpressOptions, s as JimpexHealthCheckFn, r as JimpexHealthStatus, t as JimpexOptions, p as JimpexPathOptions, f as JimpexReducerEventName, h as JimpexReducerEventPayload, e as JimpexReducerEventPayloads, g as JimpexReducerEventTarget, d as JimpexReducerEventTargets, q as JimpexServicesOptions, u as JimpexStartCallback, n as JimpexStaticsOptions, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, j as jimpex, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from './jimpex-7eaee271.js';
1
+ export { H as Controller, C as ControllerConnectFn, I as ControllerCreator, F as ControllerCreatorFn, a2 as ControllerLike, O as ControllerProvider, Q as ControllerProviderCreator, M as ControllerProviderCreatorFn, K as ControllerProviderRegisterFn, E as EventPayload, l as Events, J as Jimpex, m as JimpexConfigOptions, k as JimpexEventListener, b as JimpexEventName, i as JimpexEventNameLike, c as JimpexEventPayload, a as JimpexEvents, o as JimpexExpressOptions, s as JimpexHealthCheckFn, r as JimpexHealthStatus, t as JimpexOptions, p as JimpexPathOptions, f as JimpexReducerEventName, h as JimpexReducerEventPayload, e as JimpexReducerEventPayloads, g as JimpexReducerEventTarget, d as JimpexReducerEventTargets, q as JimpexServicesOptions, u as JimpexStartCallback, n as JimpexStaticsOptions, V as Middleware, R as MiddlewareConnectFn, W as MiddlewareCreator, T as MiddlewareCreatorFn, a1 as MiddlewareLike, $ as MiddlewareProvider, a0 as MiddlewareProviderCreator, Z as MiddlewareProviderCreatorFn, X as MiddlewareProviderRegisterFn, y as Provider, z as ProviderCreator, B as ProviderLike, P as ProviderRegisterFn, A as Providers, D as controller, G as controllerCreator, L as controllerProvider, N as controllerProviderCreator, j as jimpex, S as middleware, U as middlewareCreator, Y as middlewareProvider, _ as middlewareProviderCreator, v as provider, w as providerCreator, x as providers } from './index-b2a04c78.js';
2
2
  export { AsyncExpressMiddleware, ExpressErrorHandler, ExpressMiddleware, ExpressMiddlewareLike, RouterMethod } from './types/express.js';
3
3
  export { JimpexHTTP2Options, JimpexHTTPSCredentials, JimpexHTTPSOptions, JimpexServer, JimpexServerInstance } from './types/http.js';
4
4
  export { DeepPartial, DeepReadonly, Dict, NoStringIndex } from './types/utils.js';
package/dist/index.js CHANGED
@@ -21,4 +21,13 @@ __reExport(src_exports, require("./controllers"), module.exports);
21
21
  __reExport(src_exports, require("./middlewares"), module.exports);
22
22
  __reExport(src_exports, require("./services"), module.exports);
23
23
  __reExport(src_exports, require("./utils"), module.exports);
24
+ // Annotate the CommonJS export names for ESM import in node:
25
+ 0 && (module.exports = {
26
+ ...require("./app"),
27
+ ...require("./types"),
28
+ ...require("./controllers"),
29
+ ...require("./middlewares"),
30
+ ...require("./services"),
31
+ ...require("./utils")
32
+ });
24
33
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,132 @@
1
+ import * as _homer0_jimple from '@homer0/jimple';
2
+ import { Statuses } from '../../utils/fns/statuses.mjs';
3
+ import { J as Jimpex, R as MiddlewareConnectFn } from '../../index-efeb437e.js';
4
+ import { ExpressErrorHandler } from '../../types/express.mjs';
5
+ import { SimpleLogger } from '@homer0/simple-logger';
6
+ import { DeepPartial } from '../../types/utils.mjs';
7
+ import { HTTPErrorClass } from '../../services/common/httpError.mjs';
8
+ import { ResponsesBuilder } from '../../services/http/responsesBuilder.mjs';
9
+ import 'statuses';
10
+ import '../../types/http.mjs';
11
+ import 'https';
12
+ import 'http';
13
+ import 'spdy';
14
+ import 'express';
15
+ import 'node-fetch';
16
+ import '@homer0/path-utils';
17
+ import '@homer0/simple-config';
18
+ import '@homer0/events-hub';
19
+ import '../../services/common/appError.mjs';
20
+
21
+ /**
22
+ * The options for the responses the middleware will create.
23
+ *
24
+ * @group Middlewares/ErrorHandler
25
+ */
26
+ type ErrorHandlerResponseOptions = {
27
+ /**
28
+ * The message to show in case `showErrors` is set to `false`.
29
+ *
30
+ * @default 'Oops! Something went wrong, please try again'
31
+ * @prettierignore
32
+ */
33
+ message: string;
34
+ /**
35
+ * The default status code for the responses.
36
+ *
37
+ * @default 500
38
+ */
39
+ status: number;
40
+ };
41
+ /**
42
+ * The customization options for the middleware.
43
+ *
44
+ * @group Middlewares/ErrorHandler
45
+ */
46
+ type ErrorHandlerOptions = {
47
+ /**
48
+ * If `false`, unknown errors will show a generic message instead of real message. And
49
+ * if `true`, it will not only show all kind of errors but it will also show the error
50
+ * stack.
51
+ *
52
+ * By "uknown errors", it means that are not `AppError` nor `HTTPError`.
53
+ */
54
+ showErrors: boolean;
55
+ /**
56
+ * The options for the default response the middleware will create.
57
+ */
58
+ response: ErrorHandlerResponseOptions;
59
+ };
60
+ /**
61
+ * A partial version of the {@link ErrorHandlerOptions}, to be used in the constructor and
62
+ * the middleware creator.
63
+ *
64
+ * @group Middlewares/ErrorHandler
65
+ */
66
+ type ErrorHandlerPartialOptions = DeepPartial<ErrorHandlerOptions>;
67
+ /**
68
+ * The options to construct a {@link ErrorHandler}.
69
+ *
70
+ * @group Middlewares/ErrorHandler
71
+ */
72
+ type ErrorHandlerConstructorOptions = ErrorHandlerPartialOptions & {
73
+ /**
74
+ * A dictionary with the dependencies to inject.
75
+ */
76
+ inject: {
77
+ logger: SimpleLogger;
78
+ responsesBuilder: ResponsesBuilder;
79
+ statuses: Statuses;
80
+ HTTPError: HTTPErrorClass;
81
+ };
82
+ };
83
+ /**
84
+ * Creates a middleware that handles errors and generates the responses.
85
+ *
86
+ * @group Middleware Classes
87
+ * @group Middlewares/ErrorHandler
88
+ * @prettierignore
89
+ */
90
+ declare class ErrorHandler {
91
+ /**
92
+ * The service that will log the messages in the console.
93
+ */
94
+ protected readonly _logger: SimpleLogger;
95
+ /**
96
+ * The service to generate the responses.
97
+ */
98
+ protected readonly _responsesBuilder: ResponsesBuilder;
99
+ /**
100
+ * The uility service to get HTTP status codes.
101
+ */
102
+ protected readonly _statuses: Statuses;
103
+ /**
104
+ * The Error class used by the "known errors".
105
+ */
106
+ protected readonly _HTTPError: HTTPErrorClass;
107
+ /**
108
+ * The customization options.
109
+ */
110
+ protected readonly _options: ErrorHandlerOptions;
111
+ /**
112
+ * @param options The options to construct the class.
113
+ */
114
+ constructor({ inject: { logger, responsesBuilder, statuses, HTTPError }, ...options }: ErrorHandlerConstructorOptions);
115
+ /**
116
+ * Generates the middleware that handles the errors.
117
+ */
118
+ getMiddleware(): ExpressErrorHandler;
119
+ /**
120
+ * The handler customization options.
121
+ */
122
+ get options(): Readonly<ErrorHandlerOptions>;
123
+ }
124
+ /**
125
+ * Creates the middleware that handles errors.
126
+ *
127
+ * @group Middlewares
128
+ * @group Middlewares/ErrorHandler
129
+ */
130
+ declare const errorHandlerMiddleware: _homer0_jimple.ResourceCreator<"middleware", "connect", (options?: ErrorHandlerPartialOptions) => <ContainerType extends Jimpex = Jimpex>(app: ContainerType) => ExpressErrorHandler, MiddlewareConnectFn>;
131
+
132
+ export { ErrorHandler, ErrorHandlerConstructorOptions, ErrorHandlerOptions, ErrorHandlerPartialOptions, ErrorHandlerResponseOptions, errorHandlerMiddleware };
@@ -1,20 +1,21 @@
1
1
  import * as _homer0_jimple from '@homer0/jimple';
2
2
  import { Statuses } from '../../utils/fns/statuses.js';
3
- import { J as Jimpex, R as MiddlewareConnectFn } from '../../jimpex-7eaee271.js';
3
+ import { J as Jimpex, R as MiddlewareConnectFn } from '../../index-b2a04c78.js';
4
4
  import { ExpressErrorHandler } from '../../types/express.js';
5
5
  import { SimpleLogger } from '@homer0/simple-logger';
6
6
  import { DeepPartial } from '../../types/utils.js';
7
7
  import { HTTPErrorClass } from '../../services/common/httpError.js';
8
8
  import { ResponsesBuilder } from '../../services/http/responsesBuilder.js';
9
9
  import 'statuses';
10
- import '@homer0/events-hub';
11
- import 'express';
12
10
  import '../../types/http.js';
13
11
  import 'https';
14
12
  import 'http';
15
13
  import 'spdy';
14
+ import 'express';
16
15
  import 'node-fetch';
16
+ import '@homer0/path-utils';
17
17
  import '@homer0/simple-config';
18
+ import '@homer0/events-hub';
18
19
  import '../../services/common/appError.js';
19
20
 
20
21
  /**
@@ -31,14 +31,32 @@ var import_deep_assign = require("@homer0/deep-assign");
31
31
  var import_utils = require("../../utils");
32
32
  var import_services = require("../../services");
33
33
  class ErrorHandler {
34
+ /**
35
+ * @param options The options to construct the class.
36
+ */
34
37
  constructor({
35
38
  inject: { logger, responsesBuilder, statuses, HTTPError },
36
39
  ...options
37
40
  }) {
41
+ /**
42
+ * The service that will log the messages in the console.
43
+ */
38
44
  __publicField(this, "_logger");
45
+ /**
46
+ * The service to generate the responses.
47
+ */
39
48
  __publicField(this, "_responsesBuilder");
49
+ /**
50
+ * The uility service to get HTTP status codes.
51
+ */
40
52
  __publicField(this, "_statuses");
53
+ /**
54
+ * The Error class used by the "known errors".
55
+ */
41
56
  __publicField(this, "_HTTPError");
57
+ /**
58
+ * The customization options.
59
+ */
42
60
  __publicField(this, "_options");
43
61
  this._logger = logger;
44
62
  this._responsesBuilder = responsesBuilder;
@@ -55,6 +73,9 @@ class ErrorHandler {
55
73
  options
56
74
  );
57
75
  }
76
+ /**
77
+ * Generates the middleware that handles the errors.
78
+ */
58
79
  getMiddleware() {
59
80
  return (err, _, res, next) => {
60
81
  if (!err) {
@@ -92,6 +113,9 @@ class ErrorHandler {
92
113
  });
93
114
  };
94
115
  }
116
+ /**
117
+ * The handler customization options.
118
+ */
95
119
  get options() {
96
120
  return (0, import_deep_assign.deepAssignWithOverwrite)({}, this._options);
97
121
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/common/errorHandler.ts"],"sourcesContent":["import { deepAssignWithOverwrite } from '@homer0/deep-assign';\nimport { middlewareCreator, type Statuses } from '../../utils';\nimport type { DeepPartial, Logger, ExpressErrorHandler } from '../../types';\nimport { AppError, type HTTPErrorClass, type ResponsesBuilder } from '../../services';\n/**\n * The options for the responses the middleware will create.\n *\n * @group Middlewares/ErrorHandler\n */\nexport type ErrorHandlerResponseOptions = {\n /**\n * The message to show in case `showErrors` is set to `false`.\n *\n * @default 'Oops! Something went wrong, please try again'\n * @prettierignore\n */\n message: string;\n /**\n * The default status code for the responses.\n *\n * @default 500\n */\n status: number;\n};\n/**\n * The customization options for the middleware.\n *\n * @group Middlewares/ErrorHandler\n */\nexport type ErrorHandlerOptions = {\n /**\n * If `false`, unknown errors will show a generic message instead of real message. And\n * if `true`, it will not only show all kind of errors but it will also show the error\n * stack.\n *\n * By \"uknown errors\", it means that are not `AppError` nor `HTTPError`.\n */\n showErrors: boolean;\n /**\n * The options for the default response the middleware will create.\n */\n response: ErrorHandlerResponseOptions;\n};\n/**\n * A partial version of the {@link ErrorHandlerOptions}, to be used in the constructor and\n * the middleware creator.\n *\n * @group Middlewares/ErrorHandler\n */\nexport type ErrorHandlerPartialOptions = DeepPartial<ErrorHandlerOptions>;\n/**\n * The options to construct a {@link ErrorHandler}.\n *\n * @group Middlewares/ErrorHandler\n */\nexport type ErrorHandlerConstructorOptions = ErrorHandlerPartialOptions & {\n /**\n * A dictionary with the dependencies to inject.\n */\n inject: {\n logger: Logger;\n responsesBuilder: ResponsesBuilder;\n statuses: Statuses;\n HTTPError: HTTPErrorClass;\n };\n};\n/**\n * Creates a middleware that handles errors and generates the responses.\n *\n * @group Middleware Classes\n * @group Middlewares/ErrorHandler\n * @prettierignore\n */\nexport class ErrorHandler {\n /**\n * The service that will log the messages in the console.\n */\n protected readonly _logger: Logger;\n /**\n * The service to generate the responses.\n */\n protected readonly _responsesBuilder: ResponsesBuilder;\n /**\n * The uility service to get HTTP status codes.\n */\n protected readonly _statuses: Statuses;\n /**\n * The Error class used by the \"known errors\".\n */\n protected readonly _HTTPError: HTTPErrorClass;\n /**\n * The customization options.\n */\n protected readonly _options: ErrorHandlerOptions;\n /**\n * @param options The options to construct the class.\n */\n constructor({\n inject: { logger, responsesBuilder, statuses, HTTPError },\n ...options\n }: ErrorHandlerConstructorOptions) {\n this._logger = logger;\n this._responsesBuilder = responsesBuilder;\n this._statuses = statuses;\n this._HTTPError = HTTPError;\n this._options = deepAssignWithOverwrite(\n {\n showErrors: false,\n response: {\n message: 'Unexpected error',\n status: this._statuses('internal server error'),\n },\n },\n options,\n );\n }\n /**\n * Generates the middleware that handles the errors.\n */\n getMiddleware(): ExpressErrorHandler {\n return (err, _, res, next) => {\n // If there wasn't any error, continue the execution.\n if (!err) {\n next();\n return;\n }\n\n const { response, showErrors } = this._options;\n\n // Define the base status and response.\n let { status } = response;\n let data: {\n error: boolean;\n message: string;\n stack?: string[];\n } & Record<string, unknown> = {\n error: true,\n message: response.message,\n };\n\n const knownError = err instanceof AppError;\n // If it's a \"known error\" or the `showErrors` flag is set to `true`...\n if (showErrors || knownError) {\n // Get the real message.\n data.message = err.message;\n // If it's a \"known error\"...\n if (knownError) {\n // Try to extract information for the response.\n data = {\n ...data,\n ...err.getResponse(),\n };\n status = err.status || (this._statuses('bad request') as number);\n }\n /**\n * If the flag is set to `true`, and it's a \"valid error\", try to extract the\n * stack, format it, and include it in the response.\n */\n if (showErrors && err instanceof Error && err.stack) {\n const stack = err.stack.split('\\n').map((line) => line.trim());\n data.stack = stack;\n stack.splice(0, 1);\n this._logger.error(`ERROR: ${err.message}`);\n this._logger.info(stack);\n }\n }\n\n this._responsesBuilder.json({\n res,\n data,\n status,\n });\n };\n }\n /**\n * The handler customization options.\n */\n get options(): Readonly<ErrorHandlerOptions> {\n return deepAssignWithOverwrite({}, this._options);\n }\n}\n/**\n * Creates the middleware that handles errors.\n *\n * @group Middlewares\n * @group Middlewares/ErrorHandler\n */\nexport const errorHandlerMiddleware = middlewareCreator(\n (options: ErrorHandlerPartialOptions = {}) =>\n (app) => {\n const showErrors = app.getConfig<boolean | undefined>('debug.showErrors') === true;\n return new ErrorHandler({\n inject: {\n logger: app.get('logger'),\n responsesBuilder: app.get('responsesBuilder'),\n statuses: app.get('statuses'),\n HTTPError: app.get('HTTPError'),\n },\n showErrors,\n ...options,\n }).getMiddleware();\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAwC;AACxC,mBAAiD;AAEjD,sBAAqE;AAsE9D,MAAM,aAAa;AAAA,EAwBxB,YAAY;AAAA,IACV,QAAQ,EAAE,QAAQ,kBAAkB,UAAU,UAAU;AAAA,OACrD;AAAA,EACL,GAAmC;AAvBnC,wBAAmB;AAInB,wBAAmB;AAInB,wBAAmB;AAInB,wBAAmB;AAInB,wBAAmB;AAQjB,SAAK,UAAU;AACf,SAAK,oBAAoB;AACzB,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,SAAK,eAAW;AAAA,MACd;AAAA,QACE,YAAY;AAAA,QACZ,UAAU;AAAA,UACR,SAAS;AAAA,UACT,QAAQ,KAAK,UAAU,uBAAuB;AAAA,QAChD;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAIA,gBAAqC;AACnC,WAAO,CAAC,KAAK,GAAG,KAAK,SAAS;AAE5B,UAAI,CAAC,KAAK;AACR,aAAK;AACL;AAAA,MACF;AAEA,YAAM,EAAE,UAAU,WAAW,IAAI,KAAK;AAGtC,UAAI,EAAE,OAAO,IAAI;AACjB,UAAI,OAI0B;AAAA,QAC5B,OAAO;AAAA,QACP,SAAS,SAAS;AAAA,MACpB;AAEA,YAAM,aAAa,eAAe;AAElC,UAAI,cAAc,YAAY;AAE5B,aAAK,UAAU,IAAI;AAEnB,YAAI,YAAY;AAEd,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,GAAG,IAAI,YAAY;AAAA,UACrB;AACA,mBAAS,IAAI,UAAW,KAAK,UAAU,aAAa;AAAA,QACtD;AAKA,YAAI,cAAc,eAAe,SAAS,IAAI,OAAO;AACnD,gBAAM,QAAQ,IAAI,MAAM,MAAM,IAAI,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAC7D,eAAK,QAAQ;AACb,gBAAM,OAAO,GAAG,CAAC;AACjB,eAAK,QAAQ,MAAM,UAAU,IAAI,SAAS;AAC1C,eAAK,QAAQ,KAAK,KAAK;AAAA,QACzB;AAAA,MACF;AAEA,WAAK,kBAAkB,KAAK;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAIA,IAAI,UAAyC;AAC3C,eAAO,4CAAwB,CAAC,GAAG,KAAK,QAAQ;AAAA,EAClD;AACF;AAOO,MAAM,6BAAyB;AAAA,EACpC,CAAC,UAAsC,CAAC,MACtC,CAAC,QAAQ;AACP,UAAM,aAAa,IAAI,UAA+B,kBAAkB,MAAM;AAC9E,WAAO,IAAI,aAAa;AAAA,MACtB,QAAQ;AAAA,QACN,QAAQ,IAAI,IAAI,QAAQ;AAAA,QACxB,kBAAkB,IAAI,IAAI,kBAAkB;AAAA,QAC5C,UAAU,IAAI,IAAI,UAAU;AAAA,QAC5B,WAAW,IAAI,IAAI,WAAW;AAAA,MAChC;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,CAAC,EAAE,cAAc;AAAA,EACnB;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/middlewares/common/errorHandler.ts"],"sourcesContent":["import { deepAssignWithOverwrite } from '@homer0/deep-assign';\nimport { middlewareCreator, type Statuses } from '../../utils';\nimport type { DeepPartial, Logger, ExpressErrorHandler } from '../../types';\nimport { AppError, type HTTPErrorClass, type ResponsesBuilder } from '../../services';\n/**\n * The options for the responses the middleware will create.\n *\n * @group Middlewares/ErrorHandler\n */\nexport type ErrorHandlerResponseOptions = {\n /**\n * The message to show in case `showErrors` is set to `false`.\n *\n * @default 'Oops! Something went wrong, please try again'\n * @prettierignore\n */\n message: string;\n /**\n * The default status code for the responses.\n *\n * @default 500\n */\n status: number;\n};\n/**\n * The customization options for the middleware.\n *\n * @group Middlewares/ErrorHandler\n */\nexport type ErrorHandlerOptions = {\n /**\n * If `false`, unknown errors will show a generic message instead of real message. And\n * if `true`, it will not only show all kind of errors but it will also show the error\n * stack.\n *\n * By \"uknown errors\", it means that are not `AppError` nor `HTTPError`.\n */\n showErrors: boolean;\n /**\n * The options for the default response the middleware will create.\n */\n response: ErrorHandlerResponseOptions;\n};\n/**\n * A partial version of the {@link ErrorHandlerOptions}, to be used in the constructor and\n * the middleware creator.\n *\n * @group Middlewares/ErrorHandler\n */\nexport type ErrorHandlerPartialOptions = DeepPartial<ErrorHandlerOptions>;\n/**\n * The options to construct a {@link ErrorHandler}.\n *\n * @group Middlewares/ErrorHandler\n */\nexport type ErrorHandlerConstructorOptions = ErrorHandlerPartialOptions & {\n /**\n * A dictionary with the dependencies to inject.\n */\n inject: {\n logger: Logger;\n responsesBuilder: ResponsesBuilder;\n statuses: Statuses;\n HTTPError: HTTPErrorClass;\n };\n};\n/**\n * Creates a middleware that handles errors and generates the responses.\n *\n * @group Middleware Classes\n * @group Middlewares/ErrorHandler\n * @prettierignore\n */\nexport class ErrorHandler {\n /**\n * The service that will log the messages in the console.\n */\n protected readonly _logger: Logger;\n /**\n * The service to generate the responses.\n */\n protected readonly _responsesBuilder: ResponsesBuilder;\n /**\n * The uility service to get HTTP status codes.\n */\n protected readonly _statuses: Statuses;\n /**\n * The Error class used by the \"known errors\".\n */\n protected readonly _HTTPError: HTTPErrorClass;\n /**\n * The customization options.\n */\n protected readonly _options: ErrorHandlerOptions;\n /**\n * @param options The options to construct the class.\n */\n constructor({\n inject: { logger, responsesBuilder, statuses, HTTPError },\n ...options\n }: ErrorHandlerConstructorOptions) {\n this._logger = logger;\n this._responsesBuilder = responsesBuilder;\n this._statuses = statuses;\n this._HTTPError = HTTPError;\n this._options = deepAssignWithOverwrite(\n {\n showErrors: false,\n response: {\n message: 'Unexpected error',\n status: this._statuses('internal server error'),\n },\n },\n options,\n );\n }\n /**\n * Generates the middleware that handles the errors.\n */\n getMiddleware(): ExpressErrorHandler {\n return (err, _, res, next) => {\n // If there wasn't any error, continue the execution.\n if (!err) {\n next();\n return;\n }\n\n const { response, showErrors } = this._options;\n\n // Define the base status and response.\n let { status } = response;\n let data: {\n error: boolean;\n message: string;\n stack?: string[];\n } & Record<string, unknown> = {\n error: true,\n message: response.message,\n };\n\n const knownError = err instanceof AppError;\n // If it's a \"known error\" or the `showErrors` flag is set to `true`...\n if (showErrors || knownError) {\n // Get the real message.\n data.message = err.message;\n // If it's a \"known error\"...\n if (knownError) {\n // Try to extract information for the response.\n data = {\n ...data,\n ...err.getResponse(),\n };\n status = err.status || (this._statuses('bad request') as number);\n }\n /**\n * If the flag is set to `true`, and it's a \"valid error\", try to extract the\n * stack, format it, and include it in the response.\n */\n if (showErrors && err instanceof Error && err.stack) {\n const stack = err.stack.split('\\n').map((line) => line.trim());\n data.stack = stack;\n stack.splice(0, 1);\n this._logger.error(`ERROR: ${err.message}`);\n this._logger.info(stack);\n }\n }\n\n this._responsesBuilder.json({\n res,\n data,\n status,\n });\n };\n }\n /**\n * The handler customization options.\n */\n get options(): Readonly<ErrorHandlerOptions> {\n return deepAssignWithOverwrite({}, this._options);\n }\n}\n/**\n * Creates the middleware that handles errors.\n *\n * @group Middlewares\n * @group Middlewares/ErrorHandler\n */\nexport const errorHandlerMiddleware = middlewareCreator(\n (options: ErrorHandlerPartialOptions = {}) =>\n (app) => {\n const showErrors = app.getConfig<boolean | undefined>('debug.showErrors') === true;\n return new ErrorHandler({\n inject: {\n logger: app.get('logger'),\n responsesBuilder: app.get('responsesBuilder'),\n statuses: app.get('statuses'),\n HTTPError: app.get('HTTPError'),\n },\n showErrors,\n ...options,\n }).getMiddleware();\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAwC;AACxC,mBAAiD;AAEjD,sBAAqE;AAsE9D,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA,EAwBxB,YAAY;AAAA,IACV,QAAQ,EAAE,QAAQ,kBAAkB,UAAU,UAAU;AAAA,IACxD,GAAG;AAAA,EACL,GAAmC;AAvBnC;AAAA;AAAA;AAAA,wBAAmB;AAInB;AAAA;AAAA;AAAA,wBAAmB;AAInB;AAAA;AAAA;AAAA,wBAAmB;AAInB;AAAA;AAAA;AAAA,wBAAmB;AAInB;AAAA;AAAA;AAAA,wBAAmB;AAQjB,SAAK,UAAU;AACf,SAAK,oBAAoB;AACzB,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,SAAK,eAAW;AAAA,MACd;AAAA,QACE,YAAY;AAAA,QACZ,UAAU;AAAA,UACR,SAAS;AAAA,UACT,QAAQ,KAAK,UAAU,uBAAuB;AAAA,QAChD;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAqC;AACnC,WAAO,CAAC,KAAK,GAAG,KAAK,SAAS;AAE5B,UAAI,CAAC,KAAK;AACR,aAAK;AACL;AAAA,MACF;AAEA,YAAM,EAAE,UAAU,WAAW,IAAI,KAAK;AAGtC,UAAI,EAAE,OAAO,IAAI;AACjB,UAAI,OAI0B;AAAA,QAC5B,OAAO;AAAA,QACP,SAAS,SAAS;AAAA,MACpB;AAEA,YAAM,aAAa,eAAe;AAElC,UAAI,cAAc,YAAY;AAE5B,aAAK,UAAU,IAAI;AAEnB,YAAI,YAAY;AAEd,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,GAAG,IAAI,YAAY;AAAA,UACrB;AACA,mBAAS,IAAI,UAAW,KAAK,UAAU,aAAa;AAAA,QACtD;AAKA,YAAI,cAAc,eAAe,SAAS,IAAI,OAAO;AACnD,gBAAM,QAAQ,IAAI,MAAM,MAAM,IAAI,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAC7D,eAAK,QAAQ;AACb,gBAAM,OAAO,GAAG,CAAC;AACjB,eAAK,QAAQ,MAAM,UAAU,IAAI,OAAO,EAAE;AAC1C,eAAK,QAAQ,KAAK,KAAK;AAAA,QACzB;AAAA,MACF;AAEA,WAAK,kBAAkB,KAAK;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,UAAyC;AAC3C,eAAO,4CAAwB,CAAC,GAAG,KAAK,QAAQ;AAAA,EAClD;AACF;AAOO,MAAM,6BAAyB;AAAA,EACpC,CAAC,UAAsC,CAAC,MACtC,CAAC,QAAQ;AACP,UAAM,aAAa,IAAI,UAA+B,kBAAkB,MAAM;AAC9E,WAAO,IAAI,aAAa;AAAA,MACtB,QAAQ;AAAA,QACN,QAAQ,IAAI,IAAI,QAAQ;AAAA,QACxB,kBAAkB,IAAI,IAAI,kBAAkB;AAAA,QAC5C,UAAU,IAAI,IAAI,UAAU;AAAA,QAC5B,WAAW,IAAI,IAAI,WAAW;AAAA,MAChC;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,CAAC,EAAE,cAAc;AAAA,EACnB;AACJ;","names":[]}
@@ -0,0 +1,69 @@
1
+ import * as _homer0_jimple from '@homer0/jimple';
2
+ import { J as Jimpex, R as MiddlewareConnectFn } from '../../index-efeb437e.js';
3
+ import { ExpressMiddleware } from '../../types/express.mjs';
4
+ import '../../types/http.mjs';
5
+ import 'https';
6
+ import 'http';
7
+ import 'spdy';
8
+ import 'express';
9
+ import 'node-fetch';
10
+ import '../../types/utils.mjs';
11
+ import '@homer0/path-utils';
12
+ import '@homer0/simple-logger';
13
+ import '@homer0/simple-config';
14
+ import '@homer0/events-hub';
15
+
16
+ /**
17
+ * The customization options for the middleware.
18
+ *
19
+ * @group Middlewares/ForceHTTPS
20
+ */
21
+ type ForceHTTPSOptions = {
22
+ /**
23
+ * A list of regular expressions to match routes that should be ignored.
24
+ *
25
+ * @default [/^\/service\//]
26
+ */
27
+ ignoredRoutes: RegExp[];
28
+ };
29
+ /**
30
+ * A partial version of the {@link ForceHTTPSOptions}, to be used in the constructor and
31
+ * the middleware creator.
32
+ *
33
+ * @group Middlewares/ForceHTTPS
34
+ */
35
+ type ForceHTTPSPartialOptions = Partial<ForceHTTPSOptions>;
36
+ /**
37
+ * Creates a middleware that forces all the traffic to be through HTTPS.
38
+ *
39
+ * @group Middleware Classes
40
+ * @group Middlewares/ForceHTTPS
41
+ * @prettierignore
42
+ */
43
+ declare class ForceHTTPS {
44
+ /**
45
+ * The customization options.
46
+ */
47
+ protected readonly _options: ForceHTTPSOptions;
48
+ /**
49
+ * @param options The options to construct the class.
50
+ */
51
+ constructor(options?: ForceHTTPSPartialOptions);
52
+ /**
53
+ * Generates the middleware that redirects the traffic.
54
+ */
55
+ getMiddleware(): ExpressMiddleware;
56
+ /**
57
+ * The customization options.
58
+ */
59
+ get options(): Readonly<ForceHTTPSOptions>;
60
+ }
61
+ /**
62
+ * Creates the middleware that redirects the traffic to HTTPS.
63
+ *
64
+ * @group Middlewares
65
+ * @group Middlewares/ForceHTTPS
66
+ */
67
+ declare const forceHTTPSMiddleware: _homer0_jimple.ResourceCreator<"middleware", "connect", (options?: ForceHTTPSPartialOptions) => <ContainerType extends Jimpex = Jimpex>(app: ContainerType) => ExpressMiddleware | undefined, MiddlewareConnectFn>;
68
+
69
+ export { ForceHTTPS, ForceHTTPSOptions, ForceHTTPSPartialOptions, forceHTTPSMiddleware };
@@ -1,16 +1,17 @@
1
1
  import * as _homer0_jimple from '@homer0/jimple';
2
- import { J as Jimpex, R as MiddlewareConnectFn } from '../../jimpex-7eaee271.js';
2
+ import { J as Jimpex, R as MiddlewareConnectFn } from '../../index-b2a04c78.js';
3
3
  import { ExpressMiddleware } from '../../types/express.js';
4
- import '@homer0/events-hub';
5
- import 'express';
6
4
  import '../../types/http.js';
7
5
  import 'https';
8
6
  import 'http';
9
7
  import 'spdy';
8
+ import 'express';
10
9
  import 'node-fetch';
11
- import '@homer0/simple-config';
12
10
  import '../../types/utils.js';
11
+ import '@homer0/path-utils';
13
12
  import '@homer0/simple-logger';
13
+ import '@homer0/simple-config';
14
+ import '@homer0/events-hub';
14
15
 
15
16
  /**
16
17
  * The customization options for the middleware.
@@ -29,13 +29,22 @@ __export(forceHTTPS_exports, {
29
29
  module.exports = __toCommonJS(forceHTTPS_exports);
30
30
  var import_utils = require("../../utils");
31
31
  class ForceHTTPS {
32
+ /**
33
+ * @param options The options to construct the class.
34
+ */
32
35
  constructor(options = {}) {
36
+ /**
37
+ * The customization options.
38
+ */
33
39
  __publicField(this, "_options");
34
40
  this._options = {
35
41
  ignoredRoutes: [/^\/service\//],
36
42
  ...options
37
43
  };
38
44
  }
45
+ /**
46
+ * Generates the middleware that redirects the traffic.
47
+ */
39
48
  getMiddleware() {
40
49
  return (req, res, next) => {
41
50
  if (!req.secure && req.get("X-Forwarded-Proto") !== "https" && !this._options.ignoredRoutes.some(
@@ -48,6 +57,9 @@ class ForceHTTPS {
48
57
  }
49
58
  };
50
59
  }
60
+ /**
61
+ * The customization options.
62
+ */
51
63
  get options() {
52
64
  return { ...this._options };
53
65
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/common/forceHTTPS.ts"],"sourcesContent":["import { middlewareCreator } from '../../utils';\nimport { ExpressMiddleware } from '../../types';\n/**\n * The customization options for the middleware.\n *\n * @group Middlewares/ForceHTTPS\n */\nexport type ForceHTTPSOptions = {\n /**\n * A list of regular expressions to match routes that should be ignored.\n *\n * @default [/^\\/service\\//]\n */\n ignoredRoutes: RegExp[];\n};\n/**\n * A partial version of the {@link ForceHTTPSOptions}, to be used in the constructor and\n * the middleware creator.\n *\n * @group Middlewares/ForceHTTPS\n */\nexport type ForceHTTPSPartialOptions = Partial<ForceHTTPSOptions>;\n/**\n * Creates a middleware that forces all the traffic to be through HTTPS.\n *\n * @group Middleware Classes\n * @group Middlewares/ForceHTTPS\n * @prettierignore\n */\nexport class ForceHTTPS {\n /**\n * The customization options.\n */\n protected readonly _options: ForceHTTPSOptions;\n /**\n * @param options The options to construct the class.\n */\n constructor(options: ForceHTTPSPartialOptions = {}) {\n this._options = {\n ignoredRoutes: [/^\\/service\\//],\n ...options,\n };\n }\n /**\n * Generates the middleware that redirects the traffic.\n */\n getMiddleware(): ExpressMiddleware {\n return (req, res, next) => {\n if (\n !req.secure &&\n req.get('X-Forwarded-Proto') !== 'https' &&\n !this._options.ignoredRoutes.some((expression) =>\n expression.test(req.originalUrl),\n )\n ) {\n const host = req.get('Host');\n res.redirect(`https://${host}${req.url}`);\n } else {\n next();\n }\n };\n }\n /**\n * The customization options.\n */\n get options(): Readonly<ForceHTTPSOptions> {\n return { ...this._options };\n }\n}\n/**\n * Creates the middleware that redirects the traffic to HTTPS.\n *\n * @group Middlewares\n * @group Middlewares/ForceHTTPS\n */\nexport const forceHTTPSMiddleware = middlewareCreator(\n (options: ForceHTTPSPartialOptions = {}) =>\n (app) => {\n const enabled = app.getConfig<boolean | undefined>('forceHTTPS');\n if (!enabled) return undefined;\n return new ForceHTTPS(options).getMiddleware();\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkC;AA6B3B,MAAM,WAAW;AAAA,EAQtB,YAAY,UAAoC,CAAC,GAAG;AAJpD,wBAAmB;AAKjB,SAAK,WAAW;AAAA,MACd,eAAe,CAAC,cAAc;AAAA,MAC9B,GAAG;AAAA,IACL;AAAA,EACF;AAAA,EAIA,gBAAmC;AACjC,WAAO,CAAC,KAAK,KAAK,SAAS;AACzB,UACE,CAAC,IAAI,UACL,IAAI,IAAI,mBAAmB,MAAM,WACjC,CAAC,KAAK,SAAS,cAAc;AAAA,QAAK,CAAC,eACjC,WAAW,KAAK,IAAI,WAAW;AAAA,MACjC,GACA;AACA,cAAM,OAAO,IAAI,IAAI,MAAM;AAC3B,YAAI,SAAS,WAAW,OAAO,IAAI,KAAK;AAAA,MAC1C,OAAO;AACL,aAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAAA,EAIA,IAAI,UAAuC;AACzC,WAAO,EAAE,GAAG,KAAK,SAAS;AAAA,EAC5B;AACF;AAOO,MAAM,2BAAuB;AAAA,EAClC,CAAC,UAAoC,CAAC,MACpC,CAAC,QAAQ;AACP,UAAM,UAAU,IAAI,UAA+B,YAAY;AAC/D,QAAI,CAAC;AAAS,aAAO;AACrB,WAAO,IAAI,WAAW,OAAO,EAAE,cAAc;AAAA,EAC/C;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/middlewares/common/forceHTTPS.ts"],"sourcesContent":["import { middlewareCreator } from '../../utils';\nimport { ExpressMiddleware } from '../../types';\n/**\n * The customization options for the middleware.\n *\n * @group Middlewares/ForceHTTPS\n */\nexport type ForceHTTPSOptions = {\n /**\n * A list of regular expressions to match routes that should be ignored.\n *\n * @default [/^\\/service\\//]\n */\n ignoredRoutes: RegExp[];\n};\n/**\n * A partial version of the {@link ForceHTTPSOptions}, to be used in the constructor and\n * the middleware creator.\n *\n * @group Middlewares/ForceHTTPS\n */\nexport type ForceHTTPSPartialOptions = Partial<ForceHTTPSOptions>;\n/**\n * Creates a middleware that forces all the traffic to be through HTTPS.\n *\n * @group Middleware Classes\n * @group Middlewares/ForceHTTPS\n * @prettierignore\n */\nexport class ForceHTTPS {\n /**\n * The customization options.\n */\n protected readonly _options: ForceHTTPSOptions;\n /**\n * @param options The options to construct the class.\n */\n constructor(options: ForceHTTPSPartialOptions = {}) {\n this._options = {\n ignoredRoutes: [/^\\/service\\//],\n ...options,\n };\n }\n /**\n * Generates the middleware that redirects the traffic.\n */\n getMiddleware(): ExpressMiddleware {\n return (req, res, next) => {\n if (\n !req.secure &&\n req.get('X-Forwarded-Proto') !== 'https' &&\n !this._options.ignoredRoutes.some((expression) =>\n expression.test(req.originalUrl),\n )\n ) {\n const host = req.get('Host');\n res.redirect(`https://${host}${req.url}`);\n } else {\n next();\n }\n };\n }\n /**\n * The customization options.\n */\n get options(): Readonly<ForceHTTPSOptions> {\n return { ...this._options };\n }\n}\n/**\n * Creates the middleware that redirects the traffic to HTTPS.\n *\n * @group Middlewares\n * @group Middlewares/ForceHTTPS\n */\nexport const forceHTTPSMiddleware = middlewareCreator(\n (options: ForceHTTPSPartialOptions = {}) =>\n (app) => {\n const enabled = app.getConfig<boolean | undefined>('forceHTTPS');\n if (!enabled) return undefined;\n return new ForceHTTPS(options).getMiddleware();\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkC;AA6B3B,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA,EAQtB,YAAY,UAAoC,CAAC,GAAG;AAJpD;AAAA;AAAA;AAAA,wBAAmB;AAKjB,SAAK,WAAW;AAAA,MACd,eAAe,CAAC,cAAc;AAAA,MAC9B,GAAG;AAAA,IACL;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAmC;AACjC,WAAO,CAAC,KAAK,KAAK,SAAS;AACzB,UACE,CAAC,IAAI,UACL,IAAI,IAAI,mBAAmB,MAAM,WACjC,CAAC,KAAK,SAAS,cAAc;AAAA,QAAK,CAAC,eACjC,WAAW,KAAK,IAAI,WAAW;AAAA,MACjC,GACA;AACA,cAAM,OAAO,IAAI,IAAI,MAAM;AAC3B,YAAI,SAAS,WAAW,IAAI,GAAG,IAAI,GAAG,EAAE;AAAA,MAC1C,OAAO;AACL,aAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,UAAuC;AACzC,WAAO,EAAE,GAAG,KAAK,SAAS;AAAA,EAC5B;AACF;AAOO,MAAM,2BAAuB;AAAA,EAClC,CAAC,UAAoC,CAAC,MACpC,CAAC,QAAQ;AACP,UAAM,UAAU,IAAI,UAA+B,YAAY;AAC/D,QAAI,CAAC;AAAS,aAAO;AACrB,WAAO,IAAI,WAAW,OAAO,EAAE,cAAc;AAAA,EAC/C;AACJ;","names":[]}
@@ -0,0 +1,110 @@
1
+ import * as _homer0_jimple from '@homer0/jimple';
2
+ import { J as Jimpex, R as MiddlewareConnectFn } from '../../index-efeb437e.js';
3
+ import { ExpressMiddleware } from '../../types/express.mjs';
4
+ import '../../types/http.mjs';
5
+ import 'https';
6
+ import 'http';
7
+ import 'spdy';
8
+ import 'express';
9
+ import 'node-fetch';
10
+ import '../../types/utils.mjs';
11
+ import '@homer0/path-utils';
12
+ import '@homer0/simple-logger';
13
+ import '@homer0/simple-config';
14
+ import '@homer0/events-hub';
15
+
16
+ /**
17
+ * The options to customize the HSTS header value.
18
+ *
19
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security}
20
+ * @group Middlewares/HSTS
21
+ */
22
+ type HSTSMiddlewareOptions = {
23
+ /**
24
+ * The time, in seconds, that the browser should remember that a site is only to be
25
+ * accessed using HTTPS.
26
+ *
27
+ * @default 31536000
28
+ */
29
+ maxAge: number;
30
+ /**
31
+ * Whether or not the rule should apply to all sub domains.
32
+ *
33
+ * @default true
34
+ */
35
+ includeSubDomains: boolean;
36
+ /**
37
+ * Whether or not to include on the major browsers'
38
+ * preload list. This directive is not part of the specification, for more information
39
+ * about it, you should check the MDN documentation for the header.
40
+ *
41
+ * @default false
42
+ */
43
+ preload: boolean;
44
+ };
45
+ /**
46
+ * A partial version of the {@link HSTSMiddlewareOptions}, to be used in the constructor
47
+ * and the middleware creator.
48
+ *
49
+ * @group Middlewares/HSTS
50
+ */
51
+ type HSTSMiddlewarePartialOptions = Partial<HSTSMiddlewareOptions>;
52
+ /**
53
+ * The options for the middleware creator that will create the middleware, or not,
54
+ * depending on the `enabled` option.
55
+ *
56
+ * @group Middlewares/HSTS
57
+ */
58
+ type HSTSMiddlewareSettings = HSTSMiddlewarePartialOptions & {
59
+ /**
60
+ * If it's not `true`, it won't return the middleware.
61
+ */
62
+ enabled?: boolean;
63
+ };
64
+ /**
65
+ * Generates a middleware that includes the HSTS header on the responses.
66
+ *
67
+ * @see {@link https://tools.ietf.org/html/rfc6797}
68
+ * @group Middleware Classes
69
+ * @group Middlewares/HSTS
70
+ * @prettierignore
71
+ */
72
+ declare class HSTS {
73
+ /**
74
+ * The customization options for the header.
75
+ */
76
+ protected readonly _options: HSTSMiddlewareOptions;
77
+ /**
78
+ * The value of the header that will be included in the responses.
79
+ */
80
+ protected readonly _header: string;
81
+ /**
82
+ * @param options The options to construct the class.
83
+ */
84
+ constructor(options?: HSTSMiddlewarePartialOptions);
85
+ /**
86
+ * Generates the middleware that includes the HSTS header on the responses.
87
+ */
88
+ getMiddleware(): ExpressMiddleware;
89
+ /**
90
+ * The customization options.
91
+ */
92
+ get options(): Readonly<HSTSMiddlewareOptions>;
93
+ /**
94
+ * The value of the header that will be included in the responses.
95
+ */
96
+ get header(): string;
97
+ /**
98
+ * Creates the header value based on the customization options.
99
+ */
100
+ protected _buildHeader(): string;
101
+ }
102
+ /**
103
+ * Creates the middleware that includes the HSTS header on the responses.
104
+ *
105
+ * @group Middlewares
106
+ * @group Middlewares/HSTS
107
+ */
108
+ declare const hstsMiddleware: _homer0_jimple.ResourceCreator<"middleware", "connect", (options?: HSTSMiddlewareSettings) => <ContainerType extends Jimpex = Jimpex>(app: ContainerType) => ExpressMiddleware | undefined, MiddlewareConnectFn>;
109
+
110
+ export { HSTS, HSTSMiddlewareOptions, HSTSMiddlewarePartialOptions, HSTSMiddlewareSettings, hstsMiddleware };
@@ -1,16 +1,17 @@
1
1
  import * as _homer0_jimple from '@homer0/jimple';
2
- import { J as Jimpex, R as MiddlewareConnectFn } from '../../jimpex-7eaee271.js';
2
+ import { J as Jimpex, R as MiddlewareConnectFn } from '../../index-b2a04c78.js';
3
3
  import { ExpressMiddleware } from '../../types/express.js';
4
- import '@homer0/events-hub';
5
- import 'express';
6
4
  import '../../types/http.js';
7
5
  import 'https';
8
6
  import 'http';
9
7
  import 'spdy';
8
+ import 'express';
10
9
  import 'node-fetch';
11
- import '@homer0/simple-config';
12
10
  import '../../types/utils.js';
11
+ import '@homer0/path-utils';
13
12
  import '@homer0/simple-logger';
13
+ import '@homer0/simple-config';
14
+ import '@homer0/events-hub';
14
15
 
15
16
  /**
16
17
  * The options to customize the HSTS header value.
@@ -29,8 +29,17 @@ __export(hsts_exports, {
29
29
  module.exports = __toCommonJS(hsts_exports);
30
30
  var import_utils = require("../../utils");
31
31
  class HSTS {
32
+ /**
33
+ * @param options The options to construct the class.
34
+ */
32
35
  constructor(options = {}) {
36
+ /**
37
+ * The customization options for the header.
38
+ */
33
39
  __publicField(this, "_options");
40
+ /**
41
+ * The value of the header that will be included in the responses.
42
+ */
34
43
  __publicField(this, "_header");
35
44
  this._options = {
36
45
  maxAge: 31536e3,
@@ -40,18 +49,30 @@ class HSTS {
40
49
  };
41
50
  this._header = this._buildHeader();
42
51
  }
52
+ /**
53
+ * Generates the middleware that includes the HSTS header on the responses.
54
+ */
43
55
  getMiddleware() {
44
56
  return (_, res, next) => {
45
57
  res.setHeader("Strict-Transport-Security", this._header);
46
58
  next();
47
59
  };
48
60
  }
61
+ /**
62
+ * The customization options.
63
+ */
49
64
  get options() {
50
65
  return { ...this._options };
51
66
  }
67
+ /**
68
+ * The value of the header that will be included in the responses.
69
+ */
52
70
  get header() {
53
71
  return this._header;
54
72
  }
73
+ /**
74
+ * Creates the header value based on the customization options.
75
+ */
55
76
  _buildHeader() {
56
77
  const { maxAge, includeSubDomains, preload } = this._options;
57
78
  const directives = [`max-age=${maxAge}`];