UNPKG

@alayanetwork/inpage-provider

Version:

A JavaScript PlatON provider that connects over a WebExtension port.

54 lines (45 loc) 1.6 kB
const MetamaskInpageProvider = require('./MetamaskInpageProvider') /** * Initializes a MetamaskInpageProvider and (optionally) sets it on window.alaya. * * @param {Object} opts - An options bag. * @param {Object} opts.connectionStream - A Node.js stream. * @param {number} opts.maxEventListeners - The maximum number of event listeners. * @param {boolean} opts.shouldSendMetadata - Whether the provider should send page metadata. * @param {boolean} opts.shouldSetOnWindow - Whether the provider should be set as window.alaya * @returns {MetamaskInpageProvider | Proxy} The initialized provider (whether set or not). */ function initProvider ({ connectionStream, maxEventListeners = 100, shouldSendMetadata = true, shouldSetOnWindow = true, } = {}) { if (!connectionStream) { throw new Error('Must provide a connection stream.') } let provider = new MetamaskInpageProvider( connectionStream, { shouldSendMetadata, maxEventListeners }, ) provider = new Proxy(provider, { deleteProperty: () => true, // some libraries, e.g. web3@1.x, mess with our API }) if (shouldSetOnWindow) { setGlobalProvider(provider) } return provider } /** * Sets the given provider instance as window.alaya and dispatches the * 'ethereum#initialized' event on window. * * @param {MetamaskInpageProvider} providerInstance - The provider instance. */ function setGlobalProvider (providerInstance) { window.alaya = providerInstance window.dispatchEvent(new Event('ethereum#initialized')) } module.exports = { initProvider, setGlobalProvider, }