{"version":3,"file":"error.cjs","sources":["../../src/error.ts"],"sourcesContent":["/**\n * @ Author: Hanrea\n * @ version: 2023-03-06 13:14:21\n * @ copyright: Vecmat (c) - <hi(at)vecmat.com>\n */\nimport { Templating } from \"./str.js\";\n\n/**\n * 错误处理\n * todo:async-hook\n * https://trace.js.org/\n */\nError.stackTraceLimit = 100;\nconst __stack: any = global.global;\nObject.defineProperty(global, \"__stack\", {\n    get: function () {\n        const orig = Error.prepareStackTrace;\n        Error.prepareStackTrace = function (_, stack) {\n            return stack;\n        };\n        const err = new Error();\n        Error.captureStackTrace(err, arguments.callee);\n        const stack = err.stack;\n        Error.prepareStackTrace = orig;\n        return stack;\n    }\n});\n\nObject.defineProperty(global, \"__line\", {\n    get: function () {\n        return __stack[1].getLineNumber();\n    }\n});\n\nObject.defineProperty(global, \"__function\", {\n    get: function () {\n        return __stack[2].getFunctionName();\n    }\n});\n\n// 导出结果类型\n// async 返回结果\nexport type TRESULT<T> = [Error | null, T | object | string | null];\n\nexport type TRESULTASYNC<T> = Promise<TRESULT<T>>;\n\nexport type TAPPRESULT<T extends object> = [Error | null, T | object | null];\n\nexport type TAPPRESULTASYNC<T extends object> = Promise<TAPPRESULT<T>>;\n\n// ! 错误基类\n// https://github.com/reduardo7/ts-base-error/blob/master/src/index.ts\nexport class BaseError extends Error {\n    constructor(message?: string) {\n        const trueProto = new.target.prototype;\n        super(message);\n        // for ES6\n        Object.setPrototypeOf(this, trueProto);\n        // for ES5\n        // this.__proto__ = trueProto;\n    }\n}\n\n// 较好的实现错误类\n// https://github.com/g2a-com/node-standard-error/blob/master/src/index.ts\nexport class Exception extends BaseError {\n    // 基本信息\n    public sign: string;\n    public temp: string;\n    public name: string;\n    public message!: string;\n    // 扩展\n    public info: object;\n    public secret: object;\n\n    // 扩展参数\n    public func!: string\n    public line!: string\n    // 内部方法\n    public isException = true;\n    // 扩展Error ，info 将会返回到客户端\n    // 用sign标识错误，管理数据库，sign唯一\n    // sign数据库存储,temp存数据库或者采用，然后处理多语言\n    // handle内部可以针对temp处理\n    constructor(sign: string, temp = \"\", info = {}, secret = {}) {\n        super(sign);\n        this.sign = sign;\n        this.temp = temp || \"\";\n        this.info = info;\n        this.secret = secret;\n        this.name = this.constructor.name;\n        // 待考虑是否使用\n        // this.line = __stack[1].getLineNumber();\n        // this.func = __stack[1].getFunctionName();\n    }\n\n    public toText() {\n        return Templating(this.temp, this.info);\n    }\n    // public toXML(){\n    //     // return json2xml(this.toJson());\n    // }\n    public toJson() {\n        return {\n            name: this.name,\n            sign: this.sign,\n            info: this.info,\n            message: Templating(this.temp, this.info)\n        };\n    }\n}\n"],"names":["Templating"],"mappings":";;;;AAAA;;;;AAIG;AAGH;;;;AAIG;AACH,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,OAAO,GAAQ,MAAM,CAAC,MAAM,CAAC;AACnC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE;AACrC,IAAA,GAAG,EAAE,YAAA;AACD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,iBAAiB,CAAC;AACrC,QAAA,KAAK,CAAC,iBAAiB,GAAG,UAAU,CAAC,EAAE,KAAK,EAAA;AACxC,YAAA,OAAO,KAAK,CAAC;AACjB,SAAC,CAAC;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AAC/C,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC/B,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ,CAAA,CAAC,CAAC;AAEH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;AACpC,IAAA,GAAG,EAAE,YAAA;AACD,QAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;KACrC;AACJ,CAAA,CAAC,CAAC;AAEH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE;AACxC,IAAA,GAAG,EAAE,YAAA;AACD,QAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;KACvC;AACJ,CAAA,CAAC,CAAC;AAYH;AACA;AACM,MAAO,SAAU,SAAQ,KAAK,CAAA;AAChC,IAAA,WAAA,CAAY,OAAgB,EAAA;AACxB,QAAA,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;;AAEf,QAAA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;;;KAG1C;AACJ,CAAA;AAED;AACA;AACM,MAAO,SAAU,SAAQ,SAAS,CAAA;;;;;AAmBpC,IAAA,WAAA,CAAY,IAAY,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAA;QACvD,KAAK,CAAC,IAAI,CAAC,CAAC;;QANT,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;AAOtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;;;KAIrC;IAEM,MAAM,GAAA;QACT,OAAOA,cAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3C;;;;IAIM,MAAM,GAAA;QACT,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAEA,cAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;SAC5C,CAAC;KACL;AACJ;;;;;"}