test-triam-base-contract
Version:
Low level triam smart cotnract support library
107 lines (82 loc) • 3.34 kB
JavaScript
;
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;
}