@starknet-io/get-starknet-virtual-wallet 5.0.0-beta.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/metamask.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- const features = require('@wallet-standard/features');
4
- const features$1 = require('@starknet-io/get-starknet-wallet-standard/features');
3
+ const runtime = require('@module-federation/runtime');
5
4
  const chains = require('@starknet-io/get-starknet-wallet-standard/chains');
5
+ const features$1 = require('@starknet-io/get-starknet-wallet-standard/features');
6
+ const features = require('@wallet-standard/features');
6
7
  const asyncMutex = require('async-mutex');
7
- const runtime = require('@module-federation/runtime');
8
8
 
9
9
  var __accessCheck = (obj, member, msg) => {
10
10
  if (!member.has(obj))
@@ -103,6 +103,7 @@ class MetaMaskVirtualWallet {
103
103
  on: __privateGet(this, _on).bind(this)
104
104
  },
105
105
  [features$1.StarknetWalletApi]: {
106
+ id: "metamask",
106
107
  version: "1.0.0",
107
108
  request: __privateMethod(this, _request, request_fn).bind(this),
108
109
  walletVersion: "2.0.0"
@@ -1 +1 @@
1
- {"version":3,"file":"metamask.cjs","sources":["../src/metamask.ts"],"sourcesContent":["import {\n StandardConnect,\n type StandardConnectMethod,\n StandardDisconnect,\n type StandardDisconnectMethod,\n StandardEvents,\n type StandardEventsListeners,\n type StandardEventsNames,\n type StandardEventsOnMethod,\n} from \"@wallet-standard/features\";\nimport type { EIP1193Provider } from \"viem\";\nimport type {\n RequestFnCall,\n RpcMessage,\n RpcTypeToMessageMap,\n StarknetWindowObject,\n} from \"@starknet-io/types-js\";\nimport {\n StarknetWalletApi,\n type StarknetFeatures,\n type WalletWithStarknetFeatures,\n} from \"@starknet-io/get-starknet-wallet-standard/features\";\nimport {\n formatStarknetChainId,\n isStarknetChain,\n STARKNET_CHAIN_PREFIX,\n WELL_KNOWN_STARKNET_CHAINS,\n} from \"@starknet-io/get-starknet-wallet-standard/chains\";\nimport type { StarknetWalletAccount } from \"@starknet-io/get-starknet-wallet-standard\";\nimport type { StarknetChain } from \"@starknet-io/get-starknet-wallet-standard/chains\";\nimport { Mutex } from \"async-mutex\";\nimport { init, loadRemote } from \"@module-federation/runtime\";\n\nimport type { EIP6963ProviderInfo } from \"./types\";\n\nexport function metaMaskVirtualWallet(\n info: EIP6963ProviderInfo,\n provider: EIP1193Provider,\n): WalletWithStarknetFeatures | null {\n const rdnsCheck =\n info.rdns === \"io.metamask\" || info.rdns === \"io.metamask.flask\";\n if (rdnsCheck && isMetaMaskProvider(provider)) {\n return new MetaMaskVirtualWallet(provider);\n }\n\n return null;\n}\n\nexport class MetaMaskVirtualWallet implements WalletWithStarknetFeatures {\n #listeners: { [E in StandardEventsNames]?: StandardEventsListeners[E][] } =\n {};\n #account: { address: string; chain: StarknetChain } | null = null;\n #swo: StarknetWindowObject | null = null;\n #lock: Mutex = new Mutex();\n #name = \"MetaMask\";\n #icon =\n \"data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMTIiIGhlaWdodD0iMTg5IiB2aWV3Qm94PSIwIDAgMjEyIDE4OSI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cG9seWdvbiBmaWxsPSIjQ0RCREIyIiBwb2ludHM9IjYwLjc1IDE3My4yNSA4OC4zMTMgMTgwLjU2MyA4OC4zMTMgMTcxIDkwLjU2MyAxNjguNzUgMTA2LjMxMyAxNjguNzUgMTA2LjMxMyAxODAgMTA2LjMxMyAxODcuODc1IDg5LjQzOCAxODcuODc1IDY4LjYyNSAxNzguODc1Ii8+PHBvbHlnb24gZmlsbD0iI0NEQkRCMiIgcG9pbnRzPSIxMDUuNzUgMTczLjI1IDEzMi43NSAxODAuNTYzIDEzMi43NSAxNzEgMTM1IDE2OC43NSAxNTAuNzUgMTY4Ljc1IDE1MC43NSAxODAgMTUwLjc1IDE4Ny44NzUgMTMzLjg3NSAxODcuODc1IDExMy4wNjMgMTc4Ljg3NSIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjU2LjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzEgOTEuMTI1IDE2OC43NSAxMjAuMzc1IDE2OC43NSAxMjMuNzUgMTcxIDEyMS41IDE1Mi40MzggMTE3IDE0OS42MjUgOTQuNSAxNTAuMTg4Ii8+PHBvbHlnb24gZmlsbD0iI0Y4OUMzNSIgcG9pbnRzPSI3NS4zNzUgMjcgODguODc1IDU4LjUgOTUuMDYzIDE1MC4xODggMTE3IDE1MC4xODggMTIzLjc1IDU4LjUgMTM2LjEyNSAyNyIvPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MC41NjMgMTUyLjQzOCIvPjxwb2x5Z29uIGZpbGw9IiNFQThFM0EiIHBvaW50cz0iOTIuMjUgMTAyLjM3NSA5NS4wNjMgMTUwLjE4OCA4Ni42MjUgMTI1LjcxOSIvPjxwb2x5Z29uIGZpbGw9IiNEODdDMzAiIHBvaW50cz0iMzkuMzc1IDEzOC45MzggNjUuMjUgMTM4LjM3NSA2MC43NSAxNzMuMjUiLz48cG9seWdvbiBmaWxsPSIjRUI4RjM1IiBwb2ludHM9IjEyLjkzOCAxODguNDM4IDYwLjc1IDE3My4yNSAzOS4zNzUgMTM4LjkzOCAuNTYzIDE0MS43NSIvPjxwb2x5Z29uIGZpbGw9IiNFODgyMUUiIHBvaW50cz0iODguODc1IDU4LjUgNjQuNjg4IDc4Ljc1IDQ2LjEyNSAxMDEuMjUgOTIuMjUgMTAyLjkzOCIvPjxwb2x5Z29uIGZpbGw9IiNERkNFQzMiIHBvaW50cz0iNjAuNzUgMTczLjI1IDkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzAuNDM4IDg4LjMxMyAxODAuNTYzIDY4LjA2MyAxNzYuNjI1Ii8+PHBvbHlnb24gZmlsbD0iI0RGQ0VDMyIgcG9pbnRzPSIxMjEuNSAxNzMuMjUgMTUwLjc1IDE1Mi40MzggMTQ4LjUgMTcwLjQzOCAxNDguNSAxODAuNTYzIDEyOC4yNSAxNzYuNjI1IiB0cmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAyNzIuMjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PGcgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjExLjUgMCkiPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MCAxNTMiLz48cG9seWdvbiBmaWxsPSIjRUE4RTNBIiBwb2ludHM9IjkyLjI1IDEwMi4zNzUgOTUuMDYzIDE1MC4xODggODYuNjI1IDEyNS43MTkiLz48cG9seWdvbiBmaWxsPSIjRDg3QzMwIiBwb2ludHM9IjM5LjM3NSAxMzguOTM4IDY1LjI1IDEzOC4zNzUgNjAuNzUgMTczLjI1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSIxMi45MzggMTg4LjQzOCA2MC43NSAxNzMuMjUgMzkuMzc1IDEzOC45MzggLjU2MyAxNDEuNzUiLz48cG9seWdvbiBmaWxsPSIjRTg4MjFFIiBwb2ludHM9Ijg4Ljg3NSA1OC41IDY0LjY4OCA3OC43NSA0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi45MzgiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PC9nPjwvZz48L3N2Zz4=\";\n\n constructor(private provider: MetaMaskProvider) {}\n\n get version() {\n return \"1.0.0\" as const;\n }\n\n get name() {\n return this.#name;\n }\n\n get icon() {\n return this.#icon as WalletWithStarknetFeatures[\"icon\"];\n }\n\n get features(): StarknetFeatures {\n return {\n [StandardConnect]: {\n version: \"1.0.0\" as const,\n connect: this.#connect.bind(this),\n },\n [StandardDisconnect]: {\n version: \"1.0.0\" as const,\n disconnect: this.#disconnect.bind(this),\n },\n [StandardEvents]: {\n version: \"1.0.0\" as const,\n on: this.#on.bind(this),\n },\n [StarknetWalletApi]: {\n version: \"1.0.0\" as const,\n request: this.#request.bind(this),\n walletVersion: \"2.0.0\",\n },\n };\n }\n\n get chains() {\n return WELL_KNOWN_STARKNET_CHAINS.slice();\n }\n\n get accounts(): StarknetWalletAccount[] {\n if (this.#account) {\n return [\n {\n address: this.#account.address,\n publicKey: new Uint8Array(),\n chains: [this.#account.chain],\n features: [],\n },\n ];\n }\n\n return [];\n }\n\n #connect: StandardConnectMethod = async ({ silent }) => {\n if (!this.#account) {\n const accounts = await this.#request({\n type: \"wallet_requestAccounts\",\n params: {\n silent_mode: silent,\n },\n });\n\n // TODO(fra): maybe we should throw an error here?\n // User rejected the request.\n if (accounts.length === 0) {\n return { accounts: [] };\n }\n\n await this.#onAccountsChanged(accounts);\n }\n\n return { accounts: this.accounts };\n };\n\n #disconnect: StandardDisconnectMethod = async () => {\n this.#disconnected();\n };\n\n #emit<E extends StandardEventsNames>(\n event: E,\n ...args: Parameters<StandardEventsListeners[E]>\n ): void {\n if (!this.#listeners[event]) return;\n\n for (const listener of this.#listeners[event]) {\n listener.apply(null, args);\n }\n }\n\n #on: StandardEventsOnMethod = (event, listener) => {\n if (!this.#listeners[event]) {\n this.#listeners[event] = [];\n }\n\n this.#listeners[event].push(listener);\n\n return (): void => this.#off(event, listener);\n };\n\n #off<E extends StandardEventsNames>(\n event: E,\n listener: StandardEventsListeners[E],\n ): void {\n this.#listeners[event] = this.#listeners[event]?.filter(\n (existingListener) => listener !== existingListener,\n );\n }\n\n #disconnected() {\n if (this.#account) {\n this.#account = null;\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n\n #request<T extends RpcMessage[\"type\"]>(\n args: RequestFnCall<T>,\n ): Promise<RpcTypeToMessageMap[T][\"result\"]> {\n return this.#lock.runExclusive(async () => {\n // Loading the MetaMask snap requires the user to confirm the installation.\n // If the snap is not installed, return an empty array to avoid the wallet popup.\n if (!this.#swo && args.type === \"wallet_getPermissions\") {\n return [];\n }\n\n if (!this.#swo) {\n this.#swo = await this.#loadWallet(this.provider);\n // Bind properties from the virtual wallet to make sure they're up-to-date.\n this.#name = this.#swo.name;\n if (typeof this.#swo.icon === \"string\") {\n this.#icon = this.#swo.icon;\n } else {\n this.#icon = this.#swo.icon.light;\n }\n }\n\n return this.#swo.request(args);\n });\n }\n\n async #loadWallet(provider: MetaMaskProvider): Promise<StarknetWindowObject> {\n await init({\n name: \"MetaMaskStarknetSnapWallet\",\n remotes: [\n {\n name: \"MetaMaskStarknetSnapWallet\",\n alias: \"MetaMaskStarknetSnapWallet\",\n entry: `https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js?ts=${Date.now()}`,\n },\n ],\n });\n\n const result = await loadRemote<{\n MetaMaskSnapWallet: new (\n provider: MetaMaskProvider,\n version: string,\n ) => StarknetWindowObject;\n }>(\"MetaMaskStarknetSnapWallet/index\");\n\n if (!result) {\n // as `loadWallet` should only trigger when the wallet selected,\n // therefore it is make sense to throw error to indicate the wallet is not loaded\n throw new Error(\"Failed to load MetaMask Wallet\");\n }\n\n const swo = new result.MetaMaskSnapWallet(provider, \"*\");\n swo.on(\"accountsChanged\", this.#onAccountsChanged.bind(this));\n swo.on(\"networkChanged\", this.#onNetworkChanged.bind(this));\n return swo;\n }\n\n async #getStarknetChain(): Promise<StarknetChain> {\n const chainId = await this.#request({\n type: \"wallet_requestChainId\",\n });\n const chain = `${STARKNET_CHAIN_PREFIX}${chainId}` as const;\n\n if (!isStarknetChain(chain)) {\n throw new Error(\"Invalid Starknet chain\");\n }\n\n return chain;\n }\n\n async #onAccountsChanged(accounts: string[]) {\n if (!accounts || accounts.length === 0) {\n this.#disconnected();\n return;\n }\n\n const [account] = accounts;\n\n if (this.#account?.chain) {\n // Only account changed. No need to make a request for the chain id.\n this.#account.address = account;\n this.#emit(\"change\", { accounts: this.accounts });\n } else {\n const chain = await this.#getStarknetChain();\n this.#account = { address: account, chain };\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n\n #onNetworkChanged(chainId?: string, accounts?: string[]) {\n if (!chainId) {\n this.#disconnected();\n return;\n }\n\n const chain = formatStarknetChainId(chainId);\n\n if (!isStarknetChain(chain)) {\n throw new Error(`Invalid Starknet chain: ${chain}`);\n }\n\n // Accounts should always be set, but check just in case.\n if (accounts?.length > 0) {\n const [account] = accounts;\n\n this.#account = { address: account, chain };\n this.#emit(\"change\", { accounts: this.accounts });\n } else {\n this.#account.chain = chain;\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n}\n\nexport type MetaMaskProvider = {\n isMetaMask: boolean;\n request(options: { method: string }): Promise<void>;\n};\n\nexport function isMetaMaskProvider(obj: unknown): obj is MetaMaskProvider {\n return (\n obj !== null &&\n typeof obj === \"object\" &&\n Object.hasOwn(obj, \"isMetaMask\") &&\n Object.hasOwn(obj, \"request\")\n );\n}\n"],"names":["Mutex","StandardConnect","StandardDisconnect","StandardEvents","StarknetWalletApi","WELL_KNOWN_STARKNET_CHAINS","init","loadRemote","STARKNET_CHAIN_PREFIX","isStarknetChain","formatStarknetChainId"],"mappings":"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"}
1
+ {"version":3,"file":"metamask.cjs","sources":["../src/metamask.ts"],"sourcesContent":["import { init, loadRemote } from \"@module-federation/runtime\";\nimport type { StarknetWalletAccount } from \"@starknet-io/get-starknet-wallet-standard\";\nimport type { StarknetChain } from \"@starknet-io/get-starknet-wallet-standard/chains\";\nimport {\n formatStarknetChainId,\n isStarknetChain,\n STARKNET_CHAIN_PREFIX,\n WELL_KNOWN_STARKNET_CHAINS,\n} from \"@starknet-io/get-starknet-wallet-standard/chains\";\nimport {\n type StarknetFeatures,\n StarknetWalletApi,\n type WalletWithStarknetFeatures,\n} from \"@starknet-io/get-starknet-wallet-standard/features\";\nimport type {\n RequestFnCall,\n RpcMessage,\n RpcTypeToMessageMap,\n StarknetWindowObject,\n} from \"@starknet-io/types-js\";\nimport {\n StandardConnect,\n type StandardConnectMethod,\n StandardDisconnect,\n type StandardDisconnectMethod,\n StandardEvents,\n type StandardEventsListeners,\n type StandardEventsNames,\n type StandardEventsOnMethod,\n} from \"@wallet-standard/features\";\nimport { Mutex } from \"async-mutex\";\nimport type { EIP1193Provider } from \"viem\";\n\nimport type { EIP6963ProviderInfo } from \"./types\";\n\nexport function metaMaskVirtualWallet(\n info: EIP6963ProviderInfo,\n provider: EIP1193Provider,\n): WalletWithStarknetFeatures | null {\n const rdnsCheck =\n info.rdns === \"io.metamask\" || info.rdns === \"io.metamask.flask\";\n if (rdnsCheck && isMetaMaskProvider(provider)) {\n return new MetaMaskVirtualWallet(provider);\n }\n\n return null;\n}\n\nexport class MetaMaskVirtualWallet implements WalletWithStarknetFeatures {\n #listeners: { [E in StandardEventsNames]?: StandardEventsListeners[E][] } =\n {};\n #account: { address: string; chain: StarknetChain } | null = null;\n #swo: StarknetWindowObject | null = null;\n #lock: Mutex = new Mutex();\n #name = \"MetaMask\";\n #icon =\n \"data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMTIiIGhlaWdodD0iMTg5IiB2aWV3Qm94PSIwIDAgMjEyIDE4OSI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cG9seWdvbiBmaWxsPSIjQ0RCREIyIiBwb2ludHM9IjYwLjc1IDE3My4yNSA4OC4zMTMgMTgwLjU2MyA4OC4zMTMgMTcxIDkwLjU2MyAxNjguNzUgMTA2LjMxMyAxNjguNzUgMTA2LjMxMyAxODAgMTA2LjMxMyAxODcuODc1IDg5LjQzOCAxODcuODc1IDY4LjYyNSAxNzguODc1Ii8+PHBvbHlnb24gZmlsbD0iI0NEQkRCMiIgcG9pbnRzPSIxMDUuNzUgMTczLjI1IDEzMi43NSAxODAuNTYzIDEzMi43NSAxNzEgMTM1IDE2OC43NSAxNTAuNzUgMTY4Ljc1IDE1MC43NSAxODAgMTUwLjc1IDE4Ny44NzUgMTMzLjg3NSAxODcuODc1IDExMy4wNjMgMTc4Ljg3NSIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjU2LjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzEgOTEuMTI1IDE2OC43NSAxMjAuMzc1IDE2OC43NSAxMjMuNzUgMTcxIDEyMS41IDE1Mi40MzggMTE3IDE0OS42MjUgOTQuNSAxNTAuMTg4Ii8+PHBvbHlnb24gZmlsbD0iI0Y4OUMzNSIgcG9pbnRzPSI3NS4zNzUgMjcgODguODc1IDU4LjUgOTUuMDYzIDE1MC4xODggMTE3IDE1MC4xODggMTIzLjc1IDU4LjUgMTM2LjEyNSAyNyIvPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MC41NjMgMTUyLjQzOCIvPjxwb2x5Z29uIGZpbGw9IiNFQThFM0EiIHBvaW50cz0iOTIuMjUgMTAyLjM3NSA5NS4wNjMgMTUwLjE4OCA4Ni42MjUgMTI1LjcxOSIvPjxwb2x5Z29uIGZpbGw9IiNEODdDMzAiIHBvaW50cz0iMzkuMzc1IDEzOC45MzggNjUuMjUgMTM4LjM3NSA2MC43NSAxNzMuMjUiLz48cG9seWdvbiBmaWxsPSIjRUI4RjM1IiBwb2ludHM9IjEyLjkzOCAxODguNDM4IDYwLjc1IDE3My4yNSAzOS4zNzUgMTM4LjkzOCAuNTYzIDE0MS43NSIvPjxwb2x5Z29uIGZpbGw9IiNFODgyMUUiIHBvaW50cz0iODguODc1IDU4LjUgNjQuNjg4IDc4Ljc1IDQ2LjEyNSAxMDEuMjUgOTIuMjUgMTAyLjkzOCIvPjxwb2x5Z29uIGZpbGw9IiNERkNFQzMiIHBvaW50cz0iNjAuNzUgMTczLjI1IDkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzAuNDM4IDg4LjMxMyAxODAuNTYzIDY4LjA2MyAxNzYuNjI1Ii8+PHBvbHlnb24gZmlsbD0iI0RGQ0VDMyIgcG9pbnRzPSIxMjEuNSAxNzMuMjUgMTUwLjc1IDE1Mi40MzggMTQ4LjUgMTcwLjQzOCAxNDguNSAxODAuNTYzIDEyOC4yNSAxNzYuNjI1IiB0cmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAyNzIuMjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PGcgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjExLjUgMCkiPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MCAxNTMiLz48cG9seWdvbiBmaWxsPSIjRUE4RTNBIiBwb2ludHM9IjkyLjI1IDEwMi4zNzUgOTUuMDYzIDE1MC4xODggODYuNjI1IDEyNS43MTkiLz48cG9seWdvbiBmaWxsPSIjRDg3QzMwIiBwb2ludHM9IjM5LjM3NSAxMzguOTM4IDY1LjI1IDEzOC4zNzUgNjAuNzUgMTczLjI1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSIxMi45MzggMTg4LjQzOCA2MC43NSAxNzMuMjUgMzkuMzc1IDEzOC45MzggLjU2MyAxNDEuNzUiLz48cG9seWdvbiBmaWxsPSIjRTg4MjFFIiBwb2ludHM9Ijg4Ljg3NSA1OC41IDY0LjY4OCA3OC43NSA0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi45MzgiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PC9nPjwvZz48L3N2Zz4=\";\n\n constructor(private provider: MetaMaskProvider) {}\n\n get version() {\n return \"1.0.0\" as const;\n }\n\n get name() {\n return this.#name;\n }\n\n get icon() {\n return this.#icon as WalletWithStarknetFeatures[\"icon\"];\n }\n\n get features(): StarknetFeatures {\n return {\n [StandardConnect]: {\n version: \"1.0.0\" as const,\n connect: this.#connect.bind(this),\n },\n [StandardDisconnect]: {\n version: \"1.0.0\" as const,\n disconnect: this.#disconnect.bind(this),\n },\n [StandardEvents]: {\n version: \"1.0.0\" as const,\n on: this.#on.bind(this),\n },\n [StarknetWalletApi]: {\n id: \"metamask\",\n version: \"1.0.0\" as const,\n request: this.#request.bind(this),\n walletVersion: \"2.0.0\",\n },\n };\n }\n\n get chains() {\n return WELL_KNOWN_STARKNET_CHAINS.slice();\n }\n\n get accounts(): StarknetWalletAccount[] {\n if (this.#account) {\n return [\n {\n address: this.#account.address,\n publicKey: new Uint8Array(),\n chains: [this.#account.chain],\n features: [],\n },\n ];\n }\n\n return [];\n }\n\n #connect: StandardConnectMethod = async ({ silent }) => {\n if (!this.#account) {\n const accounts = await this.#request({\n type: \"wallet_requestAccounts\",\n params: {\n silent_mode: silent,\n },\n });\n\n // TODO(fra): maybe we should throw an error here?\n // User rejected the request.\n if (accounts.length === 0) {\n return { accounts: [] };\n }\n\n await this.#onAccountsChanged(accounts);\n }\n\n return { accounts: this.accounts };\n };\n\n #disconnect: StandardDisconnectMethod = async () => {\n this.#disconnected();\n };\n\n #emit<E extends StandardEventsNames>(\n event: E,\n ...args: Parameters<StandardEventsListeners[E]>\n ): void {\n if (!this.#listeners[event]) return;\n\n for (const listener of this.#listeners[event]) {\n listener.apply(null, args);\n }\n }\n\n #on: StandardEventsOnMethod = (event, listener) => {\n if (!this.#listeners[event]) {\n this.#listeners[event] = [];\n }\n\n this.#listeners[event].push(listener);\n\n return (): void => this.#off(event, listener);\n };\n\n #off<E extends StandardEventsNames>(\n event: E,\n listener: StandardEventsListeners[E],\n ): void {\n this.#listeners[event] = this.#listeners[event]?.filter(\n (existingListener) => listener !== existingListener,\n );\n }\n\n #disconnected() {\n if (this.#account) {\n this.#account = null;\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n\n #request<T extends RpcMessage[\"type\"]>(\n args: RequestFnCall<T>,\n ): Promise<RpcTypeToMessageMap[T][\"result\"]> {\n return this.#lock.runExclusive(async () => {\n // Loading the MetaMask snap requires the user to confirm the installation.\n // If the snap is not installed, return an empty array to avoid the wallet popup.\n if (!this.#swo && args.type === \"wallet_getPermissions\") {\n return [];\n }\n\n if (!this.#swo) {\n this.#swo = await this.#loadWallet(this.provider);\n // Bind properties from the virtual wallet to make sure they're up-to-date.\n this.#name = this.#swo.name;\n if (typeof this.#swo.icon === \"string\") {\n this.#icon = this.#swo.icon;\n } else {\n this.#icon = this.#swo.icon.light;\n }\n }\n\n return this.#swo.request(args);\n });\n }\n\n async #loadWallet(provider: MetaMaskProvider): Promise<StarknetWindowObject> {\n await init({\n name: \"MetaMaskStarknetSnapWallet\",\n remotes: [\n {\n name: \"MetaMaskStarknetSnapWallet\",\n alias: \"MetaMaskStarknetSnapWallet\",\n entry: `https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js?ts=${Date.now()}`,\n },\n ],\n });\n\n const result = await loadRemote<{\n MetaMaskSnapWallet: new (\n provider: MetaMaskProvider,\n version: string,\n ) => StarknetWindowObject;\n }>(\"MetaMaskStarknetSnapWallet/index\");\n\n if (!result) {\n // as `loadWallet` should only trigger when the wallet selected,\n // therefore it is make sense to throw error to indicate the wallet is not loaded\n throw new Error(\"Failed to load MetaMask Wallet\");\n }\n\n const swo = new result.MetaMaskSnapWallet(provider, \"*\");\n swo.on(\"accountsChanged\", this.#onAccountsChanged.bind(this));\n swo.on(\"networkChanged\", this.#onNetworkChanged.bind(this));\n return swo;\n }\n\n async #getStarknetChain(): Promise<StarknetChain> {\n const chainId = await this.#request({\n type: \"wallet_requestChainId\",\n });\n const chain = `${STARKNET_CHAIN_PREFIX}${chainId}` as const;\n\n if (!isStarknetChain(chain)) {\n throw new Error(\"Invalid Starknet chain\");\n }\n\n return chain;\n }\n\n async #onAccountsChanged(accounts: string[]) {\n if (!accounts || accounts.length === 0) {\n this.#disconnected();\n return;\n }\n\n const [account] = accounts;\n\n if (this.#account?.chain) {\n // Only account changed. No need to make a request for the chain id.\n this.#account.address = account;\n this.#emit(\"change\", { accounts: this.accounts });\n } else {\n const chain = await this.#getStarknetChain();\n this.#account = { address: account, chain };\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n\n #onNetworkChanged(chainId?: string, accounts?: string[]) {\n if (!chainId) {\n this.#disconnected();\n return;\n }\n\n const chain = formatStarknetChainId(chainId);\n\n if (!isStarknetChain(chain)) {\n throw new Error(`Invalid Starknet chain: ${chain}`);\n }\n\n // Accounts should always be set, but check just in case.\n if (accounts?.length > 0) {\n const [account] = accounts;\n\n this.#account = { address: account, chain };\n this.#emit(\"change\", { accounts: this.accounts });\n } else {\n this.#account.chain = chain;\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n}\n\nexport type MetaMaskProvider = {\n isMetaMask: boolean;\n request(options: { method: string }): Promise<void>;\n};\n\nexport function isMetaMaskProvider(obj: unknown): obj is MetaMaskProvider {\n return (\n obj !== null &&\n typeof obj === \"object\" &&\n Object.hasOwn(obj, \"isMetaMask\") &&\n Object.hasOwn(obj, \"request\")\n );\n}\n"],"names":["Mutex","StandardConnect","StandardDisconnect","StandardEvents","StarknetWalletApi","WELL_KNOWN_STARKNET_CHAINS","init","loadRemote","STARKNET_CHAIN_PREFIX","isStarknetChain","formatStarknetChainId"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { EIP1193Provider } from 'viem';
2
- import { WalletWithStarknetFeatures, StarknetFeatures } from '@starknet-io/get-starknet-wallet-standard/features';
3
1
  import { StarknetWalletAccount } from '@starknet-io/get-starknet-wallet-standard';
2
+ import { WalletWithStarknetFeatures, StarknetFeatures } from '@starknet-io/get-starknet-wallet-standard/features';
3
+ import { EIP1193Provider } from 'viem';
4
4
  import { EIP6963ProviderInfo } from './index.cjs';
5
5
 
6
6
  declare function metaMaskVirtualWallet(info: EIP6963ProviderInfo, provider: EIP1193Provider): WalletWithStarknetFeatures | null;
@@ -1,6 +1,6 @@
1
- import { EIP1193Provider } from 'viem';
2
- import { WalletWithStarknetFeatures, StarknetFeatures } from '@starknet-io/get-starknet-wallet-standard/features';
3
1
  import { StarknetWalletAccount } from '@starknet-io/get-starknet-wallet-standard';
2
+ import { WalletWithStarknetFeatures, StarknetFeatures } from '@starknet-io/get-starknet-wallet-standard/features';
3
+ import { EIP1193Provider } from 'viem';
4
4
  import { EIP6963ProviderInfo } from './index.mjs';
5
5
 
6
6
  declare function metaMaskVirtualWallet(info: EIP6963ProviderInfo, provider: EIP1193Provider): WalletWithStarknetFeatures | null;
@@ -1,6 +1,6 @@
1
- import { EIP1193Provider } from 'viem';
2
- import { WalletWithStarknetFeatures, StarknetFeatures } from '@starknet-io/get-starknet-wallet-standard/features';
3
1
  import { StarknetWalletAccount } from '@starknet-io/get-starknet-wallet-standard';
2
+ import { WalletWithStarknetFeatures, StarknetFeatures } from '@starknet-io/get-starknet-wallet-standard/features';
3
+ import { EIP1193Provider } from 'viem';
4
4
  import { EIP6963ProviderInfo } from './index.js';
5
5
 
6
6
  declare function metaMaskVirtualWallet(info: EIP6963ProviderInfo, provider: EIP1193Provider): WalletWithStarknetFeatures | null;
package/dist/metamask.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { StandardConnect, StandardDisconnect, StandardEvents } from '@wallet-standard/features';
2
- import { StarknetWalletApi } from '@starknet-io/get-starknet-wallet-standard/features';
1
+ import { init, loadRemote } from '@module-federation/runtime';
3
2
  import { WELL_KNOWN_STARKNET_CHAINS, formatStarknetChainId, isStarknetChain, STARKNET_CHAIN_PREFIX } from '@starknet-io/get-starknet-wallet-standard/chains';
3
+ import { StarknetWalletApi } from '@starknet-io/get-starknet-wallet-standard/features';
4
+ import { StandardConnect, StandardDisconnect, StandardEvents } from '@wallet-standard/features';
4
5
  import { Mutex } from 'async-mutex';
5
- import { init, loadRemote } from '@module-federation/runtime';
6
6
 
7
7
  var __accessCheck = (obj, member, msg) => {
8
8
  if (!member.has(obj))
@@ -101,6 +101,7 @@ class MetaMaskVirtualWallet {
101
101
  on: __privateGet(this, _on).bind(this)
102
102
  },
103
103
  [StarknetWalletApi]: {
104
+ id: "metamask",
104
105
  version: "1.0.0",
105
106
  request: __privateMethod(this, _request, request_fn).bind(this),
106
107
  walletVersion: "2.0.0"
@@ -1 +1 @@
1
- {"version":3,"file":"metamask.mjs","sources":["../src/metamask.ts"],"sourcesContent":["import {\n StandardConnect,\n type StandardConnectMethod,\n StandardDisconnect,\n type StandardDisconnectMethod,\n StandardEvents,\n type StandardEventsListeners,\n type StandardEventsNames,\n type StandardEventsOnMethod,\n} from \"@wallet-standard/features\";\nimport type { EIP1193Provider } from \"viem\";\nimport type {\n RequestFnCall,\n RpcMessage,\n RpcTypeToMessageMap,\n StarknetWindowObject,\n} from \"@starknet-io/types-js\";\nimport {\n StarknetWalletApi,\n type StarknetFeatures,\n type WalletWithStarknetFeatures,\n} from \"@starknet-io/get-starknet-wallet-standard/features\";\nimport {\n formatStarknetChainId,\n isStarknetChain,\n STARKNET_CHAIN_PREFIX,\n WELL_KNOWN_STARKNET_CHAINS,\n} from \"@starknet-io/get-starknet-wallet-standard/chains\";\nimport type { StarknetWalletAccount } from \"@starknet-io/get-starknet-wallet-standard\";\nimport type { StarknetChain } from \"@starknet-io/get-starknet-wallet-standard/chains\";\nimport { Mutex } from \"async-mutex\";\nimport { init, loadRemote } from \"@module-federation/runtime\";\n\nimport type { EIP6963ProviderInfo } from \"./types\";\n\nexport function metaMaskVirtualWallet(\n info: EIP6963ProviderInfo,\n provider: EIP1193Provider,\n): WalletWithStarknetFeatures | null {\n const rdnsCheck =\n info.rdns === \"io.metamask\" || info.rdns === \"io.metamask.flask\";\n if (rdnsCheck && isMetaMaskProvider(provider)) {\n return new MetaMaskVirtualWallet(provider);\n }\n\n return null;\n}\n\nexport class MetaMaskVirtualWallet implements WalletWithStarknetFeatures {\n #listeners: { [E in StandardEventsNames]?: StandardEventsListeners[E][] } =\n {};\n #account: { address: string; chain: StarknetChain } | null = null;\n #swo: StarknetWindowObject | null = null;\n #lock: Mutex = new Mutex();\n #name = \"MetaMask\";\n #icon =\n \"data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMTIiIGhlaWdodD0iMTg5IiB2aWV3Qm94PSIwIDAgMjEyIDE4OSI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cG9seWdvbiBmaWxsPSIjQ0RCREIyIiBwb2ludHM9IjYwLjc1IDE3My4yNSA4OC4zMTMgMTgwLjU2MyA4OC4zMTMgMTcxIDkwLjU2MyAxNjguNzUgMTA2LjMxMyAxNjguNzUgMTA2LjMxMyAxODAgMTA2LjMxMyAxODcuODc1IDg5LjQzOCAxODcuODc1IDY4LjYyNSAxNzguODc1Ii8+PHBvbHlnb24gZmlsbD0iI0NEQkRCMiIgcG9pbnRzPSIxMDUuNzUgMTczLjI1IDEzMi43NSAxODAuNTYzIDEzMi43NSAxNzEgMTM1IDE2OC43NSAxNTAuNzUgMTY4Ljc1IDE1MC43NSAxODAgMTUwLjc1IDE4Ny44NzUgMTMzLjg3NSAxODcuODc1IDExMy4wNjMgMTc4Ljg3NSIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjU2LjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzEgOTEuMTI1IDE2OC43NSAxMjAuMzc1IDE2OC43NSAxMjMuNzUgMTcxIDEyMS41IDE1Mi40MzggMTE3IDE0OS42MjUgOTQuNSAxNTAuMTg4Ii8+PHBvbHlnb24gZmlsbD0iI0Y4OUMzNSIgcG9pbnRzPSI3NS4zNzUgMjcgODguODc1IDU4LjUgOTUuMDYzIDE1MC4xODggMTE3IDE1MC4xODggMTIzLjc1IDU4LjUgMTM2LjEyNSAyNyIvPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MC41NjMgMTUyLjQzOCIvPjxwb2x5Z29uIGZpbGw9IiNFQThFM0EiIHBvaW50cz0iOTIuMjUgMTAyLjM3NSA5NS4wNjMgMTUwLjE4OCA4Ni42MjUgMTI1LjcxOSIvPjxwb2x5Z29uIGZpbGw9IiNEODdDMzAiIHBvaW50cz0iMzkuMzc1IDEzOC45MzggNjUuMjUgMTM4LjM3NSA2MC43NSAxNzMuMjUiLz48cG9seWdvbiBmaWxsPSIjRUI4RjM1IiBwb2ludHM9IjEyLjkzOCAxODguNDM4IDYwLjc1IDE3My4yNSAzOS4zNzUgMTM4LjkzOCAuNTYzIDE0MS43NSIvPjxwb2x5Z29uIGZpbGw9IiNFODgyMUUiIHBvaW50cz0iODguODc1IDU4LjUgNjQuNjg4IDc4Ljc1IDQ2LjEyNSAxMDEuMjUgOTIuMjUgMTAyLjkzOCIvPjxwb2x5Z29uIGZpbGw9IiNERkNFQzMiIHBvaW50cz0iNjAuNzUgMTczLjI1IDkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzAuNDM4IDg4LjMxMyAxODAuNTYzIDY4LjA2MyAxNzYuNjI1Ii8+PHBvbHlnb24gZmlsbD0iI0RGQ0VDMyIgcG9pbnRzPSIxMjEuNSAxNzMuMjUgMTUwLjc1IDE1Mi40MzggMTQ4LjUgMTcwLjQzOCAxNDguNSAxODAuNTYzIDEyOC4yNSAxNzYuNjI1IiB0cmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAyNzIuMjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PGcgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjExLjUgMCkiPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MCAxNTMiLz48cG9seWdvbiBmaWxsPSIjRUE4RTNBIiBwb2ludHM9IjkyLjI1IDEwMi4zNzUgOTUuMDYzIDE1MC4xODggODYuNjI1IDEyNS43MTkiLz48cG9seWdvbiBmaWxsPSIjRDg3QzMwIiBwb2ludHM9IjM5LjM3NSAxMzguOTM4IDY1LjI1IDEzOC4zNzUgNjAuNzUgMTczLjI1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSIxMi45MzggMTg4LjQzOCA2MC43NSAxNzMuMjUgMzkuMzc1IDEzOC45MzggLjU2MyAxNDEuNzUiLz48cG9seWdvbiBmaWxsPSIjRTg4MjFFIiBwb2ludHM9Ijg4Ljg3NSA1OC41IDY0LjY4OCA3OC43NSA0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi45MzgiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PC9nPjwvZz48L3N2Zz4=\";\n\n constructor(private provider: MetaMaskProvider) {}\n\n get version() {\n return \"1.0.0\" as const;\n }\n\n get name() {\n return this.#name;\n }\n\n get icon() {\n return this.#icon as WalletWithStarknetFeatures[\"icon\"];\n }\n\n get features(): StarknetFeatures {\n return {\n [StandardConnect]: {\n version: \"1.0.0\" as const,\n connect: this.#connect.bind(this),\n },\n [StandardDisconnect]: {\n version: \"1.0.0\" as const,\n disconnect: this.#disconnect.bind(this),\n },\n [StandardEvents]: {\n version: \"1.0.0\" as const,\n on: this.#on.bind(this),\n },\n [StarknetWalletApi]: {\n version: \"1.0.0\" as const,\n request: this.#request.bind(this),\n walletVersion: \"2.0.0\",\n },\n };\n }\n\n get chains() {\n return WELL_KNOWN_STARKNET_CHAINS.slice();\n }\n\n get accounts(): StarknetWalletAccount[] {\n if (this.#account) {\n return [\n {\n address: this.#account.address,\n publicKey: new Uint8Array(),\n chains: [this.#account.chain],\n features: [],\n },\n ];\n }\n\n return [];\n }\n\n #connect: StandardConnectMethod = async ({ silent }) => {\n if (!this.#account) {\n const accounts = await this.#request({\n type: \"wallet_requestAccounts\",\n params: {\n silent_mode: silent,\n },\n });\n\n // TODO(fra): maybe we should throw an error here?\n // User rejected the request.\n if (accounts.length === 0) {\n return { accounts: [] };\n }\n\n await this.#onAccountsChanged(accounts);\n }\n\n return { accounts: this.accounts };\n };\n\n #disconnect: StandardDisconnectMethod = async () => {\n this.#disconnected();\n };\n\n #emit<E extends StandardEventsNames>(\n event: E,\n ...args: Parameters<StandardEventsListeners[E]>\n ): void {\n if (!this.#listeners[event]) return;\n\n for (const listener of this.#listeners[event]) {\n listener.apply(null, args);\n }\n }\n\n #on: StandardEventsOnMethod = (event, listener) => {\n if (!this.#listeners[event]) {\n this.#listeners[event] = [];\n }\n\n this.#listeners[event].push(listener);\n\n return (): void => this.#off(event, listener);\n };\n\n #off<E extends StandardEventsNames>(\n event: E,\n listener: StandardEventsListeners[E],\n ): void {\n this.#listeners[event] = this.#listeners[event]?.filter(\n (existingListener) => listener !== existingListener,\n );\n }\n\n #disconnected() {\n if (this.#account) {\n this.#account = null;\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n\n #request<T extends RpcMessage[\"type\"]>(\n args: RequestFnCall<T>,\n ): Promise<RpcTypeToMessageMap[T][\"result\"]> {\n return this.#lock.runExclusive(async () => {\n // Loading the MetaMask snap requires the user to confirm the installation.\n // If the snap is not installed, return an empty array to avoid the wallet popup.\n if (!this.#swo && args.type === \"wallet_getPermissions\") {\n return [];\n }\n\n if (!this.#swo) {\n this.#swo = await this.#loadWallet(this.provider);\n // Bind properties from the virtual wallet to make sure they're up-to-date.\n this.#name = this.#swo.name;\n if (typeof this.#swo.icon === \"string\") {\n this.#icon = this.#swo.icon;\n } else {\n this.#icon = this.#swo.icon.light;\n }\n }\n\n return this.#swo.request(args);\n });\n }\n\n async #loadWallet(provider: MetaMaskProvider): Promise<StarknetWindowObject> {\n await init({\n name: \"MetaMaskStarknetSnapWallet\",\n remotes: [\n {\n name: \"MetaMaskStarknetSnapWallet\",\n alias: \"MetaMaskStarknetSnapWallet\",\n entry: `https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js?ts=${Date.now()}`,\n },\n ],\n });\n\n const result = await loadRemote<{\n MetaMaskSnapWallet: new (\n provider: MetaMaskProvider,\n version: string,\n ) => StarknetWindowObject;\n }>(\"MetaMaskStarknetSnapWallet/index\");\n\n if (!result) {\n // as `loadWallet` should only trigger when the wallet selected,\n // therefore it is make sense to throw error to indicate the wallet is not loaded\n throw new Error(\"Failed to load MetaMask Wallet\");\n }\n\n const swo = new result.MetaMaskSnapWallet(provider, \"*\");\n swo.on(\"accountsChanged\", this.#onAccountsChanged.bind(this));\n swo.on(\"networkChanged\", this.#onNetworkChanged.bind(this));\n return swo;\n }\n\n async #getStarknetChain(): Promise<StarknetChain> {\n const chainId = await this.#request({\n type: \"wallet_requestChainId\",\n });\n const chain = `${STARKNET_CHAIN_PREFIX}${chainId}` as const;\n\n if (!isStarknetChain(chain)) {\n throw new Error(\"Invalid Starknet chain\");\n }\n\n return chain;\n }\n\n async #onAccountsChanged(accounts: string[]) {\n if (!accounts || accounts.length === 0) {\n this.#disconnected();\n return;\n }\n\n const [account] = accounts;\n\n if (this.#account?.chain) {\n // Only account changed. No need to make a request for the chain id.\n this.#account.address = account;\n this.#emit(\"change\", { accounts: this.accounts });\n } else {\n const chain = await this.#getStarknetChain();\n this.#account = { address: account, chain };\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n\n #onNetworkChanged(chainId?: string, accounts?: string[]) {\n if (!chainId) {\n this.#disconnected();\n return;\n }\n\n const chain = formatStarknetChainId(chainId);\n\n if (!isStarknetChain(chain)) {\n throw new Error(`Invalid Starknet chain: ${chain}`);\n }\n\n // Accounts should always be set, but check just in case.\n if (accounts?.length > 0) {\n const [account] = accounts;\n\n this.#account = { address: account, chain };\n this.#emit(\"change\", { accounts: this.accounts });\n } else {\n this.#account.chain = chain;\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n}\n\nexport type MetaMaskProvider = {\n isMetaMask: boolean;\n request(options: { method: string }): Promise<void>;\n};\n\nexport function isMetaMaskProvider(obj: unknown): obj is MetaMaskProvider {\n return (\n obj !== null &&\n typeof obj === \"object\" &&\n Object.hasOwn(obj, \"isMetaMask\") &&\n Object.hasOwn(obj, \"request\")\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metamask.mjs","sources":["../src/metamask.ts"],"sourcesContent":["import { init, loadRemote } from \"@module-federation/runtime\";\nimport type { StarknetWalletAccount } from \"@starknet-io/get-starknet-wallet-standard\";\nimport type { StarknetChain } from \"@starknet-io/get-starknet-wallet-standard/chains\";\nimport {\n formatStarknetChainId,\n isStarknetChain,\n STARKNET_CHAIN_PREFIX,\n WELL_KNOWN_STARKNET_CHAINS,\n} from \"@starknet-io/get-starknet-wallet-standard/chains\";\nimport {\n type StarknetFeatures,\n StarknetWalletApi,\n type WalletWithStarknetFeatures,\n} from \"@starknet-io/get-starknet-wallet-standard/features\";\nimport type {\n RequestFnCall,\n RpcMessage,\n RpcTypeToMessageMap,\n StarknetWindowObject,\n} from \"@starknet-io/types-js\";\nimport {\n StandardConnect,\n type StandardConnectMethod,\n StandardDisconnect,\n type StandardDisconnectMethod,\n StandardEvents,\n type StandardEventsListeners,\n type StandardEventsNames,\n type StandardEventsOnMethod,\n} from \"@wallet-standard/features\";\nimport { Mutex } from \"async-mutex\";\nimport type { EIP1193Provider } from \"viem\";\n\nimport type { EIP6963ProviderInfo } from \"./types\";\n\nexport function metaMaskVirtualWallet(\n info: EIP6963ProviderInfo,\n provider: EIP1193Provider,\n): WalletWithStarknetFeatures | null {\n const rdnsCheck =\n info.rdns === \"io.metamask\" || info.rdns === \"io.metamask.flask\";\n if (rdnsCheck && isMetaMaskProvider(provider)) {\n return new MetaMaskVirtualWallet(provider);\n }\n\n return null;\n}\n\nexport class MetaMaskVirtualWallet implements WalletWithStarknetFeatures {\n #listeners: { [E in StandardEventsNames]?: StandardEventsListeners[E][] } =\n {};\n #account: { address: string; chain: StarknetChain } | null = null;\n #swo: StarknetWindowObject | null = null;\n #lock: Mutex = new Mutex();\n #name = \"MetaMask\";\n #icon =\n \"data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMTIiIGhlaWdodD0iMTg5IiB2aWV3Qm94PSIwIDAgMjEyIDE4OSI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cG9seWdvbiBmaWxsPSIjQ0RCREIyIiBwb2ludHM9IjYwLjc1IDE3My4yNSA4OC4zMTMgMTgwLjU2MyA4OC4zMTMgMTcxIDkwLjU2MyAxNjguNzUgMTA2LjMxMyAxNjguNzUgMTA2LjMxMyAxODAgMTA2LjMxMyAxODcuODc1IDg5LjQzOCAxODcuODc1IDY4LjYyNSAxNzguODc1Ii8+PHBvbHlnb24gZmlsbD0iI0NEQkRCMiIgcG9pbnRzPSIxMDUuNzUgMTczLjI1IDEzMi43NSAxODAuNTYzIDEzMi43NSAxNzEgMTM1IDE2OC43NSAxNTAuNzUgMTY4Ljc1IDE1MC43NSAxODAgMTUwLjc1IDE4Ny44NzUgMTMzLjg3NSAxODcuODc1IDExMy4wNjMgMTc4Ljg3NSIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjU2LjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzEgOTEuMTI1IDE2OC43NSAxMjAuMzc1IDE2OC43NSAxMjMuNzUgMTcxIDEyMS41IDE1Mi40MzggMTE3IDE0OS42MjUgOTQuNSAxNTAuMTg4Ii8+PHBvbHlnb24gZmlsbD0iI0Y4OUMzNSIgcG9pbnRzPSI3NS4zNzUgMjcgODguODc1IDU4LjUgOTUuMDYzIDE1MC4xODggMTE3IDE1MC4xODggMTIzLjc1IDU4LjUgMTM2LjEyNSAyNyIvPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MC41NjMgMTUyLjQzOCIvPjxwb2x5Z29uIGZpbGw9IiNFQThFM0EiIHBvaW50cz0iOTIuMjUgMTAyLjM3NSA5NS4wNjMgMTUwLjE4OCA4Ni42MjUgMTI1LjcxOSIvPjxwb2x5Z29uIGZpbGw9IiNEODdDMzAiIHBvaW50cz0iMzkuMzc1IDEzOC45MzggNjUuMjUgMTM4LjM3NSA2MC43NSAxNzMuMjUiLz48cG9seWdvbiBmaWxsPSIjRUI4RjM1IiBwb2ludHM9IjEyLjkzOCAxODguNDM4IDYwLjc1IDE3My4yNSAzOS4zNzUgMTM4LjkzOCAuNTYzIDE0MS43NSIvPjxwb2x5Z29uIGZpbGw9IiNFODgyMUUiIHBvaW50cz0iODguODc1IDU4LjUgNjQuNjg4IDc4Ljc1IDQ2LjEyNSAxMDEuMjUgOTIuMjUgMTAyLjkzOCIvPjxwb2x5Z29uIGZpbGw9IiNERkNFQzMiIHBvaW50cz0iNjAuNzUgMTczLjI1IDkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzAuNDM4IDg4LjMxMyAxODAuNTYzIDY4LjA2MyAxNzYuNjI1Ii8+PHBvbHlnb24gZmlsbD0iI0RGQ0VDMyIgcG9pbnRzPSIxMjEuNSAxNzMuMjUgMTUwLjc1IDE1Mi40MzggMTQ4LjUgMTcwLjQzOCAxNDguNSAxODAuNTYzIDEyOC4yNSAxNzYuNjI1IiB0cmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAyNzIuMjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PGcgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjExLjUgMCkiPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MCAxNTMiLz48cG9seWdvbiBmaWxsPSIjRUE4RTNBIiBwb2ludHM9IjkyLjI1IDEwMi4zNzUgOTUuMDYzIDE1MC4xODggODYuNjI1IDEyNS43MTkiLz48cG9seWdvbiBmaWxsPSIjRDg3QzMwIiBwb2ludHM9IjM5LjM3NSAxMzguOTM4IDY1LjI1IDEzOC4zNzUgNjAuNzUgMTczLjI1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSIxMi45MzggMTg4LjQzOCA2MC43NSAxNzMuMjUgMzkuMzc1IDEzOC45MzggLjU2MyAxNDEuNzUiLz48cG9seWdvbiBmaWxsPSIjRTg4MjFFIiBwb2ludHM9Ijg4Ljg3NSA1OC41IDY0LjY4OCA3OC43NSA0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi45MzgiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PC9nPjwvZz48L3N2Zz4=\";\n\n constructor(private provider: MetaMaskProvider) {}\n\n get version() {\n return \"1.0.0\" as const;\n }\n\n get name() {\n return this.#name;\n }\n\n get icon() {\n return this.#icon as WalletWithStarknetFeatures[\"icon\"];\n }\n\n get features(): StarknetFeatures {\n return {\n [StandardConnect]: {\n version: \"1.0.0\" as const,\n connect: this.#connect.bind(this),\n },\n [StandardDisconnect]: {\n version: \"1.0.0\" as const,\n disconnect: this.#disconnect.bind(this),\n },\n [StandardEvents]: {\n version: \"1.0.0\" as const,\n on: this.#on.bind(this),\n },\n [StarknetWalletApi]: {\n id: \"metamask\",\n version: \"1.0.0\" as const,\n request: this.#request.bind(this),\n walletVersion: \"2.0.0\",\n },\n };\n }\n\n get chains() {\n return WELL_KNOWN_STARKNET_CHAINS.slice();\n }\n\n get accounts(): StarknetWalletAccount[] {\n if (this.#account) {\n return [\n {\n address: this.#account.address,\n publicKey: new Uint8Array(),\n chains: [this.#account.chain],\n features: [],\n },\n ];\n }\n\n return [];\n }\n\n #connect: StandardConnectMethod = async ({ silent }) => {\n if (!this.#account) {\n const accounts = await this.#request({\n type: \"wallet_requestAccounts\",\n params: {\n silent_mode: silent,\n },\n });\n\n // TODO(fra): maybe we should throw an error here?\n // User rejected the request.\n if (accounts.length === 0) {\n return { accounts: [] };\n }\n\n await this.#onAccountsChanged(accounts);\n }\n\n return { accounts: this.accounts };\n };\n\n #disconnect: StandardDisconnectMethod = async () => {\n this.#disconnected();\n };\n\n #emit<E extends StandardEventsNames>(\n event: E,\n ...args: Parameters<StandardEventsListeners[E]>\n ): void {\n if (!this.#listeners[event]) return;\n\n for (const listener of this.#listeners[event]) {\n listener.apply(null, args);\n }\n }\n\n #on: StandardEventsOnMethod = (event, listener) => {\n if (!this.#listeners[event]) {\n this.#listeners[event] = [];\n }\n\n this.#listeners[event].push(listener);\n\n return (): void => this.#off(event, listener);\n };\n\n #off<E extends StandardEventsNames>(\n event: E,\n listener: StandardEventsListeners[E],\n ): void {\n this.#listeners[event] = this.#listeners[event]?.filter(\n (existingListener) => listener !== existingListener,\n );\n }\n\n #disconnected() {\n if (this.#account) {\n this.#account = null;\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n\n #request<T extends RpcMessage[\"type\"]>(\n args: RequestFnCall<T>,\n ): Promise<RpcTypeToMessageMap[T][\"result\"]> {\n return this.#lock.runExclusive(async () => {\n // Loading the MetaMask snap requires the user to confirm the installation.\n // If the snap is not installed, return an empty array to avoid the wallet popup.\n if (!this.#swo && args.type === \"wallet_getPermissions\") {\n return [];\n }\n\n if (!this.#swo) {\n this.#swo = await this.#loadWallet(this.provider);\n // Bind properties from the virtual wallet to make sure they're up-to-date.\n this.#name = this.#swo.name;\n if (typeof this.#swo.icon === \"string\") {\n this.#icon = this.#swo.icon;\n } else {\n this.#icon = this.#swo.icon.light;\n }\n }\n\n return this.#swo.request(args);\n });\n }\n\n async #loadWallet(provider: MetaMaskProvider): Promise<StarknetWindowObject> {\n await init({\n name: \"MetaMaskStarknetSnapWallet\",\n remotes: [\n {\n name: \"MetaMaskStarknetSnapWallet\",\n alias: \"MetaMaskStarknetSnapWallet\",\n entry: `https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js?ts=${Date.now()}`,\n },\n ],\n });\n\n const result = await loadRemote<{\n MetaMaskSnapWallet: new (\n provider: MetaMaskProvider,\n version: string,\n ) => StarknetWindowObject;\n }>(\"MetaMaskStarknetSnapWallet/index\");\n\n if (!result) {\n // as `loadWallet` should only trigger when the wallet selected,\n // therefore it is make sense to throw error to indicate the wallet is not loaded\n throw new Error(\"Failed to load MetaMask Wallet\");\n }\n\n const swo = new result.MetaMaskSnapWallet(provider, \"*\");\n swo.on(\"accountsChanged\", this.#onAccountsChanged.bind(this));\n swo.on(\"networkChanged\", this.#onNetworkChanged.bind(this));\n return swo;\n }\n\n async #getStarknetChain(): Promise<StarknetChain> {\n const chainId = await this.#request({\n type: \"wallet_requestChainId\",\n });\n const chain = `${STARKNET_CHAIN_PREFIX}${chainId}` as const;\n\n if (!isStarknetChain(chain)) {\n throw new Error(\"Invalid Starknet chain\");\n }\n\n return chain;\n }\n\n async #onAccountsChanged(accounts: string[]) {\n if (!accounts || accounts.length === 0) {\n this.#disconnected();\n return;\n }\n\n const [account] = accounts;\n\n if (this.#account?.chain) {\n // Only account changed. No need to make a request for the chain id.\n this.#account.address = account;\n this.#emit(\"change\", { accounts: this.accounts });\n } else {\n const chain = await this.#getStarknetChain();\n this.#account = { address: account, chain };\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n\n #onNetworkChanged(chainId?: string, accounts?: string[]) {\n if (!chainId) {\n this.#disconnected();\n return;\n }\n\n const chain = formatStarknetChainId(chainId);\n\n if (!isStarknetChain(chain)) {\n throw new Error(`Invalid Starknet chain: ${chain}`);\n }\n\n // Accounts should always be set, but check just in case.\n if (accounts?.length > 0) {\n const [account] = accounts;\n\n this.#account = { address: account, chain };\n this.#emit(\"change\", { accounts: this.accounts });\n } else {\n this.#account.chain = chain;\n this.#emit(\"change\", { accounts: this.accounts });\n }\n }\n}\n\nexport type MetaMaskProvider = {\n isMetaMask: boolean;\n request(options: { method: string }): Promise<void>;\n};\n\nexport function isMetaMaskProvider(obj: unknown): obj is MetaMaskProvider {\n return (\n obj !== null &&\n typeof obj === \"object\" &&\n Object.hasOwn(obj, \"isMetaMask\") &&\n Object.hasOwn(obj, \"request\")\n );\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starknet-io/get-starknet-virtual-wallet",
3
- "version": "5.0.0-beta.0",
3
+ "version": "5.0.0",
4
4
  "keywords": [
5
5
  "starknet",
6
6
  "starkware",
@@ -44,14 +44,14 @@
44
44
  "@wallet-standard/features": "^1.1.0",
45
45
  "async-mutex": "^0.5.0",
46
46
  "viem": "^2.27.2",
47
- "@starknet-io/get-starknet-wallet-standard": "5.0.0-beta.0"
47
+ "@starknet-io/get-starknet-wallet-standard": "5.0.0"
48
48
  },
49
49
  "scripts": {
50
50
  "build": "unbuild",
51
- "format:check": "biome format .",
51
+ "lint:check": "biome check .",
52
+ "lint": "biome check --write .",
52
53
  "format": "biome format --write .",
53
- "lint:check": "biome lint .",
54
- "lint": "biome lint --write .",
54
+ "format:check": "biome format .",
55
55
  "test": "vitest"
56
56
  }
57
57
  }
package/src/metamask.ts CHANGED
@@ -1,3 +1,23 @@
1
+ import { init, loadRemote } from "@module-federation/runtime";
2
+ import type { StarknetWalletAccount } from "@starknet-io/get-starknet-wallet-standard";
3
+ import type { StarknetChain } from "@starknet-io/get-starknet-wallet-standard/chains";
4
+ import {
5
+ formatStarknetChainId,
6
+ isStarknetChain,
7
+ STARKNET_CHAIN_PREFIX,
8
+ WELL_KNOWN_STARKNET_CHAINS,
9
+ } from "@starknet-io/get-starknet-wallet-standard/chains";
10
+ import {
11
+ type StarknetFeatures,
12
+ StarknetWalletApi,
13
+ type WalletWithStarknetFeatures,
14
+ } from "@starknet-io/get-starknet-wallet-standard/features";
15
+ import type {
16
+ RequestFnCall,
17
+ RpcMessage,
18
+ RpcTypeToMessageMap,
19
+ StarknetWindowObject,
20
+ } from "@starknet-io/types-js";
1
21
  import {
2
22
  StandardConnect,
3
23
  type StandardConnectMethod,
@@ -8,28 +28,8 @@ import {
8
28
  type StandardEventsNames,
9
29
  type StandardEventsOnMethod,
10
30
  } from "@wallet-standard/features";
11
- import type { EIP1193Provider } from "viem";
12
- import type {
13
- RequestFnCall,
14
- RpcMessage,
15
- RpcTypeToMessageMap,
16
- StarknetWindowObject,
17
- } from "@starknet-io/types-js";
18
- import {
19
- StarknetWalletApi,
20
- type StarknetFeatures,
21
- type WalletWithStarknetFeatures,
22
- } from "@starknet-io/get-starknet-wallet-standard/features";
23
- import {
24
- formatStarknetChainId,
25
- isStarknetChain,
26
- STARKNET_CHAIN_PREFIX,
27
- WELL_KNOWN_STARKNET_CHAINS,
28
- } from "@starknet-io/get-starknet-wallet-standard/chains";
29
- import type { StarknetWalletAccount } from "@starknet-io/get-starknet-wallet-standard";
30
- import type { StarknetChain } from "@starknet-io/get-starknet-wallet-standard/chains";
31
31
  import { Mutex } from "async-mutex";
32
- import { init, loadRemote } from "@module-federation/runtime";
32
+ import type { EIP1193Provider } from "viem";
33
33
 
34
34
  import type { EIP6963ProviderInfo } from "./types";
35
35
 
@@ -85,6 +85,7 @@ export class MetaMaskVirtualWallet implements WalletWithStarknetFeatures {
85
85
  on: this.#on.bind(this),
86
86
  },
87
87
  [StarknetWalletApi]: {
88
+ id: "metamask",
88
89
  version: "1.0.0" as const,
89
90
  request: this.#request.bind(this),
90
91
  walletVersion: "2.0.0",