Socket
Socket
Sign inDemoInstall

@metamask/detect-provider

Package Overview
Dependencies
Maintainers
6
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.1.0 to 1.2.0

CHANGELOG.md

125

dist/detect-provider.js
(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": {}
}
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