koinos-rpc
Version:
Typescript library to communicate with Koinos API via RPC
62 lines • 4.73 kB
JavaScript
;
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.Client = void 0;
const axios_1 = __importDefault(require("axios"));
const verror_1 = __importDefault(require("verror"));
const Chain_1 = require("./service/Chain");
const BlockStore_1 = require("./service/BlockStore");
const TransactionStore_1 = require("./service/TransactionStore");
const ContractMetaStore_1 = require("./service/ContractMetaStore");
const AccountHistory_1 = require("./service/AccountHistory");
class Client {
constructor(address, options = {}) {
this.addresses = Array.isArray(address) ? address : [address];
this.currentAddress = this.addresses[0];
this.options = options;
this.chain = new Chain_1.Chain(this);
this.blockStore = new BlockStore_1.BlockStore(this);
this.transactionStore = new TransactionStore_1.TransactionStore(this);
this.contractMetaStore = new ContractMetaStore_1.ContractMetaStore(this);
this.accountHistory = new AccountHistory_1.AccountHistory(this);
}
call(service, method, params = {}) {
return __awaiter(this, void 0, void 0, function* () {
const { data } = yield axios_1.default.post(this.currentAddress, {
id: 1,
jsonrpc: '2.0',
method: `${service}.${method}`,
params
});
if (data.result) {
return data.result;
}
if (data.error) {
throw this.formatError(data.error);
}
throw new Error('Unexpected error');
});
}
formatError(error) {
if (error instanceof verror_1.default) {
return error;
}
return new verror_1.default({
name: 'RPCError',
info: error
}, error === null || error === void 0 ? void 0 : error.message);
}
}
exports.Client = Client;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50LmpzIiwic291cmNlUm9vdCI6Ii4vc3JjLyIsInNvdXJjZXMiOlsiQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQixvREFBNEI7QUFDNUIsMkNBQXdDO0FBQ3hDLHFEQUFrRDtBQUNsRCxpRUFBOEQ7QUFDOUQsbUVBQWdFO0FBRWhFLDZEQUEwRDtBQU8xRCxNQUFhLE1BQU07SUFZaEIsWUFBWSxPQUEwQixFQUFFLFVBQXlCLEVBQUU7UUFDaEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxhQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHVCQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksbUNBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUkscUNBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLCtCQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVLLElBQUksQ0FBaUYsT0FBZ0IsRUFBRSxNQUFjLEVBQUUsU0FBYyxFQUFFOztZQUMxSSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxlQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3BELEVBQUUsRUFBRSxDQUFDO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE1BQU0sRUFBRSxHQUFHLE9BQU8sSUFBSSxNQUFNLEVBQUU7Z0JBQzlCLE1BQU07YUFDUixDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ3JCO1lBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNiLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDckM7WUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkMsQ0FBQztLQUFBO0lBRU8sV0FBVyxDQUFDLEtBQVU7UUFDM0IsSUFBSSxLQUFLLFlBQVksZ0JBQU0sRUFBRTtZQUMxQixPQUFPLEtBQUssQ0FBQztTQUNmO1FBQ0QsT0FBTyxJQUFJLGdCQUFNLENBQ2Q7WUFDRyxJQUFJLEVBQUUsVUFBVTtZQUNoQixJQUFJLEVBQUUsS0FBSztTQUNiLEVBQ0QsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLE9BQWlCLENBQzFCLENBQUM7SUFDTCxDQUFDO0NBQ0g7QUF2REQsd0JBdURDIn0=