UNPKG

@nfps.dev/runtime

Version:

Runtime library for NFPs

59 lines 2.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.comcClient = exports.comcPortal = exports.XC_CMD_FETCH_DATA = exports.XC_CMD_STORE_DATA = exports.XC_CMD_SECRET_DECRYPT = exports.XC_CMD_SECRET_ENCRYPT = exports.XC_CMD_EXEC_CONTRACT = exports.XC_CMD_SIGN_AUTO = exports.XC_CMD_ACCOUNT_CHANGED = exports.XC_CMD_DISCONNECT = exports.XC_CMD_CONNECT = void 0; const belt_1 = require("@blake.regalia/belt"); const dom_1 = require("./dom"); exports.XC_CMD_CONNECT = 1; exports.XC_CMD_DISCONNECT = 2; exports.XC_CMD_ACCOUNT_CHANGED = 3; exports.XC_CMD_SIGN_AUTO = 4; exports.XC_CMD_EXEC_CONTRACT = 5; exports.XC_CMD_SECRET_ENCRYPT = 6; exports.XC_CMD_SECRET_DECRYPT = 7; exports.XC_CMD_STORE_DATA = 8; exports.XC_CMD_FETCH_DATA = 9; const comcPortal = (p_host, dm_root) => new Promise((fk_resolve) => { const dm_iframe = (0, dom_1.create_html)('iframe', { src: p_host, style: 'display:none', }); dm_iframe.onload = () => { fk_resolve(dm_iframe); }; dm_root.append(dm_iframe); }); exports.comcPortal = comcPortal; const comcClient = (dm_iframe) => { const d_window = dm_iframe.contentWindow; if (!d_window) throw new Error('Unable to access iframe content window at ' + dm_iframe.src); // requests dict const h_requests = {}; // response handler addEventListener('message', (d_event) => { try { // destructure response const [si_req, xc_result, w_value,] = d_event.data; // route h_requests[si_req][xc_result](w_value); // clean delete h_requests[si_req]; } catch (e_process) { } }); // client instance return { post: (xc_cmd, w_arg, si_req = (0, belt_1.uuid_v4)()) => new Promise((fk_resolve, fe_reject) => { // save resolver to request dict h_requests[si_req] = [fk_resolve, fe_reject]; // post message to frame d_window.postMessage([ si_req, xc_cmd, w_arg, ], '*'); }), }; }; exports.comcClient = comcClient; //# sourceMappingURL=comc.js.map