UNPKG

@aeternity/aepp-calldata

Version:
44 lines (43 loc) 1.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; const TAGS = { ACCOUNT_PUBKEY: 1, NAME: 2, COMMITMENT: 3, ORACLE_PUBKEY: 4, CONTRACT_PUBKEY: 5, CHANNEL: 6 }; const PREFIX2TAG = { 'ak': TAGS.ACCOUNT_PUBKEY, 'nm': TAGS.NAME, 'cm': TAGS.COMMITMENT, 'ok': TAGS.ORACLE_PUBKEY, 'ct': TAGS.CONTRACT_PUBKEY, 'ch': TAGS.CHANNEL }; class IdEncoder { constructor(apiEncoder) { this.apiEncoder = apiEncoder; } encode(value) { const [tag, ...rest] = value; const key = Object.keys(TAGS).find(tagKey => TAGS[tagKey] === tag); if (key === undefined) { throw new Error('Unsupported ID tag: ' + tag); } return this.apiEncoder.encode(key.toLowerCase(), rest); } decode(data) { const prefix = data.substring(0, 2); if (!PREFIX2TAG.hasOwnProperty(prefix)) { throw new Error(`Invalid ID data format. Unsupported prefix: ${prefix}`); } const tag = PREFIX2TAG[prefix]; return new Uint8Array([tag, ...this.apiEncoder.decode(data)]); } } var _default = exports.default = IdEncoder;