PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-coin-sui/dist/test/local_fullnode

Просмотр файла: RpcClient.js

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RpcClient = exports.RpcError = void 0;
const util_1 = __importDefault(require("util"));
const axios_1 = __importDefault(require("axios"));
const debug_1 = __importDefault(require("debug"));
const debug = (0, debug_1.default)('RpcClient');
function elideResponse(method) {
    return method === 'sui_getProtocolConfig';
}
function unwrapResult(method, v) {
    if ('error' in v) {
        debug('< %s ERROR', method, v.error);
        throw new Error(JSON.stringify(v.error));
    }
    if (elideResponse(method)) {
        debug('< %s ...', method);
    }
    else {
        debug('< %s', method, util_1.default.inspect(v.result, { depth: 10 }));
    }
    return v.result;
}
class RpcError extends Error {
    constructor(rpcError) {
        super(`RPC error: ${rpcError.message} (code=${rpcError.code})`);
        this.rpcError = rpcError;
    }
    static isRpcErrorWithCode(e, code) {
        return e instanceof RpcError && e.rpcError.code === code;
    }
}
exports.RpcError = RpcError;
/** Wrapper around https://docs.sui.io/sui-jsonrpc */
class RpcClient {
    constructor(url) {
        this.url = url;
        // Running counter, increments every request
        this.id = 0;
    }
    static async createCheckedConnection(url) {
        const rpcClient = new RpcClient(url);
        const { protocolVersion } = await rpcClient.exec('sui_getProtocolConfig');
        const chainId = await rpcClient.exec('sui_getChainIdentifier');
        debug('Connected to', url, 'protocolVersion', protocolVersion, 'chainId', chainId);
        return rpcClient;
    }
    async exec(method, ...params) {
        params = params.filter((v) => v !== undefined);
        try {
            debug('>', this.url, method, params);
            const response = await axios_1.default.post(this.url, {
                jsonrpc: '2.0',
                method,
                params,
                id: `${this.id++}`,
            });
            return unwrapResult(method, response.data);
        }
        catch (e) {
            if (e.isAxiosError && e.response) {
                e = e;
                debug('< %s ERROR', method, e.response.statusText, util_1.default.inspect(e.response.data, { depth: 10 }));
                e = e;
                const { error = {} } = e.response.data;
                throw new RpcError(error);
            }
            throw e;
        }
    }
    /**
     * https://docs.sui.io/sui-jsonrpc#suix_getCoins
     */
    async getCoins(owner, coinType, cursor, limit) {
        return this.exec('suix_getCoins', owner, coinType, cursor, limit);
    }
    async executeTransactionBlock(tx_bytes, signatures, options, request_type) {
        return this.exec('sui_executeTransactionBlock', tx_bytes, signatures, {
            showInput: true,
            showRawInput: true,
            showEffects: true,
            showEvents: true,
            showObjectChanges: true,
            showBalanceChanges: true,
        }, request_type);
    }
    /**
     * https://docs.sui.io/sui-jsonrpc#suix_getValidatorsApy
     * APY = Annual Percentage Yield
     */
    async getValidatorsApy() {
        return this.exec('suix_getValidatorsApy');
    }
    /**
     * https://docs.sui.io/sui-jsonrpc#suix_getStakes
     */
    async getStakes(owner) {
        return this.exec('suix_getStakes', owner);
    }
    /**
     * https://docs.sui.io/sui-jsonrpc#sui_getObject
     */
    async getObject(object_id) {
        return this.exec('sui_getObject', object_id, { showData: true });
    }
}
exports.RpcClient = RpcClient;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnBjQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9sb2NhbF9mdWxsbm9kZS9ScGNDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLGtEQUEwQztBQUMxQyxrREFBK0I7QUFJL0IsTUFBTSxLQUFLLEdBQUcsSUFBQSxlQUFVLEVBQUMsV0FBVyxDQUFDLENBQUM7QUFFdEMsU0FBUyxhQUFhLENBQUMsTUFBYztJQUNuQyxPQUFPLE1BQU0sS0FBSyx1QkFBdUIsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUksTUFBYyxFQUFFLENBQStEO0lBQ3RHLElBQUksT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2pCLEtBQUssQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUIsS0FBSyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO1NBQU0sQ0FBQztRQUNOLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBYSxRQUFTLFNBQVEsS0FBSztJQUNqQyxZQUFtQixRQUEyQztRQUM1RCxLQUFLLENBQUMsY0FBYyxRQUFRLENBQUMsT0FBTyxVQUFVLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FB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QUFPLElBQUksQ0FBQyxJQUFJLENBQ2QsNkJBQTZCLEVBQzdCLFFBQVEsRUFDUixVQUFVLEVBQ1Y7WUFDRSxTQUFTLEVBQUUsSUFBSTtZQUNmLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsa0JBQWtCLEVBQUUsSUFBSTtTQUN6QixFQUNELFlBQVksQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxnQkFBZ0I7UUFJcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFhO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQWlCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztDQUNGO0FBcEdELDhCQW9HQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1dGlsIGZyb20gJ3V0aWwnO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBTdWlPYmplY3REYXRhLCBTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9zcmMvbGliL215c3RlbmxhYi90eXBlcyc7XG5pbXBvcnQgeyBEZWxlZ2F0ZWRTdGFrZSB9IGZyb20gJy4uLy4uL3NyYy9saWIvbXlzdGVubGFiL3R5cGVzL3ZhbGlkYXRvcic7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygnUnBjQ2xpZW50Jyk7XG5cbmZ1bmN0aW9uIGVsaWRlUmVzcG9uc2UobWV0aG9kOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIG1ldGhvZCA9PT0gJ3N1aV9nZXRQcm90b2NvbENvbmZpZyc7XG59XG5cbmZ1bmN0aW9uIHVud3JhcFJlc3VsdDxBPihtZXRob2Q6IHN0cmluZywgdjogeyByZXN1bHQ6IEEgfSB8IHsgZXJyb3I6IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfSB9KTogQSB7XG4gIGlmICgnZXJyb3InIGluIHYpIHtcbiAgICBkZWJ1ZygnPCAlcyBFUlJPUicsIG1ldGhvZCwgdi5lcnJvcik7XG4gICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHYuZXJyb3IpKTtcbiAgfVxuICBpZiAoZWxpZGVSZXNwb25zZShtZXRob2QpKSB7XG4gICAgZGVidWcoJzwgJXMgLi4uJywgbWV0aG9kKTtcbiAgfSBlbHNlIHtcbiAgICBkZWJ1ZygnPCAlcycsIG1ldGhvZCwgdXRpbC5pbnNwZWN0KHYucmVzdWx0LCB7IGRlcHRoOiAxMCB9KSk7XG4gIH1cbiAgcmV0dXJuIHYucmVzdWx0O1xufVxuXG5leHBvcnQgY2xhc3MgUnBjRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBycGNFcnJvcjogeyBjb2RlOiBudW1iZXI7IG1lc3NhZ2U6IHN0cmluZyB9KSB7XG4gICAgc3VwZXIoYFJQQyBlcnJvcjogJHtycGNFcnJvci5tZXNzYWdlfSAoY29kZT0ke3JwY0Vycm9yLmNvZGV9KWApO1xuICB9XG5cbiAgc3RhdGljIGlzUnBjRXJyb3JXaXRoQ29kZShlOiBFcnJvciwgY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGUgaW5zdGFuY2VvZiBScGNFcnJvciAmJiBlLnJwY0Vycm9yLmNvZGUgPT09IGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgQ29pbiA9IHtcbiAgY29pblR5cGU6IHN0cmluZztcbiAgY29pbk9iamVjdElkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZGlnZXN0OiBzdHJpbmc7XG4gIGJhbGFuY2U6IHN0cmluZztcbiAgcHJldmlvdXNUcmFuc2FjdGlvbjogc3RyaW5nO1xufTtcblxuLyoqIFdyYXBwZXIgYXJvdW5kIGh0dHBzOi8vZG9jcy5zdWkuaW8vc3VpLWpzb25ycGMgKi9cbmV4cG9ydCBjbGFzcyBScGNDbGllbnQge1xuICAvLyBSdW5uaW5nIGNvdW50ZXIsIGluY3JlbWVudHMgZXZlcnkgcmVxdWVzdFxuICBpZCA9IDA7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHVybDogc3RyaW5nKSB7fVxuXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVDaGVja2VkQ29ubmVjdGlvbih1cmw6IHN0cmluZyk6IFByb21pc2U8UnBjQ2xpZW50PiB7XG4gICAgY29uc3QgcnBjQ2xpZW50ID0gbmV3IFJwY0NsaWVudCh1cmwpO1xuICAgIGNvbnN0IHsgcHJvdG9jb2xWZXJzaW9uIH0gPSBhd2FpdCBycGNDbGllbnQuZXhlYzx7IHByb3RvY29sVmVyc2lvbjogc3RyaW5nIH0+KCdzdWlfZ2V0UHJvdG9jb2xDb25maWcnKTtcbiAgICBjb25zdCBjaGFpbklkID0gYXdhaXQgcnBjQ2xpZW50LmV4ZWMoJ3N1aV9nZXRDaGFpbklkZW50aWZpZXInKTtcbiAgICBkZWJ1ZygnQ29ubmVjdGVkIHRvJywgdXJsLCAncHJvdG9jb2xWZXJzaW9uJywgcHJvdG9jb2xWZXJzaW9uLCAnY2hhaW5JZCcsIGNoYWluSWQpO1xuICAgIHJldHVybiBycGNDbGllbnQ7XG4gIH1cblxuICBhc3luYyBleGVjPFQ+KG1ldGhvZDogc3RyaW5nLCAuLi5wYXJhbXM6IHVua25vd25bXSk6IFByb21pc2U8VD4ge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5maWx0ZXIoKHYpID0+IHYgIT09IHVuZGVmaW5lZCk7XG4gICAgdHJ5IHtcbiAgICAgIGRlYnVnKCc+JywgdGhpcy51cmwsIG1ldGhvZCwgcGFyYW1zKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdCh0aGlzLnVybCwge1xuICAgICAgICBqc29ucnBjOiAnMi4wJyxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGlkOiBgJHt0aGlzLmlkKyt9YCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHVud3JhcFJlc3VsdChtZXRob2QsIHJlc3BvbnNlLmRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLmlzQXhpb3NFcnJvciAmJiBlLnJlc3BvbnNlKSB7XG4gICAgICAgIGUgPSBlIGFzIEF4aW9zRXJyb3I7XG4gICAgICAgIGRlYnVnKCc8ICVzIEVSUk9SJywgbWV0aG9kLCBlLnJlc3BvbnNlLnN0YXR1c1RleHQsIHV0aWwuaW5zcGVjdChlLnJlc3BvbnNlLmRhdGEsIHsgZGVwdGg6IDEwIH0pKTtcbiAgICAgICAgZSA9IGUgYXMgQXhpb3NFcnJvcjtcbiAgICAgICAgY29uc3QgeyBlcnJvciA9IHt9IH0gPSBlLnJlc3BvbnNlLmRhdGE7XG4gICAgICAgIHRocm93IG5ldyBScGNFcnJvcihlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGh0dHBzOi8vZG9jcy5zdWkuaW8vc3VpLWpzb25ycGMjc3VpeF9nZXRDb2luc1xuICAgKi9cbiAgYXN5bmMgZ2V0Q29pbnMoXG4gICAgb3duZXI6IHN0cmluZyxcbiAgICBjb2luVHlwZT86IHN0cmluZyxcbiAgICBjdXJzb3I/OiBzdHJpbmcsXG4gICAgbGltaXQ/OiBudW1iZXJcbiAgKTogUHJvbWlzZTx7XG4gICAgZGF0YTogQ29pbltdO1xuICAgIG5leHRDdXJzb3I/OiBzdHJpbmc7XG4gICAgaGFzTmV4dFBhZ2U/OiBib29sZWFuO1xuICB9PiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlYygnc3VpeF9nZXRDb2lucycsIG93bmVyLCBjb2luVHlwZSwgY3Vyc29yLCBsaW1pdCk7XG4gIH1cblxuICBhc3luYyBleGVjdXRlVHJhbnNhY3Rpb25CbG9jayhcbiAgICB0eF9ieXRlczogc3RyaW5nLFxuICAgIHNpZ25hdHVyZXM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM/OiB1bmtub3duLFxuICAgIHJlcXVlc3RfdHlwZT86IHVua25vd25cbiAgKTogUHJvbWlzZTxTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5leGVjKFxuICAgICAgJ3N1aV9leGVjdXRlVHJhbnNhY3Rpb25CbG9jaycsXG4gICAgICB0eF9ieXRlcyxcbiAgICAgIHNpZ25hdHVyZXMsXG4gICAgICB7XG4gICAgICAgIHNob3dJbnB1dDogdHJ1ZSxcbiAgICAgICAgc2hvd1Jhd0lucHV0OiB0cnVlLFxuICAgICAgICBzaG93RWZmZWN0czogdHJ1ZSxcbiAgICAgICAgc2hvd0V2ZW50czogdHJ1ZSxcbiAgICAgICAgc2hvd09iamVjdENoYW5nZXM6IHRydWUsXG4gICAgICAgIHNob3dCYWxhbmNlQ2hhbmdlczogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICByZXF1ZXN0X3R5cGVcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGh0dHBzOi8vZG9jcy5zdWkuaW8vc3VpLWpzb25ycGMjc3VpeF9nZXRWYWxpZGF0b3JzQXB5XG4gICAqIEFQWSA9IEFubnVhbCBQZXJjZW50YWdlIFlpZWxkXG4gICAqL1xuICBhc3luYyBnZXRWYWxpZGF0b3JzQXB5KCk6IFByb21pc2U8e1xuICAgIGFweXM6IHsgYWRkcmVzczogc3RyaW5nOyBhcHk6IHN0cmluZyB9W107XG4gICAgZXBvY2g6IHN0cmluZztcbiAgfT4ge1xuICAgIHJldHVybiB0aGlzLmV4ZWMoJ3N1aXhfZ2V0VmFsaWRhdG9yc0FweScpO1xuICB9XG5cbiAgLyoqXG4gICAqIGh0dHBzOi8vZG9jcy5zdWkuaW8vc3VpLWpzb25ycGMjc3VpeF9nZXRTdGFrZXNcbiAgICovXG4gIGFzeW5jIGdldFN0YWtlcyhvd25lcjogc3RyaW5nKTogUHJvbWlzZTxEZWxlZ2F0ZWRTdGFrZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlYygnc3VpeF9nZXRTdGFrZXMnLCBvd25lcik7XG4gIH1cblxuICAvKipcbiAgICogaHR0cHM6Ly9kb2NzLnN1aS5pby9zdWktanNvbnJwYyNzdWlfZ2V0T2JqZWN0XG4gICAqL1xuICBhc3luYyBnZXRPYmplY3Qob2JqZWN0X2lkOiBzdHJpbmcpOiBQcm9taXNlPHsgZGF0YTogU3VpT2JqZWN0RGF0YSB9PiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlYygnc3VpX2dldE9iamVjdCcsIG9iamVjdF9pZCwgeyBzaG93RGF0YTogdHJ1ZSB9KTtcbiAgfVxufVxuIl19

Выполнить команду


Для локальной разработки. Не используйте в интернете!