@investorid/identity-sdk
Version:
Interact with BlockChain Identities.
94 lines • 2.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ethers_1 = require("ethers");
const providers_1 = require("ethers/providers");
/**
* Allowed Ethereum network for the SDK.
*/
var NETWORKS;
(function (NETWORKS) {
NETWORKS["HOMESTEAD"] = "homestead";
NETWORKS["ROPSTEN"] = "ropsten";
})(NETWORKS = exports.NETWORKS || (exports.NETWORKS = {}));
/**
* Thrown when attempting to set an Invalid BlockChain Provider.
*/
class InvalidProviderError extends Error {
constructor(message = 'Specified Provider is not valid. Must be either a default network name, a json RPC address, a Provider or a Signer object.') {
super(message);
this.name = 'INVALID_PROVIDER';
}
}
exports.InvalidProviderError = InvalidProviderError;
/**
* The current BlockChain Provider of the SDK.
*/
exports.provider = null;
/**
* Get the current set BlockChain Provider.
*/
function getProvider() {
if (!exports.provider) {
throw new InvalidProviderError('Provider is not set for SDK. Call SDK.Config.setProvider(provider | network).');
}
return exports.provider;
}
exports.getProvider = getProvider;
/**
* Set the BlockChain Provider for the SDK.
* @param newProvider
*/
function setProvider(newProvider) {
if (newProvider === null) {
exports.provider = null;
}
else if (typeof newProvider === 'string') {
if (Object.values(NETWORKS).includes(newProvider)) {
exports.provider = ethers_1.ethers.getDefaultProvider(newProvider);
}
else if (newProvider.includes('http://') || newProvider.includes('https://')) {
try {
exports.provider = new ethers_1.providers.JsonRpcProvider(newProvider);
}
catch (err) {
throw new InvalidProviderError();
}
}
else {
throw new InvalidProviderError();
}
}
else if (newProvider instanceof providers_1.Provider || newProvider instanceof ethers_1.Signer) {
exports.provider = newProvider;
}
else {
throw new InvalidProviderError();
}
}
exports.setProvider = setProvider;
/**
* Does the SDK allows to fetch data from unsecured providers?
*/
exports.allowUnsecuredProviders = false;
/**
* Configure the SDK with generic options. Invalid parameters will be ignored.
* @param options
* @params [options.allowUnsecuredProviders] Boolean.
*/
function config(options) {
if (typeof options.allowUnsecuredProviders === 'boolean') {
exports.allowUnsecuredProviders = options.allowUnsecuredProviders;
}
}
exports.config = config;
exports.default = {
enums: { NETWORKS },
errors: { InvalidProviderError },
config,
settings: {
allowUnsecuredProviders: exports.allowUnsecuredProviders,
},
getProvider,
setProvider,
};
//# sourceMappingURL=Config.js.map