UNPKG

test-triam-base-contract

Version:

Low level triam smart cotnract support library

107 lines (82 loc) 3.34 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ContractInput = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _stellarXdr_generated = require('./generated/stellar-xdr_generated'); var _stellarXdr_generated2 = _interopRequireDefault(_stellarXdr_generated); var _clone = require('lodash/clone'); var _clone2 = _interopRequireDefault(_clone); var _padEnd = require('lodash/padEnd'); var _padEnd2 = _interopRequireDefault(_padEnd); var _trimEnd = require('lodash/trimEnd'); var _trimEnd2 = _interopRequireDefault(_trimEnd); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** * ContractInput class represents an input of contract operations * * @constructor * @param {string} funcName - The function name. * @param {Array} contractParams - The contract parameters. */ var ContractInput = exports.ContractInput = function () { function ContractInput(funcName, contractParams) { _classCallCheck(this, ContractInput); this.funcName = funcName; var paramsJson = JSON.stringify(contractParams); // array of Buffer var ab = str2ab(paramsJson); // buffer var buf = toBuffer(ab); this.contractParams = buf; } /** * Returns an contractInput object from its XDR object representation. * @param {xdr.ContractInput} contractInputXdr - The contractInput xdr object. * @returns {ContractInput} */ _createClass(ContractInput, null, [{ key: 'fromOperation', value: function fromOperation(contractInputXdr) { var funcName = void 0, contractParams = void 0; funcName = contractInputXdr.funcName().toString('ascii'); // to array var buf = contractInputXdr.contractParams(); var ab = toArrayBuffer(buf); var str = ab2str(ab); contractParams = JSON.parse(str); return new this(funcName, contractParams); } }]); return ContractInput; }(); function ab2str(buf) { return String.fromCharCode.apply(null, new Uint16Array(buf)); }; function str2ab(str) { var buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char var bufView = new Uint16Array(buf); for (var i = 0, strLen = str.length; i < strLen; i++) { bufView[i] = str.charCodeAt(i); } return buf; } function toArrayBuffer(buf) { var ab = new ArrayBuffer(buf.length); var view = new Uint8Array(ab); for (var i = 0; i < buf.length; ++i) { view[i] = buf[i]; } return ab; } function toBuffer(ab) { var buf = new Buffer(ab.byteLength); var view = new Uint8Array(ab); for (var i = 0; i < buf.length; ++i) { buf[i] = view[i]; } return buf; }