UNPKG

@particle-network/connectkit

Version:
8 lines (7 loc) 6.25 kB
{ "version": 3, "sources": ["../../src/actions/connect.ts", "../../src/hooks/useConnect.ts"], "sourcesContent": ["import type { ConnectWithEmailParam, ConnectWithPhoneParam, ConnectWithProvider } from '@particle-network/auth-core';\nimport {\n ConnectorAlreadyConnectedError,\n type BaseErrorType,\n type Connector,\n type ConnectorAlreadyConnectedErrorType,\n type ErrorType,\n} from '@particle-network/connector-core';\nimport type { Config } from '../createConfig';\nimport type { SocialAuthType } from '../utils/social';\n\nexport type ConnectWithSocialParam = {\n socialType: SocialAuthType;\n prompt?: 'none' | 'consent' | 'select_account';\n};\n\nexport type AuthConnectParams =\n | Required<ConnectWithPhoneParam>\n | Required<ConnectWithEmailParam>\n | ConnectWithProvider\n | ConnectWithSocialParam;\n\nexport type PasskeyParams = {\n isRegistering?: boolean;\n};\n\nexport type ConnectParameters = {\n connector: Connector;\n chainId?: number;\n authParams?: AuthConnectParams; // only particle auth need this.\n passkeyParams?: PasskeyParams;\n};\n\nexport type ConnectReturnType = {\n accounts: readonly [string, ...string[]];\n chainId: number;\n};\n\nexport type ConnectErrorType = ConnectorAlreadyConnectedErrorType | BaseErrorType | ErrorType;\n\nexport async function connect(config: Config, parameters: ConnectParameters): Promise<ConnectReturnType> {\n const connector = parameters.connector;\n\n // Check if connector is already connected\n if (connector.uid === config.state.current) throw new ConnectorAlreadyConnectedError();\n\n try {\n config.setState((x) => ({ ...x, status: 'connecting' }));\n connector.emitter.emit('message', { type: 'connecting' });\n\n const data = await connector.connect({\n chainId: parameters.chainId,\n ...parameters.authParams,\n ...parameters.passkeyParams,\n });\n const accounts = data.accounts as readonly [string, ...string[]];\n\n connector.emitter.off('connect', config._internal.events.connect);\n connector.emitter.on('change', config._internal.events.change);\n connector.emitter.on('disconnect', config._internal.events.disconnect);\n\n await config.storage?.setItem('recentConnectorId', connector.id);\n config.setState((x) => ({\n ...x,\n connections: new Map(x.connections).set(connector.uid, {\n accounts,\n chainId: data.chainId,\n connector: connector,\n }),\n current: connector.uid,\n status: 'connected',\n }));\n\n return { accounts, chainId: data.chainId };\n } catch (error) {\n config.setState((x) => ({\n ...x,\n // Keep existing connector connected in case of error\n status: x.current ? 'connected' : 'disconnected',\n }));\n throw error;\n }\n}\n", "import { isEVMChain, isSolanaChain } from '@particle-network/connector-core';\nimport { connect, type ConnectParameters, type ConnectReturnType } from '../actions/connect';\nimport { useContext } from '../context';\nimport { useLastConnectorId } from './useLastConnectorId';\nimport { useMutation, type MutationOptions } from './useMutation';\n\ntype UseConnectParameters = MutationOptions<ConnectReturnType, ConnectParameters>;\n\nexport default function useConnect(parameters?: UseConnectParameters) {\n const { config, options } = useContext();\n const { updateLastConnectorId } = useLastConnectorId();\n\n const mutationFn = async (parameters: ConnectParameters) => {\n const { connector, chainId } = parameters;\n let connectChainId = chainId;\n if (!connectChainId) {\n if (connector.chainType === 'evm') {\n connectChainId = options.initialChainId?.evm;\n if (!connectChainId) {\n connectChainId = config.chains.find(isEVMChain)?.id;\n }\n } else {\n connectChainId = options.initialChainId?.solana;\n if (!connectChainId) {\n connectChainId = config.chains.find(isSolanaChain)?.id;\n }\n }\n }\n const result = await connect(config, {\n ...parameters,\n chainId: connectChainId,\n });\n if (connector.id !== 'walletConnect') {\n updateLastConnectorId(connector.id);\n }\n\n return result;\n };\n\n const { status, data, error, mutate, mutateAsync } = useMutation(mutationFn, parameters);\n\n return {\n status,\n data,\n error,\n connect: mutate,\n connectAsync: mutateAsync,\n };\n}\n"], "mappings": ";;;;;;;;;;;;;;;;AACA;AAAA,EACE;AAAA,OAKK;AAiCP,eAAsB,QAAQ,QAAgB,YAA2D;AACvG,QAAM,YAAY,WAAW;AAG7B,MAAI,UAAU,QAAQ,OAAO,MAAM;AAAS,UAAM,IAAI,+BAA+B;AAErF,MAAI;AACF,WAAO,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,QAAQ,aAAa,EAAE;AACvD,cAAU,QAAQ,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAExD,UAAM,OAAO,MAAM,UAAU,QAAQ;AAAA,MACnC,SAAS,WAAW;AAAA,MACpB,GAAG,WAAW;AAAA,MACd,GAAG,WAAW;AAAA,IAChB,CAAC;AACD,UAAM,WAAW,KAAK;AAEtB,cAAU,QAAQ,IAAI,WAAW,OAAO,UAAU,OAAO,OAAO;AAChE,cAAU,QAAQ,GAAG,UAAU,OAAO,UAAU,OAAO,MAAM;AAC7D,cAAU,QAAQ,GAAG,cAAc,OAAO,UAAU,OAAO,UAAU;AAErE,UAAM,OAAO,SAAS,QAAQ,qBAAqB,UAAU,EAAE;AAC/D,WAAO,SAAS,CAAC,OAAO;AAAA,MACtB,GAAG;AAAA,MACH,aAAa,IAAI,IAAI,EAAE,WAAW,EAAE,IAAI,UAAU,KAAK;AAAA,QACrD;AAAA,QACA,SAAS,KAAK;AAAA,QACd;AAAA,MACF,CAAC;AAAA,MACD,SAAS,UAAU;AAAA,MACnB,QAAQ;AAAA,IACV,EAAE;AAEF,WAAO,EAAE,UAAU,SAAS,KAAK,QAAQ;AAAA,EAC3C,SAAS,OAAP;AACA,WAAO,SAAS,CAAC,OAAO;AAAA,MACtB,GAAG;AAAA,MAEH,QAAQ,EAAE,UAAU,cAAc;AAAA,IACpC,EAAE;AACF,UAAM;AAAA,EACR;AACF;AAlFA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAS,YAAY,qBAAqB;AAQ3B,SAAR,WAA4B,YAAmC;AACpE,QAAM,EAAE,QAAQ,QAAQ,IAAI,WAAW;AACvC,QAAM,EAAE,sBAAsB,IAAI,mBAAmB;AAErD,QAAM,aAAa,OAAOA,gBAAkC;AAC1D,UAAM,EAAE,WAAW,QAAQ,IAAIA;AAC/B,QAAI,iBAAiB;AACrB,QAAI,CAAC,gBAAgB;AACnB,UAAI,UAAU,cAAc,OAAO;AACjC,yBAAiB,QAAQ,gBAAgB;AACzC,YAAI,CAAC,gBAAgB;AACnB,2BAAiB,OAAO,OAAO,KAAK,UAAU,GAAG;AAAA,QACnD;AAAA,MACF,OAAO;AACL,yBAAiB,QAAQ,gBAAgB;AACzC,YAAI,CAAC,gBAAgB;AACnB,2BAAiB,OAAO,OAAO,KAAK,aAAa,GAAG;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AACA,UAAM,SAAS,MAAM,QAAQ,QAAQ;AAAA,MACnC,GAAGA;AAAA,MACH,SAAS;AAAA,IACX,CAAC;AACD,QAAI,UAAU,OAAO,iBAAiB;AACpC,4BAAsB,UAAU,EAAE;AAAA,IACpC;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,QAAQ,MAAM,OAAO,QAAQ,YAAY,IAAI,YAAY,YAAY,UAAU;AAEvF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,cAAc;AAAA,EAChB;AACF;AAhDA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;", "names": ["parameters"] }