@metamask/detect-provider
Advanced tools
Comparing version 1.0.1 to 1.1.0
@@ -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) | ||
}); |
28
index.js
@@ -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 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12747
148
107