PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@near-js/accounts/lib/commonjs
Просмотр файла: utils.cjs
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.viewFunction = exports.viewState = exports.encodeJSContractArgs = exports.validateArgs = void 0;
const types_1 = require("@near-js/types");
const utils_1 = require("@near-js/utils");
function parseJsonFromRawResponse(response) {
return JSON.parse(Buffer.from(response).toString());
}
function bytesJsonStringify(input) {
return Buffer.from(JSON.stringify(input));
}
function validateArgs(args) {
const isUint8Array = args.byteLength !== undefined && args.byteLength === args.length;
if (isUint8Array) {
return;
}
if (Array.isArray(args) || typeof args !== 'object') {
throw new types_1.PositionalArgsError();
}
}
exports.validateArgs = validateArgs;
function encodeJSContractArgs(contractId, method, args) {
return Buffer.concat([Buffer.from(contractId), Buffer.from([0]), Buffer.from(method), Buffer.from([0]), Buffer.from(args)]);
}
exports.encodeJSContractArgs = encodeJSContractArgs;
/**
* Returns the state (key value pairs) of account's contract based on the key prefix.
* Pass an empty string for prefix if you would like to return the entire state.
* @see [https://docs.near.org/api/rpc/contracts#view-contract-state](https://docs.near.org/api/rpc/contracts#view-contract-state)
*
* @param connection connection to query state from
* @param accountId account whose state is viewed
* @param prefix allows to filter which keys should be returned. Empty prefix means all keys. String prefix is utf-8 encoded.
* @param blockQuery specifies which block to query state at. By default returns last "optimistic" block (i.e. not necessarily finalized).
*/
async function viewState(connection, accountId, prefix, blockQuery = { finality: 'optimistic' }) {
const { values } = await connection.provider.query({
request_type: 'view_state',
...blockQuery,
account_id: accountId,
prefix_base64: Buffer.from(prefix).toString('base64')
});
return values.map(({ key, value }) => ({
key: Buffer.from(key, 'base64'),
value: Buffer.from(value, 'base64')
}));
}
exports.viewState = viewState;
/**
* Invoke a contract view function using the RPC API.
* @see [https://docs.near.org/api/rpc/contracts#call-a-contract-function](https://docs.near.org/api/rpc/contracts#call-a-contract-function)
*
* @param options Function call options.
* @param options.contractId NEAR account where the contract is deployed
* @param options.methodName The view-only method (no state mutations) name on the contract as it is written in the contract code
* @param options.args Any arguments to the view contract method, wrapped in JSON
* @param options.parse Parse the result of the call. Receives a Buffer (bytes array) and converts it to any object. By default result will be treated as json.
* @param options.stringify Convert input arguments into a bytes array. By default the input is treated as a JSON.
* @param options.jsContract Is contract from JS SDK, automatically encodes args from JS SDK to binary.
* @param options.blockQuery specifies which block to query state at. By default returns last "optimistic" block (i.e. not necessarily finalized).
* @returns {Promise<any>}
*/
async function viewFunction(connection, { contractId, methodName, args = {}, parse = parseJsonFromRawResponse, stringify = bytesJsonStringify, jsContract = false, blockQuery = { finality: 'optimistic' } }) {
let encodedArgs;
validateArgs(args);
if (jsContract) {
encodedArgs = encodeJSContractArgs(contractId, methodName, Object.keys(args).length > 0 ? JSON.stringify(args) : '');
}
else {
encodedArgs = stringify(args);
}
const result = await connection.provider.query({
request_type: 'call_function',
...blockQuery,
account_id: jsContract ? connection.jsvmAccountId : contractId,
method_name: jsContract ? 'view_js_contract' : methodName,
args_base64: encodedArgs.toString('base64')
});
if (result.logs) {
(0, utils_1.printTxOutcomeLogs)({ contractId, logs: result.logs });
}
return result.result && result.result.length > 0 && parse(Buffer.from(result.result));
}
exports.viewFunction = viewFunction;
Выполнить команду
Для локальной разработки. Не используйте в интернете!