UNPKG

@ckb-lumos/codec

Version:

Make your own molecule binding in JavaScript(TypeScript)

58 lines (55 loc) 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CodecExecuteError = exports.CodecBaseParseError = exports.CODEC_OPTIONAL_PATH = void 0; exports.isCodecExecuteError = isCodecExecuteError; // lc for lumos codec const CODEC_OPTIONAL_PATH = exports.CODEC_OPTIONAL_PATH = "__lc_option__"; class CodecBaseParseError extends Error { constructor(message, expectedType) { super(message); this.expectedType = expectedType; } } exports.CodecBaseParseError = CodecBaseParseError; const CODEC_EXECUTE_ERROR_NAME = "CodecExecuteError"; function isCodecExecuteError(error) { if (!(error instanceof Error)) return false; return error.name === CODEC_EXECUTE_ERROR_NAME; } /** * This Error class can collect CodecBaseParseError, and put an human-readable error */ class CodecExecuteError extends Error { name = CODEC_EXECUTE_ERROR_NAME; constructor(origin) { super(); this.origin = origin; } keys = []; updateKey(key) { this.keys.push(key); this.message = this.getPackErrorMessage(); } getPackErrorMessage() { var _this$origin$stack; const reducer = (acc, cur, index) => { if (cur === CODEC_OPTIONAL_PATH) { cur = index === 0 ? "?" : "?."; } else if (typeof cur === "number") { cur = `[${cur}]`; } else { cur = `.${cur}`; } return acc + cur; }; const path = this.keys.reduceRight(reducer, "input"); const text = this.origin instanceof CodecBaseParseError ? `Expect type ${this.origin.expectedType} at ${path} but got error:` : `Error at ${path}:`; // this.origin can be an Error at runtime return `${text} ${this.origin.message} ${(_this$origin$stack = this.origin.stack) === null || _this$origin$stack === void 0 ? void 0 : _this$origin$stack.replace(/Error:.+?\n/, "")} `; } } exports.CodecExecuteError = CodecExecuteError; //# sourceMappingURL=error.js.map