UNPKG

@dfinity/pic

Version:

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

44 lines 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createDeferredActorClass = createDeferredActorClass; const candid_1 = require("@dfinity/candid"); const principal_1 = require("@dfinity/principal"); const util_1 = require("./util"); function createDeferredActorClass(interfaceFactory, canisterId, pocketIcClient) { const service = interfaceFactory({ IDL: candid_1.IDL }); let sender = null; function createDeferredActorMethod(method, func) { return async function (...args) { const arg = candid_1.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 = (0, util_1.decodeCandid)(func.retTypes, res.body); return resolve(decodedRes); }); }; }; } function getSender() { return sender ?? principal_1.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