UNPKG

@txnlab/use-wallet

Version:

TypeScript library for integrating Algorand wallets into decentralized applications

1 lines 693 kB
{"version":3,"sources":["../../../node_modules/.pnpm/@magic-sdk+types@24.18.1/node_modules/@magic-sdk/types/src/core/exception-types.ts","../../../node_modules/.pnpm/@magic-sdk+types@24.18.1/node_modules/@magic-sdk/types/src/core/json-rpc-types.ts","../../../node_modules/.pnpm/@magic-sdk+types@24.18.1/node_modules/@magic-sdk/types/src/core/message-types.ts","../../../node_modules/.pnpm/@magic-sdk+types@24.18.1/node_modules/@magic-sdk/types/src/core/deep-link-pages.ts","../../../node_modules/.pnpm/@magic-sdk+types@24.18.1/node_modules/@magic-sdk/types/src/modules/auth-types.ts","../../../node_modules/.pnpm/@magic-sdk+types@24.18.1/node_modules/@magic-sdk/types/src/modules/rpc-provider-types.ts","../../../node_modules/.pnpm/@magic-sdk+types@24.18.1/node_modules/@magic-sdk/types/src/modules/user-types.ts","../../../node_modules/.pnpm/@magic-sdk+types@24.18.1/node_modules/@magic-sdk/types/src/modules/nft-types.ts","../../../node_modules/.pnpm/@magic-sdk+types@24.18.1/node_modules/@magic-sdk/types/src/modules/wallet-types.ts","../../../node_modules/.pnpm/@magic-sdk+types@24.18.1/node_modules/@magic-sdk/types/src/modules/common-types.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/node_modules/eventemitter3/index.js","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/semver.js","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/base64-json.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/core/sdk-exceptions.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/type-guards.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/core/sdk-environment.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/modules/auth.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/modules/base-module.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/get-payload-id.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/core/json-rpc.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/promise-tools.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/events.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/version-check.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/modules/user.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/storage.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/uuid.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/web-crypto.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/device-share-web-crypto.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/util/url.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/modules/wallet.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/modules/third-party-wallets.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/modules/rpc-provider.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/modules/base-extension.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/modules/nft.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/core/sdk.ts","../../../node_modules/.pnpm/@magic-sdk+provider@28.20.0_localforage@1.10.0/node_modules/@magic-sdk/provider/src/core/view-controller.ts","../../../node_modules/.pnpm/@magic-sdk+commons@24.20.0_@magic-sdk+provider@28.20.0_localforage@1.10.0__@magic-sdk+types@24.18.1/node_modules/@magic-sdk/commons/src/index.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/localforage/dist/localforage.js","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/_driver.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/node_modules/localforage-driver-commons/_bundle/fesm5.js","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/Store.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/_initStorage.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/clear.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/dropInstance.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/getItem.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/iterate.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/key.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/keys.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/length.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/removeItem.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/setItem.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/node_modules/src/index.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/src/index.ts","../../../node_modules/.pnpm/magic-sdk@28.21.1/node_modules/magic-sdk/src/iframe-controller.ts","../../../node_modules/.pnpm/@magic-ext+algorand@23.20.0/node_modules/@magic-ext/algorand/src/index.ts","../src/index.ts","../src/logger.ts","../src/manager.ts","../src/network.ts","../src/storage.ts","../src/store.ts","../src/wallets/types.ts","../src/utils.ts","../src/wallets/walletconnect.ts","../src/wallets/base.ts","../src/wallets/biatec.ts","../src/wallets/custom.ts","../src/wallets/defly.ts","../src/wallets/avm-web-provider.ts","../src/wallets/defly-web.ts","../src/wallets/exodus.ts","../src/wallets/kibisis.ts","../src/wallets/kmd.ts","../src/wallets/lute.ts","../src/wallets/magic.ts","../src/wallets/mnemonic.ts","../src/wallets/pera.ts","../src/webpack.ts"],"sourcesContent":["export enum SDKErrorCode {\n MissingApiKey = 'MISSING_API_KEY',\n ModalNotReady = 'MODAL_NOT_READY',\n ConnectionLost = 'CONNECTION_WAS_LOST',\n MalformedResponse = 'MALFORMED_RESPONSE',\n InvalidArgument = 'INVALID_ARGUMENT',\n ExtensionNotInitialized = 'EXTENSION_NOT_INITIALIZED',\n IncompatibleExtensions = 'INCOMPATIBLE_EXTENSIONS',\n}\n\nexport enum SDKWarningCode {\n SyncWeb3Method = 'SYNC_WEB3_METHOD',\n DuplicateIframe = 'DUPLICATE_IFRAME',\n ReactNativeEndpointConfiguration = 'REACT_NATIVE_ENDPOINT_CONFIGURATION',\n DeprecationNotice = 'DEPRECATION_NOTICE',\n ProductAnnouncement = 'ANNOUNCEMENT',\n}\n\nexport enum RPCErrorCode {\n // Standard JSON RPC 2.0 Error Codes\n ParseError = -32700,\n InvalidRequest = -32600,\n MethodNotFound = -32601,\n InvalidParams = -32602,\n InternalError = -32603,\n\n // Custom RPC Error Codes\n MagicLinkFailedVerification = -10000,\n MagicLinkExpired = -10001,\n MagicLinkRateLimited = -10002,\n MagicLinkInvalidRedirectURL = -10006,\n UserAlreadyLoggedIn = -10003,\n UpdateEmailFailed = -10004,\n UserRequestEditEmail = -10005,\n InactiveRecipient = -10010,\n AccessDeniedToUser = -10011,\n RedirectLoginComplete = -10015,\n}\n\nexport type ErrorCode = SDKErrorCode | RPCErrorCode;\nexport type WarningCode = SDKWarningCode;\n","import { RPCErrorCode } from './exception-types';\n\n// --- Request interfaces\n\nexport interface JsonRpcRequestPayload<TParams = any> {\n jsonrpc: string;\n id: string | number | null;\n method: string;\n params?: TParams;\n}\n\nexport interface JsonRpcRequestCallback {\n /** Callback executed upon JSON RPC response. */\n (err: JsonRpcError | null, result?: JsonRpcResponsePayload | null): void;\n}\n\nexport interface JsonRpcBatchRequestCallback {\n /** Callback executed upon JSON RPC response. */\n (err: JsonRpcError | null, result?: (JsonRpcResponsePayload | null)[] | null): void;\n}\n\n// --- Response interfaces\n\nexport interface JsonRpcError {\n message: string;\n code: RPCErrorCode;\n data?: any;\n}\n\nexport interface JsonRpcResponsePayload<ResultType = any> {\n jsonrpc: string;\n id: string | number | null;\n result?: ResultType | null;\n error?: JsonRpcError | null;\n}\n\nexport interface UserInfo {\n email?: string;\n}\n\nexport type ShowUIPromiEvents = {\n disconnect: () => void;\n};\n\nexport interface WalletInfo {\n walletType: string;\n}\n\nexport interface RequestUserInfoScope {\n scope?: {\n email?: 'required' | 'optional';\n };\n}\n\nexport enum LocalStorageKeys {\n PROVIDER = 'magic_3pw_provider',\n ADDRESS = 'magic_3pw_address',\n CHAIN_ID = 'magic_3pw_chainId',\n}\n\nexport enum ThirdPartyWalletEvents {\n WalletConnected = 'wallet_connected',\n WalletRejected = 'wallet_rejected',\n Web3ModalSelected = 'web3modal_selected',\n}\n\nexport interface ConnectWithUIOptions {\n autoPromptThirdPartyWallets?: boolean;\n}\n\nexport type ConnectWithUiEvents = {\n 'id-token-created': (params: { idToken: string }) => void;\n} & { [key in ThirdPartyWalletEvents]: () => void };\n\n// --- Payload methods\n\n/**\n * Enum of JSON RPC methods for interacting with the Magic SDK authentication\n * relayer.\n */\nexport enum MagicPayloadMethod {\n LoginWithSms = 'magic_auth_login_with_sms',\n LoginWithEmailOTP = 'magic_auth_login_with_email_otp',\n LoginWithMagicLink = 'magic_auth_login_with_magic_link',\n LoginWithCredential = 'magic_auth_login_with_credential',\n SetAuthorizationToken = 'magic_auth_set_authorization_token',\n GetIdToken = 'magic_auth_get_id_token',\n GenerateIdToken = 'magic_auth_generate_id_token',\n GetMetadata = 'magic_auth_get_metadata',\n IsLoggedIn = 'magic_is_logged_in',\n Logout = 'magic_auth_logout',\n UpdateEmail = 'magic_auth_update_email',\n UserSettings = 'magic_auth_settings',\n UserSettingsTestMode = 'magic_auth_settings_testing_mode',\n LoginWithSmsTestMode = 'magic_auth_login_with_sms_testing_mode',\n LoginWithEmailOTPTestMode = 'magic_auth_login_with_email_otp_testing_mode',\n LoginWithMagicLinkTestMode = 'magic_login_with_magic_link_testing_mode',\n LoginWithCredentialTestMode = 'magic_auth_login_with_credential_testing_mode',\n GetIdTokenTestMode = 'magic_auth_get_id_token_testing_mode',\n GenerateIdTokenTestMode = 'magic_auth_generate_id_token_testing_mode',\n GetMetadataTestMode = 'magic_auth_get_metadata_testing_mode',\n IsLoggedInTestMode = 'magic_auth_is_logged_in_testing_mode',\n LogoutTestMode = 'magic_auth_logout_testing_mode',\n UpdateEmailTestMode = 'magic_auth_update_email_testing_mode',\n IntermediaryEvent = 'magic_intermediary_event',\n RequestAccounts = 'eth_requestAccounts',\n GetInfo = 'magic_get_info',\n ShowUI = 'magic_wallet',\n NFTPurchase = 'magic_nft_purchase',\n NFTCheckout = 'magic_nft_checkout',\n NFTTransfer = 'magic_nft_transfer',\n RequestUserInfoWithUI = 'mc_request_user_info',\n Disconnect = 'mc_disconnect',\n // UpdatePhoneNumber = 'magic_auth_update_phone_number',\n // UpdatePhoneNumberTestMode = 'magic_auth_update_phone_number_testing_mode',\n RecoverAccount = 'magic_auth_recover_account',\n RecoverAccountTestMode = 'magic_auth_recover_account_testing_mode',\n MagicBoxHeartBeat = 'magic_box_heart_beat',\n AutoConnect = 'mc_auto_connect',\n Login = 'mc_login',\n EncryptV1 = 'magic_auth_encrypt_v1',\n DecryptV1 = 'magic_auth_decrypt_v1',\n ShowNFTs = 'magic_show_nfts',\n ShowOnRamp = 'magic_show_fiat_onramp',\n ShowSendTokensUI = 'magic_show_send_tokens_ui',\n ShowAddress = 'magic_show_address',\n ShowBalances = 'magic_show_balances',\n SendGaslessTransaction = 'eth_sendGaslessTransaction',\n RevealPK = 'magic_reveal_key',\n EnableMFA = 'magic_auth_enable_mfa_flow',\n DisableMFA = 'magic_auth_disable_mfa_flow',\n}\n\n// Methods to not route if connected to third party wallet\nexport const routeToMagicMethods = [\n MagicPayloadMethod.IntermediaryEvent,\n MagicPayloadMethod.NFTCheckout,\n MagicPayloadMethod.Login,\n];\n","import { JsonRpcResponsePayload, JsonRpcError, JsonRpcRequestPayload } from './json-rpc-types';\n\nexport enum MagicIncomingWindowMessage {\n MAGIC_HANDLE_RESPONSE = 'MAGIC_HANDLE_RESPONSE',\n MAGIC_OVERLAY_READY = 'MAGIC_OVERLAY_READY',\n MAGIC_SHOW_OVERLAY = 'MAGIC_SHOW_OVERLAY',\n MAGIC_HIDE_OVERLAY = 'MAGIC_HIDE_OVERLAY',\n MAGIC_HANDLE_EVENT = 'MAGIC_HANDLE_EVENT',\n MAGIC_MG_BOX_SEND_RECEIPT = 'MAGIC_MG_BOX_SEND_RECEIPT',\n MAGIC_SEND_PRODUCT_ANNOUNCEMENT = 'MAGIC_SEND_PRODUCT_ANNOUNCEMENT',\n MAGIC_PONG = 'MAGIC_PONG',\n MAGIC_POPUP_RESPONSE = 'MAGIC_POPUP_RESPONSE',\n MAGIC_POPUP_OAUTH_VERIFY_RESPONSE = 'MAGIC_POPUP_OAUTH_VERIFY_RESPONSE',\n}\n\nexport enum MagicOutgoingWindowMessage {\n MAGIC_HANDLE_REQUEST = 'MAGIC_HANDLE_REQUEST',\n MAGIC_PING = 'MAGIC_PING',\n}\n\n/** The shape of responding window message datas from the Magic iframe context. */\nexport interface MagicMessageRequest {\n msgType: string;\n payload: JsonRpcRequestPayload | JsonRpcRequestPayload[];\n rt?: string;\n jwt?: string;\n deviceShare?: string;\n}\n\n/** The shape of responding window message datas from the Magic iframe context. */\nexport interface MagicMessageResponse<ResultType = any> {\n msgType: string;\n response: Partial<JsonRpcError> & Partial<JsonRpcResponsePayload<ResultType>>;\n rt?: string;\n deviceShare?: string;\n}\n\n/** The expected message event returned by the Magic iframe context. */\nexport interface MagicMessageEvent extends Partial<MessageEvent> {\n data: MagicMessageResponse;\n}\n","export enum DeepLinkPage {\n UpdateEmail = 'update-email',\n MFA = 'mfa',\n Recovery = 'recovery',\n}\n","import { WalletEventOnReceived } from './wallet-types';\n\nexport interface LoginWithMagicLinkConfiguration {\n /**\n * The email address of the user attempting to login.\n */\n email: string;\n\n /**\n * When `true`, a pre-built modal interface will show to the user, directing\n * them to check their email for the \"magic link\" to complete their\n * authentication.\n */\n showUI?: boolean;\n\n /**\n * You can optionally provide a redirect URI that will be followed at the end\n * of the magic link flow. Don't forget to invoke\n * `magic.auth.loginWithCredential()` to complete the login from the route you\n * configure here.\n */\n redirectURI?: string;\n\n /**\n * Enterprise users with a custom SMTP can create custom email templates\n * from their dashboard. The default Magic loginWithMagicLink email will be\n * overriden when a variation is passed here.\n */\n overrides?: {\n variation?: string;\n };\n\n /**\n * The number of seconds until the generated Decenteralized ID token will expire.\n */\n lifespan?: number;\n}\n\nexport interface LoginWithSmsConfiguration {\n /**\n * Specify the phone number of the user attempting to login.\n */\n phoneNumber: string;\n\n /**\n * When `true`, a pre-built modal interface will show to the user, directing\n * them to check their SMS for the one time passcode (OTP) to complete their\n * authentication.\n *\n * When `false`, developers will be able to implement their own custom UI to\n * continue the SMS OTP flow.\n */\n showUI?: boolean;\n\n /*\n * The number of seconds until the generated Decenteralized ID token will expire.\n */\n lifespan?: number;\n}\nexport interface LoginWithEmailOTPConfiguration {\n /**\n * Specify the email address of the user attempting to login.\n */\n email: string;\n\n /**\n * When `true`, a pre-built modal interface will show to the user, directing\n * them to check their email for the one time passcode (OTP) to complete their\n * authentication.\n *\n * When `false`, developers will be able to implement their own custom UI to\n * continue the email OTP flow.\n */\n showUI?: boolean;\n\n /**\n * Device Unrecognized UI will enforce showing up to secure user's login\n *\n * When set to true (default), an improved device recognition UI will be displayed to the user,\n * prompting them to verify their login by checking their email for device approval. This feature\n * enhances authentication security.\n *\n * This param will only be affect if showUI is false. When set to false,\n * developers have the flexibility to implement their own customized UI to\n * handle device check events, providing a more tailored user experience.\n */\n deviceCheckUI?: boolean;\n\n /**\n * Enterprise users with a custom SMTP can create custom email templates\n * from their dashboard. The default Magic loginWithOTP email will be\n * overriden when a variation is passed here.\n */\n overrides?: {\n variation?: string;\n };\n\n /**\n * The number of seconds until the generated Decenteralized ID token will expire.\n */\n lifespan?: number;\n}\n\nexport interface LoginWithCredentialConfiguration {\n /**\n * A credential token or a valid query string (prefixed with ? or #)\n */\n credentialOrQueryString?: string;\n\n /**\n * The number of seconds until the generated Decenteralized ID token will expire.\n */\n lifespan?: number;\n}\n\nexport interface EnableMFAConfiguration {\n /**\n * When `true`, a pre-built modal interface will show to the user, directing\n * them to enable MFA usign Google Authenticator app.\n *\n * When `false`, developers will be able to implement their own custom UI to\n * continue the enable MFA flow.\n */\n showUI?: boolean;\n}\n\nexport interface DisableMFAConfiguration {\n /**\n * When `true`, a pre-built modal interface will show to the user, directing\n * them to disable MFA.\n *\n * When `false`, developers will be able to implement their own custom UI to\n * continue the disable MFA flow.\n */\n showUI?: boolean;\n}\n\n/**\n * Auth Events Enum\n */\nexport enum LoginWithMagicLinkEventEmit {\n Retry = 'retry',\n}\n\nexport enum LoginWithMagicLinkEventOnReceived {\n EmailSent = 'email-sent',\n EmailNotDeliverable = 'email-not-deliverable',\n}\n\nexport enum LoginWithEmailOTPEventEmit {\n VerifyEmailOtp = 'verify-email-otp',\n VerifyMFACode = 'verify-mfa-code',\n LostDevice = 'lost-device',\n VerifyRecoveryCode = 'verify-recovery-code',\n Cancel = 'cancel',\n}\n\nexport enum LoginWithSmsOTPEventEmit {\n VerifySmsOtp = 'verify-sms-otp',\n Cancel = 'cancel',\n Retry = 'retry',\n}\n\nexport enum LoginWithSmsOTPEventOnReceived {\n SmsOTPSent = 'sms-otp-sent',\n InvalidSmsOtp = 'invalid-sms-otp',\n ExpiredSmsOtp = 'expired-sms-otp',\n}\n\nexport enum LoginWithEmailOTPEventOnReceived {\n EmailOTPSent = 'email-otp-sent',\n InvalidEmailOtp = 'invalid-email-otp',\n InvalidMfaOtp = 'invalid-mfa-otp',\n ExpiredEmailOtp = 'expired-email-otp',\n MfaSentHandle = 'mfa-sent-handle',\n RecoveryCodeSentHandle = 'recovery-code-sent-handle',\n InvalidRecoveryCode = 'invalid-recovery-code',\n RecoveryCodeSuccess = 'recovery-code-success',\n}\n\nexport enum DeviceVerificationEventEmit {\n Retry = 'device-retry',\n}\n\nexport enum DeviceVerificationEventOnReceived {\n DeviceApproved = 'device-approved',\n DeviceNeedsApproval = 'device-needs-approval',\n DeviceVerificationLinkExpired = 'device-verification-link-expired',\n DeviceVerificationEmailSent = 'device-verification-email-sent',\n}\n\nexport enum RecencyCheckEventEmit {\n Retry = 'Recency/auth-factor-retry',\n Cancel = 'Recency/auth-factor-verification-cancel',\n VerifyEmailOtp = 'Recency/auth-factor-verify-email-otp',\n VerifyMFACode = 'Recency/verify-mfa-code',\n}\n\nexport enum RecencyCheckEventOnReceived {\n PrimaryAuthFactorNeedsVerification = 'Recency/auth-factor-needs-verification',\n PrimaryAuthFactorVerified = 'Recency/auth-factor-verified',\n InvalidEmailOtp = 'Recency/auth-factor-invalid-email-otp',\n EmailExpired = 'Recency/auth-factor-verification-email-expired',\n EmailSent = 'Recency/auth-factor-verification-email-sent',\n EmailNotDeliverable = 'Recency/auth-factor-verification-email-not-deliverable',\n}\n\nexport enum UpdateEmailEventEmit {\n RetryWithNewEmail = 'UpdateEmail/retry-with-new-email',\n Cancel = 'UpdateEmail/new-email-verification-cancel',\n VerifyEmailOtp = 'UpdateEmail/new-email-verify-otp',\n}\n\nexport enum UpdateEmailEventOnReceived {\n NewAuthFactorNeedsVerification = 'UpdateEmail/new-email-needs-verification',\n EmailUpdated = 'UpdateEmail/email-updated',\n InvalidEmailOtp = 'UpdateEmail/new-email-invalid-email-otp',\n EmailExpired = 'UpdateEmail/new-email-verification-email-expired',\n EmailSent = 'UpdateEmail/new-email-verification-email-sent',\n EmailNotDeliverable = 'UpdateEmail/new-email-verification-email-not-deliverable',\n InvalidEmail = 'UpdateEmail/new-email-invalid',\n EmailAlreadyExists = 'UpdateEmail/new-email-already-exists',\n}\n\nexport enum AuthEventOnReceived {\n IDTokenCreated = 'Auth/id-token-created',\n}\n\nexport enum FarcasterLoginEventEmit {\n Cancel = 'Farcaster/cancel',\n}\n\nexport enum EnableMFAEventOnReceived {\n MFASecretGenerated = 'mfa-secret-generated',\n InvalidMFAOtp = 'invalid-mfa-otp',\n MFARecoveryCodes = 'mfa-recovery-codes',\n}\nexport enum EnableMFAEventEmit {\n VerifyMFACode = 'verify-mfa-code',\n Cancel = 'cancel-mfa-setup',\n}\n\nexport enum DisableMFAEventOnReceived {\n MFACodeRequested = 'mfa-code-requested',\n InvalidMFAOtp = 'invalid-mfa-otp',\n InvalidRecoveryCode = 'invalid-recovery-code',\n}\n\nexport enum DisableMFAEventEmit {\n VerifyMFACode = 'verify-mfa-code',\n LostDevice = 'lost-device',\n Cancel = 'cancel-mfa-disable',\n}\n\n/**\n * EventHandlers\n */\nexport type LoginWithMagicLinkEventHandlers = {\n // Event Received\n [LoginWithMagicLinkEventOnReceived.EmailSent]: () => void;\n [LoginWithMagicLinkEventOnReceived.EmailNotDeliverable]: () => void;\n\n // Event sent\n [LoginWithMagicLinkEventEmit.Retry]: () => void;\n} & DeviceVerificationEventHandlers;\n\nexport type LoginWithSmsOTPEventHandlers = {\n // Event sent\n [LoginWithSmsOTPEventEmit.VerifySmsOtp]: (otp: string) => void;\n [LoginWithSmsOTPEventEmit.Cancel]: () => void;\n [LoginWithSmsOTPEventEmit.Retry]: () => void;\n\n // Event received\n [LoginWithSmsOTPEventOnReceived.SmsOTPSent]: () => void;\n [LoginWithSmsOTPEventOnReceived.InvalidSmsOtp]: () => void;\n [LoginWithSmsOTPEventOnReceived.ExpiredSmsOtp]: () => void;\n} & DeviceVerificationEventHandlers;\n\nexport type LoginWithEmailOTPEventHandlers = {\n // Event Received\n [LoginWithEmailOTPEventOnReceived.EmailOTPSent]: () => void;\n [LoginWithEmailOTPEventOnReceived.InvalidEmailOtp]: () => void;\n [LoginWithEmailOTPEventOnReceived.InvalidMfaOtp]: () => void;\n [LoginWithEmailOTPEventOnReceived.ExpiredEmailOtp]: () => void;\n [LoginWithEmailOTPEventOnReceived.MfaSentHandle]: () => void;\n [LoginWithEmailOTPEventOnReceived.RecoveryCodeSentHandle]: () => void;\n [LoginWithEmailOTPEventOnReceived.InvalidRecoveryCode]: () => void;\n [LoginWithEmailOTPEventOnReceived.RecoveryCodeSuccess]: () => void;\n [AuthEventOnReceived.IDTokenCreated]: (idToken: string) => void;\n [WalletEventOnReceived.WalletInfoFetched]: () => void;\n\n // Event sent\n [LoginWithEmailOTPEventEmit.VerifyEmailOtp]: (otp: string) => void;\n [LoginWithEmailOTPEventEmit.VerifyMFACode]: (mfa: string) => void;\n [LoginWithEmailOTPEventEmit.LostDevice]: () => void;\n [LoginWithEmailOTPEventEmit.VerifyRecoveryCode]: (recoveryCode: string) => void;\n [LoginWithEmailOTPEventEmit.Cancel]: () => void;\n} & DeviceVerificationEventHandlers;\n\ntype DeviceVerificationEventHandlers = {\n // Event Received\n [DeviceVerificationEventOnReceived.DeviceNeedsApproval]: () => void;\n [DeviceVerificationEventOnReceived.DeviceVerificationEmailSent]: () => void;\n [DeviceVerificationEventOnReceived.DeviceVerificationLinkExpired]: () => void;\n [DeviceVerificationEventOnReceived.DeviceApproved]: () => void;\n\n // Event sent\n [DeviceVerificationEventEmit.Retry]: () => void;\n};\n\n/**\n * Update Email\n */\n\nexport type RecencyCheckEventHandlers = {\n [RecencyCheckEventOnReceived.PrimaryAuthFactorNeedsVerification]: () => void;\n [RecencyCheckEventOnReceived.PrimaryAuthFactorVerified]: () => void;\n [RecencyCheckEventOnReceived.InvalidEmailOtp]: () => void;\n [RecencyCheckEventOnReceived.EmailNotDeliverable]: () => void;\n [RecencyCheckEventOnReceived.EmailExpired]: () => void;\n [RecencyCheckEventOnReceived.EmailSent]: () => void;\n\n [RecencyCheckEventEmit.Cancel]: () => void;\n [RecencyCheckEventEmit.Retry]: () => void;\n [RecencyCheckEventEmit.VerifyEmailOtp]: (otp: string) => void;\n [RecencyCheckEventEmit.VerifyMFACode]: (mfa: string) => void;\n};\n\nexport type UpdateEmailEventHandlers = {\n [UpdateEmailEventOnReceived.NewAuthFactorNeedsVerification]: () => void;\n [UpdateEmailEventOnReceived.EmailUpdated]: () => void;\n [UpdateEmailEventOnReceived.InvalidEmailOtp]: () => void;\n [UpdateEmailEventOnReceived.EmailNotDeliverable]: () => void;\n [UpdateEmailEventOnReceived.EmailExpired]: () => void;\n [UpdateEmailEventOnReceived.EmailSent]: () => void;\n [UpdateEmailEventOnReceived.InvalidEmail]: () => void;\n [UpdateEmailEventOnReceived.EmailAlreadyExists]: () => void;\n\n [UpdateEmailEventEmit.Cancel]: () => void;\n [UpdateEmailEventEmit.RetryWithNewEmail]: (email?: string) => void;\n [UpdateEmailEventEmit.VerifyEmailOtp]: (otp: string) => void;\n} & RecencyCheckEventHandlers;\n\n/**\n * Enable MFA\n */\n\nexport type EnableMFAEventHandlers = {\n // Event Received\n [EnableMFAEventOnReceived.MFASecretGenerated]: ({ QRCode, key }: { QRCode: string; key: string }) => void;\n [EnableMFAEventOnReceived.InvalidMFAOtp]: ({ errorCode }: { errorCode: string }) => void;\n [EnableMFAEventOnReceived.MFARecoveryCodes]: ({ recoveryCode }: { recoveryCode: string }) => void;\n\n // Event sent\n [EnableMFAEventEmit.VerifyMFACode]: (totp: string) => void;\n [EnableMFAEventEmit.Cancel]: () => void;\n};\n\n/**\n * Disable MFA\n */\n\nexport type DisableMFAEventHandlers = {\n // Event Received\n [DisableMFAEventOnReceived.MFACodeRequested]: () => void;\n [DisableMFAEventOnReceived.InvalidMFAOtp]: ({ errorCode }: { errorCode: string }) => void;\n [DisableMFAEventOnReceived.InvalidRecoveryCode]: () => void;\n\n // Event sent\n [DisableMFAEventEmit.VerifyMFACode]: (totp: string) => void;\n [DisableMFAEventEmit.LostDevice]: (recoveryCode: string) => void;\n [DisableMFAEventEmit.Cancel]: () => void;\n};\n","export type EthNetworkName = 'mainnet' | 'goerli' | 'sepolia';\n\nexport enum EthChainType {\n Harmony = 'HARMONY',\n}\n\nexport interface CustomNodeConfiguration {\n rpcUrl: string;\n chainId?: number;\n chainType?: EthChainType;\n}\n\nexport type EthNetworkConfiguration = EthNetworkName | CustomNodeConfiguration;\n\nexport type ProviderEnableEvents = {\n 'id-token-created': (params: { idToken: string }) => void;\n};\n","import { RecencyCheckEventHandlers } from './auth-types';\nimport { DeepLinkPage } from '../core/deep-link-pages';\n\nexport interface GetIdTokenConfiguration {\n /**\n * The number of seconds until the generated ID token will expire.\n */\n lifespan?: number;\n}\n\nexport interface GenerateIdTokenConfiguration extends GetIdTokenConfiguration {\n /**\n * An optional piece of data to sign with the token. Note, however, that the\n * unsigned data _will not_ be encoded in the token, only an encrypted\n * signature of the data.\n */\n attachment?: string;\n}\n\nexport enum UserEventsEmit {\n ClosedByUser = 'closed-by-user',\n}\n\nexport enum UserEventsOnReceived {\n ClosedByUser = 'closed-by-user-on-received',\n}\n\nexport interface MagicUserMetadata {\n issuer: string | null;\n publicAddress: string | null;\n email: string | null;\n phoneNumber: string | null;\n isMfaEnabled: boolean;\n recoveryFactors: [RecoveryFactor] | [];\n walletType: string;\n}\n\nexport enum RecoveryFactorEventOnReceived {\n EnterNewPhoneNumber = 'enter-new-phone-number',\n EnterOtpCode = 'enter-otp-code',\n RecoveryFactorAlreadyExists = 'recovery-factor-already-exists',\n MalformedPhoneNumber = 'malformed-phone-number',\n InvalidOtpCode = 'invalid-otp-code',\n}\n\nexport enum RecoveryFactorEventEmit {\n SendNewPhoneNumber = 'send-new-phone-number',\n SendOtpCode = 'send-otp-code',\n Cancel = 'cancel',\n StartEditPhoneNumber = 'start-edit-phone-number',\n}\n\ntype RecoveryFactor = {\n type: RecoveryMethodType;\n value: string;\n};\n\nexport type RecoveryFactorEventHandlers = {\n // Event Received\n [RecoveryFactorEventEmit.SendNewPhoneNumber]: (phone_number: string) => void;\n [RecoveryFactorEventEmit.SendOtpCode]: (otp: string) => void;\n [RecoveryFactorEventEmit.StartEditPhoneNumber]: () => void;\n [RecoveryFactorEventEmit.Cancel]: () => void;\n\n // Event sent\n [RecoveryFactorEventOnReceived.EnterNewPhoneNumber]: () => void;\n [RecoveryFactorEventOnReceived.EnterOtpCode]: () => void;\n [RecoveryFactorEventOnReceived.RecoveryFactorAlreadyExists]: () => void;\n [RecoveryFactorEventOnReceived.MalformedPhoneNumber]: () => void;\n [RecoveryFactorEventOnReceived.InvalidOtpCode]: () => void;\n} & RecencyCheckEventHandlers;\n\nexport enum RecoveryMethodType {\n PhoneNumber = 'phone_number',\n}\n\nexport interface UpdateEmailConfiguration {\n /**\n * The new email address to update to\n */\n email: string;\n\n /**\n * When `true`, a pre-built pending modal interface will\n * guide the user to check their new, followed by old emails\n * for confirmation emails.\n */\n showUI?: boolean;\n}\n\nexport interface UpdateWebAuthnInfoConfiguration {\n /**\n * WebAuthn info id\n */\n id: string;\n\n /**\n * nickname that user attempts to update to the webauth device associate to the id.\n */\n nickname: string;\n}\n\nexport interface RecoverAccountConfiguration {\n /**\n * The email to recover\n */\n email: string;\n showUI: boolean;\n}\n\nexport interface ShowSettingsConfiguration {\n /**\n * deep linking destination\n */\n page: DeepLinkPage;\n showUI?: boolean;\n}\n\nexport enum RecoverAccountEventOnReceived {\n SmsOtpSent = 'sms-otp-sent',\n LoginThrottled = 'login-throttled',\n InvalidSmsOtp = 'invalid-sms-otp',\n SmsVerified = 'sms-verified',\n AccountRecovered = 'account-recovered',\n UpdateEmailRequired = 'update-email-required',\n}\n\nexport enum RecoverAccountEventEmit {\n Cancel = 'cancel',\n VerifyOtp = 'verify-otp-code',\n ResendSms = 'resend-sms-otp',\n UpdateEmail = 'update-email',\n}\n\nexport type RecoverAccountEventHandlers = {\n // Event Received\n [RecoverAccountEventEmit.Cancel]: () => void;\n [RecoverAccountEventEmit.VerifyOtp]: (otp: string) => void;\n [RecoverAccountEventEmit.ResendSms]: () => void;\n [RecoverAccountEventEmit.UpdateEmail]: (email: string) => void;\n\n // Event sent\n [RecoverAccountEventOnReceived.SmsOtpSent]: ({ phoneNumber }: { phoneNumber: string }) => void;\n [RecoverAccountEventOnReceived.LoginThrottled]: (error: string) => void;\n [RecoverAccountEventOnReceived.InvalidSmsOtp]: ({\n errorMessage,\n errorCode,\n }: {\n errorMessage: string;\n errorCode: string;\n }) => void;\n [RecoverAccountEventOnReceived.SmsVerified]: () => void;\n [RecoverAccountEventOnReceived.AccountRecovered]: () => void;\n [RecoverAccountEventOnReceived.UpdateEmailRequired]: () => void;\n};\n","export type NFTResponseStatus = 'cancelled' | 'pending' | 'processed' | 'declined' | 'expired';\n\nexport type NFTResponse = {\n status: NFTResponseStatus;\n};\n\nexport interface NFTPurchaseRequest {\n nft: {\n name: string;\n imageUrl: string;\n blockchainNftId: string;\n contractAddress: string;\n network: string;\n platform: string;\n type: string;\n };\n identityPrefill: {\n firstName: string;\n lastName: string;\n dateOfBirth: string; // YYYY-MM-DD\n emailAddress: string;\n phone: string;\n address: {\n street1: string;\n street2: string;\n city: string;\n regionCode: string;\n postalCode: string;\n countryCode: string;\n };\n };\n}\n\nexport type NFTPurchaseResponse = NFTResponse & {\n errorMessage?: string;\n};\n\nexport interface NFTCheckoutRequest {\n // given by magic / found in the developer dashboard in future\n contractId: string;\n // in contract, if ERC1155… for ERC721, use token ID = 0\n tokenId: string;\n name: string;\n imageUrl: string;\n quantity?: number; // default is 1\n walletAddress?: string; // default is user's wallet address\n // If enabled, the user will be able to pay with crypto. the default is false\n isCryptoCheckoutEnabled?: boolean;\n walletProvider?: 'magic' | 'web3modal';\n}\n\nexport type NFTCheckoutResponse = NFTResponse;\n\nexport type NFTCheckoutEvents = {\n disconnect: () => void;\n 'nft-checkout-initiated': (rawTransaction: string) => void;\n};\n\nexport interface NFTTransferRequest {\n tokenId: string;\n contractAddress: string;\n quantity?: number;\n recipient?: string;\n}\n\nexport type NFTTransferResponse = NFTResponse;\n\nexport enum NftCheckoutIntermediaryEvents {\n Success = 'nft-checkout-success',\n Failure = 'nft-checkout-failure',\n Initiated = 'nft-checkout-initiated',\n Disconnect = 'disconnect',\n}\n\nexport type NftCheckoutEventHandler = {\n [NftCheckoutIntermediaryEvents.Initiated]: (rawTransaction: string) => void;\n [NftCheckoutIntermediaryEvents.Success]: (signedTransaction: string) => void;\n [NftCheckoutIntermediaryEvents.Failure]: () => void;\n};\n","export type GasApiResponse = {\n request_id: string;\n state: string;\n success: boolean;\n};\n\nexport type AccessListEntry = { address: string; storageKeys: Array<string> };\n\n/**\n * An ordered collection of [[AccessList]] entries.\n */\nexport type AccessList = Array<AccessListEntry>;\n\nexport interface GaslessTransactionRequest {\n /**\n * The transaction type.\n */\n type?: number;\n\n /**\n * The target of the transaction.\n */\n to?: string;\n\n /**\n * The sender of the transaction.\n */\n from?: string;\n\n /**\n * The nonce of the transaction, used to prevent replay attacks.\n */\n\n nonce?: number;\n\n /**\n * The maximum amount of gas to allow this transaction to consime.\n */\n gasLimit?: bigint;\n\n /**\n * The gas price to use for legacy transactions or transactions on\n * legacy networks.\n *\n * Most of the time the ``max*FeePerGas`` is preferred.\n */\n gasPrice?: bigint;\n\n /**\n * The [[link-eip-1559]] maximum priority fee to pay per gas.\n */\n maxPriorityFeePerGas?: bigint;\n\n /**\n * The [[link-eip-1559]] maximum total fee to pay per gas. The actual\n * value used is protocol enforced to be the block's base fee.\n */\n maxFeePerGas?: bigint;\n\n /**\n * The transaction data.\n */\n data?: string;\n\n /**\n * The transaction value (in wei).\n */\n value?: bigint;\n\n /**\n * The chain ID for the network this transaction is valid on.\n */\n chainId?: bigint;\n\n /**\n * The [[link-eip-2930]] access list. Storage slots included in the access\n * list are //warmed// by pre-loading them, so their initial cost to\n * fetch is guaranteed, but then each additional access is cheaper.\n */\n accessList?: AccessList;\n\n /**\n * A custom object, which can be passed along for network-specific\n * values.\n */\n customData?: any;\n}\n\nexport enum WalletEventOnReceived {\n WalletInfoFetched = 'Wallet/wallet-info-fetched',\n}\n","export enum UiEventsEmit {\n CloseMagicWindow = 'close-magic-window',\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/* eslint-disable */\n/* istanbul ignore file */\n\n// DO NOT CHANGE THIS FILE.\n//\n// We have to bundle `semver` ourselves due to a long-standing cyclic dependency\n// which causes Rollup to break the `satisfies` function.\n//\n// See:\n// - https://github.com/magiclabs/magic-js/issues/198\n// - https://github.com/rollup/plugins/issues/879\n// - https://github.com/npm/node-semver/issues/318\n// - https://github.com/npm/node-semver/issues/381\n\nfunction createCommonjsModule(e){const r={exports:{}};return e(r,r.exports),r.exports}const SEMVER_SPEC_VERSION=\"2.0.0\",MAX_LENGTH$2=256,MAX_SAFE_INTEGER$1=Number.MAX_SAFE_INTEGER||9007199254740991,MAX_SAFE_COMPONENT_LENGTH=16,constants={SEMVER_SPEC_VERSION:\"2.0.0\",MAX_LENGTH:256,MAX_SAFE_INTEGER:MAX_SAFE_INTEGER$1,MAX_SAFE_COMPONENT_LENGTH:16},debug=\"object\"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error(\"SEMVER\",...e):()=>{},debug_1=debug,re_1=createCommonjsModule(function(e,r){const{MAX_SAFE_COMPONENT_LENGTH:t}=constants,s=(r=e.exports={}).re=[],i=r.src=[],o=r.t={};let a=0;const n=(e,r,t)=>{const n=a++;debug_1(n,r),o[e]=n,i[n]=r,s[n]=new RegExp(r,t?\"g\":void 0)};n(\"NUMERICIDENTIFIER\",\"0|[1-9]\\\\d*\"),n(\"NUMERICIDENTIFIERLOOSE\",\"[0-9]+\"),n(\"NONNUMERICIDENTIFIER\",\"\\\\d*[a-zA-Z-][a-zA-Z0-9-]*\"),n(\"MAINVERSION\",`(${i[o.NUMERICIDENTIFIER]})\\\\.`+`(${i[o.NUMERICIDENTIFIER]})\\\\.`+`(${i[o.NUMERICIDENTIFIER]})`),n(\"MAINVERSIONLOOSE\",`(${i[o.NUMERICIDENTIFIERLOOSE]})\\\\.`+`(${i[o.NUMERICIDENTIFIERLOOSE]})\\\\.`+`(${i[o.NUMERICIDENTIFIERLOOSE]})`),n(\"PRERELEASEIDENTIFIER\",`(?:${i[o.NUMERICIDENTIFIER]}|${i[o.NONNUMERICIDENTIFIER]})`),n(\"PRERELEASEIDENTIFIERLOOSE\",`(?:${i[o.NUMERICIDENTIFIERLOOSE]}|${i[o.NONNUMERICIDENTIFIER]})`),n(\"PRERELEASE\",`(?:-(${i[o.PRERELEASEIDENTIFIER]}(?:\\\\.${i[o.PRERELEASEIDENTIFIER]})*))`),n(\"PRERELEASELOOSE\",`(?:-?(${i[o.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${i[o.PRERELEASEIDENTIFIERLOOSE]})*))`),n(\"BUILDIDENTIFIER\",\"[0-9A-Za-z-]+\"),n(\"BUILD\",`(?:\\\\+(${i[o.BUILDIDENTIFIER]}(?:\\\\.${i[o.BUILDIDENTIFIER]})*))`),n(\"FULLPLAIN\",`v?${i[o.MAINVERSION]}${i[o.PRERELEASE]}?${i[o.BUILD]}?`),n(\"FULL\",`^${i[o.FULLPLAIN]}$`),n(\"LOOSEPLAIN\",`[v=\\\\s]*${i[o.MAINVERSIONLOOSE]}${i[o.PRERELEASELOOSE]}?${i[o.BUILD]}?`),n(\"LOOSE\",`^${i[o.LOOSEPLAIN]}$`),n(\"GTLT\",\"((?:<|>)?=?)\"),n(\"XRANGEIDENTIFIERLOOSE\",`${i[o.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`),n(\"XRANGEIDENTIFIER\",`${i[o.NUMERICIDENTIFIER]}|x|X|\\\\*`),n(\"XRANGEPLAIN\",`[v=\\\\s]*(${i[o.XRANGEIDENTIFIER]})`+`(?:\\\\.(${i[o.XRANGEIDENTIFIER]})`+`(?:\\\\.(${i[o.XRANGEIDENTIFIER]})`+`(?:${i[o.PRERELEASE]})?${i[o.BUILD]}?`+\")?)?\"),n(\"XRANGEPLAINLOOSE\",`[v=\\\\s]*(${i[o.XRANGEIDENTIFIERLOOSE]})`+`(?:\\\\.(${i[o.XRANGEIDENTIFIERLOOSE]})`+`(?:\\\\.(${i[o.XRANGEIDENTIFIERLOOSE]})`+`(?:${i[o.PRERELEASELOOSE]})?${i[o.BUILD]}?`+\")?)?\"),n(\"XRANGE\",`^${i[o.GTLT]}\\\\s*${i[o.XRANGEPLAIN]}$`),n(\"XRANGELOOSE\",`^${i[o.GTLT]}\\\\s*${i[o.XRANGEPLAINLOOSE]}$`),n(\"COERCE\",`(^|[^\\\\d])(\\\\d{1,${t}})`+`(?:\\\\.(\\\\d{1,${t}}))?`+`(?:\\\\.(\\\\d{1,${t}}))?`+\"(?:$|[^\\\\d])\"),n(\"COERCERTL\",i[o.COERCE],!0),n(\"LONETILDE\",\"(?:~>?)\"),n(\"TILDETRIM\",`(\\\\s*)${i[o.LONETILDE]}\\\\s+`,!0),r.tildeTrimReplace=\"$1~\",n(\"TILDE\",`^${i[o.LONETILDE]}${i[o.XRANGEPLAIN]}$`),n(\"TILDELOOSE\",`^${i[o.LONETILDE]}${i[o.XRANGEPLAINLOOSE]}$`),n(\"LONECARET\",\"(?:\\\\^)\"),n(\"CARETTRIM\",`(\\\\s*)${i[o.LONECARET]}\\\\s+`,!0),r.caretTrimReplace=\"$1^\",n(\"CARET\",`^${i[o.LONECARET]}${i[o.XRANGEPLAIN]}$`),n(\"CARETLOOSE\",`^${i[o.LONECARET]}${i[o.XRANGEPLAINLOOSE]}$`),n(\"COMPARATORLOOSE\",`^${i[o.GTLT]}\\\\s*(${i[o.LOOSEPLAIN]})$|^$`),n(\"COMPARATOR\",`^${i[o.GTLT]}