@coolwallet/sol
Version:
Coolwallet Solana sdk
132 lines (131 loc) • 16.9 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.signAllTransactions = signAllTransactions;
exports.signMessage = signMessage;
exports.signTransaction = signTransaction;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _core = require("@coolwallet/core");
var _message = require("./message");
var _Transaction = require("./utils/Transaction");
var _versionedTransaction = require("./utils/versionedTransaction");
var _scriptUtil = require("./utils/scriptUtil");
var _transaction = require("@coolwallet/core/lib/transaction");
function executeScriptWithPreActions(_x, _x2, _x3) {
return _executeScriptWithPreActions.apply(this, arguments);
}
function _executeScriptWithPreActions() {
_executeScriptWithPreActions = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(signData, script, argument) {
var transport, appPrivateKey, appId, confirmCB, authorizedCB, preActions, action;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
transport = signData.transport, appPrivateKey = signData.appPrivateKey, appId = signData.appId, confirmCB = signData.confirmCB, authorizedCB = signData.authorizedCB;
preActions = [function () {
return _core.tx.command.sendScript(transport, script);
}];
action = function action() {
return _core.tx.command.executeScript(transport, appId, appPrivateKey, argument);
};
return _context.abrupt("return", _core.tx.flow.getSingleSignatureFromCoolWalletV2(transport, preActions, action, _transaction.SignatureType.EDDSA, confirmCB, authorizedCB));
case 4:
case "end":
return _context.stop();
}
}, _callee);
}));
return _executeScriptWithPreActions.apply(this, arguments);
}
function signAllTransactions(_x4, _x5) {
return _signAllTransactions.apply(this, arguments);
}
function _signAllTransactions() {
_signAllTransactions = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(signTxData, preActions) {
var transport, confirmCB, authorizedCB, _yield$getScriptSigni, actions, signatures;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
transport = signTxData.transport, confirmCB = signTxData.confirmCB, authorizedCB = signTxData.authorizedCB;
_context2.next = 3;
return (0, _scriptUtil.getScriptSigningActions)(signTxData);
case 3:
_yield$getScriptSigni = _context2.sent;
actions = _yield$getScriptSigni.actions;
_context2.next = 7;
return _core.tx.flow.getSignaturesFromCoolWalletV2(transport, preActions, actions, _transaction.SignatureType.EDDSA, confirmCB, authorizedCB);
case 7:
signatures = _context2.sent;
return _context2.abrupt("return", signatures.map(function (signature) {
return new Uint8Array(signature);
}));
case 9:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return _signAllTransactions.apply(this, arguments);
}
function signTransaction(_x6, _x7, _x8, _x9) {
return _signTransaction.apply(this, arguments);
}
function _signTransaction() {
_signTransaction = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(signTxData, rawTx, script, argument) {
var signature, signatureUint8Arrays, serializedTransaction;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return executeScriptWithPreActions(signTxData, script, argument);
case 2:
signature = _context3.sent;
if (!(rawTx instanceof _message.Message || rawTx instanceof _message.MessageV0)) {
_context3.next = 10;
break;
}
signatureUint8Arrays = signTxData.transaction.signatures;
signatureUint8Arrays[0] = new Uint8Array(signature);
serializedTransaction = new _versionedTransaction.VersionedTransaction(rawTx, signatureUint8Arrays).serialize();
return _context3.abrupt("return", Buffer.from(serializedTransaction).toString('hex'));
case 10:
if (!(rawTx instanceof _Transaction.Transaction)) {
_context3.next = 14;
break;
}
return _context3.abrupt("return", rawTx.toTxString(signature.toString('hex')));
case 14:
throw new Error('Invalid transaction type');
case 15:
case "end":
return _context3.stop();
}
}, _callee3);
}));
return _signTransaction.apply(this, arguments);
}
function signMessage(_x10, _x11, _x12) {
return _signMessage.apply(this, arguments);
}
function _signMessage() {
_signMessage = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4(signMsgData, script, argument) {
var signature;
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return executeScriptWithPreActions(signMsgData, script, argument);
case 2:
signature = _context4.sent;
return _context4.abrupt("return", signature.toString('hex'));
case 4:
case "end":
return _context4.stop();
}
}, _callee4);
}));
return _signMessage.apply(this, arguments);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbWVzc2FnZSIsIl9UcmFuc2FjdGlvbiIsIl92ZXJzaW9uZWRUcmFuc2FjdGlvbiIsIl9zY3JpcHRVdGlsIiwiX3RyYW5zYWN0aW9uIiwiZXhlY3V0ZVNjcmlwdFdpdGhQcmVBY3Rpb25zIiwiX3giLCJfeDIiLCJfeDMiLCJfZXhlY3V0ZVNjcmlwdFdpdGhQcmVBY3Rpb25zIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInNpZ25EYXRhIiwic2NyaXB0IiwiYXJndW1lbnQiLCJ0cmFuc3BvcnQiLCJhcHBQcml2YXRlS2V5IiwiYXBwSWQiLCJjb25maXJtQ0IiLCJhdXRob3JpemVkQ0IiLCJwcmVBY3Rpb25zIiwiYWN0aW9uIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInR4IiwiY29tbWFuZCIsInNlbmRTY3JpcHQiLCJleGVjdXRlU2NyaXB0IiwiYWJydXB0IiwiZmxvdyIsImdldFNpbmdsZVNpZ25hdHVyZUZyb21Db29sV2FsbGV0VjIiLCJTaWduYXR1cmVUeXBlIiwiRUREU0EiLCJzdG9wIiwic2lnbkFsbFRyYW5zYWN0aW9ucyIsIl94NCIsIl94NSIsIl9zaWduQWxsVHJhbnNhY3Rpb25zIiwiX2NhbGxlZTIiLCJzaWduVHhEYXRhIiwiX3lpZWxkJGdldFNjcmlwdFNpZ25pIiwiYWN0aW9ucyIsInNpZ25hdHVyZXMiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJnZXRTY3JpcHRTaWduaW5nQWN0aW9ucyIsInNlbnQiLCJnZXRTaWduYXR1cmVzRnJvbUNvb2xXYWxsZXRWMiIsIm1hcCIsInNpZ25hdHVyZSIsIlVpbnQ4QXJyYXkiLCJzaWduVHJhbnNhY3Rpb24iLCJfeDYiLCJfeDciLCJfeDgiLCJfeDkiLCJfc2lnblRyYW5zYWN0aW9uIiwiX2NhbGxlZTMiLCJyYXdUeCIsInNpZ25hdHVyZVVpbnQ4QXJyYXlzIiwic2VyaWFsaXplZFRyYW5zYWN0aW9uIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiTWVzc2FnZSIsIk1lc3NhZ2VWMCIsInRyYW5zYWN0aW9uIiwiVmVyc2lvbmVkVHJhbnNhY3Rpb24iLCJzZXJpYWxpemUiLCJCdWZmZXIiLCJmcm9tIiwidG9TdHJpbmciLCJUcmFuc2FjdGlvbiIsInRvVHhTdHJpbmciLCJFcnJvciIsInNpZ25NZXNzYWdlIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3NpZ25NZXNzYWdlIiwiX2NhbGxlZTQiLCJzaWduTXNnRGF0YSIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zaWduLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR4IH0gZnJvbSAnQGNvb2x3YWxsZXQvY29yZSc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL2NvbmZpZy90eXBlcyc7XG5pbXBvcnQgeyBNZXNzYWdlLCBNZXNzYWdlVjAsIFZlcnNpb25lZE1lc3NhZ2UgfSBmcm9tICcuL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdXRpbHMvVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVmVyc2lvbmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuL3V0aWxzL3ZlcnNpb25lZFRyYW5zYWN0aW9uJztcbmltcG9ydCB7IGdldFNjcmlwdFNpZ25pbmdBY3Rpb25zIH0gZnJvbSAnLi91dGlscy9zY3JpcHRVdGlsJztcbmltcG9ydCB7IFNpZ25hdHVyZVR5cGUgfSBmcm9tICdAY29vbHdhbGxldC9jb3JlL2xpYi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBzaWduVmVyc2lvbmVkVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi9jb25maWcvdHlwZXMnO1xuXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlU2NyaXB0V2l0aFByZUFjdGlvbnMoXG4gIHNpZ25EYXRhOiB0eXBlcy5TaWduRGF0YVR5cGUsXG4gIHNjcmlwdDogc3RyaW5nLFxuICBhcmd1bWVudDogc3RyaW5nXG4pOiBQcm9taXNlPEJ1ZmZlciB8IHsgcjogc3RyaW5nOyBzOiBzdHJpbmcgfT4ge1xuICBjb25zdCB7IHRyYW5zcG9ydCwgYXBwUHJpdmF0ZUtleSwgYXBwSWQsIGNvbmZpcm1DQiwgYXV0aG9yaXplZENCIH0gPSBzaWduRGF0YTtcblxuICBjb25zdCBwcmVBY3Rpb25zID0gWygpID0+IHR4LmNvbW1hbmQuc2VuZFNjcmlwdCh0cmFuc3BvcnQsIHNjcmlwdCldO1xuICBjb25zdCBhY3Rpb24gPSAoKSA9PiB0eC5jb21tYW5kLmV4ZWN1dGVTY3JpcHQodHJhbnNwb3J0LCBhcHBJZCwgYXBwUHJpdmF0ZUtleSwgYXJndW1lbnQpO1xuXG4gIHJldHVybiB0eC5mbG93LmdldFNpbmdsZVNpZ25hdHVyZUZyb21Db29sV2FsbGV0VjIoXG4gICAgdHJhbnNwb3J0LFxuICAgIHByZUFjdGlvbnMsXG4gICAgYWN0aW9uLFxuICAgIFNpZ25hdHVyZVR5cGUuRUREU0EsXG4gICAgY29uZmlybUNCLFxuICAgIGF1dGhvcml6ZWRDQixcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2lnbkFsbFRyYW5zYWN0aW9ucyhcbiAgc2lnblR4RGF0YTogdHlwZXMuc2lnblZlcnNpb25lZFRyYW5zYWN0aW9ucyxcbiAgcHJlQWN0aW9uczogQXJyYXk8KCkgPT4gUHJvbWlzZTx2b2lkPj5cbik6IFByb21pc2U8QXJyYXk8VWludDhBcnJheT4+IHtcbiAgY29uc3QgeyB0cmFuc3BvcnQsIGNvbmZpcm1DQiwgYXV0aG9yaXplZENCIH0gPSBzaWduVHhEYXRhO1xuICBjb25zdCB7IGFjdGlvbnMgfSA9IGF3YWl0IGdldFNjcmlwdFNpZ25pbmdBY3Rpb25zKHNpZ25UeERhdGEpO1xuICBjb25zdCBzaWduYXR1cmVzID0gKGF3YWl0IHR4LmZsb3cuZ2V0U2lnbmF0dXJlc0Zyb21Db29sV2FsbGV0VjIoXG4gICAgdHJhbnNwb3J0LFxuICAgIHByZUFjdGlvbnMsXG4gICAgYWN0aW9ucyxcbiAgICBTaWduYXR1cmVUeXBlLkVERFNBLFxuICAgIGNvbmZpcm1DQixcbiAgICBhdXRob3JpemVkQ0IsXG4gICkpIGFzIEFycmF5PEJ1ZmZlcj47XG5cbiAgcmV0dXJuIHNpZ25hdHVyZXMubWFwKChzaWduYXR1cmUpID0+IHtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNpZ25UcmFuc2FjdGlvbihcbiAgc2lnblR4RGF0YTogdHlwZXMuc2lnblR4VHlwZSxcbiAgcmF3VHg6IFRyYW5zYWN0aW9uIHwgVmVyc2lvbmVkTWVzc2FnZSxcbiAgc2NyaXB0OiBzdHJpbmcsXG4gIGFyZ3VtZW50OiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IChhd2FpdCBleGVjdXRlU2NyaXB0V2l0aFByZUFjdGlvbnMoc2lnblR4RGF0YSwgc2NyaXB0LCBhcmd1bWVudCkpIGFzIEJ1ZmZlcjtcbiAgaWYgKHJhd1R4IGluc3RhbmNlb2YgTWVzc2FnZSB8fCByYXdUeCBpbnN0YW5jZW9mIE1lc3NhZ2VWMCkge1xuICAgIGNvbnN0IHNpZ25hdHVyZVVpbnQ4QXJyYXlzID0gKHNpZ25UeERhdGEgYXMgc2lnblZlcnNpb25lZFRyYW5zYWN0aW9uVHlwZSkudHJhbnNhY3Rpb24uc2lnbmF0dXJlcztcbiAgICBzaWduYXR1cmVVaW50OEFycmF5c1swXSA9IG5ldyBVaW50OEFycmF5KHNpZ25hdHVyZSk7XG4gICAgY29uc3Qgc2VyaWFsaXplZFRyYW5zYWN0aW9uID0gbmV3IFZlcnNpb25lZFRyYW5zYWN0aW9uKHJhd1R4LCBzaWduYXR1cmVVaW50OEFycmF5cykuc2VyaWFsaXplKCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHNlcmlhbGl6ZWRUcmFuc2FjdGlvbikudG9TdHJpbmcoJ2hleCcpO1xuICB9IGVsc2UgaWYgKHJhd1R4IGluc3RhbmNlb2YgVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm4gcmF3VHgudG9UeFN0cmluZyhzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNpZ25NZXNzYWdlKHNpZ25Nc2dEYXRhOiB0eXBlcy5zaWduTXNnVHlwZSwgc2NyaXB0OiBzdHJpbmcsIGFyZ3VtZW50OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBleGVjdXRlU2NyaXB0V2l0aFByZUFjdGlvbnMoc2lnbk1zZ0RhdGEsIHNjcmlwdCwgYXJndW1lbnQpO1xuICByZXR1cm4gc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKTtcbn1cbmV4cG9ydCB7IHNpZ25UcmFuc2FjdGlvbiwgc2lnbk1lc3NhZ2UsIHNpZ25BbGxUcmFuc2FjdGlvbnMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxxQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQWlFLFNBR2xETSwyQkFBMkJBLENBQUFDLEVBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBO0VBQUEsT0FBQUMsNEJBQUEsQ0FBQUMsS0FBQSxPQUFBQyxTQUFBO0FBQUE7QUFBQSxTQUFBRiw2QkFBQTtFQUFBQSw0QkFBQSxPQUFBRyxrQkFBQSwwQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQTFDLFNBQUFDLFFBQ0VDLFFBQTRCLEVBQzVCQyxNQUFjLEVBQ2RDLFFBQWdCO0lBQUEsSUFBQUMsU0FBQSxFQUFBQyxhQUFBLEVBQUFDLEtBQUEsRUFBQUMsU0FBQSxFQUFBQyxZQUFBLEVBQUFDLFVBQUEsRUFBQUMsTUFBQTtJQUFB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
;