Socket
Socket
Sign inDemoInstall

@metamask/detect-provider

Package Overview
Dependencies
Maintainers
5
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@metamask/detect-provider - npm Package Compare versions

Comparing version 1.0.1 to 1.1.0

28

dist/detect-provider.js

@@ -11,18 +11,16 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.detectEthereumProvider = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){

* providers. Default: false
* @param {boolean} [options.silent] - Whether to silence console errors. Does
* not affect thrown errors. Default: false
* @param {number} [options.timeout] - Milliseconds to wait for
* 'ethereum#initialized' to be dispatched. Default: 3000
* @returns {Promise<EthereumProvider | null>} A Promise that resolves with the Provider if it
* is detected within the given timeout, otherwise null.
* @returns {Promise<EthereumProvider | null>} A Promise that resolves with the
* Provider if it is detected within the given timeout, otherwise null.
*/
module.exports = function detectEthereumProvider ({
mustBeMetaMask = false,
silent = false,
timeout = 3000,
} = {}) {
if (typeof timeout !== 'number') {
throw new Error(`@metamask/detect-provider: Expected 'number' timeout.`)
}
if (typeof mustBeMetaMask !== 'boolean') {
throw new Error(`@metamask/detect-provider: Expected 'boolean' mustBeMetaMask.`)
}
_validateInputs()

@@ -68,3 +66,3 @@ let handled = false

console.error('@metamask/detect-provider:', message)
!silent && console.error('@metamask/detect-provider:', message)
resolve(null)

@@ -74,2 +72,14 @@ }

})
function _validateInputs () {
if (typeof mustBeMetaMask !== 'boolean') {
throw new Error(`@metamask/detect-provider: Expected option 'mustBeMetaMask' to be a boolean.`)
}
if (typeof silent !== 'boolean') {
throw new Error(`@metamask/detect-provider: Expected option 'silent' to be a boolean.`)
}
if (typeof timeout !== 'number') {
throw new Error(`@metamask/detect-provider: Expected option 'timeout' to be a number.`)
}
}
}

@@ -76,0 +86,0 @@

(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.detectEthereumProvider = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
module.exports=function({mustBeMetaMask:e=!1,timeout:t=3e3}={}){if("number"!=typeof t)throw new Error("@metamask/detect-provider: Expected 'number' timeout.");if("boolean"!=typeof e)throw new Error("@metamask/detect-provider: Expected 'boolean' mustBeMetaMask.");let o=!1;return new Promise(r=>{function n(){if(o)return;o=!0,window.removeEventListener("ethereum#initialized",n);const{ethereum:t}=window;if(!t||e&&!t.isMetaMask){const o=e&&t?"Non-MetaMask window.ethereum detected.":"Unable to detect window.ethereum.";console.error("@metamask/detect-provider:",o),r(null)}else r(t)}window.ethereum?n():(window.addEventListener("ethereum#initialized",n,{once:!0}),setTimeout(()=>{n()},t))})};
module.exports=function({mustBeMetaMask:e=!1,silent:t=!1,timeout:o=3e3}={}){!function(){if("boolean"!=typeof e)throw new Error("@metamask/detect-provider: Expected option 'mustBeMetaMask' to be a boolean.");if("boolean"!=typeof t)throw new Error("@metamask/detect-provider: Expected option 'silent' to be a boolean.");if("number"!=typeof o)throw new Error("@metamask/detect-provider: Expected option 'timeout' to be a number.")}();let n=!1;return new Promise(r=>{function i(){if(n)return;n=!0,window.removeEventListener("ethereum#initialized",i);const{ethereum:o}=window;if(!o||e&&!o.isMetaMask){const n=e&&o?"Non-MetaMask window.ethereum detected.":"Unable to detect window.ethereum.";!t&&console.error("@metamask/detect-provider:",n),r(null)}else r(o)}window.ethereum?i():(window.addEventListener("ethereum#initialized",i,{once:!0}),setTimeout(()=>{i()},o))})};
},{}]},{},[1])(1)
});

@@ -10,18 +10,16 @@ /**

* providers. Default: false
* @param {boolean} [options.silent] - Whether to silence console errors. Does
* not affect thrown errors. Default: false
* @param {number} [options.timeout] - Milliseconds to wait for
* 'ethereum#initialized' to be dispatched. Default: 3000
* @returns {Promise<EthereumProvider | null>} A Promise that resolves with the Provider if it
* is detected within the given timeout, otherwise null.
* @returns {Promise<EthereumProvider | null>} A Promise that resolves with the
* Provider if it is detected within the given timeout, otherwise null.
*/
module.exports = function detectEthereumProvider ({
mustBeMetaMask = false,
silent = false,
timeout = 3000,
} = {}) {
if (typeof timeout !== 'number') {
throw new Error(`@metamask/detect-provider: Expected 'number' timeout.`)
}
if (typeof mustBeMetaMask !== 'boolean') {
throw new Error(`@metamask/detect-provider: Expected 'boolean' mustBeMetaMask.`)
}
_validateInputs()

@@ -67,3 +65,3 @@ let handled = false

console.error('@metamask/detect-provider:', message)
!silent && console.error('@metamask/detect-provider:', message)
resolve(null)

@@ -73,2 +71,14 @@ }

})
function _validateInputs () {
if (typeof mustBeMetaMask !== 'boolean') {
throw new Error(`@metamask/detect-provider: Expected option 'mustBeMetaMask' to be a boolean.`)
}
if (typeof silent !== 'boolean') {
throw new Error(`@metamask/detect-provider: Expected option 'silent' to be a boolean.`)
}
if (typeof timeout !== 'number') {
throw new Error(`@metamask/detect-provider: Expected option 'timeout' to be a number.`)
}
}
}
{
"name": "@metamask/detect-provider",
"version": "1.0.1",
"version": "1.1.0",
"description": "A tiny utility for detecting the MetaMask Ethereum provider, or any EIP 1193-compliant provider.",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -57,16 +57,30 @@ # @metamask/detect-provider

The exported function takes an optional `options` object.
In most cases, you won't need to specify anything, but read on for details.
If invalid options are provided, an error will be thrown.
All options have default values.
#### `options.mustBeMetaMask`
Type: `boolean`
Default: `false`
Whether `window.ethereum.isMetaMask === true` is required for the returned Promise to resolve.
#### `options.silent`
Type: `boolean`
Default: `false`
Whether error messages should be logged to the console.
Does not affect errors thrown due to invalid options.
#### `options.timeout`
How many milliseconds to wait for asynchronously injected providers.
Type: `number`
Default: `3000`
How many milliseconds to wait for asynchronously injected providers.
## Advanced Topics

@@ -73,0 +87,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc