@digitaldefiance/node-express-suite 1.3.24 → 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 +4 -0
- package/package.json +1 -1
- package/src/application.js +1 -1
- 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
package/package.json
CHANGED
package/src/application.js
CHANGED
|
@@ -46,7 +46,7 @@ class Application extends application_base_1.BaseApplication {
|
|
|
46
46
|
await super.start(mongoUri, true);
|
|
47
47
|
try {
|
|
48
48
|
this._apiRouter = this._apiRouterFactory(this);
|
|
49
|
-
middlewares_1.
|
|
49
|
+
(0, middlewares_1.initMiddleware)(this.expressApp, this._cspConfig.corsWhitelist, this._cspConfig.csp);
|
|
50
50
|
const appRouter = this._appRouterFactory(this._apiRouter);
|
|
51
51
|
appRouter.init(this.expressApp);
|
|
52
52
|
this.expressApp.use((err, req, res, next) => {
|
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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"}
|