@dfinity/pic
Version:
An Internet Computer Protocol canister testing library for TypeScript and JavaScript.
44 lines • 1.78 kB
JavaScript
;
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