@digitaldefiance/node-express-suite 1.3.21 → 1.3.22
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/routers/app.d.ts +9 -1
- package/src/routers/app.d.ts.map +1 -1
- package/src/routers/app.js +82 -41
- package/src/routers/app.js.map +1 -1
package/README.md
CHANGED
package/package.json
CHANGED
package/src/routers/app.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Application } from 'express';
|
|
1
|
+
import { Application, Request, Response, NextFunction } from 'express';
|
|
2
2
|
import { Types } from 'mongoose';
|
|
3
3
|
import { IBaseDocument } from '../documents';
|
|
4
4
|
import { Environment } from '../environment';
|
|
@@ -18,6 +18,14 @@ export declare class AppRouter<TApplication extends IApplication<any, Types.Obje
|
|
|
18
18
|
private readonly application;
|
|
19
19
|
constructor(apiRouter: BaseRouter<TApplication>);
|
|
20
20
|
getAssetFilename(assetDir: string, pattern: RegExp): string | undefined;
|
|
21
|
+
protected getBaseViewLocals(req: Request, res: Response): Record<string, unknown>;
|
|
22
|
+
protected renderTemplate(req: Request, res: Response, next: NextFunction, template: string, locals: Record<string, unknown>): void;
|
|
23
|
+
protected createViewRenderer(template: string, localsFactory?: (req: Request, res: Response) => Record<string, unknown>): (req: Request, res: Response, next: NextFunction) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Override to register additional routes (e.g. other EJS pages) before the index catch-all.
|
|
26
|
+
*/
|
|
27
|
+
protected registerAdditionalRenderHooks(app: Application): void;
|
|
28
|
+
renderIndex(req: Request, res: Response, next: NextFunction): void;
|
|
21
29
|
/**
|
|
22
30
|
* Initialize the application router
|
|
23
31
|
* @param app Express application
|
package/src/routers/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/routers/app.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/routers/app.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,WAAW,EAEX,OAAO,EACP,QAAQ,EACR,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAOpC;;;GAGG;AACH,qBAAa,SAAS,CACpB,YAAY,SAAS,YAAY,CAC/B,GAAG,EACH,KAAK,CAAC,QAAQ,EACd,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,EAClC,WAAW,EACX,UAAU,CACX,GAAG,YAAY,CACd,GAAG,EACH,KAAK,CAAC,QAAQ,EACd,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,EAClC,WAAW,EACX,UAAU,CACX;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;gBAE/B,SAAS,EAAE,UAAU,CAAC,YAAY,CAAC;IAwDxC,gBAAgB,CACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS;IAmBrB,SAAS,CAAC,iBAAiB,CACzB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAwB1B,SAAS,CAAC,cAAc,CACtB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,IAAI;IA4CP,SAAS,CAAC,kBAAkB,CAC1B,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI;IAW5D;;OAEG;IACH,SAAS,CAAC,6BAA6B,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAIxD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;IAgBzE;;;;OAIG;IACI,IAAI,CAAC,GAAG,EAAE,WAAW;CA+F7B"}
|
package/src/routers/app.js
CHANGED
|
@@ -71,6 +71,85 @@ class AppRouter {
|
|
|
71
71
|
return undefined;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
+
// Allow subclasses to register additional catch-all handlers before rendering the index page.
|
|
75
|
+
getBaseViewLocals(req, res) {
|
|
76
|
+
const SiteName = this.application.constants.Site;
|
|
77
|
+
const SiteTagline = this.application.constants.SiteTagline;
|
|
78
|
+
const SiteDescription = this.application.constants.SiteDescription;
|
|
79
|
+
const hostname = req.hostname;
|
|
80
|
+
const server = (req.socket.localPort === 443 && req.protocol === 'https') ||
|
|
81
|
+
(req.socket.localPort === 80 && req.protocol === 'http')
|
|
82
|
+
? `${req.protocol}://${hostname}`
|
|
83
|
+
: `${req.protocol}://${hostname}:${req.socket.localPort}`;
|
|
84
|
+
return {
|
|
85
|
+
cspNonce: res.locals['cspNonce'],
|
|
86
|
+
title: SiteName,
|
|
87
|
+
tagline: SiteTagline,
|
|
88
|
+
description: SiteDescription,
|
|
89
|
+
server,
|
|
90
|
+
siteUrl: this.apiRouter.application.environment.serverUrl,
|
|
91
|
+
baseHref: this.apiRouter.application.environment.basePath,
|
|
92
|
+
hostname,
|
|
93
|
+
siteTitle: SiteName,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
renderTemplate(req, res, next, template, locals) {
|
|
97
|
+
if (!/^[\w/-]+$/.test(template)) {
|
|
98
|
+
next(new Error('Invalid template name requested'));
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const sanitizedUrl = (req.url || '').replace(/[\r\n]/g, ' ');
|
|
102
|
+
(0, utils_1.debugLog)(this.apiRouter.application.environment.debug, 'log', `Rendering view "${template}" for ${sanitizedUrl}`);
|
|
103
|
+
res.render(template, locals, (err, html) => {
|
|
104
|
+
if (err) {
|
|
105
|
+
const errMsg = err && typeof err === 'object' && 'message' in err
|
|
106
|
+
? String(err.message).replace(/[\r\n]/g, ' ')
|
|
107
|
+
: 'Unknown error';
|
|
108
|
+
console.error('Error rendering: ' + errMsg);
|
|
109
|
+
const normalizedError = err instanceof Error ? err : new Error(errMsg);
|
|
110
|
+
if (!res.headersSent) {
|
|
111
|
+
res.status(500).send('An error occurred');
|
|
112
|
+
}
|
|
113
|
+
next(normalizedError);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (!html) {
|
|
117
|
+
next(new Error(`Rendered template "${template}" returned empty HTML`));
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
(0, utils_1.debugLog)(this.apiRouter.application.environment.debug, 'log', `Rendered view "${template}" for ${sanitizedUrl}`);
|
|
121
|
+
res.send(html);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
createViewRenderer(template, localsFactory) {
|
|
125
|
+
return (req, res, next) => {
|
|
126
|
+
const baseLocals = this.getBaseViewLocals(req, res);
|
|
127
|
+
const extraLocals = localsFactory ? localsFactory(req, res) : {};
|
|
128
|
+
this.renderTemplate(req, res, next, template, {
|
|
129
|
+
...baseLocals,
|
|
130
|
+
...extraLocals,
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Override to register additional routes (e.g. other EJS pages) before the index catch-all.
|
|
136
|
+
*/
|
|
137
|
+
registerAdditionalRenderHooks(app) {
|
|
138
|
+
void app;
|
|
139
|
+
}
|
|
140
|
+
renderIndex(req, res, next) {
|
|
141
|
+
if (req.url.endsWith('.js')) {
|
|
142
|
+
res.type('application/javascript');
|
|
143
|
+
}
|
|
144
|
+
const jsFile = this.getAssetFilename(this.assetsDir, /^index-.*\.js$/);
|
|
145
|
+
const cssFile = this.getAssetFilename(this.assetsDir, /^index-.*\.css$/);
|
|
146
|
+
const locals = {
|
|
147
|
+
...this.getBaseViewLocals(req, res),
|
|
148
|
+
jsFile: jsFile ? `assets/${jsFile}` : undefined,
|
|
149
|
+
cssFile: cssFile ? `assets/${cssFile}` : undefined,
|
|
150
|
+
};
|
|
151
|
+
this.renderTemplate(req, res, next, 'index', locals);
|
|
152
|
+
}
|
|
74
153
|
/**
|
|
75
154
|
* Initialize the application router
|
|
76
155
|
* @param app Express application
|
|
@@ -139,47 +218,9 @@ class AppRouter {
|
|
|
139
218
|
// app.get('*', (req, res) => {
|
|
140
219
|
// res.sendFile(path.join(__dirname,'..', '..', '..', 'myapp-react', 'index.html'));
|
|
141
220
|
// });
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
res.type('application/javascript');
|
|
146
|
-
}
|
|
147
|
-
const SiteName = this.application.constants.Site;
|
|
148
|
-
const SiteTagline = this.application.constants.SiteTagline;
|
|
149
|
-
const SiteDescription = this.application.constants.SiteDescription;
|
|
150
|
-
const hostname = req.hostname;
|
|
151
|
-
const jsFile = this.getAssetFilename(this.assetsDir, /^index-.*\.js$/);
|
|
152
|
-
const cssFile = this.getAssetFilename(this.assetsDir, /^index-.*\.css$/);
|
|
153
|
-
const server = (req.socket.localPort === 443 && req.protocol === 'https') ||
|
|
154
|
-
(req.socket.localPort === 80 && req.protocol === 'http')
|
|
155
|
-
? `${req.protocol}://${hostname}`
|
|
156
|
-
: `${req.protocol}://${hostname}:${req.socket.localPort}`;
|
|
157
|
-
res.render('index', {
|
|
158
|
-
cspNonce,
|
|
159
|
-
title: SiteName,
|
|
160
|
-
tagline: SiteTagline,
|
|
161
|
-
description: SiteDescription,
|
|
162
|
-
server: server,
|
|
163
|
-
siteUrl: this.apiRouter.application.environment.serverUrl,
|
|
164
|
-
baseHref: this.apiRouter.application.environment.basePath,
|
|
165
|
-
hostname: hostname,
|
|
166
|
-
siteTitle: SiteName,
|
|
167
|
-
jsFile: jsFile ? `assets/${jsFile}` : undefined,
|
|
168
|
-
cssFile: cssFile ? `assets/${cssFile}` : undefined,
|
|
169
|
-
}, (err, html) => {
|
|
170
|
-
// Render 'index.ejs'
|
|
171
|
-
if (err) {
|
|
172
|
-
const errMsg = err && typeof err === 'object' && 'message' in err
|
|
173
|
-
? String(err.message).replace(/[\r\n]/g, ' ')
|
|
174
|
-
: 'Unknown error';
|
|
175
|
-
console.error('Error rendering: ' + errMsg);
|
|
176
|
-
if (!res.headersSent) {
|
|
177
|
-
res.status(500).send('An error occurred'); // Send a generic error message or render a separate error view
|
|
178
|
-
}
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
res.send(html);
|
|
182
|
-
});
|
|
221
|
+
this.registerAdditionalRenderHooks(app);
|
|
222
|
+
app.use((req, res, next) => {
|
|
223
|
+
this.renderIndex(req, res, next);
|
|
183
224
|
});
|
|
184
225
|
}
|
|
185
226
|
}
|
package/src/routers/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/routers/app.ts"],"names":[],"mappings":";;;;AAAA,wDAGmC;AACnC,oEAIyC;AACzC,sDAAsB;AACtB,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/routers/app.ts"],"names":[],"mappings":"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"}
|