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.
- package/CHANGELOG.md +33 -0
- package/README.md +2 -2
- package/dist/app/index.d.mts +14 -0
- package/dist/app/index.d.ts +5 -4
- package/dist/app/index.js +4 -0
- package/dist/app/jimpex.d.mts +14 -0
- package/dist/app/jimpex.d.ts +3 -2
- package/dist/app/jimpex.js +238 -2
- package/dist/app/jimpex.js.map +1 -1
- package/dist/controllers/common/config.d.mts +79 -0
- package/dist/controllers/common/config.d.ts +4 -3
- package/dist/controllers/common/config.js +18 -0
- package/dist/controllers/common/config.js.map +1 -1
- package/dist/controllers/common/health.d.mts +83 -0
- package/dist/controllers/common/health.d.ts +5 -4
- package/dist/controllers/common/health.js +18 -0
- package/dist/controllers/common/health.js.map +1 -1
- package/dist/controllers/common/index.d.mts +22 -0
- package/dist/controllers/common/index.d.ts +5 -4
- package/dist/controllers/common/index.js +6 -0
- package/dist/controllers/common/statics.d.mts +223 -0
- package/dist/controllers/common/statics.d.ts +13 -5
- package/dist/controllers/common/statics.js +60 -3
- package/dist/controllers/common/statics.js.map +1 -1
- package/dist/controllers/index.d.mts +25 -0
- package/dist/controllers/index.d.ts +5 -4
- package/dist/controllers/index.js +5 -0
- package/dist/controllers/utils/gateway.d.mts +725 -0
- package/dist/controllers/utils/gateway.d.ts +5 -4
- package/dist/controllers/utils/gateway.js +155 -0
- package/dist/controllers/utils/gateway.js.map +1 -1
- package/dist/controllers/utils/index.d.mts +17 -0
- package/dist/controllers/utils/index.d.ts +4 -3
- package/dist/controllers/utils/index.js +4 -0
- package/dist/esm/app/jimpex.js +235 -3
- package/dist/esm/app/jimpex.js.map +1 -1
- package/dist/esm/{chunk-T2T6Q22Z.js → chunk-F3FYYIAV.js} +1 -1
- package/dist/esm/controllers/common/config.js +19 -1
- package/dist/esm/controllers/common/config.js.map +1 -1
- package/dist/esm/controllers/common/health.js +19 -1
- package/dist/esm/controllers/common/health.js.map +1 -1
- package/dist/esm/controllers/common/statics.js +57 -4
- package/dist/esm/controllers/common/statics.js.map +1 -1
- package/dist/esm/controllers/utils/gateway.js +156 -1
- package/dist/esm/controllers/utils/gateway.js.map +1 -1
- package/dist/esm/middlewares/common/errorHandler.js +25 -1
- package/dist/esm/middlewares/common/errorHandler.js.map +1 -1
- package/dist/esm/middlewares/common/forceHTTPS.js +13 -1
- package/dist/esm/middlewares/common/forceHTTPS.js.map +1 -1
- package/dist/esm/middlewares/common/hsts.js +22 -1
- package/dist/esm/middlewares/common/hsts.js.map +1 -1
- package/dist/esm/middlewares/html/fastHTML.js +55 -1
- package/dist/esm/middlewares/html/fastHTML.js.map +1 -1
- package/dist/esm/middlewares/html/showHTML.js +33 -1
- package/dist/esm/middlewares/html/showHTML.js.map +1 -1
- package/dist/esm/middlewares/utils/versionValidator.js +35 -1
- package/dist/esm/middlewares/utils/versionValidator.js.map +1 -1
- package/dist/esm/services/common/appError.js +48 -2
- package/dist/esm/services/common/appError.js.map +1 -1
- package/dist/esm/services/common/httpError.js +10 -1
- package/dist/esm/services/common/httpError.js.map +1 -1
- package/dist/esm/services/common/index.js +1 -1
- package/dist/esm/services/common/sendFile.js +1 -1
- package/dist/esm/services/frontend/frontendFs.js +29 -1
- package/dist/esm/services/frontend/frontendFs.js.map +1 -1
- package/dist/esm/services/frontend/index.js +1 -1
- package/dist/esm/services/html/htmlGenerator.js +51 -1
- package/dist/esm/services/html/htmlGenerator.js.map +1 -1
- package/dist/esm/services/html/index.js +1 -1
- package/dist/esm/services/http/apiClient.js +27 -1
- package/dist/esm/services/http/apiClient.js.map +1 -1
- package/dist/esm/services/http/http.js +60 -5
- package/dist/esm/services/http/http.js.map +1 -1
- package/dist/esm/services/http/index.js +1 -1
- package/dist/esm/services/http/responsesBuilder.js +49 -2
- package/dist/esm/services/http/responsesBuilder.js.map +1 -1
- package/dist/esm/services/utils/ensureBearerToken.js +17 -1
- package/dist/esm/services/utils/ensureBearerToken.js.map +1 -1
- package/dist/esm/services/utils/index.js +1 -1
- package/dist/esm/utils/fns/others.js +1 -1
- package/dist/esm/utils/fns/routes.js +1 -1
- package/dist/esm/utils/fns/routes.js.map +1 -1
- package/dist/esm/utils/fns/statuses.js +1 -1
- package/dist/esm/utils/fns/text.js +1 -1
- package/dist/esm/utils/wrappers.js +1 -1
- package/dist/index-Bwf7JHu9.d.mts +1287 -0
- package/dist/{jimpex-7eaee271.d.ts → index-C6I3NCC-.d.ts} +15 -6
- package/dist/index.d.mts +47 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +9 -0
- package/dist/middlewares/common/errorHandler.d.mts +132 -0
- package/dist/middlewares/common/errorHandler.d.ts +5 -4
- package/dist/middlewares/common/errorHandler.js +24 -0
- package/dist/middlewares/common/errorHandler.js.map +1 -1
- package/dist/middlewares/common/forceHTTPS.d.mts +69 -0
- package/dist/middlewares/common/forceHTTPS.d.ts +6 -5
- package/dist/middlewares/common/forceHTTPS.js +12 -0
- package/dist/middlewares/common/forceHTTPS.js.map +1 -1
- package/dist/middlewares/common/hsts.d.mts +110 -0
- package/dist/middlewares/common/hsts.d.ts +6 -5
- package/dist/middlewares/common/hsts.js +21 -0
- package/dist/middlewares/common/hsts.js.map +1 -1
- package/dist/middlewares/common/index.d.mts +22 -0
- package/dist/middlewares/common/index.d.ts +4 -3
- package/dist/middlewares/common/index.js +6 -0
- package/dist/middlewares/html/fastHTML.d.mts +180 -0
- package/dist/middlewares/html/fastHTML.d.ts +5 -5
- package/dist/middlewares/html/fastHTML.js +54 -0
- package/dist/middlewares/html/fastHTML.js.map +1 -1
- package/dist/middlewares/html/index.d.mts +21 -0
- package/dist/middlewares/html/index.d.ts +4 -4
- package/dist/middlewares/html/index.js +5 -0
- package/dist/middlewares/html/showHTML.d.mts +127 -0
- package/dist/middlewares/html/showHTML.d.ts +5 -5
- package/dist/middlewares/html/showHTML.js +32 -0
- package/dist/middlewares/html/showHTML.js.map +1 -1
- package/dist/middlewares/index.d.mts +30 -0
- package/dist/middlewares/index.d.ts +4 -4
- package/dist/middlewares/index.js +6 -0
- package/dist/middlewares/utils/index.d.mts +20 -0
- package/dist/middlewares/utils/index.d.ts +4 -3
- package/dist/middlewares/utils/index.js +4 -0
- package/dist/middlewares/utils/versionValidator.d.mts +215 -0
- package/dist/middlewares/utils/versionValidator.d.ts +5 -4
- package/dist/middlewares/utils/versionValidator.js +34 -0
- package/dist/middlewares/utils/versionValidator.js.map +1 -1
- package/dist/services/common/appError.d.mts +139 -0
- package/dist/services/common/appError.d.ts +5 -4
- package/dist/services/common/appError.js +47 -1
- package/dist/services/common/appError.js.map +1 -1
- package/dist/services/common/httpError.d.mts +80 -0
- package/dist/services/common/httpError.d.ts +5 -4
- package/dist/services/common/httpError.js +9 -0
- package/dist/services/common/httpError.js.map +1 -1
- package/dist/services/common/index.d.mts +47 -0
- package/dist/services/common/index.d.ts +4 -4
- package/dist/services/common/index.js +4 -1
- package/dist/services/common/sendFile.d.mts +102 -0
- package/dist/services/common/sendFile.d.ts +4 -4
- package/dist/services/frontend/frontendFs.d.mts +96 -0
- package/dist/services/frontend/frontendFs.d.ts +4 -4
- package/dist/services/frontend/frontendFs.js +32 -0
- package/dist/services/frontend/frontendFs.js.map +1 -1
- package/dist/services/frontend/index.d.mts +40 -0
- package/dist/services/frontend/index.d.ts +4 -4
- package/dist/services/frontend/index.js +2 -1
- package/dist/services/html/htmlGenerator.d.mts +237 -0
- package/dist/services/html/htmlGenerator.d.ts +3 -3
- package/dist/services/html/htmlGenerator.js +50 -0
- package/dist/services/html/htmlGenerator.js.map +1 -1
- package/dist/services/html/index.d.mts +43 -0
- package/dist/services/html/index.d.ts +4 -4
- package/dist/services/html/index.js +2 -1
- package/dist/services/http/apiClient.d.mts +170 -0
- package/dist/services/http/apiClient.d.ts +5 -4
- package/dist/services/http/apiClient.js +26 -0
- package/dist/services/http/apiClient.js.map +1 -1
- package/dist/services/http/http.d.mts +182 -0
- package/dist/services/http/http.d.ts +15 -8
- package/dist/services/http/http.js +63 -4
- package/dist/services/http/http.js.map +1 -1
- package/dist/services/http/index.d.mts +51 -0
- package/dist/services/http/index.d.ts +4 -3
- package/dist/services/http/index.js +4 -1
- package/dist/services/http/responsesBuilder.d.mts +179 -0
- package/dist/services/http/responsesBuilder.d.ts +4 -3
- package/dist/services/http/responsesBuilder.js +48 -1
- package/dist/services/http/responsesBuilder.js.map +1 -1
- package/dist/services/index.d.mts +33 -0
- package/dist/services/index.d.ts +4 -4
- package/dist/services/index.js +8 -0
- package/dist/services/utils/ensureBearerToken.d.mts +158 -0
- package/dist/services/utils/ensureBearerToken.d.ts +6 -5
- package/dist/services/utils/ensureBearerToken.js +16 -0
- package/dist/services/utils/ensureBearerToken.js.map +1 -1
- package/dist/services/utils/index.d.mts +44 -0
- package/dist/services/utils/index.d.ts +4 -3
- package/dist/services/utils/index.js +2 -1
- package/dist/types/events.d.mts +14 -0
- package/dist/types/events.d.ts +5 -4
- package/dist/types/express.d.mts +10 -0
- package/dist/types/express.d.ts +1 -1
- package/dist/types/http.d.mts +82 -0
- package/dist/types/http.d.ts +5 -2
- package/dist/types/http.js.map +1 -1
- package/dist/types/index.d.mts +14 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +9 -0
- package/dist/types/options.d.mts +14 -0
- package/dist/types/options.d.ts +4 -3
- package/dist/types/utils.d.mts +48 -0
- package/dist/types/utils.d.ts +1 -1
- package/dist/types/wootils.d.mts +4 -0
- package/dist/utils/fns/index.d.mts +5 -0
- package/dist/utils/fns/index.js +7 -0
- package/dist/utils/fns/others.d.mts +17 -0
- package/dist/utils/fns/routes.d.mts +39 -0
- package/dist/utils/fns/routes.js.map +1 -1
- package/dist/utils/fns/statuses.d.mts +45 -0
- package/dist/utils/fns/statuses.d.ts +1 -1
- package/dist/utils/fns/statuses.js +4 -0
- package/dist/utils/fns/statuses.js.map +1 -1
- package/dist/utils/fns/text.d.mts +9 -0
- package/dist/utils/index.d.mts +19 -0
- package/dist/utils/index.d.ts +5 -4
- package/dist/utils/index.js +5 -0
- package/dist/utils/wrappers.d.mts +14 -0
- package/dist/utils/wrappers.d.ts +4 -3
- package/package.json +50 -49
- package/src/app/jimpex.ts +15 -2
- package/src/controllers/common/statics.ts +13 -2
- package/src/controllers/utils/gateway.ts +4 -0
- package/src/services/http/http.ts +13 -4
- package/src/types/http.ts +3 -0
- /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 };
|
package/dist/index.d.mts
ADDED
|
@@ -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 './
|
|
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 '../../
|
|
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,
|
|
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 '../../
|
|
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 '
|
|
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,
|
|
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 };
|