UNPKG

@taquito/michelson-encoder

Version:

converts michelson data and types into convenient JS/TS objects

86 lines (85 loc) 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SaplingTransactionToken = exports.SaplingTransactionValidationError = void 0; const token_1 = require("./token"); /** * @category Error * @description Error that indicates a failure happening when parsing encoding/executing a Sapling Transaction */ class SaplingTransactionValidationError extends token_1.TokenValidationError { constructor(value, token, message) { super(value, token, message); this.value = value; this.token = token; this.name = 'SaplingTransactionValidationError'; } } exports.SaplingTransactionValidationError = SaplingTransactionValidationError; class SaplingTransactionToken extends token_1.Token { constructor(val, idx, fac) { super(val, idx, fac); this.val = val; this.idx = idx; this.fac = fac; } /** * @throws {@link SaplingTransactionValidationError} */ Execute(_val) { throw new SaplingTransactionValidationError(_val, this, `There is no literal value for the sapling_transaction type. Got: ${JSON.stringify(_val)}.`); } /** * @throws {@link SaplingTransactionValidationError} */ 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 SaplingTransactionValidationError(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[SaplingTransactionToken.prim]) { return semantic[SaplingTransactionToken.prim](val); } return { bytes: String(val).toString() }; } /** * @deprecated ExtractSchema has been deprecated in favor of generateSchema * */ ExtractSchema() { return { [SaplingTransactionToken.prim]: { 'memo-size': Number(this.val.args[0]['int']), }, }; } generateSchema() { return { __michelsonType: SaplingTransactionToken.prim, schema: { memoSize: this.val.args[0]['int'], }, }; } findAndReturnTokens(tokenToFind, tokens) { if (SaplingTransactionToken.prim === tokenToFind) { tokens.push(this); } return tokens; } } exports.SaplingTransactionToken = SaplingTransactionToken; SaplingTransactionToken.prim = 'sapling_transaction';