@parity/light.js
Version:
A high-level reactive JS library optimized for light clients
47 lines (46 loc) • 1.31 kB
JavaScript
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity.
//
// SPDX-License-Identifier: MIT
Object.defineProperty(exports, "__esModule", { value: true });
var Api = require("@parity/api");
var memoizee = require("memoizee");
// This is our global api object, to be used if no provider is passed to RpcObservables.
var api; // TODO @parity/api
/**
* Like `return new Api(provider);`, but memoized.
*
* @ignore
*/
exports.createApiFromProvider = memoizee(function (provider) { return new Api(provider); });
/**
* Sets a new Api object.
*
* @param newApi - An Api object.
*/
exports.setApi = function (newApi) {
api = newApi;
};
/**
* Sets a new Ethereum provider object.
*
* @param provider - An Ethereum provider object.
*/
exports.setProvider = function (provider) {
exports.setApi(exports.createApiFromProvider(provider));
};
/**
* We only ever use api() at call-time of functions; this allows the options
* (particularly the transport option) to be changed dynamically and the
* data structure to be reused.
*
* @return - The current Api object.
*/
exports.getApi = function () {
if (!api) {
throw new Error('Please define a provider before using any RpcObservable.');
}
return api;
};
exports.default = exports.getApi;
;