{"version":3,"file":"injectedWeb3SolanaProviders-DRQuwtHF.mjs","names":["#instance","#initialize","#initialized","#wallets","#isSolanaWallet","#hasSignMessage"],"sources":["../../src/internal/clerk-js/injectedWeb3SolanaProviders.ts"],"sourcesContent":["import type { SolanaWalletAdapterWallet } from '@solana/wallet-standard';\nimport type { Wallet } from '@wallet-standard/core';\n\n//https://eips.ethereum.org/EIPS/eip-4361\n\nclass InjectedWeb3SolanaProviders {\n #wallets: readonly Wallet[] | undefined = undefined;\n #initialized: boolean = false;\n static #instance: InjectedWeb3SolanaProviders | null = null;\n\n private constructor() {}\n\n async #initialize() {\n if (this.#initialized) {\n return;\n }\n this.#initialized = true;\n const wallets = await import('@wallet-standard/core').then(mod => mod.getWallets());\n this.#wallets = wallets.get();\n\n wallets.on('register', () => {\n this.#wallets = wallets.get();\n });\n wallets.on('unregister', () => {\n this.#wallets = wallets.get();\n });\n }\n\n #isSolanaWallet(wallet: Wallet): wallet is SolanaWalletAdapterWallet {\n return wallet.chains?.some(chain => chain.startsWith('solana:')) ?? false;\n }\n\n #hasSignMessage(wallet: Wallet): boolean {\n return 'solana:signMessage' in wallet.features;\n }\n\n public static getInstance(): InjectedWeb3SolanaProviders {\n if (!InjectedWeb3SolanaProviders.#instance) {\n InjectedWeb3SolanaProviders.#instance = new InjectedWeb3SolanaProviders();\n }\n return InjectedWeb3SolanaProviders.#instance;\n }\n\n get = async (walletName: string): Promise => {\n await this.#initialize();\n const wallet = (this.#wallets || []).find(\n w => w.name === walletName && this.#isSolanaWallet(w) && this.#hasSignMessage(w),\n );\n if (wallet && this.#isSolanaWallet(wallet)) {\n return wallet;\n }\n\n if (typeof window === 'undefined') {\n return undefined;\n }\n // In case we weren't able to find the requested provider, fallback to the\n // global injected provider instead, if any, to allow the user to continue\n // the flow rather than blocking it\n const fallbackProvider = (window as any).solana;\n if (\n fallbackProvider &&\n typeof fallbackProvider.connect === 'function' &&\n typeof fallbackProvider.signMessage === 'function'\n ) {\n return fallbackProvider as SolanaWalletAdapterWallet;\n }\n return undefined;\n };\n}\n\nexport const getInjectedWeb3SolanaProviders = () => InjectedWeb3SolanaProviders.getInstance();\n"],"mappings":";AAKA,IAAM,8BAAN,MAAM,4BAA4B;CAChC,WAA0C;CAC1C,eAAwB;CACxB,QAAOA,WAAgD;CAEvD,AAAQ,cAAc;CAEtB,OAAMC,aAAc;AAClB,MAAI,MAAKC,YACP;AAEF,QAAKA,cAAe;EACpB,MAAM,UAAU,MAAM,OAAO,sBAAyB,MAAK,QAAO,IAAI,YAAY,CAAC;AACnF,QAAKC,UAAW,QAAQ,KAAK;AAE7B,UAAQ,GAAG,kBAAkB;AAC3B,SAAKA,UAAW,QAAQ,KAAK;IAC7B;AACF,UAAQ,GAAG,oBAAoB;AAC7B,SAAKA,UAAW,QAAQ,KAAK;IAC7B;;CAGJ,gBAAgB,QAAqD;AACnE,SAAO,OAAO,QAAQ,MAAK,UAAS,MAAM,WAAW,UAAU,CAAC,IAAI;;CAGtE,gBAAgB,QAAyB;AACvC,SAAO,wBAAwB,OAAO;;CAGxC,OAAc,cAA2C;AACvD,MAAI,CAAC,6BAA4BH,SAC/B,8BAA4BA,WAAY,IAAI,6BAA6B;AAE3E,SAAO,6BAA4BA;;CAGrC,MAAM,OAAO,eAAuE;AAClF,QAAM,MAAKC,YAAa;EACxB,MAAM,UAAU,MAAKE,WAAY,EAAE,EAAE,MACnC,MAAK,EAAE,SAAS,cAAc,MAAKC,eAAgB,EAAE,IAAI,MAAKC,eAAgB,EAAE,CACjF;AACD,MAAI,UAAU,MAAKD,eAAgB,OAAO,CACxC,QAAO;AAGT,MAAI,OAAO,WAAW,YACpB;EAKF,MAAM,mBAAoB,OAAe;AACzC,MACE,oBACA,OAAO,iBAAiB,YAAY,cACpC,OAAO,iBAAiB,gBAAgB,WAExC,QAAO;;;AAMb,MAAa,uCAAuC,4BAA4B,aAAa"}