@metamask/detect-provider
Advanced tools
Comparing version 1.1.0 to 1.2.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){ | ||
"use strict"; | ||
/** | ||
@@ -8,79 +9,59 @@ * Returns a Promise that resolves to the value of window.ethereum if it is | ||
* | ||
* @param {Object} [options] - Options bag. | ||
* @param {boolean} [options.mustBeMetaMask] - Whether to only look for MetaMask | ||
* 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. | ||
* @param options - Options bag. | ||
* @param options.mustBeMetaMask - Whether to only look for MetaMask providers. | ||
* Default: false | ||
* @param options.silent - Whether to silence console errors. Does not affect | ||
* thrown errors. Default: false | ||
* @param options.timeout - Milliseconds to wait for 'ethereum#initialized' to | ||
* be dispatched. Default: 3000 | ||
* @returns A Promise that resolves with the Provider if it is detected within | ||
* given timeout, otherwise null. | ||
*/ | ||
module.exports = function detectEthereumProvider ({ | ||
mustBeMetaMask = false, | ||
silent = false, | ||
timeout = 3000, | ||
} = {}) { | ||
_validateInputs() | ||
let handled = false | ||
return new Promise((resolve) => { | ||
if (window.ethereum) { | ||
handleEthereum() | ||
} else { | ||
window.addEventListener( | ||
'ethereum#initialized', | ||
handleEthereum, | ||
{ once: true }, | ||
) | ||
setTimeout(() => { | ||
handleEthereum() | ||
}, timeout) | ||
function detectEthereumProvider({ mustBeMetaMask = false, silent = false, timeout = 3000, } = {}) { | ||
_validateInputs(); | ||
let handled = false; | ||
return new Promise((resolve) => { | ||
if (window.ethereum) { | ||
handleEthereum(); | ||
} | ||
else { | ||
window.addEventListener('ethereum#initialized', handleEthereum, { once: true }); | ||
setTimeout(() => { | ||
handleEthereum(); | ||
}, timeout); | ||
} | ||
function handleEthereum() { | ||
if (handled) { | ||
return; | ||
} | ||
handled = true; | ||
window.removeEventListener('ethereum#initialized', handleEthereum); | ||
const { ethereum } = window; | ||
if (ethereum && (!mustBeMetaMask || ethereum.isMetaMask)) { | ||
resolve(ethereum); | ||
} | ||
else { | ||
const message = mustBeMetaMask && ethereum | ||
? 'Non-MetaMask window.ethereum detected.' | ||
: 'Unable to detect window.ethereum.'; | ||
!silent && console.error('@metamask/detect-provider:', message); | ||
resolve(null); | ||
} | ||
} | ||
}); | ||
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.`); | ||
} | ||
} | ||
function handleEthereum () { | ||
if (handled) { | ||
return | ||
} | ||
handled = true | ||
window.removeEventListener('ethereum#initialized', handleEthereum) | ||
const { ethereum } = window | ||
if (ethereum && (!mustBeMetaMask || ethereum.isMetaMask)) { | ||
resolve(ethereum) | ||
} else { | ||
const message = mustBeMetaMask && ethereum | ||
? 'Non-MetaMask window.ethereum detected.' | ||
: 'Unable to detect window.ethereum.' | ||
!silent && console.error('@metamask/detect-provider:', message) | ||
resolve(null) | ||
} | ||
} | ||
}) | ||
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.`) | ||
} | ||
} | ||
} | ||
module.exports = detectEthereumProvider; | ||
},{}]},{},[1])(1) | ||
}); |
@@ -1,5 +0,1 @@ | ||
(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,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) | ||
}); | ||
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).detectEthereumProvider=e()}}((function(){return 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(i=>{function r(){if(n)return;n=!0,window.removeEventListener("ethereum#initialized",r);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),i(null)}else i(o)}window.ethereum?r():(window.addEventListener("ethereum#initialized",r,{once:!0}),setTimeout(()=>{r()},o))})}})); |
{ | ||
"name": "@metamask/detect-provider", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"description": "A tiny utility for detecting the MetaMask Ethereum provider, or any EIP 1193-compliant provider.", | ||
"main": "index.js", | ||
"main": "dist/index.js", | ||
"typings": "dist/index.d.ts", | ||
"files": [ | ||
"index.js", | ||
"dist/" | ||
], | ||
"engines": { | ||
"node": ">= 10" | ||
}, | ||
"scripts": { | ||
"pretest": "yarn build", | ||
"test": "node test/*", | ||
"lint": "eslint . --ext js,json", | ||
"lint:fix": "eslint . --ext js,json --fix", | ||
"lint": "eslint . --ext ts,js,json", | ||
"lint:fix": "yarn lint --fix", | ||
"build": "./build.sh", | ||
@@ -38,12 +42,16 @@ "prepare": "yarn build" | ||
"devDependencies": { | ||
"@metamask/eslint-config": "^2.1.1", | ||
"@metamask/eslint-config": "^4.1.0", | ||
"@typescript-eslint/eslint-plugin": "^4.5.0", | ||
"@typescript-eslint/parser": "^4.5.0", | ||
"browserify": "^16.5.1", | ||
"eslint": "^6.8.0", | ||
"eslint-plugin-import": "^2.20.2", | ||
"eslint": "^7.7.0", | ||
"eslint-plugin-import": "^2.22.0", | ||
"eslint-plugin-json": "^2.1.1", | ||
"eslint-plugin-node": "^11.1.0", | ||
"sinon": "^9.0.2", | ||
"tape": "^5.0.0", | ||
"uglifyify": "^5.0.2" | ||
"tinyify": "^3.0.0", | ||
"typescript": "^4.0.3" | ||
}, | ||
"dependencies": {} | ||
} |
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
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
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
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
16467
8
160
0
2
12
1