UNPKG

@parity/light.js

Version:

A high-level reactive JS library optimized for light clients

47 lines (46 loc) 1.31 kB
"use strict"; // 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;