@nfps.dev/runtime
Version:
Runtime library for NFPs
59 lines • 2.18 kB
JavaScript
;
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