@digitaldefiance/node-express-suite 1.3.23 → 1.3.25
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/README.md +8 -0
- package/package.json +1 -1
- package/src/application.d.ts +4 -2
- package/src/application.d.ts.map +1 -1
- package/src/application.js +5 -3
- package/src/application.js.map +1 -1
- package/src/middlewares.d.ts +12 -15
- package/src/middlewares.d.ts.map +1 -1
- package/src/middlewares.js +49 -21
- package/src/middlewares.js.map +1 -1
package/README.md
CHANGED
|
@@ -663,6 +663,14 @@ For issues and questions:
|
|
|
663
663
|
|
|
664
664
|
## ChangeLog
|
|
665
665
|
|
|
666
|
+
### Version 1.3.25
|
|
667
|
+
|
|
668
|
+
- Refactor middlewares to be more extensible
|
|
669
|
+
|
|
670
|
+
### Version 1.3.24
|
|
671
|
+
|
|
672
|
+
- AppRouter factory to make AppRouter extensible as well
|
|
673
|
+
|
|
666
674
|
### Version 1.3.23
|
|
667
675
|
|
|
668
676
|
- Make vars protected
|
package/package.json
CHANGED
package/src/application.d.ts
CHANGED
|
@@ -5,16 +5,18 @@ import { IBaseDocument } from './documents/base';
|
|
|
5
5
|
import { Environment } from './environment';
|
|
6
6
|
import { IApplication, ICSPConfig, IFailableResult } from './interfaces';
|
|
7
7
|
import { IConstants } from './interfaces/constants';
|
|
8
|
+
import { AppRouter } from './routers/app';
|
|
8
9
|
import { BaseRouter } from './routers/base';
|
|
9
10
|
import { SchemaMap } from './types';
|
|
10
|
-
export declare class Application<T, I extends Types.ObjectId | string, TInitResults, TModelDocs extends Record<string, IBaseDocument<any>>, TBaseDocument extends IBaseDocument<T, I> = IBaseDocument<T, I>, TEnvironment extends Environment = Environment, TConstants extends IConstants = IConstants> extends BaseApplication<TModelDocs, TInitResults, TConstants> implements IApplication<T, I, TBaseDocument, TEnvironment, TConstants> {
|
|
11
|
+
export declare class Application<T, I extends Types.ObjectId | string, TInitResults, TModelDocs extends Record<string, IBaseDocument<any>>, TBaseDocument extends IBaseDocument<T, I> = IBaseDocument<T, I>, TEnvironment extends Environment = Environment, TConstants extends IConstants = IConstants, TAppRouter extends AppRouter = AppRouter> extends BaseApplication<TModelDocs, TInitResults, TConstants> implements IApplication<T, I, TBaseDocument, TEnvironment, TConstants> {
|
|
11
12
|
readonly expressApp: ExpressApplication;
|
|
12
13
|
private server;
|
|
13
14
|
private readonly _cspConfig;
|
|
14
15
|
private readonly _apiRouterFactory;
|
|
16
|
+
private readonly _appRouterFactory;
|
|
15
17
|
private _apiRouter?;
|
|
16
18
|
get environment(): TEnvironment;
|
|
17
|
-
constructor(environment: TEnvironment, apiRouterFactory: (app:
|
|
19
|
+
constructor(environment: TEnvironment, apiRouterFactory: (app: IApplication<T, I, TBaseDocument, TEnvironment, TConstants>) => BaseRouter, schemaMapFactory: (connection: mongoose.Connection) => SchemaMap<TModelDocs>, databaseInitFunction: (application: BaseApplication<TModelDocs, TInitResults>) => Promise<IFailableResult<TInitResults>>, initResultHashFunction: (initResults: TInitResults) => string, cspConfig?: ICSPConfig, constants?: TConstants, appRouterFactory?: (apiRouter: BaseRouter) => TAppRouter);
|
|
18
20
|
start(mongoUri?: string): Promise<void>;
|
|
19
21
|
stop(): Promise<void>;
|
|
20
22
|
}
|
package/src/application.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/application.ts"],"names":[],"mappings":"AAQA,OAAgB,EACd,WAAW,IAAI,kBAAkB,EAIlC,MAAM,SAAS,CAAC;AAIjB,OAAO,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/application.ts"],"names":[],"mappings":"AAQA,OAAgB,EACd,WAAW,IAAI,kBAAkB,EAIlC,MAAM,SAAS,CAAC;AAIjB,OAAO,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAQpC,qBAAa,WAAW,CACpB,CAAC,EACD,CAAC,SAAS,KAAK,CAAC,QAAQ,GAAG,MAAM,EACjC,YAAY,EACZ,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EACrD,aAAa,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/D,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,UAAU,SAAS,UAAU,GAAG,UAAU,EAC1C,UAAU,SAAS,SAAS,GAAG,SAAS,CAE1C,SAAQ,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAC5D,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,CAAC;IAEtE,SAAgB,UAAU,EAAE,kBAAkB,CAAC;IAC/C,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmF;IACrH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwC;IAC1E,OAAO,CAAC,UAAU,CAAC,CAAa;IAEhC,IAAoB,WAAW,IAAI,YAAY,CAE9C;gBAGC,WAAW,EAAE,YAAY,EACzB,gBAAgB,EAAE,CAChB,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,CAAC,KAC7D,UAAU,EACf,gBAAgB,EAAE,CAChB,UAAU,EAAE,QAAQ,CAAC,UAAU,KAC5B,SAAS,CAAC,UAAU,CAAC,EAC1B,oBAAoB,EAAE,CACpB,WAAW,EAAE,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,KACnD,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,EAC3C,sBAAsB,EAAE,CAAC,WAAW,EAAE,YAAY,KAAK,MAAM,EAC7D,SAAS,GAAE,UAWV,EACD,SAAS,GAAE,UAAoC,EAC/C,gBAAgB,GAAE,CAAC,SAAS,EAAE,UAAU,KAAK,UAAkE;IAgB3F,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwHvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAyC5C"}
|
package/src/application.js
CHANGED
|
@@ -17,6 +17,7 @@ class Application extends application_base_1.BaseApplication {
|
|
|
17
17
|
server = null;
|
|
18
18
|
_cspConfig;
|
|
19
19
|
_apiRouterFactory;
|
|
20
|
+
_appRouterFactory;
|
|
20
21
|
_apiRouter;
|
|
21
22
|
get environment() {
|
|
22
23
|
return super.environment;
|
|
@@ -32,9 +33,10 @@ class Application extends application_base_1.BaseApplication {
|
|
|
32
33
|
fontSrc: [],
|
|
33
34
|
frameSrc: [],
|
|
34
35
|
},
|
|
35
|
-
}, constants = suite_core_lib_1.Constants) {
|
|
36
|
+
}, constants = suite_core_lib_1.Constants, appRouterFactory = (apiRouter) => new app_1.AppRouter(apiRouter)) {
|
|
36
37
|
super(environment, schemaMapFactory, databaseInitFunction, initResultHashFunction, constants);
|
|
37
38
|
this._apiRouterFactory = apiRouterFactory;
|
|
39
|
+
this._appRouterFactory = appRouterFactory;
|
|
38
40
|
this.expressApp = (0, express_1.default)();
|
|
39
41
|
this.server = null;
|
|
40
42
|
this._cspConfig = cspConfig;
|
|
@@ -44,8 +46,8 @@ class Application extends application_base_1.BaseApplication {
|
|
|
44
46
|
await super.start(mongoUri, true);
|
|
45
47
|
try {
|
|
46
48
|
this._apiRouter = this._apiRouterFactory(this);
|
|
47
|
-
middlewares_1.
|
|
48
|
-
const appRouter =
|
|
49
|
+
(0, middlewares_1.initMiddleware)(this.expressApp, this._cspConfig.corsWhitelist, this._cspConfig.csp);
|
|
50
|
+
const appRouter = this._appRouterFactory(this._apiRouter);
|
|
49
51
|
appRouter.init(this.expressApp);
|
|
50
52
|
this.expressApp.use((err, req, res, next) => {
|
|
51
53
|
const handleableError = err instanceof i18n_lib_1.HandleableError
|
package/src/application.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/application.ts"],"names":[],"mappings":";;;;AAAA,wDAA4D;AAC5D,oEAMyC;AACzC,8DAKiB;AACjB,2BAAkC;AAElC,iCAAqC;AAErC,+BAAsD;AACtD,yDAAqD;AAKrD,+
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/application.ts"],"names":[],"mappings":"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"}
|
package/src/middlewares.d.ts
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { Application } from 'express';
|
|
2
|
+
import { HelmetOptions } from 'helmet';
|
|
2
3
|
import { IncomingMessage, ServerResponse } from 'http';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
fontSrc: (string | ((req: IncomingMessage, res: ServerResponse) => string))[];
|
|
15
|
-
frameSrc: (string | ((req: IncomingMessage, res: ServerResponse) => string))[];
|
|
16
|
-
}): void;
|
|
17
|
-
}
|
|
4
|
+
type CSPDef = {
|
|
5
|
+
defaultSrc: (string | ((req: IncomingMessage, res: ServerResponse) => string))[];
|
|
6
|
+
imgSrc: (string | ((req: IncomingMessage, res: ServerResponse) => string))[];
|
|
7
|
+
connectSrc: (string | ((req: IncomingMessage, res: ServerResponse) => string))[];
|
|
8
|
+
scriptSrc: (string | ((req: IncomingMessage, res: ServerResponse) => string))[];
|
|
9
|
+
styleSrc: (string | ((req: IncomingMessage, res: ServerResponse) => string))[];
|
|
10
|
+
fontSrc: (string | ((req: IncomingMessage, res: ServerResponse) => string))[];
|
|
11
|
+
frameSrc: (string | ((req: IncomingMessage, res: ServerResponse) => string))[];
|
|
12
|
+
};
|
|
13
|
+
export declare const initMiddleware: (app: Application, corsWhitelist: string[], csp: CSPDef | HelmetOptions) => void;
|
|
14
|
+
export {};
|
|
18
15
|
//# sourceMappingURL=middlewares.d.ts.map
|
package/src/middlewares.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/middlewares.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EAMZ,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/middlewares.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EAMZ,MAAM,SAAS,CAAC;AACjB,OAAe,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AA8BvD,KAAK,MAAM,GAAG;IACR,UAAU,EAAE,CACR,MAAM,GACN,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,CAC1D,EAAE,CAAC;IACJ,MAAM,EAAE,CACJ,MAAM,GACN,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,CAC1D,EAAE,CAAC;IACJ,UAAU,EAAE,CACR,MAAM,GACN,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,CAC1D,EAAE,CAAC;IACJ,SAAS,EAAE,CACP,MAAM,GACN,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,CAC1D,EAAE,CAAC;IACJ,QAAQ,EAAE,CACN,MAAM,GACN,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,CAC1D,EAAE,CAAC;IACJ,OAAO,EAAE,CACL,MAAM,GACN,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,CAC1D,EAAE,CAAC;IACJ,QAAQ,EAAE,CACN,MAAM,GACN,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,CAC1D,EAAE,CAAC;CACL,CAAC;AAiCN,eAAO,MAAM,cAAc,GACvB,KAAK,WAAW,EAChB,eAAe,MAAM,EAAE,EACvB,KAAK,MAAM,GAAG,aAAa,KAC1B,IA6CF,CAAC"}
|
package/src/middlewares.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.initMiddleware = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const cors_1 = tslib_1.__importDefault(require("cors"));
|
|
6
6
|
const crypto_1 = require("crypto");
|
|
@@ -27,18 +27,40 @@ const corsOptionsDelegate = (corsWhitelist) => {
|
|
|
27
27
|
callback(null, corsOptions);
|
|
28
28
|
};
|
|
29
29
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
30
|
+
const isCSPDef = (obj) => {
|
|
31
|
+
return (obj &&
|
|
32
|
+
'defaultSrc' in obj &&
|
|
33
|
+
'imgSrc' in obj &&
|
|
34
|
+
'connectSrc' in obj &&
|
|
35
|
+
'scriptSrc' in obj &&
|
|
36
|
+
'styleSrc' in obj &&
|
|
37
|
+
'fontSrc' in obj &&
|
|
38
|
+
'frameSrc' in obj &&
|
|
39
|
+
Array.isArray(obj.defaultSrc) &&
|
|
40
|
+
Array.isArray(obj.imgSrc) &&
|
|
41
|
+
Array.isArray(obj.connectSrc) &&
|
|
42
|
+
Array.isArray(obj.scriptSrc) &&
|
|
43
|
+
Array.isArray(obj.styleSrc) &&
|
|
44
|
+
Array.isArray(obj.fontSrc) &&
|
|
45
|
+
Array.isArray(obj.frameSrc));
|
|
46
|
+
};
|
|
47
|
+
const isHelmetOptions = (obj) => {
|
|
48
|
+
// A very basic check; in real scenarios, you might want to be more thorough
|
|
49
|
+
return obj && typeof obj === 'object' && (('contentSecurityPolicy' in obj) ||
|
|
50
|
+
('crossOriginEmbedderPolicy' in obj) ||
|
|
51
|
+
('crossOriginOpenerPolicy' in obj) ||
|
|
52
|
+
('crossOriginResourcePolicy' in obj) ||
|
|
53
|
+
('originAgentCluster' in obj) ||
|
|
54
|
+
('referrerPolicy' in obj));
|
|
55
|
+
};
|
|
56
|
+
const initMiddleware = (app, corsWhitelist, csp) => {
|
|
57
|
+
// Helmet helps you secure your Express apps by setting various HTTP headers
|
|
58
|
+
// CSP nonce
|
|
59
|
+
app.use((req, res, next) => {
|
|
60
|
+
res.locals['cspNonce'] = (0, crypto_1.randomBytes)(32).toString('hex');
|
|
61
|
+
next();
|
|
62
|
+
});
|
|
63
|
+
if (isCSPDef(csp)) {
|
|
42
64
|
app.use((0, helmet_1.default)({
|
|
43
65
|
contentSecurityPolicy: {
|
|
44
66
|
directives: {
|
|
@@ -62,13 +84,19 @@ class Middlewares {
|
|
|
62
84
|
},
|
|
63
85
|
},
|
|
64
86
|
}));
|
|
65
|
-
// Enable CORS
|
|
66
|
-
app.use((0, cors_1.default)(corsOptionsDelegate(corsWhitelist)));
|
|
67
|
-
// Parse incoming requests with JSON payloads
|
|
68
|
-
app.use((0, express_1.json)());
|
|
69
|
-
// Parse incoming requests with urlencoded payloads
|
|
70
|
-
app.use((0, express_1.urlencoded)({ extended: true }));
|
|
71
87
|
}
|
|
72
|
-
|
|
73
|
-
|
|
88
|
+
else if (isHelmetOptions(csp)) {
|
|
89
|
+
app.use((0, helmet_1.default)(csp));
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
throw new Error('Invalid CSP or Helmet options provided.');
|
|
93
|
+
}
|
|
94
|
+
// Enable CORS
|
|
95
|
+
app.use((0, cors_1.default)(corsOptionsDelegate(corsWhitelist)));
|
|
96
|
+
// Parse incoming requests with JSON payloads
|
|
97
|
+
app.use((0, express_1.json)());
|
|
98
|
+
// Parse incoming requests with urlencoded payloads
|
|
99
|
+
app.use((0, express_1.urlencoded)({ extended: true }));
|
|
100
|
+
};
|
|
101
|
+
exports.initMiddleware = initMiddleware;
|
|
74
102
|
//# sourceMappingURL=middlewares.js.map
|
package/src/middlewares.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/middlewares.ts"],"names":[],"mappings":";;;;AAAA,wDAAwB;AACxB,mCAAqC;AACrC,qCAOiB;AACjB,
|
|
1
|
+
{"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/middlewares.ts"],"names":[],"mappings":"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"}
|