UNPKG

@aeternity/aepp-calldata

Version:
73 lines (71 loc) 1.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ApiEncoder = _interopRequireDefault(require("../ApiEncoder.cjs")); var _bls = require("../utils/bls12381.cjs"); var _int2ByteArray = require("../utils/int2ByteArray.cjs"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /** * Map the internal representation FATE data structure to Aesophia canonical structures and formats. */ class CanonicalMapper { constructor() { this._apiEncoder = new _ApiEncoder.default(); } toCanonical(data) { return data.accept(this); } visitData(acceptor) { return acceptor.valueOf(); } visitAddress(acceptor) { return this._apiEncoder.encode(acceptor.name, acceptor.value); } visitList(acceptor) { return acceptor.items.map(e => e.accept(this)); } visitSet(acceptor) { return new Set(acceptor.items.map(e => e.accept(this))); } visitMap(acceptor) { const map = new Map(); for (const [key, value] of acceptor.iterator) { map.set(key.accept(this), value.accept(this)); } return map; } visitTuple(acceptor) { return acceptor.prepareItems(e => e.accept(this)); } visitVariant(acceptor) { const value = acceptor.value.map(e => e.accept(this)); if (acceptor.variantName === 'None') { return undefined; } if (acceptor.variantName === 'Some') { return value[0]; } return { [acceptor.variantName]: value }; } visitBls12381Fr(acceptor) { return (0, _bls.montBytes2Int)(acceptor.valueOf(), 'r'); } visitBls12381Fp(acceptor) { return (0, _bls.montBytes2Int)(acceptor.valueOf(), 'p'); } visitCalldata(acceptor) { const { functionId, args } = acceptor.valueOf(); return { functionId: (0, _int2ByteArray.byteArray2Hex)(functionId), args: args.map(e => e.accept(this)) }; } } var _default = exports.default = CanonicalMapper;