UNPKG

@taquito/michelson-encoder

Version:

converts michelson data and types into convenient JS/TS objects

86 lines (85 loc) 3.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SaplingTransactionDeprecatedToken = exports.SaplingTransactionDeprecatedValidationError = void 0; const token_1 = require("./token"); /** * @category Error * @description Error that indicates a failure happening when parsing encoding/executing a Sapling Transaction Deprecated */ class SaplingTransactionDeprecatedValidationError extends token_1.TokenValidationError { constructor(value, token, message) { super(value, token, message); this.value = value; this.token = token; this.name = 'SaplingTransactionDeprecatedValidationError'; } } exports.SaplingTransactionDeprecatedValidationError = SaplingTransactionDeprecatedValidationError; class SaplingTransactionDeprecatedToken extends token_1.Token { constructor(val, idx, fac) { super(val, idx, fac); this.val = val; this.idx = idx; this.fac = fac; } /** * @throws {@link SaplingTransactionDeprecatedValidationError} */ Execute(_val) { throw new SaplingTransactionDeprecatedValidationError(_val, this, `There is no literal value for the sapling_transaction_deprecated type. Got: ${JSON.stringify(_val)}.`); } /** * @throws {@link SaplingTransactionDeprecatedValidationError} */ validateBytes(val) { const bytes = /^(0x|0X)?([0-9a-fA-F]*$)/.exec(val); if (bytes && bytes[2].length % 2 === 0) { return bytes[2]; } else { throw new SaplingTransactionDeprecatedValidationError(val, this, `Invalid bytes: ${JSON.stringify(val)}`); } } convertUint8ArrayToHexString(val) { return val.constructor === Uint8Array ? Buffer.from(val).toString('hex') : val; } Encode(args) { let val = args.pop(); val = this.validateBytes(this.convertUint8ArrayToHexString(val)); return { bytes: String(val).toString() }; } EncodeObject(val, semantic) { val = this.validateBytes(this.convertUint8ArrayToHexString(val)); if (semantic && semantic[SaplingTransactionDeprecatedToken.prim]) { return semantic[SaplingTransactionDeprecatedToken.prim](val); } return { bytes: String(val).toString() }; } /** * @deprecated ExtractSchema has been deprecated in favor of generateSchema * */ ExtractSchema() { return { [SaplingTransactionDeprecatedToken.prim]: { 'memo-size': Number(this.val.args[0]['int']), }, }; } generateSchema() { return { __michelsonType: SaplingTransactionDeprecatedToken.prim, schema: { memoSize: this.val.args[0]['int'], }, }; } findAndReturnTokens(tokenToFind, tokens) { if (SaplingTransactionDeprecatedToken.prim === tokenToFind) { tokens.push(this); } return tokens; } } exports.SaplingTransactionDeprecatedToken = SaplingTransactionDeprecatedToken; SaplingTransactionDeprecatedToken.prim = 'sapling_transaction_deprecated';