{"version":3,"sources":["errors.ts"],"sourcesContent":["import { Runtime } from \"../runtime/runtime.ts\";\nimport type { datex_scope } from \"../utils/global_types.ts\";\nimport { Endpoint } from \"./addressing.ts\";\nimport { DATEX_ERROR_MESSAGE } from \"./error_codes.ts\";\n\n// <*Error>\nexport class Error extends globalThis.Error {\n    override message:string;\n    datex_stack?: [Endpoint, string?][]\n    original_js_stack?: string\n    type = \"\";\n    code?:bigint\n\n    constructor(message?:string|number|bigint|null)\n    constructor(message?:string|number|bigint|null, scope?:datex_scope|null)\n    constructor(message?:string|number|bigint, stack?:[Endpoint, string?][]|null)\n    constructor(message:string|number|bigint|null = '', initialStack?:datex_scope|null|[Endpoint, string?][]) {\n        super();\n\n        const stack = initialStack ?? [[Runtime.endpoint]];\n\n        // extract name from class name\n        this.name = this.constructor.name.replace(\"Datex\",\"\");\n\n        this.pushToStack(...Error.getJSStack(this))\n\n        // convert scope to stack\n        if (typeof stack == \"object\" && stack!=null && !(stack instanceof Array)) {\n            this.addScopeToStack(stack)\n        }\n        // // stack already provided (as array)\n        else if (Runtime.OPTIONS.ERROR_STACK_TRACES && initialStack instanceof Array) this.datex_stack = initialStack;\n        // // no stack\n        // else this.datex_stack = [];\n\n        // error message\n        if (typeof message == \"string\") this.message = message;\n        // error code\n        else if (typeof message == \"number\" || typeof message == \"bigint\"){\n            this.code = BigInt(message);\n            this.message = DATEX_ERROR_MESSAGE[Number(this.code)];\n        }\n        else this.message = \"\";\n        \n        this.updateStackMessage();\n    }\n\n    addScopeToStack(scope:datex_scope){\n        if (Runtime.OPTIONS.ERROR_STACK_TRACES) {\n            this.pushToStack([\n                Runtime.endpoint, \n                (scope.context_location ? scope.context_location.toString() : (scope.sender + \" \" + scope.header.sid?.toString(16))) + \n                    \":\" + scope.current_index?.toString(16)\n            ]);\n        }\n    }\n\n    pushToStack(...data:[Endpoint, string?][]) {\n        if (!this.datex_stack) this.datex_stack = []\n        this.datex_stack.push(...data);\n        this.updateStackMessage();\n    }\n\n    setStack(...data:[Endpoint, string?][]) {\n        this.datex_stack = data\n        this.updateStackMessage();\n    }\n\n    updateStackMessage() {\n        this.stack = this.name +\": \" + (this.message||\"Unknown\") + '\\n';\n\n        if (!this.datex_stack) this.datex_stack = []\n\n        for (let i = this.datex_stack.length-1; i>=0; i--) {\n            const d = this.datex_stack[i];\n            this.stack += `    on ${d[0]} (${d[1]??\"Unknown\"})\\n`\n        }\n    }\n\n    override toString(){\n        return this.message;\n    }\n\n    static getJSStack(e: globalThis.Error) {\n        if (!Runtime.OPTIONS.NATIVE_ERROR_MESSAGES) return []\n        \n        if (Runtime.OPTIONS.NATIVE_ERROR_STACK_TRACES) {\n            let ignore = false;\n            const js_stack = <[Endpoint, string][]> e.stack?.split(\"\\n\").slice(1).map(e=>{\n                // stop stack before __DX_meta__, just internal stuff\n                if (!Runtime.OPTIONS.NATIVE_ERROR_DEBUG_STACK_TRACES) {\n                    if (e.includes(\"__DX_meta__\")) ignore = true; \n                    if (e.includes(\"at async callWithMeta\")) ignore = true; \n                }\n                return ignore ? undefined : [Runtime.endpoint,`JavaScript Error ${e.trim()}`]\n            }).filter(v=>!!v).reverse() ?? [];\n            return js_stack\n        }\n        else return [];\n    }\n\n    static fromJSError(e:globalThis.Error) {\n        // native errors are not exposed\n        if (!Runtime.OPTIONS.NATIVE_ERROR_MESSAGES) \n            return new Error(\"Unknown\");\n        else if (Runtime.OPTIONS.NATIVE_ERROR_STACK_TRACES)\n            return new Error(e.name + \" - \" + e.message, this.getJSStack(e))\n        else \n            return new Error(e.name + \" - \" + e.message);\n    }\n}\n\nexport class SyntaxError extends Error {}\nexport class CompilerError extends Error {}\nexport class PointerError extends Error {}\nexport class ValueError extends Error {}\nexport class PermissionError extends Error {}\nexport class TypeError extends Error {}\nexport class NetworkError extends Error {}\nexport class RuntimeError extends Error {}\nexport class SecurityError extends Error {}\nexport class AssertionError extends Error {}\n"],"names":["Runtime","DATEX_ERROR_MESSAGE","Error","globalThis","message","datex_stack","original_js_stack","type","code","constructor","initialStack","stack","endpoint","name","replace","pushToStack","getJSStack","Array","OPTIONS","ERROR_STACK_TRACES","addScopeToStack","BigInt","Number","updateStackMessage","scope","context_location","toString","sender","header","sid","current_index","data","push","setStack","i","length","d","e","NATIVE_ERROR_MESSAGES","NATIVE_ERROR_STACK_TRACES","ignore","split","slice","map","NATIVE_ERROR_DEBUG_STACK_TRACES","includes","undefined","trim","filter","v","reverse","fromJSError","SyntaxError","CompilerError","PointerError","ValueError","PermissionError","TypeError","NetworkError","RuntimeError","SecurityError","AssertionError"],"mappings":"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","sourceRoot":"/lib/datex-core-js-legacy-0.3.15/types/","file":"errors.ts"}