UNPKG

@extrawallet/providers

Version:

A JavaScript Ethereum provider that connects to the wallet over a stream.

60 lines 2.67 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setGlobalProvider = exports.initializeProvider = void 0; // import stringifyObject from 'stringify-object'; const ExtraInpageProvider_1 = __importDefault(require("./ExtraInpageProvider")); const shimWeb3_1 = __importDefault(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 provider1 = new ExtraInpageProvider_1.default(connectionStream, { jsonRpcStreamName, logger, maxEventListeners, shouldSendMetadata, }); const provider = new Proxy(provider1, { // some common libraries, e.g. web3@1.x, mess with our API deleteProperty: () => true, }); // const providerString = stringifyObject(provider1); if (shouldSetOnWindow) { // eslint-disable-next-line @typescript-eslint/no-use-before-define setGlobalProvider(provider); } if (shouldShimWeb3) { shimWeb3_1.default(provider, logger); } return provider; } exports.initializeProvider = initializeProvider; // export const convertOBject = (provider: ExtraInpageProvider) => { // return stringifyObject(provider); // }; // eslint-disable-next-line @typescript-eslint/no-unused-vars /** * 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.ethereum = providerInstance; window.extraWallet = providerInstance; window.dispatchEvent(new Event('ethereum#initialized')); } exports.setGlobalProvider = setGlobalProvider; //# sourceMappingURL=initializeInpageProvider.js.map