UNPKG

@taquito/michelson-encoder

Version:

converts michelson data and types into convenient JS/TS objects

96 lines (95 loc) 2.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionToken = void 0; const token_1 = require("./token"); class OptionToken extends token_1.ComparableToken { constructor(val, idx, fac) { super(val, idx, fac); this.val = val; this.idx = idx; this.fac = fac; } subToken() { return this.createToken(this.val.args[0], this.idx); } schema() { return this.createToken(this.val.args[0], 0); } annot() { return Array.isArray(this.val.annots) ? super.annot() : this.createToken(this.val.args[0], this.idx).annot(); } Encode(args) { const value = args; if (value === undefined || value === null) { return { prim: 'None' }; } else if (Array.isArray(value) && (value[value.length - 1] === undefined || value[value.length - 1] === null)) { value.pop(); return { prim: 'None' }; } return { prim: 'Some', args: [this.schema().Encode(args)] }; } EncodeObject(args, semantic) { let value = args; if (value === undefined || value === null) { return { prim: 'None' }; } value = typeof value === 'object' && 'Some' in value ? value['Some'] : value; return { prim: 'Some', args: [this.schema().EncodeObject(value, semantic)] }; } Execute(val, semantics) { if (val.prim === 'None') { return null; } return { Some: this.schema().Execute(val.args[0], semantics) }; } /** * @deprecated ExtractSchema has been deprecated in favor of generateSchema * */ ExtractSchema() { return { Some: this.schema().ExtractSchema() }; } generateSchema() { return { __michelsonType: OptionToken.prim, schema: this.schema().generateSchema(), }; } ExtractSignature() { return [...this.schema().ExtractSignature()]; } get KeySchema() { return this.schema(); } compare(val1, val2) { if (!val1) { return -1; } else if (!val2) { return 1; } return this.KeySchema.compare(val1, val2); } ToKey(val) { return this.Execute(val); } ToBigMapKey(val) { return { key: this.EncodeObject(val), type: this.typeWithoutAnnotations(), }; } findAndReturnTokens(tokenToFind, tokens) { if (OptionToken.prim === tokenToFind) { tokens.push(this); } this.subToken().findAndReturnTokens(tokenToFind, tokens); return tokens; } } exports.OptionToken = OptionToken; OptionToken.prim = 'option';