jimpex 8.0.0 → 10.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 (215) hide show
  1. package/CHANGELOG.md +33 -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 +238 -2
  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 +4 -3
  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 +5 -4
  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 +22 -0
  19. package/dist/controllers/common/index.d.ts +5 -4
  20. package/dist/controllers/common/index.js +6 -0
  21. package/dist/controllers/common/statics.d.mts +223 -0
  22. package/dist/controllers/common/statics.d.ts +13 -5
  23. package/dist/controllers/common/statics.js +60 -3
  24. package/dist/controllers/common/statics.js.map +1 -1
  25. package/dist/controllers/index.d.mts +25 -0
  26. package/dist/controllers/index.d.ts +5 -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 +5 -4
  30. package/dist/controllers/utils/gateway.js +155 -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 +235 -3
  36. package/dist/esm/app/jimpex.js.map +1 -1
  37. package/dist/esm/{chunk-T2T6Q22Z.js → chunk-F3FYYIAV.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 +57 -4
  43. package/dist/esm/controllers/common/statics.js.map +1 -1
  44. package/dist/esm/controllers/utils/gateway.js +156 -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 +60 -5
  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/index-Bwf7JHu9.d.mts +1287 -0
  87. package/dist/{jimpex-7eaee271.d.ts → index-C6I3NCC-.d.ts} +15 -6
  88. package/dist/index.d.mts +47 -0
  89. package/dist/index.d.ts +3 -2
  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 +5 -4
  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 +6 -5
  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 +6 -5
  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 +5 -5
  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 +5 -5
  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 +5 -4
  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 +5 -4
  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 +5 -4
  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 +4 -4
  140. package/dist/services/frontend/frontendFs.d.mts +96 -0
  141. package/dist/services/frontend/frontendFs.d.ts +4 -4
  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 +3 -3
  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 +5 -4
  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 +182 -0
  159. package/dist/services/http/http.d.ts +15 -8
  160. package/dist/services/http/http.js +63 -4
  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 +4 -3
  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 +6 -5
  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/express.d.ts +1 -1
  183. package/dist/types/http.d.mts +82 -0
  184. package/dist/types/http.d.ts +5 -2
  185. package/dist/types/http.js.map +1 -1
  186. package/dist/types/index.d.mts +14 -0
  187. package/dist/types/index.d.ts +2 -2
  188. package/dist/types/index.js +9 -0
  189. package/dist/types/options.d.mts +14 -0
  190. package/dist/types/options.d.ts +4 -3
  191. package/dist/types/utils.d.mts +48 -0
  192. package/dist/types/utils.d.ts +1 -1
  193. package/dist/types/wootils.d.mts +4 -0
  194. package/dist/utils/fns/index.d.mts +5 -0
  195. package/dist/utils/fns/index.js +7 -0
  196. package/dist/utils/fns/others.d.mts +17 -0
  197. package/dist/utils/fns/routes.d.mts +39 -0
  198. package/dist/utils/fns/routes.js.map +1 -1
  199. package/dist/utils/fns/statuses.d.mts +45 -0
  200. package/dist/utils/fns/statuses.d.ts +1 -1
  201. package/dist/utils/fns/statuses.js +4 -0
  202. package/dist/utils/fns/statuses.js.map +1 -1
  203. package/dist/utils/fns/text.d.mts +9 -0
  204. package/dist/utils/index.d.mts +19 -0
  205. package/dist/utils/index.d.ts +5 -4
  206. package/dist/utils/index.js +5 -0
  207. package/dist/utils/wrappers.d.mts +14 -0
  208. package/dist/utils/wrappers.d.ts +4 -3
  209. package/package.json +50 -49
  210. package/src/app/jimpex.ts +15 -2
  211. package/src/controllers/common/statics.ts +13 -2
  212. package/src/controllers/utils/gateway.ts +4 -0
  213. package/src/services/http/http.ts +13 -4
  214. package/src/types/http.ts +3 -0
  215. /package/dist/esm/{chunk-T2T6Q22Z.js.map → chunk-F3FYYIAV.js.map} +0 -0
@@ -1,12 +1,16 @@
1
- import * as _homer0_jimple from '@homer0/jimple';
2
- import { ProviderRegisterFn as ProviderRegisterFn$1, GenericCurriedFn, Jimple } from '@homer0/jimple';
3
- import { EventsHub } from '@homer0/events-hub';
4
1
  import { ExpressMiddlewareLike } from './types/express.js';
5
- import { Router, Express } from 'express';
6
2
  import { JimpexServer, JimpexServerInstance, JimpexHTTPSCredentials } from './types/http.js';
7
- import { SimpleConfig } from '@homer0/simple-config';
8
3
  import { NoStringIndex, DeepPartial, DeepReadonly } from './types/utils.js';
4
+ import '@homer0/path-utils';
9
5
  import { SimpleLogger } from '@homer0/simple-logger';
6
+ import { SimpleConfig } from '@homer0/simple-config';
7
+ import { EventsHub } from '@homer0/events-hub';
8
+ import { Router, Express } from 'express';
9
+ import 'node-fetch';
10
+ import 'https';
11
+ import 'http';
12
+ import * as _homer0_jimple from '@homer0/jimple';
13
+ import { ProviderRegisterFn as ProviderRegisterFn$1, GenericCurriedFn, Jimple } from '@homer0/jimple';
10
14
 
11
15
  /**
12
16
  * The base payload the events emitted by the application send.
@@ -1218,6 +1222,11 @@ declare class Jimpex extends Jimple {
1218
1222
  * This method is called just before starting the application.
1219
1223
  */
1220
1224
  protected _setupConfig(): Promise<void>;
1225
+ /**
1226
+ * Loads the ESM modules that are needed by Jimpex. This is called just before the starting
1227
+ * the application so they'll be available for all the services.
1228
+ */
1229
+ protected _loadESMModules(): Promise<void>;
1221
1230
  /**
1222
1231
  * Processes the resources from the mount queue (added with {@link Jimpex.mount} and
1223
1232
  * {@link Jimpex.use}), and adds them to the Express application.
@@ -1275,4 +1284,4 @@ declare class Jimpex extends Jimple {
1275
1284
  */
1276
1285
  declare const jimpex: (options?: DeepPartial<JimpexOptions> | undefined, config?: unknown) => Jimpex;
1277
1286
 
1278
- export { MiddlewareProvider as $, Providers as A, ProviderLike as B, ControllerConnectFn as C, controller as D, EventPayload as E, ControllerCreatorFn as F, controllerCreator as G, Controller as H, ControllerCreator as I, Jimpex as J, ControllerProviderRegisterFn as K, controllerProvider as L, ControllerProviderCreatorFn as M, controllerProviderCreator as N, ControllerProvider as O, ProviderRegisterFn as P, ControllerProviderCreator as Q, MiddlewareConnectFn as R, middleware as S, MiddlewareCreatorFn as T, middlewareCreator as U, Middleware as V, MiddlewareCreator as W, MiddlewareProviderRegisterFn as X, middlewareProvider as Y, MiddlewareProviderCreatorFn as Z, middlewareProviderCreator as _, JimpexEvents as a, MiddlewareProviderCreator as a0, MiddlewareLike as a1, ControllerLike as a2, JimpexEventName as b, JimpexEventPayload as c, JimpexReducerEventTargets as d, JimpexReducerEventPayloads as e, JimpexReducerEventName as f, JimpexReducerEventTarget as g, JimpexReducerEventPayload as h, JimpexEventNameLike as i, jimpex as j, JimpexEventListener as k, Events as l, JimpexConfigOptions as m, JimpexStaticsOptions as n, JimpexExpressOptions as o, JimpexPathOptions as p, JimpexServicesOptions as q, JimpexHealthStatus as r, JimpexHealthCheckFn as s, JimpexOptions as t, JimpexStartCallback as u, provider as v, providerCreator as w, providers as x, Provider as y, ProviderCreator as z };
1287
+ export { type MiddlewareProvider as $, type Providers as A, type ProviderLike as B, type ControllerConnectFn as C, controller as D, type EventPayload as E, type ControllerCreatorFn as F, controllerCreator as G, type Controller as H, type ControllerCreator as I, Jimpex as J, type ControllerProviderRegisterFn as K, controllerProvider as L, type ControllerProviderCreatorFn as M, controllerProviderCreator as N, type ControllerProvider as O, type ProviderRegisterFn as P, type ControllerProviderCreator as Q, type MiddlewareConnectFn as R, middleware as S, type MiddlewareCreatorFn as T, middlewareCreator as U, type Middleware as V, type MiddlewareCreator as W, type MiddlewareProviderRegisterFn as X, middlewareProvider as Y, type MiddlewareProviderCreatorFn as Z, middlewareProviderCreator as _, type JimpexEvents as a, type MiddlewareProviderCreator as a0, type MiddlewareLike as a1, type ControllerLike as a2, type JimpexEventName as b, type JimpexEventPayload as c, type JimpexReducerEventTargets as d, type JimpexReducerEventPayloads as e, type JimpexReducerEventName as f, type JimpexReducerEventTarget as g, type JimpexReducerEventPayload as h, type JimpexEventNameLike as i, jimpex as j, type JimpexEventListener as k, type Events as l, type JimpexConfigOptions as m, type JimpexStaticsOptions as n, type JimpexExpressOptions as o, type JimpexPathOptions as p, type JimpexServicesOptions as q, type JimpexHealthStatus as r, type JimpexHealthCheckFn as s, type JimpexOptions as t, type JimpexStartCallback as u, provider as v, providerCreator as w, providers as x, type Provider as y, type ProviderCreator as z };
@@ -0,0 +1,47 @@
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-Bwf7JHu9.mjs';
2
+ export { AsyncExpressMiddleware, ExpressErrorHandler, ExpressMiddleware, ExpressMiddlewareLike, RouterMethod } from './types/express.mjs';
3
+ export { JimpexHTTP2Options, JimpexHTTPSCredentials, JimpexHTTPSOptions, JimpexServer, JimpexServerInstance, NodeFetch } 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 'mime';
46
+ import 'fs/promises';
47
+ import '@homer0/deferred';
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
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-C6I3NCC-.js';
2
2
  export { AsyncExpressMiddleware, ExpressErrorHandler, ExpressMiddleware, ExpressMiddlewareLike, RouterMethod } from './types/express.js';
3
- export { JimpexHTTP2Options, JimpexHTTPSCredentials, JimpexHTTPSOptions, JimpexServer, JimpexServerInstance } from './types/http.js';
3
+ export { JimpexHTTP2Options, JimpexHTTPSCredentials, JimpexHTTPSOptions, JimpexServer, JimpexServerInstance, NodeFetch } from './types/http.js';
4
4
  export { DeepPartial, DeepReadonly, Dict, NoStringIndex } from './types/utils.js';
5
5
  export { PathUtils } from '@homer0/path-utils';
6
6
  export { SimpleLogger as Logger } from '@homer0/simple-logger';
@@ -42,5 +42,6 @@ export { EnsureBearerConstructorOptions, EnsureBearerToken, EnsureBearerTokenErr
42
42
  export { default as statuses } from 'statuses';
43
43
  import '@homer0/jimple';
44
44
  import 'spdy';
45
+ import 'mime';
45
46
  import 'fs/promises';
46
47
  import '@homer0/deferred';
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-Bwf7JHu9.mjs';
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 'node-fetch';
15
+ import 'express';
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, type ErrorHandlerConstructorOptions, type ErrorHandlerOptions, type ErrorHandlerPartialOptions, type 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-C6I3NCC-.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';
16
14
  import 'node-fetch';
15
+ import 'express';
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
  /**
@@ -128,4 +129,4 @@ declare class ErrorHandler {
128
129
  */
129
130
  declare const errorHandlerMiddleware: _homer0_jimple.ResourceCreator<"middleware", "connect", (options?: ErrorHandlerPartialOptions) => <ContainerType extends Jimpex = Jimpex>(app: ContainerType) => ExpressErrorHandler, MiddlewareConnectFn>;
130
131
 
131
- export { ErrorHandler, ErrorHandlerConstructorOptions, ErrorHandlerOptions, ErrorHandlerPartialOptions, ErrorHandlerResponseOptions, errorHandlerMiddleware };
132
+ export { ErrorHandler, type ErrorHandlerConstructorOptions, type ErrorHandlerOptions, type ErrorHandlerPartialOptions, type ErrorHandlerResponseOptions, errorHandlerMiddleware };
@@ -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-Bwf7JHu9.mjs';
3
+ import { ExpressMiddleware } from '../../types/express.mjs';
4
+ import '../../types/http.mjs';
5
+ import 'https';
6
+ import 'http';
7
+ import 'spdy';
8
+ import 'node-fetch';
9
+ import 'express';
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, type ForceHTTPSOptions, type 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-C6I3NCC-.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';
10
8
  import 'node-fetch';
11
- import '@homer0/simple-config';
9
+ import 'express';
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.
@@ -65,4 +66,4 @@ declare class ForceHTTPS {
65
66
  */
66
67
  declare const forceHTTPSMiddleware: _homer0_jimple.ResourceCreator<"middleware", "connect", (options?: ForceHTTPSPartialOptions) => <ContainerType extends Jimpex = Jimpex>(app: ContainerType) => ExpressMiddleware | undefined, MiddlewareConnectFn>;
67
68
 
68
- export { ForceHTTPS, ForceHTTPSOptions, ForceHTTPSPartialOptions, forceHTTPSMiddleware };
69
+ export { ForceHTTPS, type ForceHTTPSOptions, type ForceHTTPSPartialOptions, forceHTTPSMiddleware };
@@ -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-Bwf7JHu9.mjs';
3
+ import { ExpressMiddleware } from '../../types/express.mjs';
4
+ import '../../types/http.mjs';
5
+ import 'https';
6
+ import 'http';
7
+ import 'spdy';
8
+ import 'node-fetch';
9
+ import 'express';
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, type HSTSMiddlewareOptions, type HSTSMiddlewarePartialOptions, type HSTSMiddlewareSettings, hstsMiddleware };