UNPKG

864 BJavaScriptView Raw
1const buildError = (message, opts) => {
2 const error = new Error(message);
3 for (const key in opts) {
4 error[key] = opts[key] instanceof Function ? opts[key](opts) : opts[key];
5 }
6 return error;
7};
8
9const singleSlash = str => '/' + str.split('/').filter(one => one).join('/');
10
11const ErrorFactory = function (namespace = '', defaults = {}) {
12 defaults.namespace = defaults.namespace || namespace;
13
14 return function ErrorInstance (code = '', options = {}) {
15 options = Object.assign({}, ErrorFactory.options, defaults, options);
16 options.code = singleSlash(options.namespace + '/' + code);
17 options.id = options.code.toLowerCase().replace(/[^\w]+/g, '-').replace(/^-/, '');
18 options.message = ErrorInstance[code];
19 return buildError(options.message, options);
20 };
21};
22
23ErrorFactory.options = { status: 500 };
24
25module.exports = ErrorFactory;