kadenakonnect
Version:
Handles connecting to Kadena enabled wallets: X-Wallet, Zelcore, Chainweaver, Koala Wallet, and Wallet Connect
198 lines (195 loc) • 6.6 kB
JavaScript
;
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('-');
};