@ellcrys/spell
Version:
The official JavaScript library for Ellcrys
114 lines • 7.91 kB
JavaScript
"use strict";
/**
* @module Spell
*/
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var errors_1 = __importStar(require("./errors"));
var auth_1 = __importDefault(require("./namespaces/auth"));
var ell_1 = __importDefault(require("./namespaces/ell"));
var logger_1 = __importDefault(require("./namespaces/logger"));
var miner_1 = __importDefault(require("./namespaces/miner"));
var net_1 = __importDefault(require("./namespaces/net"));
var node_1 = __importDefault(require("./namespaces/node"));
var pool_1 = __importDefault(require("./namespaces/pool"));
var rpc_1 = __importDefault(require("./namespaces/rpc"));
var state_1 = __importDefault(require("./namespaces/state"));
var rpcclient_1 = __importStar(require("./rpcclient"));
/**
* Spell provides access to a client
* RPC functionalities.
*
* @export
* @class Spell
*/
var Spell = /** @class */ (function () {
/**
* Creates an instance of Spell.
* @memberof Spell
*/
function Spell() {
this.rpcClient = new rpcclient_1.default();
this.state = new state_1.default(this.rpcClient);
this.node = new node_1.default(this.rpcClient);
this.auth = new auth_1.default(this.rpcClient);
this.pool = new pool_1.default(this.rpcClient);
this.miner = new miner_1.default(this.rpcClient);
this.net = new net_1.default(this.rpcClient);
this.logger = new logger_1.default(this.rpcClient);
this.ell = new ell_1.default(this.rpcClient);
this.rpc = new rpc_1.default(this.rpcClient);
}
/**
* provideClient attempts to connect to an
* Ellcrys JSON-RPC server. If it succeeds,
* it will use the connection in future RPC
* method calls.
*
* @param {ConnectOptions} options The connection options
* @returns {Promise<RPCClient>} An initialized client
* @memberof Spell
*/
// prettier-ignore
Spell.prototype.provideClient = function (options) {
var _this = this;
return new Promise(function (resolve, reject) {
var client = rpcclient_1.Client.fromOptions(options);
client.call("rpc_echo", { msg: "hi" }, function (err, res) {
if (err) {
var customErr = errors_1.wrapErr(errors_1.default.ClientConnect, err.message);
customErr.data = err.data;
customErr.statusCode = err.statusCode;
return reject(customErr);
}
_this.rpcClient.client = client;
_this.rpcClient.clientOpts = options;
// Attempt to request for a session token from the node
// if username and password are provided
if (options.username && options.password) {
return _this.authenticate(options.username, options.password).then(function () {
return resolve(_this.rpcClient);
}).catch(reject);
}
return resolve(_this.rpcClient);
});
});
};
/**
* Request for a session token from the node.
*
* @param {string} username The node's RPC username
* @param {string} password The node's RPC password
* @returns {Promise<string>} A session token
* @memberof Spell
*/
Spell.prototype.authenticate = function (username, password) {
var _this = this;
return new Promise(function (resolve, reject) {
_this.auth
.authenticate(username, password)
.then(function (token) {
_this.rpcClient.setToken(token);
return resolve(token);
})
.catch(function (err) {
var customErr = errors_1.wrapErr(errors_1.default.AuthError, err.message);
customErr.data = err.data;
customErr.statusCode = err.statusCode;
return reject(customErr);
});
});
};
return Spell;
}());
exports.default = Spell;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbGliL3NwZWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7O0FBR0gsaURBQTJDO0FBQzNDLDJEQUFxQztBQUNyQyx5REFBbUM7QUFDbkMsK0RBQXlDO0FBQ3pDLDZEQUF1QztBQUN2Qyx5REFBbUM7QUFDbkMsMkRBQXFDO0FBQ3JDLDJEQUFxQztBQUNyQyx5REFBbUM7QUFDbkMsNkRBQXVDO0FBQ3ZDLHVEQUFnRDtBQUNoRDs7Ozs7O0dBTUc7QUFDSDtJQWdGQzs7O09BR0c7SUFDSDtRQUNDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxtQkFBUyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGVBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGNBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGNBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGNBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGVBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLGFBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxhQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxH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