UNPKG

apemanerror

Version:
62 lines (52 loc) 1.33 kB
/** * Error object of apeman * @class Apemanerror */ 'use strict' const argx = require('argx') const uuid = require('uuid') const defaults = require('defaults') const ErrorCodes = require('./error_codes') /** @lends Apemanerror */ class Apemanerror { constructor (code, pointer, options) { let args = argx(arguments) code = args.shift('string|number') pointer = args.shift('string') || '.' options = args.pop('object') || {} const s = this let { trigger, context, namespace } = defaults(options, { trigger: undefined, context: {}, namespace: '/' }) let id = uuid.v4() let name = Apemanerror.nameOfCode(code) return { id, code, title: name, detail: `Trigger by ${trigger}, with context: ${JSON.stringify(context)}`, source: { pointer: [ '/', String(namespace).replace(/\./g, '/'), pointer ].join('/').replace(/\/+/g, '/').replace(/\/$/, '') }, meta: { name, trigger, context } } } toJSON () { const s = this return Object.assign(s, this) } } Object.assign(Apemanerror, { nameOfCode (code) { for (let name of Object.keys(ErrorCodes)) { let hit = ErrorCodes[ name ] === code if (hit) { return name } } return code } }) module.exports = Apemanerror