UNPKG

kadenakonnect

Version:

Handles connecting to Kadena enabled wallets: X-Wallet, Zelcore, Chainweaver, Koala Wallet, and Wallet Connect

198 lines (195 loc) 6.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.wait = exports.sendCommand = exports.parseRes = exports.mkReq = exports.localCommand = exports.listen = exports.handleError = exports.creationTime = exports.createSigningCommand = exports.createPactCommand = exports.createCap = exports.buildUrl = void 0; require("core-js/modules/es.regexp.to-string.js"); require("core-js/modules/es.json.stringify.js"); require("core-js/modules/es.promise.js"); var _pactLangApi = _interopRequireDefault(require("pact-lang-api")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const creationTime = () => String(Math.round(new Date().getTime() / 1000) - 10); exports.creationTime = creationTime; const buildUrl = (network, networkId, chainId) => { return "".concat(network, "/chainweb/0.0/").concat(networkId, "/chain/").concat(chainId, "/pact"); }; exports.buildUrl = buildUrl; const createPactCommand = function createPactCommand(getState, chainId, pactCode) { let envData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; let gasLimit = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 15000; let gasPrice = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1e-5; let includeSigner = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false; let caps = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : []; let kadenaSliceState = getState().kadenaInfo; let signers = []; if (includeSigner) { let signer = { pubKey: kadenaInfo.pubKey }; if (caps.length > 0) { signer.caps = caps; } signers.push(signer); } let cmd = { networkId: kadenaSliceState.networkId, payload: { exec: { data: envData, code: pactCode } }, signers: [], // [signer] meta: { chainId: chainId, gasLimit: gasLimit, gasPrice: gasPrice, sender: kadenaSliceState.account, ttl: kadenaSliceState.ttl, creationTime: creationTime() }, nonce: Date.now().toString() }; let cmdString = JSON.stringify(cmd); let hash = _pactLangApi.default.crypto.hash(cmdString); // let signer = { // pubKey: kadenaSliceState.pubKey // } // if (caps.length > 0) { // signer['caps'] = caps; // } return { cmd: cmdString, hash: hash, sigs: [] }; }; exports.createPactCommand = createPactCommand; const createSigningCommand = function createSigningCommand(getState, chainId, pactCode, envData) { let caps = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : []; let gasLimit = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 15000; let gasPrice = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1e-5; let kadenaSliceState = getState().kadenaInfo; return { pactCode: pactCode, envData: envData, sender: kadenaSliceState.account, networkId: kadenaSliceState.networkId, chainId: chainId, gasLimit: gasLimit, gasPrice: gasPrice, signingPubKey: kadenaSliceState.pubKey, ttl: kadenaSliceState.ttl, caps: caps }; }; exports.createSigningCommand = createSigningCommand; const createCap = (role, description, name, args) => { return _pactLangApi.default.lang.mkCap(role, description, name, args); }; exports.createCap = createCap; const sendCommand = async function sendCommand(getState, chainId, signedCmd) { let kadenaInfo = getState().kadenaInfo; let networkUrl = buildUrl(kadenaInfo.network, kadenaInfo.networkId, chainId); return await _pactLangApi.default.wallet.sendSigned(signedCmd, networkUrl); }; exports.sendCommand = sendCommand; const localCommand = async function localCommand(getState, chainId, cmd) { let kadenaInfo = getState().kadenaInfo; let networkUrl = buildUrl(kadenaInfo.network, kadenaInfo.networkId, chainId); console.log(networkUrl); let res = await fetch("".concat(networkUrl, "/api/v1/local"), { headers: { "Content-Type": "application/json" }, method: "POST", body: JSON.stringify(cmd) }); let data = parseRes(res); return data; // let publicKey = kadenaInfo.pubKey; // let keyPairs = []; // // console.log(publicKey); // // if (publicKey) { // // let data = { // // publicKey: publicKey // // } // // if (caps.length > 0) { // // data.clist = caps.map(capDesc => capDesc.cap); // // } // // keyPairs.push(data); // // } // // console.log('utils.keypairs'); // // console.log(keyPairs); // let cmd = { // keyPairs: keyPairs, // pactCode: pactCode, // envData: envData, // nonce: creationTime(), // meta: { // chainId: chainId, // gasLimit: gasLimit, // gasPrice: gasPrice, // sender: kadenaInfo.account, // ttl: kadenaInfo.ttl, // creationTime: creationTime(), // } // } // let res = await Pact.fetch.local(cmd, networkUrl); // return res; }; exports.localCommand = localCommand; const listen = async function listen(getState, chainId, txId) { let kadenaInfo = getState().kadenaInfo; let networkUrl = buildUrl(kadenaInfo.network, kadenaInfo.networkId, chainId); return await _pactLangApi.default.fetch.listen({ listen: txId }, networkUrl); }; exports.listen = listen; const mkReq = function mkReq(cmd) { return { headers: { 'Content-Type': 'application/json' }, method: 'POST', body: JSON.stringify(cmd) }; }; exports.mkReq = mkReq; const parseRes = async function parseRes(raw) { const rawRes = await raw; const res = await rawRes; if (res.ok) { const resJSON = await rawRes.json(); return resJSON; } else { const resTEXT = await rawRes.text(); return resTEXT; } }; exports.parseRes = parseRes; const wait = async timeout => { return new Promise(resolve => { setTimeout(resolve, timeout); }); }; exports.wait = wait; const handleError = error => { console.log("ERROR: ".concat(JSON.stringify(error))); return { errorMessage: 'Unhandled Exception' }; }; exports.handleError = handleError; Date.prototype.yyyymmdd = function () { var mm = this.getMonth() + 1; // getMonth() is zero-based var dd = this.getDate(); return [this.getFullYear(), (mm > 9 ? '' : '0') + mm, (dd > 9 ? '' : '0') + dd].join(''); }; Date.prototype.yyyy_mm_dd = function () { var mm = this.getMonth() + 1; // getMonth() is zero-based var dd = this.getDate(); return [this.getFullYear(), (mm > 9 ? '' : '0') + mm, (dd > 9 ? '' : '0') + dd].join('-'); };