PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/ic0/lib/canister
Просмотр файла: agentCanister.js
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.agentCanister = exports.AgentCanister = void 0;
const agent_1 = require("@dfinity/agent");
const cross_fetch_1 = __importDefault(require("cross-fetch"));
const didJsCache = new Map();
class AgentCanister {
constructor(agent, id) {
this.agent = agent;
this.id = id;
}
_fetchActor() {
return __awaiter(this, void 0, void 0, function* () {
if (this._actor) {
return this._actor;
}
let js = didJsCache.get(this.id);
if (!js) {
const source = yield (0, agent_1.fetchCandid)(this.id, this.agent);
// TODO: use local Candid UI canister
const didJsAgent = agent_1.HttpAgent.createSync({
host: 'https://icp-api.io',
fetch: cross_fetch_1.default,
}); // mainnet
const didJsCanisterId = 'a4gq6-oaaaa-aaaab-qaa4q-cai';
const didJsInterface = ({ IDL }) => IDL.Service({
did_to_js: IDL.Func([IDL.Text], [IDL.Opt(IDL.Text)], ['query']),
});
const didJs = agent_1.Actor.createActor(didJsInterface, {
canisterId: didJsCanisterId,
agent: didJsAgent,
});
js = (yield didJs.did_to_js(source))[0];
didJsCache.set(this.id, js);
}
const candid = yield eval(`import("data:text/javascript;charset=utf-8,${encodeURIComponent(js)}")`);
const actor = agent_1.Actor.createActor(candid.idlFactory, {
agent: this.agent,
canisterId: this.id,
});
this._actor = actor;
return actor;
});
}
call(method, ...args) {
return __awaiter(this, void 0, void 0, function* () {
const actor = yield this._fetchActor();
const result = yield actor[method](...args);
return result;
});
}
}
exports.AgentCanister = AgentCanister;
function agentCanister(agent, id) {
return new AgentCanister(agent, id);
}
exports.agentCanister = agentCanister;
//# sourceMappingURL=agentCanister.js.mapВыполнить команду
Для локальной разработки. Не используйте в интернете!