@zerodev/wallet-react 0.0.1-alpha.6 → 0.0.1-alpha.8
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/CHANGELOG.md +19 -0
- package/README.md +16 -16
- package/dist/_cjs/actions.js +31 -21
- package/dist/_cjs/connector.js +44 -3
- package/dist/_cjs/hooks/useGetUserEmail.js +19 -0
- package/dist/_cjs/index.js +6 -1
- package/dist/_cjs/oauth.js +60 -55
- package/dist/_esm/actions.js +42 -26
- package/dist/_esm/connector.js +56 -5
- package/dist/_esm/hooks/useGetUserEmail.js +19 -0
- package/dist/_esm/index.js +2 -1
- package/dist/_esm/oauth.js +71 -53
- package/dist/_types/actions.d.ts +16 -6
- package/dist/_types/actions.d.ts.map +1 -1
- package/dist/_types/connector.d.ts +0 -2
- package/dist/_types/connector.d.ts.map +1 -1
- package/dist/_types/hooks/useGetUserEmail.d.ts +18 -0
- package/dist/_types/hooks/useGetUserEmail.d.ts.map +1 -0
- package/dist/_types/index.d.ts +3 -2
- package/dist/_types/index.d.ts.map +1 -1
- package/dist/_types/oauth.d.ts +25 -12
- package/dist/_types/oauth.d.ts.map +1 -1
- package/dist/_types/store.d.ts +7 -3
- package/dist/_types/store.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/actions.ts +59 -40
- package/src/connector.ts +68 -7
- package/src/hooks/useGetUserEmail.ts +52 -0
- package/src/index.ts +8 -2
- package/src/oauth.ts +97 -78
- package/src/store.ts +9 -4
- package/tsconfig.build.tsbuildinfo +1 -1
package/dist/_esm/connector.js
CHANGED
|
@@ -1,11 +1,59 @@
|
|
|
1
1
|
import { createConnector } from '@wagmi/core';
|
|
2
2
|
import { createKernelAccount, createKernelAccountClient, createZeroDevPaymasterClient, } from '@zerodev/sdk';
|
|
3
3
|
import { getEntryPoint, KERNEL_V3_3 } from '@zerodev/sdk/constants';
|
|
4
|
-
import { createZeroDevWallet } from '@zerodev/wallet-core';
|
|
4
|
+
import { createZeroDevWallet, KMS_SERVER_URL } from '@zerodev/wallet-core';
|
|
5
5
|
import { createPublicClient, http } from 'viem';
|
|
6
|
+
import { handleOAuthCallback } from './oauth.js';
|
|
6
7
|
import { createProvider } from './provider.js';
|
|
7
8
|
import { createZeroDevWalletStore } from './store.js';
|
|
8
9
|
import { getAAUrl } from './utils/aaUtils.js';
|
|
10
|
+
// OAuth URL parameter used to detect callback
|
|
11
|
+
const OAUTH_SUCCESS_PARAM = 'oauth_success';
|
|
12
|
+
const OAUTH_PROVIDER_PARAM = 'oauth_provider';
|
|
13
|
+
/**
|
|
14
|
+
* Detect OAuth callback from URL params and handle it.
|
|
15
|
+
* - If in popup: sends postMessage to opener and closes
|
|
16
|
+
* - If not in popup: completes auth directly
|
|
17
|
+
*/
|
|
18
|
+
async function detectAndHandleOAuthCallback(wallet, store) {
|
|
19
|
+
if (typeof window === 'undefined')
|
|
20
|
+
return false;
|
|
21
|
+
const params = new URLSearchParams(window.location.search);
|
|
22
|
+
const isOAuthCallback = params.get(OAUTH_SUCCESS_PARAM) === 'true';
|
|
23
|
+
if (!isOAuthCallback)
|
|
24
|
+
return false;
|
|
25
|
+
// If in popup, use the existing handler to notify opener
|
|
26
|
+
if (window.opener) {
|
|
27
|
+
handleOAuthCallback(OAUTH_SUCCESS_PARAM);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
// Not in popup - complete auth directly (redirect flow)
|
|
31
|
+
console.log('OAuth callback detected, completing authentication...');
|
|
32
|
+
const provider = (params.get(OAUTH_PROVIDER_PARAM) ||
|
|
33
|
+
'google');
|
|
34
|
+
try {
|
|
35
|
+
await wallet.auth({ type: 'oauth', provider });
|
|
36
|
+
const [session, eoaAccount] = await Promise.all([
|
|
37
|
+
wallet.getSession(),
|
|
38
|
+
wallet.toAccount(),
|
|
39
|
+
]);
|
|
40
|
+
store.getState().setEoaAccount(eoaAccount);
|
|
41
|
+
store.getState().setSession(session || null);
|
|
42
|
+
// Clean up URL params
|
|
43
|
+
params.delete(OAUTH_SUCCESS_PARAM);
|
|
44
|
+
params.delete(OAUTH_PROVIDER_PARAM);
|
|
45
|
+
const newUrl = params.toString()
|
|
46
|
+
? `${window.location.pathname}?${params.toString()}`
|
|
47
|
+
: window.location.pathname;
|
|
48
|
+
window.history.replaceState({}, '', newUrl);
|
|
49
|
+
console.log('OAuth authentication completed');
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error('OAuth authentication failed:', error);
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
9
57
|
export function zeroDevWallet(params) {
|
|
10
58
|
return createConnector((wagmiConfig) => {
|
|
11
59
|
let store;
|
|
@@ -30,10 +78,11 @@ export function zeroDevWallet(params) {
|
|
|
30
78
|
// Create store
|
|
31
79
|
store = createZeroDevWalletStore();
|
|
32
80
|
store.getState().setWallet(wallet);
|
|
33
|
-
// Store OAuth config
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
81
|
+
// Store OAuth config - uses proxyBaseUrl and projectId from params
|
|
82
|
+
store.getState().setOAuthConfig({
|
|
83
|
+
backendUrl: params.proxyBaseUrl || `${KMS_SERVER_URL}/api/v1`,
|
|
84
|
+
projectId: params.projectId,
|
|
85
|
+
});
|
|
37
86
|
// Create EIP-1193 provider
|
|
38
87
|
provider = createProvider({
|
|
39
88
|
store,
|
|
@@ -48,6 +97,8 @@ export function zeroDevWallet(params) {
|
|
|
48
97
|
store.getState().setEoaAccount(eoaAccount);
|
|
49
98
|
store.getState().setSession(session);
|
|
50
99
|
}
|
|
100
|
+
// Auto-detect OAuth callback (when popup redirects back with ?oauth_success=true)
|
|
101
|
+
await detectAndHandleOAuthCallback(wallet, store);
|
|
51
102
|
console.log('ZeroDevWallet connector initialized');
|
|
52
103
|
};
|
|
53
104
|
return {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useQuery, } from '@tanstack/react-query';
|
|
3
|
+
import { useConfig } from 'wagmi';
|
|
4
|
+
import { getUserEmail } from '../actions.js';
|
|
5
|
+
/**
|
|
6
|
+
* Hook to fetch user email address
|
|
7
|
+
*/
|
|
8
|
+
export function useGetUserEmail(parameters) {
|
|
9
|
+
const { query } = parameters;
|
|
10
|
+
const config = useConfig(parameters);
|
|
11
|
+
return useQuery({
|
|
12
|
+
...query,
|
|
13
|
+
queryKey: ['getUserEmail'],
|
|
14
|
+
queryFn: async () => {
|
|
15
|
+
return getUserEmail(config);
|
|
16
|
+
},
|
|
17
|
+
enabled: Boolean(config),
|
|
18
|
+
});
|
|
19
|
+
}
|
package/dist/_esm/index.js
CHANGED
|
@@ -2,10 +2,11 @@ export { zeroDevWallet } from './connector.js';
|
|
|
2
2
|
export { useAuthenticateOAuth } from './hooks/useAuthenticateOAuth.js';
|
|
3
3
|
export { useExportPrivateKey } from './hooks/useExportPrivateKey.js';
|
|
4
4
|
export { useExportWallet } from './hooks/useExportWallet.js';
|
|
5
|
+
export { useGetUserEmail } from './hooks/useGetUserEmail.js';
|
|
5
6
|
export { useLoginPasskey } from './hooks/useLoginPasskey.js';
|
|
6
7
|
export { useRefreshSession } from './hooks/useRefreshSession.js';
|
|
7
8
|
export { useRegisterPasskey } from './hooks/useRegisterPasskey.js';
|
|
8
9
|
export { useSendOTP } from './hooks/useSendOTP.js';
|
|
9
10
|
export { useVerifyOTP } from './hooks/useVerifyOTP.js';
|
|
10
|
-
export { OAUTH_PROVIDERS } from './oauth.js';
|
|
11
|
+
export { buildBackendOAuthUrl, handleOAuthCallback, listenForOAuthMessage, OAUTH_PROVIDERS, } from './oauth.js';
|
|
11
12
|
export { createZeroDevWalletStore } from './store.js';
|
package/dist/_esm/oauth.js
CHANGED
|
@@ -2,33 +2,8 @@ import { sha256 } from 'viem';
|
|
|
2
2
|
export const OAUTH_PROVIDERS = {
|
|
3
3
|
GOOGLE: 'google',
|
|
4
4
|
};
|
|
5
|
-
const GOOGLE_AUTH_URL = 'https://accounts.google.com/o/oauth2/v2/auth';
|
|
6
5
|
const POPUP_WIDTH = 500;
|
|
7
6
|
const POPUP_HEIGHT = 600;
|
|
8
|
-
export function buildOAuthUrl(params) {
|
|
9
|
-
const { provider, clientId, redirectUri, nonce, state } = params;
|
|
10
|
-
if (provider !== OAUTH_PROVIDERS.GOOGLE) {
|
|
11
|
-
throw new Error(`Unsupported OAuth provider: ${provider}`);
|
|
12
|
-
}
|
|
13
|
-
const authUrl = new URL(GOOGLE_AUTH_URL);
|
|
14
|
-
authUrl.searchParams.set('client_id', clientId);
|
|
15
|
-
authUrl.searchParams.set('redirect_uri', redirectUri);
|
|
16
|
-
authUrl.searchParams.set('response_type', 'id_token');
|
|
17
|
-
authUrl.searchParams.set('scope', 'openid email profile');
|
|
18
|
-
authUrl.searchParams.set('nonce', nonce);
|
|
19
|
-
authUrl.searchParams.set('prompt', 'select_account');
|
|
20
|
-
let stateParam = `provider=${provider}`;
|
|
21
|
-
if (state) {
|
|
22
|
-
const additionalState = Object.entries(state)
|
|
23
|
-
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
|
|
24
|
-
.join('&');
|
|
25
|
-
if (additionalState) {
|
|
26
|
-
stateParam += `&${additionalState}`;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
authUrl.searchParams.set('state', stateParam);
|
|
30
|
-
return authUrl.toString();
|
|
31
|
-
}
|
|
32
7
|
export function openOAuthPopup(url) {
|
|
33
8
|
const width = POPUP_WIDTH;
|
|
34
9
|
const height = POPUP_HEIGHT;
|
|
@@ -40,38 +15,81 @@ export function openOAuthPopup(url) {
|
|
|
40
15
|
}
|
|
41
16
|
return authWindow;
|
|
42
17
|
}
|
|
43
|
-
export function
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
18
|
+
export function generateOAuthNonce(publicKey) {
|
|
19
|
+
return sha256(publicKey).replace(/^0x/, '');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Build OAuth URL that redirects to backend's OAuth endpoint
|
|
23
|
+
* The backend handles PKCE, client credentials, and token exchange
|
|
24
|
+
*/
|
|
25
|
+
export function buildBackendOAuthUrl(params) {
|
|
26
|
+
const { provider, backendUrl, projectId, publicKey, returnTo } = params;
|
|
27
|
+
if (provider !== OAUTH_PROVIDERS.GOOGLE) {
|
|
28
|
+
throw new Error(`Unsupported OAuth provider: ${provider}`);
|
|
49
29
|
}
|
|
50
|
-
|
|
30
|
+
const oauthUrl = new URL(`${backendUrl}/oauth/google/login`);
|
|
31
|
+
oauthUrl.searchParams.set('project_id', projectId);
|
|
32
|
+
oauthUrl.searchParams.set('pub_key', publicKey.replace(/^0x/, ''));
|
|
33
|
+
oauthUrl.searchParams.set('return_to', returnTo);
|
|
34
|
+
return oauthUrl.toString();
|
|
51
35
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
}
|
|
36
|
+
/**
|
|
37
|
+
* Listen for OAuth completion via postMessage from popup
|
|
38
|
+
* The popup sends a message when it detects a successful redirect
|
|
39
|
+
*/
|
|
40
|
+
export function listenForOAuthMessage(authWindow, expectedOrigin, onSuccess, onError) {
|
|
41
|
+
let cleaned = false;
|
|
42
|
+
const handleMessage = (event) => {
|
|
43
|
+
// Only trust messages from expected origin
|
|
44
|
+
if (event.origin !== expectedOrigin)
|
|
45
|
+
return;
|
|
46
|
+
if (!event.data || typeof event.data !== 'object')
|
|
47
|
+
return;
|
|
48
|
+
if (event.data.type === 'oauth_success') {
|
|
49
|
+
cleanup();
|
|
50
|
+
onSuccess();
|
|
69
51
|
}
|
|
70
|
-
|
|
71
|
-
|
|
52
|
+
else if (event.data.type === 'oauth_error') {
|
|
53
|
+
cleanup();
|
|
54
|
+
onError(new Error(event.data.error || 'OAuth authentication failed'));
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const checkWindowClosed = setInterval(() => {
|
|
58
|
+
if (authWindow.closed) {
|
|
59
|
+
cleanup();
|
|
60
|
+
onError(new Error('Authentication window was closed'));
|
|
72
61
|
}
|
|
73
62
|
}, 500);
|
|
63
|
+
const cleanup = () => {
|
|
64
|
+
if (cleaned)
|
|
65
|
+
return;
|
|
66
|
+
cleaned = true;
|
|
67
|
+
window.removeEventListener('message', handleMessage);
|
|
68
|
+
clearInterval(checkWindowClosed);
|
|
69
|
+
};
|
|
70
|
+
window.addEventListener('message', handleMessage);
|
|
71
|
+
return cleanup;
|
|
74
72
|
}
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Handle OAuth callback on the return page
|
|
75
|
+
* Call this on the page that receives the OAuth redirect
|
|
76
|
+
* It sends a postMessage to the opener and closes the window
|
|
77
|
+
*/
|
|
78
|
+
export function handleOAuthCallback(successParam = 'oauth_success') {
|
|
79
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
80
|
+
const isSuccess = urlParams.get(successParam) === 'true';
|
|
81
|
+
const error = urlParams.get('error');
|
|
82
|
+
if (window.opener) {
|
|
83
|
+
if (isSuccess) {
|
|
84
|
+
window.opener.postMessage({ type: 'oauth_success' }, window.location.origin);
|
|
85
|
+
window.close();
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
if (error) {
|
|
89
|
+
window.opener.postMessage({ type: 'oauth_error', error }, window.location.origin);
|
|
90
|
+
window.close();
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return false;
|
|
77
95
|
}
|
package/dist/_types/actions.d.ts
CHANGED
|
@@ -32,16 +32,15 @@ export declare namespace loginPasskey {
|
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Authenticate with OAuth (opens popup)
|
|
35
|
+
* Uses backend OAuth flow where the backend handles PKCE and token exchange
|
|
35
36
|
*/
|
|
36
37
|
export declare function authenticateOAuth(config: Config, parameters: {
|
|
37
38
|
provider: OAuthProvider;
|
|
38
|
-
clientId?: string;
|
|
39
39
|
connector?: Connector;
|
|
40
40
|
}): Promise<void>;
|
|
41
41
|
export declare namespace authenticateOAuth {
|
|
42
42
|
type Parameters = {
|
|
43
43
|
provider: OAuthProvider;
|
|
44
|
-
clientId?: string;
|
|
45
44
|
connector?: Connector;
|
|
46
45
|
};
|
|
47
46
|
type ReturnType = void;
|
|
@@ -58,7 +57,6 @@ export declare function sendOTP(config: Config, parameters: {
|
|
|
58
57
|
connector?: Connector;
|
|
59
58
|
}): Promise<{
|
|
60
59
|
otpId: string;
|
|
61
|
-
subOrganizationId: string;
|
|
62
60
|
}>;
|
|
63
61
|
export declare namespace sendOTP {
|
|
64
62
|
type Parameters = {
|
|
@@ -70,7 +68,6 @@ export declare namespace sendOTP {
|
|
|
70
68
|
};
|
|
71
69
|
type ReturnType = {
|
|
72
70
|
otpId: string;
|
|
73
|
-
subOrganizationId: string;
|
|
74
71
|
};
|
|
75
72
|
type ErrorType = Error;
|
|
76
73
|
}
|
|
@@ -80,14 +77,12 @@ export declare namespace sendOTP {
|
|
|
80
77
|
export declare function verifyOTP(config: Config, parameters: {
|
|
81
78
|
code: string;
|
|
82
79
|
otpId: string;
|
|
83
|
-
subOrganizationId: string;
|
|
84
80
|
connector?: Connector;
|
|
85
81
|
}): Promise<void>;
|
|
86
82
|
export declare namespace verifyOTP {
|
|
87
83
|
type Parameters = {
|
|
88
84
|
code: string;
|
|
89
85
|
otpId: string;
|
|
90
|
-
subOrganizationId: string;
|
|
91
86
|
connector?: Connector;
|
|
92
87
|
};
|
|
93
88
|
type ReturnType = void;
|
|
@@ -106,6 +101,21 @@ export declare namespace refreshSession {
|
|
|
106
101
|
type ReturnType = unknown;
|
|
107
102
|
type ErrorType = Error;
|
|
108
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Get user email
|
|
106
|
+
*/
|
|
107
|
+
export declare function getUserEmail(config: Config): Promise<{
|
|
108
|
+
email: string;
|
|
109
|
+
}>;
|
|
110
|
+
export declare namespace getUserEmail {
|
|
111
|
+
type Parameters = {
|
|
112
|
+
connector?: Connector;
|
|
113
|
+
};
|
|
114
|
+
type ReturnType = {
|
|
115
|
+
email: string;
|
|
116
|
+
};
|
|
117
|
+
type ErrorType = Error;
|
|
118
|
+
}
|
|
109
119
|
/**
|
|
110
120
|
* Export wallet
|
|
111
121
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAOpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type CreateConnectorFn } from '@wagmi/core';
|
|
2
2
|
import type { StorageAdapter } from '@zerodev/wallet-core';
|
|
3
3
|
import { type Chain } from 'viem';
|
|
4
|
-
import type { OAuthConfig } from './oauth.js';
|
|
5
4
|
export type ZeroDevWalletConnectorParams = {
|
|
6
5
|
projectId: string;
|
|
7
6
|
organizationId?: string;
|
|
@@ -12,7 +11,6 @@ export type ZeroDevWalletConnectorParams = {
|
|
|
12
11
|
sessionStorage?: StorageAdapter;
|
|
13
12
|
autoRefreshSession?: boolean;
|
|
14
13
|
sessionWarningThreshold?: number;
|
|
15
|
-
oauthConfig?: OAuthConfig;
|
|
16
14
|
};
|
|
17
15
|
export declare function zeroDevWallet(params: ZeroDevWalletConnectorParams): CreateConnectorFn;
|
|
18
16
|
//# sourceMappingURL=connector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,aAAa,CAAA;AAOrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,EAAE,KAAK,KAAK,EAA4B,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,aAAa,CAAA;AAOrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,EAAE,KAAK,KAAK,EAA4B,MAAM,MAAM,CAAA;AAgE3D,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,4BAA4B,GACnC,iBAAiB,CAoTnB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
|
|
2
|
+
import { type Config, type ResolvedRegister } from 'wagmi';
|
|
3
|
+
import { getUserEmail } from '../actions.js';
|
|
4
|
+
type ConfigParameter<config extends Config = Config> = {
|
|
5
|
+
config?: Config | config | undefined;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Hook to fetch user email address
|
|
9
|
+
*/
|
|
10
|
+
export declare function useGetUserEmail<config extends Config = ResolvedRegister['config']>(parameters: useGetUserEmail.Parameters<config>): useGetUserEmail.ReturnType;
|
|
11
|
+
export declare namespace useGetUserEmail {
|
|
12
|
+
type Parameters<config extends Config = Config> = ConfigParameter<config> & {
|
|
13
|
+
query?: Omit<UseQueryOptions<getUserEmail.ReturnType, getUserEmail.ErrorType, getUserEmail.ReturnType>, 'queryKey' | 'queryFn'> | undefined;
|
|
14
|
+
};
|
|
15
|
+
type ReturnType = UseQueryResult<getUserEmail.ReturnType, getUserEmail.ErrorType>;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=useGetUserEmail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGetUserEmail.d.ts","sourceRoot":"","sources":["../../../src/hooks/useGetUserEmail.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,gBAAgB,EAAa,MAAM,OAAO,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,KAAK,eAAe,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;IACrD,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CACrC,CAAA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,SAAS,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAClD,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAY5E;AAED,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,UAAU,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG;QAC1E,KAAK,CAAC,EACF,IAAI,CACF,eAAe,CACb,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,SAAS,EACtB,YAAY,CAAC,UAAU,CACxB,EACD,UAAU,GAAG,SAAS,CACvB,GACD,SAAS,CAAA;KACd,CAAA;IAED,KAAK,UAAU,GAAG,cAAc,CAC9B,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,SAAS,CACvB,CAAA;CACF"}
|
package/dist/_types/index.d.ts
CHANGED
|
@@ -3,13 +3,14 @@ export { zeroDevWallet } from './connector.js';
|
|
|
3
3
|
export { useAuthenticateOAuth } from './hooks/useAuthenticateOAuth.js';
|
|
4
4
|
export { useExportPrivateKey } from './hooks/useExportPrivateKey.js';
|
|
5
5
|
export { useExportWallet } from './hooks/useExportWallet.js';
|
|
6
|
+
export { useGetUserEmail } from './hooks/useGetUserEmail.js';
|
|
6
7
|
export { useLoginPasskey } from './hooks/useLoginPasskey.js';
|
|
7
8
|
export { useRefreshSession } from './hooks/useRefreshSession.js';
|
|
8
9
|
export { useRegisterPasskey } from './hooks/useRegisterPasskey.js';
|
|
9
10
|
export { useSendOTP } from './hooks/useSendOTP.js';
|
|
10
11
|
export { useVerifyOTP } from './hooks/useVerifyOTP.js';
|
|
11
|
-
export type {
|
|
12
|
-
export { OAUTH_PROVIDERS } from './oauth.js';
|
|
12
|
+
export type { OAuthMessageData, OAuthProvider } from './oauth.js';
|
|
13
|
+
export { buildBackendOAuthUrl, handleOAuthCallback, listenForOAuthMessage, OAUTH_PROVIDERS, } from './oauth.js';
|
|
13
14
|
export type { ZeroDevProvider } from './provider.js';
|
|
14
15
|
export type { ZeroDevWalletState } from './store.js';
|
|
15
16
|
export { createZeroDevWalletStore } from './store.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAChB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/_types/oauth.d.ts
CHANGED
|
@@ -2,20 +2,33 @@ export declare const OAUTH_PROVIDERS: {
|
|
|
2
2
|
readonly GOOGLE: "google";
|
|
3
3
|
};
|
|
4
4
|
export type OAuthProvider = (typeof OAUTH_PROVIDERS)[keyof typeof OAUTH_PROVIDERS];
|
|
5
|
-
export type
|
|
6
|
-
googleClientId?: string;
|
|
7
|
-
redirectUri: string;
|
|
8
|
-
};
|
|
9
|
-
export type OAuthFlowParams = {
|
|
5
|
+
export type BackendOAuthFlowParams = {
|
|
10
6
|
provider: OAuthProvider;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
backendUrl: string;
|
|
8
|
+
projectId: string;
|
|
9
|
+
publicKey: string;
|
|
10
|
+
returnTo: string;
|
|
15
11
|
};
|
|
16
|
-
export declare function buildOAuthUrl(params: OAuthFlowParams): string;
|
|
17
12
|
export declare function openOAuthPopup(url: string): Window | null;
|
|
18
|
-
export declare function extractOAuthToken(url: string): string | null;
|
|
19
|
-
export declare function pollOAuthPopup(authWindow: Window, originUrl: string, onSuccess: (token: string) => void, onError: (error: Error) => void): void;
|
|
20
13
|
export declare function generateOAuthNonce(publicKey: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Build OAuth URL that redirects to backend's OAuth endpoint
|
|
16
|
+
* The backend handles PKCE, client credentials, and token exchange
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildBackendOAuthUrl(params: BackendOAuthFlowParams): string;
|
|
19
|
+
export type OAuthMessageData = {
|
|
20
|
+
type: 'oauth_success' | 'oauth_error';
|
|
21
|
+
error?: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Listen for OAuth completion via postMessage from popup
|
|
25
|
+
* The popup sends a message when it detects a successful redirect
|
|
26
|
+
*/
|
|
27
|
+
export declare function listenForOAuthMessage(authWindow: Window, expectedOrigin: string, onSuccess: () => void, onError: (error: Error) => void): () => void;
|
|
28
|
+
/**
|
|
29
|
+
* Handle OAuth callback on the return page
|
|
30
|
+
* Call this on the page that receives the OAuth redirect
|
|
31
|
+
* It sends a postMessage to the opener and closes the window
|
|
32
|
+
*/
|
|
33
|
+
export declare function handleOAuthCallback(successParam?: string): boolean;
|
|
21
34
|
//# sourceMappingURL=oauth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/oauth.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe;;CAElB,CAAA;AAEV,MAAM,MAAM,aAAa,GACvB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAExD,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/oauth.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe;;CAElB,CAAA;AAEV,MAAM,MAAM,aAAa,GACvB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAExD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,aAAa,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAKD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBzD;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAa3E;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,eAAe,GAAG,aAAa,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,IAAI,EACrB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC9B,MAAM,IAAI,CAkCZ;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,SAAkB,GAAG,OAAO,CAyB3E"}
|
package/dist/_types/store.d.ts
CHANGED
|
@@ -2,7 +2,10 @@ import type { KernelAccountClient, KernelSmartAccountImplementation } from '@zer
|
|
|
2
2
|
import type { ZeroDevWalletSDK, ZeroDevWalletSession } from '@zerodev/wallet-core';
|
|
3
3
|
import type { LocalAccount } from 'viem';
|
|
4
4
|
import type { SmartAccount } from 'viem/account-abstraction';
|
|
5
|
-
|
|
5
|
+
type InternalOAuthConfig = {
|
|
6
|
+
backendUrl: string;
|
|
7
|
+
projectId: string;
|
|
8
|
+
};
|
|
6
9
|
export type ZeroDevWalletState = {
|
|
7
10
|
wallet: ZeroDevWalletSDK | null;
|
|
8
11
|
eoaAccount: LocalAccount | null;
|
|
@@ -11,7 +14,7 @@ export type ZeroDevWalletState = {
|
|
|
11
14
|
kernelAccounts: Map<number, SmartAccount<KernelSmartAccountImplementation>>;
|
|
12
15
|
kernelClients: Map<number, KernelAccountClient>;
|
|
13
16
|
isExpiring: boolean;
|
|
14
|
-
oauthConfig:
|
|
17
|
+
oauthConfig: InternalOAuthConfig | null;
|
|
15
18
|
setWallet: (wallet: ZeroDevWalletSDK) => void;
|
|
16
19
|
setEoaAccount: (account: LocalAccount | null) => void;
|
|
17
20
|
setKernelAccount: (chainId: number, account: SmartAccount<KernelSmartAccountImplementation>) => void;
|
|
@@ -19,7 +22,7 @@ export type ZeroDevWalletState = {
|
|
|
19
22
|
setSession: (session: ZeroDevWalletSession | null) => void;
|
|
20
23
|
setActiveChainId: (chainId: number | null) => void;
|
|
21
24
|
setIsExpiring: (isExpiring: boolean) => void;
|
|
22
|
-
setOAuthConfig: (config:
|
|
25
|
+
setOAuthConfig: (config: InternalOAuthConfig | null) => void;
|
|
23
26
|
clear: () => void;
|
|
24
27
|
};
|
|
25
28
|
export declare const createZeroDevWalletStore: () => import("zustand").UseBoundStore<Omit<Omit<import("zustand").StoreApi<ZeroDevWalletState>, "subscribe"> & {
|
|
@@ -49,4 +52,5 @@ export declare const createZeroDevWalletStore: () => import("zustand").UseBoundS
|
|
|
49
52
|
}, unknown>>;
|
|
50
53
|
};
|
|
51
54
|
}>;
|
|
55
|
+
export {};
|
|
52
56
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gCAAgC,EACjC,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gCAAgC,EACjC,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAK5D,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAE/B,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC/B,UAAU,EAAE,YAAY,GAAG,IAAI,CAAA;IAC/B,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAGpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,gCAAgC,CAAC,CAAC,CAAA;IAC3E,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAG/C,UAAU,EAAE,OAAO,CAAA;IAGnB,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAA;IAGvC,SAAS,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAA;IACrD,gBAAgB,EAAE,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,CAAC,gCAAgC,CAAC,KACpD,IAAI,CAAA;IACT,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAA;IACvE,UAAU,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAClD,aAAa,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,cAAc,EAAE,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAA;IAC5D,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;EA4DlC,CAAA"}
|