UNPKG

pic-js-mops

Version:

An Internet Computer Protocol canister testing library for TypeScript and JavaScript.

41 lines 1.61 kB
import { IDL } from '@icp-sdk/core/candid'; import { Principal } from '@icp-sdk/core/principal'; import { decodeCandid } from './util/index.js'; export function createDeferredActorClass(interfaceFactory, canisterId, pocketIcClient) { const service = interfaceFactory({ IDL }); let sender = null; function createDeferredActorMethod(method, func) { return async function (...args) { const arg = IDL.encode(func.argTypes, args); const sender = getSender(); const messageId = await pocketIcClient.submitCall({ canisterId, sender, method, payload: new Uint8Array(arg), }); return function () { return new Promise(async (resolve) => { const res = await pocketIcClient.awaitCall(messageId); const decodedRes = decodeCandid(func.retTypes, res.body); return resolve(decodedRes); }); }; }; } function getSender() { return sender ?? Principal.anonymous(); } const DeferredActor = function () { }; DeferredActor.prototype.setPrincipal = function (newSender) { sender = newSender; }; DeferredActor.prototype.setIdentity = function (identity) { sender = identity.getPrincipal(); }; service._fields.forEach(([methodName, func]) => { DeferredActor.prototype[methodName] = createDeferredActorMethod(methodName, func); }); return DeferredActor; } //# sourceMappingURL=pocket-ic-deferred-actor.js.map