@prajjawal/qrl_providers
Version:
A JavaScript Ethereum provider that connects to the wallet over a stream.
49 lines • 2.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setGlobalProvider = exports.initializeProvider = void 0;
const MetaMaskInpageProvider_1 = require("./MetaMaskInpageProvider");
const shimWeb3_1 = require("./shimWeb3");
/**
* Initializes a MetaMaskInpageProvider and (optionally) assigns it as window.ethereum.
*
* @param options - An options bag.
* @param options.connectionStream - A Node.js stream.
* @param options.jsonRpcStreamName - The name of the internal JSON-RPC stream.
* @param options.maxEventListeners - The maximum number of event listeners.
* @param options.shouldSendMetadata - Whether the provider should send page metadata.
* @param options.shouldSetOnWindow - Whether the provider should be set as window.ethereum.
* @param options.shouldShimWeb3 - Whether a window.web3 shim should be injected.
* @returns The initialized provider (whether set or not).
*/
function initializeProvider({ connectionStream, jsonRpcStreamName, logger = console, maxEventListeners = 100, shouldSendMetadata = true, shouldSetOnWindow = true, shouldShimWeb3 = false, }) {
const provider = new MetaMaskInpageProvider_1.MetaMaskInpageProvider(connectionStream, {
jsonRpcStreamName,
logger,
maxEventListeners,
shouldSendMetadata,
});
const proxiedProvider = new Proxy(provider, {
// some common libraries, e.g. web3@1.x, mess with our API
deleteProperty: () => true,
});
if (shouldSetOnWindow) {
setGlobalProvider(proxiedProvider);
}
if (shouldShimWeb3) {
shimWeb3_1.shimWeb3(proxiedProvider, logger);
}
return proxiedProvider;
}
exports.initializeProvider = initializeProvider;
/**
* Sets the given provider instance as window.ethereum and dispatches the
* 'ethereum#initialized' event on window.
*
* @param providerInstance - The provider instance.
*/
function setGlobalProvider(providerInstance) {
window.qrl = providerInstance;
window.dispatchEvent(new Event('ethereum#initialized'));
}
exports.setGlobalProvider = setGlobalProvider;
//# sourceMappingURL=initializeInpageProvider.js.map