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 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 (error.name === 'NotFoundError') {
284
- log('info', `could not find resource ${req.uri}`, {
285
- message: error.message
286
- });
287
- next();
293
+ if (errorHandler) {
294
+ errorHandler(error, res, next);
288
295
  } else {
289
- next(error);
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()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amphora",
3
- "version": "8.3.0",
3
+ "version": "8.4.0",
4
4
  "description": "An API mixin for Express that saves, publishes and composes data with the key-value store of your choice.",
5
5
  "main": "index.js",
6
6
  "scripts": {