amphora 8.3.0 → 8.4.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/lib/render.js +22 -7
- package/lib/setup.js +5 -0
- package/package.json +1 -1
package/lib/render.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var uriRoutes, renderers,
|
|
3
|
+
var uriRoutes, renderers, errorHandler,
|
|
4
4
|
db = require('./services/db'),
|
|
5
5
|
log = require('./services/logger').setup({
|
|
6
6
|
file: __filename,
|
|
@@ -264,6 +264,16 @@ function logTime(hrStart, uri) {
|
|
|
264
264
|
};
|
|
265
265
|
}
|
|
266
266
|
|
|
267
|
+
/**
|
|
268
|
+
* Passes page error handling back to the site.
|
|
269
|
+
*
|
|
270
|
+
* @param {Function} handler - (error, response, next) => {}
|
|
271
|
+
*/
|
|
272
|
+
function registerErrorHandler(handler) {
|
|
273
|
+
errorHandler = handler;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
|
|
267
277
|
/**
|
|
268
278
|
* Run composer by translating url to a "page" by base64ing it. Errors are handled by Express.
|
|
269
279
|
*
|
|
@@ -280,13 +290,17 @@ function renderExpressRoute(req, res, next) {
|
|
|
280
290
|
|
|
281
291
|
return module.exports.renderUri(pageReference, req, res, hrStart)
|
|
282
292
|
.catch((error) => {
|
|
283
|
-
if (
|
|
284
|
-
|
|
285
|
-
message: error.message
|
|
286
|
-
});
|
|
287
|
-
next();
|
|
293
|
+
if (errorHandler) {
|
|
294
|
+
errorHandler(error, res, next);
|
|
288
295
|
} else {
|
|
289
|
-
|
|
296
|
+
if (error.name === 'NotFoundError') {
|
|
297
|
+
log('info', `could not find resource ${req.uri}`, {
|
|
298
|
+
message: error.message
|
|
299
|
+
});
|
|
300
|
+
next();
|
|
301
|
+
} else {
|
|
302
|
+
next(error);
|
|
303
|
+
}
|
|
290
304
|
}
|
|
291
305
|
});
|
|
292
306
|
}
|
|
@@ -373,6 +387,7 @@ module.exports.findRenderer = findRenderer;
|
|
|
373
387
|
// Setup
|
|
374
388
|
module.exports.renderers = {}; // Overriden when a user registers a render object
|
|
375
389
|
module.exports.registerRenderers = registerRenderers;
|
|
390
|
+
module.exports.registerErrorHandler = registerErrorHandler;
|
|
376
391
|
|
|
377
392
|
// For Testing
|
|
378
393
|
module.exports.resetUriRouteHandlers = resetUriRouteHandlers;
|
package/lib/setup.js
CHANGED
|
@@ -35,6 +35,7 @@ module.exports = function (options = {}) {
|
|
|
35
35
|
providers = [],
|
|
36
36
|
sessionStore,
|
|
37
37
|
renderers,
|
|
38
|
+
errorHandler,
|
|
38
39
|
plugins = [],
|
|
39
40
|
bootstrap = true,
|
|
40
41
|
storage = false,
|
|
@@ -58,6 +59,10 @@ module.exports = function (options = {}) {
|
|
|
58
59
|
render.registerRenderers(renderers);
|
|
59
60
|
}
|
|
60
61
|
|
|
62
|
+
if (errorHandler) {
|
|
63
|
+
render.registerErrorHandler(errorHandler);
|
|
64
|
+
}
|
|
65
|
+
|
|
61
66
|
// Make sure the storage module is run, then bootstrap
|
|
62
67
|
// all the default data and finally return the router
|
|
63
68
|
return storage.setup()
|