Socket
Socket
Sign inDemoInstall

@web3-onboard/injected-wallets

Package Overview
Dependencies
Maintainers
2
Versions
151
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@web3-onboard/injected-wallets - npm Package Compare versions

Comparing version 2.10.12-alpha.2 to 2.10.12-alpha.3

1

dist/helpers.d.ts

@@ -11,1 +11,2 @@ import type { Device, ProviderRpcErrorCode } from '@web3-onboard/common';

export declare const isWalletAvailable: (provider: InjectedProvider, checkProviderIdentity: InjectedWalletModule['checkProviderIdentity'], device: Device) => boolean;
export declare function containsExecutableJavaScript(svgString: string): boolean;

@@ -27,1 +27,25 @@ export class ProviderRpcError extends Error {

};
export function containsExecutableJavaScript(svgString) {
if (!svgString)
return false;
// Regular expression to match <script> tags
const scriptTagRegex = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;
// Regular expression to match event handler attributes (e.g., onclick, onload)
const eventHandlerRegex = /\bon[a-z]+\s*=\s*["']?(?:javascript:)?/gi;
// Regular expression to match href or xlink:href attributes containing "javascript:"
const hrefJavaScriptRegex = /\b(href|xlink:href)\s*=\s*["']?javascript:/gi;
// Check for <script> tags
if (scriptTagRegex.test(svgString)) {
return true;
}
// Check for event handlers
if (eventHandlerRegex.test(svgString)) {
return true;
}
// Check for "javascript:" in href or xlink:href
if (hrefJavaScriptRegex.test(svgString)) {
return true;
}
// No executable JavaScript found
return false;
}

2

dist/index.d.ts

@@ -1,2 +0,2 @@

import type { WalletInit } from '@web3-onboard/common';
import { type WalletInit } from '@web3-onboard/common';
import type { InjectedWalletOptions } from './types.js';

@@ -3,0 +3,0 @@ export { ProviderIdentityFlag, ProviderLabel } from './types.js';

import uniqBy from 'lodash.uniqby';
import { createEIP1193Provider } from '@web3-onboard/common';
import { ProviderLabel } from './types.js';
import standardWallets from './wallets.js';
import { validateWalletOptions } from './validation.js';
import { defaultWalletUnavailableMsg, isWalletAvailable } from './helpers.js';
import { validateEIP6963ProviderDetail, validateWalletOptions } from './validation.js';
import { containsExecutableJavaScript, defaultWalletUnavailableMsg, isWalletAvailable } from './helpers.js';
export { ProviderIdentityFlag, ProviderLabel } from './types.js';
const providers6963 = [];
function checkFor6963Providers() {
// Add event listener for 'eip6963:announceProvider' event
console.log('even listener added');
window.addEventListener('eip6963:announceProvider', (event) => {
const eipEvent = event;
const { detail } = eipEvent;
if (!detail)
return;
if (eipEvent) {
const result = validateEIP6963ProviderDetail(detail);
if (result && result.error)
throw result.error;
}
const { info, provider } = detail;
const { name, icon } = info;
if (containsExecutableJavaScript(icon)) {
console.error(`The icon for injected wallet: ${name} contains executable JavaScript and has been blocked.`);
return;
}
// Push the provider information to the providers6963 array
providers6963.push({
label: name,
getIcon: async () => icon,
getInterface: async () => ({
provider: createEIP1193Provider(provider)
}),
platforms: ['all'],
eip6963Provider: createEIP1193Provider(provider),
checkProviderIdentity: ({ provider }) => !!provider
});
});
// Dispatch a custom event to request the provider information
window.dispatchEvent(new CustomEvent('eip6963:requestProvider'));
}
function injected(options) {

@@ -15,2 +51,3 @@ if (typeof window === 'undefined')

}
!(options === null || options === void 0 ? void 0 : options.disable6963Support) && checkFor6963Providers();
return helpers => {

@@ -20,8 +57,9 @@ const { device } = helpers;

// combine custom with standard wallets and dedupe
const allWallets = uniqBy([...custom, ...standardWallets], ({ label }) => label);
const allWallets = uniqBy([...custom, ...standardWallets, ...providers6963], ({ label }) => label);
const wallets = allWallets.reduce((acc, wallet) => {
const { label, platforms, injectedNamespace, checkProviderIdentity } = wallet;
const { label, platforms, injectedNamespace, checkProviderIdentity, eip6963Provider } = wallet;
const walletFilters = filter[label];
const filteredWallet = walletFilters === false;
const provider = window[injectedNamespace];
const provider = eip6963Provider ||
window[injectedNamespace];
const walletAvailable = isWalletAvailable(provider, checkProviderIdentity, device);

@@ -28,0 +66,0 @@ let excludedDevice = false;

@@ -260,5 +260,9 @@ import type { ExternalProvider } from '@ethersproject/providers';

sort?: (wallets: WalletModule[]) => WalletModule[];
/** A boolean that can be passed to disable supporting 6963 (https://eips.ethereum.org/EIPS/eip-6963)
* which will display wallets available on the browser
*/
disable6963Support?: boolean;
}
export interface InjectedWalletModule extends WalletModule {
injectedNamespace: InjectedNameSpace;
injectedNamespace?: InjectedNameSpace;
checkProviderIdentity: (helpers: {

@@ -274,2 +278,20 @@ provider: any;

externalUrl?: string;
eip6963Provider?: InjectedProvider;
}
export declare class EIP6963RequestProviderEvent extends Event {
constructor();
}
export interface EIP6963AnnounceProviderEvent extends Event {
type: 'eip6963:announceProvider';
detail: EIP6963ProviderDetail;
}
export interface EIP6963ProviderDetail {
info: EIP6963ProviderInfo;
provider: EIP1193Provider;
}
export interface EIP6963ProviderInfo {
uuid: string;
name: string;
icon: string;
rdns: string;
}

@@ -180,1 +180,7 @@ /**

})(InjectedNameSpace || (InjectedNameSpace = {}));
// Define a class for the "eip6963:requestProvider" event
export class EIP6963RequestProviderEvent extends Event {
constructor() {
super('eip6963:requestProvider');
}
}

@@ -1,3 +0,4 @@

import { InjectedWalletOptions } from './types.js';
import { EIP6963ProviderDetail, InjectedWalletOptions } from './types.js';
import { type ValidateReturn } from '@web3-onboard/common';
export declare const validateWalletOptions: (data: InjectedWalletOptions | Partial<InjectedWalletOptions>) => ValidateReturn;
export declare const validateEIP6963ProviderDetail: (data: EIP6963ProviderDetail) => ValidateReturn;

@@ -20,4 +20,16 @@ import Joi from 'joi';

sort: Joi.function(),
externalUrl: Joi.string()
externalUrl: Joi.string(),
disable6963Support: Joi.boolean()
});
export const validateWalletOptions = (data) => validate(walletOptions, data);
const eip6963ProviderInfo = Joi.object({
uuid: Joi.string().required(),
name: Joi.string().required(),
icon: Joi.string().required(),
rdns: Joi.string().required()
});
const eip6963ProviderDetail = Joi.object({
info: eip6963ProviderInfo.required(),
provider: Joi.object().required()
});
export const validateEIP6963ProviderDetail = (data) => validate(eip6963ProviderDetail, data);
{
"name": "@web3-onboard/injected-wallets",
"version": "2.10.12-alpha.2",
"version": "2.10.12-alpha.3",
"description": "Injected wallet module for connecting browser extension and mobile wallets to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.",

@@ -37,3 +37,5 @@ "keywords": [

"Coin98 Wallet",
"FoxWallet"
"FoxWallet",
"6963",
"onchain"
],

@@ -40,0 +42,0 @@ "repository": {

@@ -5,3 +5,3 @@ # @web3-onboard/injected-wallets

To allow all injected wallets that are supported, don't pass in any options:
To allow all injected wallets that are supported natively by web3-onboard or wallets that have implemented [EIP-6963](https://eips.ethereum.org/EIPS/eip-6963) support - don't pass in any options:

@@ -44,2 +44,15 @@ ```javascript

### This module supports any injected wallet that has implemented support for [EIP-6963](https://eips.ethereum.org/EIPS/eip-6963)
This can be disabled by passing in `disable6963Support` as true within the injected module init object.
```ts
const injected = injectedModule({ disable6963Support: true })
const onboard = Onboard({
wallets: [injected],
...
})
```
### Injected Wallets Supported Natively

@@ -46,0 +59,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