@zerodev/wallet-react 0.0.1-alpha.11 → 0.0.1-alpha.13
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 +16 -0
- package/README.md +22 -3
- package/dist/_cjs/actions.js +46 -4
- package/dist/_cjs/connector.js +7 -0
- package/dist/_cjs/hooks/useLoginPasskey.js +1 -1
- package/dist/_cjs/hooks/useRegisterPasskey.js +1 -1
- package/dist/_cjs/hooks/useSendMagicLink.js +18 -0
- package/dist/_cjs/hooks/useVerifyMagicLink.js +18 -0
- package/dist/_cjs/index.js +5 -1
- package/dist/_esm/actions.js +53 -4
- package/dist/_esm/connector.js +8 -1
- package/dist/_esm/hooks/useLoginPasskey.js +1 -1
- package/dist/_esm/hooks/useRegisterPasskey.js +1 -1
- package/dist/_esm/hooks/useSendMagicLink.js +18 -0
- package/dist/_esm/hooks/useVerifyMagicLink.js +18 -0
- package/dist/_esm/index.js +2 -0
- package/dist/_esm/provider.js +2 -1
- package/dist/_types/actions.d.ts +46 -8
- package/dist/_types/actions.d.ts.map +1 -1
- package/dist/_types/connector.d.ts.map +1 -1
- package/dist/_types/hooks/useSendMagicLink.d.ts +18 -0
- package/dist/_types/hooks/useSendMagicLink.d.ts.map +1 -0
- package/dist/_types/hooks/useVerifyMagicLink.d.ts +18 -0
- package/dist/_types/hooks/useVerifyMagicLink.d.ts.map +1 -0
- package/dist/_types/index.d.ts +2 -0
- package/dist/_types/index.d.ts.map +1 -1
- package/dist/_types/provider.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/actions.test.ts +16 -19
- package/src/actions.ts +109 -12
- package/src/connector.ts +8 -1
- package/src/hooks/useLoginPasskey.ts +2 -2
- package/src/hooks/useRegisterPasskey.ts +2 -2
- package/src/hooks/useSendMagicLink.ts +57 -0
- package/src/hooks/useVerifyMagicLink.ts +57 -0
- package/src/index.ts +2 -0
- package/src/provider.ts +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @zerodev/wallet-react
|
|
2
2
|
|
|
3
|
+
## 0.0.1-alpha.13
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- feat: expose applySettings on iframe stamper and accept iframeStyles in export actions
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @zerodev/wallet-core@0.0.1-alpha.12
|
|
10
|
+
|
|
11
|
+
## 0.0.1-alpha.12
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- fix: resolve session token dynamically so signing survives session refresh
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
- @zerodev/wallet-core@0.0.1-alpha.11
|
|
18
|
+
|
|
3
19
|
## 0.0.1-alpha.11
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -76,7 +76,7 @@ function LoginPage() {
|
|
|
76
76
|
return (
|
|
77
77
|
<>
|
|
78
78
|
<button
|
|
79
|
-
onClick={() => registerPasskey.mutate(
|
|
79
|
+
onClick={() => registerPasskey.mutate()}
|
|
80
80
|
disabled={registerPasskey.isPending}
|
|
81
81
|
>
|
|
82
82
|
{registerPasskey.isPending ? 'Registering...' : 'Register with Passkey'}
|
|
@@ -134,10 +134,10 @@ const registerPasskey = useRegisterPasskey()
|
|
|
134
134
|
const loginPasskey = useLoginPasskey()
|
|
135
135
|
|
|
136
136
|
// Register new passkey
|
|
137
|
-
await registerPasskey.mutateAsync(
|
|
137
|
+
await registerPasskey.mutateAsync()
|
|
138
138
|
|
|
139
139
|
// Login with existing passkey
|
|
140
|
-
await loginPasskey.mutateAsync(
|
|
140
|
+
await loginPasskey.mutateAsync()
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
### OAuth (Google)
|
|
@@ -152,6 +152,23 @@ await authenticateOAuth.mutateAsync({
|
|
|
152
152
|
})
|
|
153
153
|
```
|
|
154
154
|
|
|
155
|
+
### Email Magic Link
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
const sendMagicLink = useSendMagicLink()
|
|
159
|
+
const verifyMagicLink = useVerifyMagicLink()
|
|
160
|
+
|
|
161
|
+
// Send magic link
|
|
162
|
+
const { otpId } = await sendMagicLink.mutateAsync({
|
|
163
|
+
email: 'user@example.com',
|
|
164
|
+
redirectURL: 'https://yourapp.com/verify',
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
// Verify (on /verify page, extract code from URL)
|
|
168
|
+
const code = new URLSearchParams(window.location.search).get('code')
|
|
169
|
+
await verifyMagicLink.mutateAsync({ otpId, code })
|
|
170
|
+
```
|
|
171
|
+
|
|
155
172
|
### Email OTP
|
|
156
173
|
|
|
157
174
|
```typescript
|
|
@@ -255,6 +272,8 @@ All hooks follow the TanStack Query mutation pattern:
|
|
|
255
272
|
- `useRegisterPasskey()` - Register with passkey
|
|
256
273
|
- `useLoginPasskey()` - Login with passkey
|
|
257
274
|
- `useAuthenticateOAuth()` - OAuth (Google popup)
|
|
275
|
+
- `useSendMagicLink()` - Send magic link via email
|
|
276
|
+
- `useVerifyMagicLink()` - Verify magic link code
|
|
258
277
|
- `useSendOTP()` - Send OTP via email
|
|
259
278
|
- `useVerifyOTP()` - Verify OTP code
|
|
260
279
|
- `useRefreshSession()` - Manually refresh session
|
package/dist/_cjs/actions.js
CHANGED
|
@@ -9,6 +9,8 @@ exports.refreshSession = refreshSession;
|
|
|
9
9
|
exports.getUserEmail = getUserEmail;
|
|
10
10
|
exports.exportWallet = exportWallet;
|
|
11
11
|
exports.exportPrivateKey = exportPrivateKey;
|
|
12
|
+
exports.sendMagicLink = sendMagicLink;
|
|
13
|
+
exports.verifyMagicLink = verifyMagicLink;
|
|
12
14
|
const actions_1 = require("@wagmi/core/actions");
|
|
13
15
|
const wallet_core_1 = require("@zerodev/wallet-core");
|
|
14
16
|
const oauth_js_1 = require("./oauth.js");
|
|
@@ -20,14 +22,13 @@ function getZeroDevConnector(config) {
|
|
|
20
22
|
return connector;
|
|
21
23
|
}
|
|
22
24
|
async function registerPasskey(config, parameters) {
|
|
23
|
-
const connector = parameters
|
|
25
|
+
const connector = parameters?.connector ?? getZeroDevConnector(config);
|
|
24
26
|
const store = await connector.getStore();
|
|
25
27
|
const wallet = store.getState().wallet;
|
|
26
28
|
if (!wallet)
|
|
27
29
|
throw new Error('Wallet not initialized');
|
|
28
30
|
await wallet.auth({
|
|
29
31
|
type: 'passkey',
|
|
30
|
-
email: parameters.email,
|
|
31
32
|
mode: 'register',
|
|
32
33
|
});
|
|
33
34
|
const [session, eoaAccount] = await Promise.all([
|
|
@@ -39,14 +40,13 @@ async function registerPasskey(config, parameters) {
|
|
|
39
40
|
await (0, actions_1.connect)(config, { connector });
|
|
40
41
|
}
|
|
41
42
|
async function loginPasskey(config, parameters) {
|
|
42
|
-
const connector = parameters
|
|
43
|
+
const connector = parameters?.connector ?? getZeroDevConnector(config);
|
|
43
44
|
const store = await connector.getStore();
|
|
44
45
|
const wallet = store.getState().wallet;
|
|
45
46
|
if (!wallet)
|
|
46
47
|
throw new Error('Wallet not initialized');
|
|
47
48
|
await wallet.auth({
|
|
48
49
|
type: 'passkey',
|
|
49
|
-
email: parameters.email,
|
|
50
50
|
mode: 'login',
|
|
51
51
|
});
|
|
52
52
|
const [session, eoaAccount] = await Promise.all([
|
|
@@ -194,6 +194,9 @@ async function exportWallet(config, parameters) {
|
|
|
194
194
|
iframeElementId: 'export-wallet-iframe',
|
|
195
195
|
});
|
|
196
196
|
const publicKey = await iframeStamper.init();
|
|
197
|
+
if (parameters.iframeStyles) {
|
|
198
|
+
await iframeStamper.applySettings({ styles: parameters.iframeStyles });
|
|
199
|
+
}
|
|
197
200
|
const { exportBundle, organizationId } = await (0, wallet_core_1.exportWallet)({
|
|
198
201
|
wallet,
|
|
199
202
|
targetPublicKey: publicKey,
|
|
@@ -219,6 +222,9 @@ async function exportPrivateKey(config, parameters) {
|
|
|
219
222
|
iframeElementId: 'export-private-key-iframe',
|
|
220
223
|
});
|
|
221
224
|
const publicKey = await iframeStamper.init();
|
|
225
|
+
if (parameters.iframeStyles) {
|
|
226
|
+
await iframeStamper.applySettings({ styles: parameters.iframeStyles });
|
|
227
|
+
}
|
|
222
228
|
const { exportBundle, organizationId } = await (0, wallet_core_1.exportPrivateKey)({
|
|
223
229
|
wallet,
|
|
224
230
|
targetPublicKey: publicKey,
|
|
@@ -229,3 +235,39 @@ async function exportPrivateKey(config, parameters) {
|
|
|
229
235
|
throw new Error('Failed to inject export bundle');
|
|
230
236
|
}
|
|
231
237
|
}
|
|
238
|
+
async function sendMagicLink(config, parameters) {
|
|
239
|
+
const connector = parameters.connector ?? getZeroDevConnector(config);
|
|
240
|
+
const store = await connector.getStore();
|
|
241
|
+
const wallet = store.getState().wallet;
|
|
242
|
+
if (!wallet)
|
|
243
|
+
throw new Error('Wallet not initialized');
|
|
244
|
+
const result = await wallet.auth({
|
|
245
|
+
type: 'magicLink',
|
|
246
|
+
mode: 'send',
|
|
247
|
+
email: parameters.email,
|
|
248
|
+
redirectURL: parameters.redirectURL,
|
|
249
|
+
});
|
|
250
|
+
return {
|
|
251
|
+
otpId: result.otpId,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
async function verifyMagicLink(config, parameters) {
|
|
255
|
+
const connector = parameters.connector ?? getZeroDevConnector(config);
|
|
256
|
+
const store = await connector.getStore();
|
|
257
|
+
const wallet = store.getState().wallet;
|
|
258
|
+
if (!wallet)
|
|
259
|
+
throw new Error('Wallet not initialized');
|
|
260
|
+
await wallet.auth({
|
|
261
|
+
type: 'magicLink',
|
|
262
|
+
mode: 'verify',
|
|
263
|
+
otpId: parameters.otpId,
|
|
264
|
+
code: parameters.code,
|
|
265
|
+
});
|
|
266
|
+
const [session, eoaAccount] = await Promise.all([
|
|
267
|
+
wallet.getSession(),
|
|
268
|
+
wallet.toAccount(),
|
|
269
|
+
]);
|
|
270
|
+
store.getState().setEoaAccount(eoaAccount);
|
|
271
|
+
store.getState().setSession(session || null);
|
|
272
|
+
await (0, actions_1.connect)(config, { connector });
|
|
273
|
+
}
|
package/dist/_cjs/connector.js
CHANGED
|
@@ -52,8 +52,15 @@ function zeroDevWallet(params) {
|
|
|
52
52
|
return (0, core_1.createConnector)((wagmiConfig) => {
|
|
53
53
|
let store;
|
|
54
54
|
let provider;
|
|
55
|
+
let initPromise = null;
|
|
55
56
|
const transports = wagmiConfig.transports;
|
|
56
57
|
const initialize = async () => {
|
|
58
|
+
if (initPromise)
|
|
59
|
+
return initPromise;
|
|
60
|
+
initPromise = doInitialize();
|
|
61
|
+
return initPromise;
|
|
62
|
+
};
|
|
63
|
+
const doInitialize = async () => {
|
|
57
64
|
console.log('Initializing ZeroDevWallet connector...');
|
|
58
65
|
const wallet = await (0, wallet_core_1.createZeroDevWallet)({
|
|
59
66
|
projectId: params.projectId,
|
|
@@ -11,7 +11,7 @@ function useLoginPasskey(parameters = {}) {
|
|
|
11
11
|
return (0, react_query_1.useMutation)({
|
|
12
12
|
...mutation,
|
|
13
13
|
async mutationFn(variables) {
|
|
14
|
-
return (0, actions_js_1.loginPasskey)(config, variables);
|
|
14
|
+
return (0, actions_js_1.loginPasskey)(config, variables ?? undefined);
|
|
15
15
|
},
|
|
16
16
|
mutationKey: ['loginPasskey'],
|
|
17
17
|
});
|
|
@@ -11,7 +11,7 @@ function useRegisterPasskey(parameters = {}) {
|
|
|
11
11
|
return (0, react_query_1.useMutation)({
|
|
12
12
|
...mutation,
|
|
13
13
|
async mutationFn(variables) {
|
|
14
|
-
return (0, actions_js_1.registerPasskey)(config, variables);
|
|
14
|
+
return (0, actions_js_1.registerPasskey)(config, variables ?? undefined);
|
|
15
15
|
},
|
|
16
16
|
mutationKey: ['registerPasskey'],
|
|
17
17
|
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.useSendMagicLink = useSendMagicLink;
|
|
5
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
6
|
+
const wagmi_1 = require("wagmi");
|
|
7
|
+
const actions_js_1 = require("../actions.js");
|
|
8
|
+
function useSendMagicLink(parameters = {}) {
|
|
9
|
+
const { mutation } = parameters;
|
|
10
|
+
const config = (0, wagmi_1.useConfig)(parameters);
|
|
11
|
+
return (0, react_query_1.useMutation)({
|
|
12
|
+
...mutation,
|
|
13
|
+
async mutationFn(variables) {
|
|
14
|
+
return (0, actions_js_1.sendMagicLink)(config, variables);
|
|
15
|
+
},
|
|
16
|
+
mutationKey: ['sendMagicLink'],
|
|
17
|
+
});
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.useVerifyMagicLink = useVerifyMagicLink;
|
|
5
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
6
|
+
const wagmi_1 = require("wagmi");
|
|
7
|
+
const actions_js_1 = require("../actions.js");
|
|
8
|
+
function useVerifyMagicLink(parameters = {}) {
|
|
9
|
+
const { mutation } = parameters;
|
|
10
|
+
const config = (0, wagmi_1.useConfig)(parameters);
|
|
11
|
+
return (0, react_query_1.useMutation)({
|
|
12
|
+
...mutation,
|
|
13
|
+
async mutationFn(variables) {
|
|
14
|
+
return (0, actions_js_1.verifyMagicLink)(config, variables);
|
|
15
|
+
},
|
|
16
|
+
mutationKey: ['verifyMagicLink'],
|
|
17
|
+
});
|
|
18
|
+
}
|
package/dist/_cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createZeroDevWalletStore = exports.OAUTH_PROVIDERS = exports.listenForOAuthMessage = exports.handleOAuthCallback = exports.buildBackendOAuthUrl = exports.useVerifyOTP = exports.useSendOTP = exports.useRegisterPasskey = exports.useRefreshSession = exports.useLoginPasskey = exports.useGetUserEmail = exports.useExportWallet = exports.useExportPrivateKey = exports.useAuthenticateOAuth = exports.zeroDevWallet = void 0;
|
|
3
|
+
exports.createZeroDevWalletStore = exports.OAUTH_PROVIDERS = exports.listenForOAuthMessage = exports.handleOAuthCallback = exports.buildBackendOAuthUrl = exports.useVerifyOTP = exports.useVerifyMagicLink = exports.useSendOTP = exports.useSendMagicLink = exports.useRegisterPasskey = exports.useRefreshSession = exports.useLoginPasskey = exports.useGetUserEmail = exports.useExportWallet = exports.useExportPrivateKey = exports.useAuthenticateOAuth = exports.zeroDevWallet = void 0;
|
|
4
4
|
var connector_js_1 = require("./connector.js");
|
|
5
5
|
Object.defineProperty(exports, "zeroDevWallet", { enumerable: true, get: function () { return connector_js_1.zeroDevWallet; } });
|
|
6
6
|
var useAuthenticateOAuth_js_1 = require("./hooks/useAuthenticateOAuth.js");
|
|
@@ -17,8 +17,12 @@ var useRefreshSession_js_1 = require("./hooks/useRefreshSession.js");
|
|
|
17
17
|
Object.defineProperty(exports, "useRefreshSession", { enumerable: true, get: function () { return useRefreshSession_js_1.useRefreshSession; } });
|
|
18
18
|
var useRegisterPasskey_js_1 = require("./hooks/useRegisterPasskey.js");
|
|
19
19
|
Object.defineProperty(exports, "useRegisterPasskey", { enumerable: true, get: function () { return useRegisterPasskey_js_1.useRegisterPasskey; } });
|
|
20
|
+
var useSendMagicLink_js_1 = require("./hooks/useSendMagicLink.js");
|
|
21
|
+
Object.defineProperty(exports, "useSendMagicLink", { enumerable: true, get: function () { return useSendMagicLink_js_1.useSendMagicLink; } });
|
|
20
22
|
var useSendOTP_js_1 = require("./hooks/useSendOTP.js");
|
|
21
23
|
Object.defineProperty(exports, "useSendOTP", { enumerable: true, get: function () { return useSendOTP_js_1.useSendOTP; } });
|
|
24
|
+
var useVerifyMagicLink_js_1 = require("./hooks/useVerifyMagicLink.js");
|
|
25
|
+
Object.defineProperty(exports, "useVerifyMagicLink", { enumerable: true, get: function () { return useVerifyMagicLink_js_1.useVerifyMagicLink; } });
|
|
22
26
|
var useVerifyOTP_js_1 = require("./hooks/useVerifyOTP.js");
|
|
23
27
|
Object.defineProperty(exports, "useVerifyOTP", { enumerable: true, get: function () { return useVerifyOTP_js_1.useVerifyOTP; } });
|
|
24
28
|
var oauth_js_1 = require("./oauth.js");
|
package/dist/_esm/actions.js
CHANGED
|
@@ -15,7 +15,7 @@ function getZeroDevConnector(config) {
|
|
|
15
15
|
* Register with passkey
|
|
16
16
|
*/
|
|
17
17
|
export async function registerPasskey(config, parameters) {
|
|
18
|
-
const connector = parameters
|
|
18
|
+
const connector = parameters?.connector ?? getZeroDevConnector(config);
|
|
19
19
|
// @ts-expect-error - getStore is a custom method
|
|
20
20
|
const store = await connector.getStore();
|
|
21
21
|
const wallet = store.getState().wallet;
|
|
@@ -23,7 +23,6 @@ export async function registerPasskey(config, parameters) {
|
|
|
23
23
|
throw new Error('Wallet not initialized');
|
|
24
24
|
await wallet.auth({
|
|
25
25
|
type: 'passkey',
|
|
26
|
-
email: parameters.email,
|
|
27
26
|
mode: 'register',
|
|
28
27
|
});
|
|
29
28
|
const [session, eoaAccount] = await Promise.all([
|
|
@@ -39,7 +38,7 @@ export async function registerPasskey(config, parameters) {
|
|
|
39
38
|
* Login with passkey
|
|
40
39
|
*/
|
|
41
40
|
export async function loginPasskey(config, parameters) {
|
|
42
|
-
const connector = parameters
|
|
41
|
+
const connector = parameters?.connector ?? getZeroDevConnector(config);
|
|
43
42
|
// @ts-expect-error - getStore is a custom method
|
|
44
43
|
const store = await connector.getStore();
|
|
45
44
|
const wallet = store.getState().wallet;
|
|
@@ -47,7 +46,6 @@ export async function loginPasskey(config, parameters) {
|
|
|
47
46
|
throw new Error('Wallet not initialized');
|
|
48
47
|
await wallet.auth({
|
|
49
48
|
type: 'passkey',
|
|
50
|
-
email: parameters.email,
|
|
51
49
|
mode: 'login',
|
|
52
50
|
});
|
|
53
51
|
const [session, eoaAccount] = await Promise.all([
|
|
@@ -231,6 +229,9 @@ export async function exportWallet(config, parameters) {
|
|
|
231
229
|
iframeElementId: 'export-wallet-iframe',
|
|
232
230
|
});
|
|
233
231
|
const publicKey = await iframeStamper.init();
|
|
232
|
+
if (parameters.iframeStyles) {
|
|
233
|
+
await iframeStamper.applySettings({ styles: parameters.iframeStyles });
|
|
234
|
+
}
|
|
234
235
|
const { exportBundle, organizationId } = await exportWalletSdk({
|
|
235
236
|
wallet,
|
|
236
237
|
targetPublicKey: publicKey,
|
|
@@ -260,6 +261,9 @@ export async function exportPrivateKey(config, parameters) {
|
|
|
260
261
|
iframeElementId: 'export-private-key-iframe',
|
|
261
262
|
});
|
|
262
263
|
const publicKey = await iframeStamper.init();
|
|
264
|
+
if (parameters.iframeStyles) {
|
|
265
|
+
await iframeStamper.applySettings({ styles: parameters.iframeStyles });
|
|
266
|
+
}
|
|
263
267
|
const { exportBundle, organizationId } = await exportPrivateKeySdk({
|
|
264
268
|
wallet,
|
|
265
269
|
targetPublicKey: publicKey,
|
|
@@ -270,3 +274,48 @@ export async function exportPrivateKey(config, parameters) {
|
|
|
270
274
|
throw new Error('Failed to inject export bundle');
|
|
271
275
|
}
|
|
272
276
|
}
|
|
277
|
+
/**
|
|
278
|
+
* Send magic link via email
|
|
279
|
+
*/
|
|
280
|
+
export async function sendMagicLink(config, parameters) {
|
|
281
|
+
const connector = parameters.connector ?? getZeroDevConnector(config);
|
|
282
|
+
// @ts-expect-error - getStore is a custom method
|
|
283
|
+
const store = await connector.getStore();
|
|
284
|
+
const wallet = store.getState().wallet;
|
|
285
|
+
if (!wallet)
|
|
286
|
+
throw new Error('Wallet not initialized');
|
|
287
|
+
const result = await wallet.auth({
|
|
288
|
+
type: 'magicLink',
|
|
289
|
+
mode: 'send',
|
|
290
|
+
email: parameters.email,
|
|
291
|
+
redirectURL: parameters.redirectURL,
|
|
292
|
+
});
|
|
293
|
+
return {
|
|
294
|
+
otpId: result.otpId,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Verify magic link code
|
|
299
|
+
*/
|
|
300
|
+
export async function verifyMagicLink(config, parameters) {
|
|
301
|
+
const connector = parameters.connector ?? getZeroDevConnector(config);
|
|
302
|
+
// @ts-expect-error - getStore is a custom method
|
|
303
|
+
const store = await connector.getStore();
|
|
304
|
+
const wallet = store.getState().wallet;
|
|
305
|
+
if (!wallet)
|
|
306
|
+
throw new Error('Wallet not initialized');
|
|
307
|
+
await wallet.auth({
|
|
308
|
+
type: 'magicLink',
|
|
309
|
+
mode: 'verify',
|
|
310
|
+
otpId: parameters.otpId,
|
|
311
|
+
code: parameters.code,
|
|
312
|
+
});
|
|
313
|
+
const [session, eoaAccount] = await Promise.all([
|
|
314
|
+
wallet.getSession(),
|
|
315
|
+
wallet.toAccount(),
|
|
316
|
+
]);
|
|
317
|
+
store.getState().setEoaAccount(eoaAccount);
|
|
318
|
+
store.getState().setSession(session || null);
|
|
319
|
+
// Auto-connect to Wagmi
|
|
320
|
+
await wagmiConnect(config, { connector });
|
|
321
|
+
}
|
package/dist/_esm/connector.js
CHANGED
|
@@ -58,10 +58,17 @@ export function zeroDevWallet(params) {
|
|
|
58
58
|
return createConnector((wagmiConfig) => {
|
|
59
59
|
let store;
|
|
60
60
|
let provider;
|
|
61
|
+
let initPromise = null;
|
|
61
62
|
// Get transports from Wagmi config (uses user's RPC URLs)
|
|
62
63
|
const transports = wagmiConfig.transports;
|
|
63
|
-
// Lazy initialization - only runs on client side
|
|
64
|
+
// Lazy initialization - only runs on client side (idempotent)
|
|
64
65
|
const initialize = async () => {
|
|
66
|
+
if (initPromise)
|
|
67
|
+
return initPromise;
|
|
68
|
+
initPromise = doInitialize();
|
|
69
|
+
return initPromise;
|
|
70
|
+
};
|
|
71
|
+
const doInitialize = async () => {
|
|
65
72
|
console.log('Initializing ZeroDevWallet connector...');
|
|
66
73
|
// Initialize wallet SDK
|
|
67
74
|
const wallet = await createZeroDevWallet({
|
|
@@ -11,7 +11,7 @@ export function useLoginPasskey(parameters = {}) {
|
|
|
11
11
|
return useMutation({
|
|
12
12
|
...mutation,
|
|
13
13
|
async mutationFn(variables) {
|
|
14
|
-
return loginPasskey(config, variables);
|
|
14
|
+
return loginPasskey(config, variables ?? undefined);
|
|
15
15
|
},
|
|
16
16
|
mutationKey: ['loginPasskey'],
|
|
17
17
|
});
|
|
@@ -11,7 +11,7 @@ export function useRegisterPasskey(parameters = {}) {
|
|
|
11
11
|
return useMutation({
|
|
12
12
|
...mutation,
|
|
13
13
|
async mutationFn(variables) {
|
|
14
|
-
return registerPasskey(config, variables);
|
|
14
|
+
return registerPasskey(config, variables ?? undefined);
|
|
15
15
|
},
|
|
16
16
|
mutationKey: ['registerPasskey'],
|
|
17
17
|
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useMutation, } from '@tanstack/react-query';
|
|
3
|
+
import { useConfig } from 'wagmi';
|
|
4
|
+
import { sendMagicLink } from '../actions.js';
|
|
5
|
+
/**
|
|
6
|
+
* Hook to send a magic link via email
|
|
7
|
+
*/
|
|
8
|
+
export function useSendMagicLink(parameters = {}) {
|
|
9
|
+
const { mutation } = parameters;
|
|
10
|
+
const config = useConfig(parameters);
|
|
11
|
+
return useMutation({
|
|
12
|
+
...mutation,
|
|
13
|
+
async mutationFn(variables) {
|
|
14
|
+
return sendMagicLink(config, variables);
|
|
15
|
+
},
|
|
16
|
+
mutationKey: ['sendMagicLink'],
|
|
17
|
+
});
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useMutation, } from '@tanstack/react-query';
|
|
3
|
+
import { useConfig } from 'wagmi';
|
|
4
|
+
import { verifyMagicLink } from '../actions.js';
|
|
5
|
+
/**
|
|
6
|
+
* Hook to verify a magic link code
|
|
7
|
+
*/
|
|
8
|
+
export function useVerifyMagicLink(parameters = {}) {
|
|
9
|
+
const { mutation } = parameters;
|
|
10
|
+
const config = useConfig(parameters);
|
|
11
|
+
return useMutation({
|
|
12
|
+
...mutation,
|
|
13
|
+
async mutationFn(variables) {
|
|
14
|
+
return verifyMagicLink(config, variables);
|
|
15
|
+
},
|
|
16
|
+
mutationKey: ['verifyMagicLink'],
|
|
17
|
+
});
|
|
18
|
+
}
|
package/dist/_esm/index.js
CHANGED
|
@@ -6,7 +6,9 @@ export { useGetUserEmail } from './hooks/useGetUserEmail.js';
|
|
|
6
6
|
export { useLoginPasskey } from './hooks/useLoginPasskey.js';
|
|
7
7
|
export { useRefreshSession } from './hooks/useRefreshSession.js';
|
|
8
8
|
export { useRegisterPasskey } from './hooks/useRegisterPasskey.js';
|
|
9
|
+
export { useSendMagicLink } from './hooks/useSendMagicLink.js';
|
|
9
10
|
export { useSendOTP } from './hooks/useSendOTP.js';
|
|
11
|
+
export { useVerifyMagicLink } from './hooks/useVerifyMagicLink.js';
|
|
10
12
|
export { useVerifyOTP } from './hooks/useVerifyOTP.js';
|
|
11
13
|
export { buildBackendOAuthUrl, handleOAuthCallback, listenForOAuthMessage, OAUTH_PROVIDERS, } from './oauth.js';
|
|
12
14
|
export { createZeroDevWalletStore } from './store.js';
|
package/dist/_esm/provider.js
CHANGED
|
@@ -109,7 +109,8 @@ export function createProvider({ store, config, }) {
|
|
|
109
109
|
if (!kernelClient) {
|
|
110
110
|
throw new Error(`No kernel client for chain ${chainId}`);
|
|
111
111
|
}
|
|
112
|
-
//
|
|
112
|
+
// Transactions are sent as UserOperations under the hood (EIP-7702).
|
|
113
|
+
// Gasless if a paymaster is configured on the ZeroDev dashboard.
|
|
113
114
|
const hash = await kernelClient.sendTransaction({
|
|
114
115
|
calls: [
|
|
115
116
|
{
|
package/dist/_types/actions.d.ts
CHANGED
|
@@ -3,13 +3,11 @@ import type { OAuthProvider } from './oauth.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Register with passkey
|
|
5
5
|
*/
|
|
6
|
-
export declare function registerPasskey(config: Config, parameters
|
|
7
|
-
email: string;
|
|
6
|
+
export declare function registerPasskey(config: Config, parameters?: {
|
|
8
7
|
connector?: Connector;
|
|
9
8
|
}): Promise<void>;
|
|
10
9
|
export declare namespace registerPasskey {
|
|
11
|
-
type Parameters = {
|
|
12
|
-
email: string;
|
|
10
|
+
type Parameters = void | {
|
|
13
11
|
connector?: Connector;
|
|
14
12
|
};
|
|
15
13
|
type ReturnType = void;
|
|
@@ -18,13 +16,11 @@ export declare namespace registerPasskey {
|
|
|
18
16
|
/**
|
|
19
17
|
* Login with passkey
|
|
20
18
|
*/
|
|
21
|
-
export declare function loginPasskey(config: Config, parameters
|
|
22
|
-
email: string;
|
|
19
|
+
export declare function loginPasskey(config: Config, parameters?: {
|
|
23
20
|
connector?: Connector;
|
|
24
21
|
}): Promise<void>;
|
|
25
22
|
export declare namespace loginPasskey {
|
|
26
|
-
type Parameters = {
|
|
27
|
-
email: string;
|
|
23
|
+
type Parameters = void | {
|
|
28
24
|
connector?: Connector;
|
|
29
25
|
};
|
|
30
26
|
type ReturnType = void;
|
|
@@ -121,11 +117,13 @@ export declare namespace getUserEmail {
|
|
|
121
117
|
*/
|
|
122
118
|
export declare function exportWallet(config: Config, parameters: {
|
|
123
119
|
iframeContainerId: string;
|
|
120
|
+
iframeStyles?: Record<string, string>;
|
|
124
121
|
connector?: Connector;
|
|
125
122
|
}): Promise<void>;
|
|
126
123
|
export declare namespace exportWallet {
|
|
127
124
|
type Parameters = {
|
|
128
125
|
iframeContainerId: string;
|
|
126
|
+
iframeStyles?: Record<string, string>;
|
|
129
127
|
connector?: Connector;
|
|
130
128
|
};
|
|
131
129
|
type ReturnType = void;
|
|
@@ -136,6 +134,7 @@ export declare namespace exportWallet {
|
|
|
136
134
|
*/
|
|
137
135
|
export declare function exportPrivateKey(config: Config, parameters: {
|
|
138
136
|
iframeContainerId: string;
|
|
137
|
+
iframeStyles?: Record<string, string>;
|
|
139
138
|
address?: string;
|
|
140
139
|
keyFormat?: 'Hexadecimal' | 'Solana';
|
|
141
140
|
connector?: Connector;
|
|
@@ -143,6 +142,7 @@ export declare function exportPrivateKey(config: Config, parameters: {
|
|
|
143
142
|
export declare namespace exportPrivateKey {
|
|
144
143
|
type Parameters = {
|
|
145
144
|
iframeContainerId: string;
|
|
145
|
+
iframeStyles?: Record<string, string>;
|
|
146
146
|
address?: string;
|
|
147
147
|
keyFormat?: 'Hexadecimal' | 'Solana';
|
|
148
148
|
connector?: Connector;
|
|
@@ -150,4 +150,42 @@ export declare namespace exportPrivateKey {
|
|
|
150
150
|
type ReturnType = void;
|
|
151
151
|
type ErrorType = Error;
|
|
152
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Send magic link via email
|
|
155
|
+
*/
|
|
156
|
+
export declare function sendMagicLink(config: Config, parameters: {
|
|
157
|
+
email: string;
|
|
158
|
+
redirectURL: string;
|
|
159
|
+
connector?: Connector;
|
|
160
|
+
}): Promise<{
|
|
161
|
+
otpId: string;
|
|
162
|
+
}>;
|
|
163
|
+
export declare namespace sendMagicLink {
|
|
164
|
+
type Parameters = {
|
|
165
|
+
email: string;
|
|
166
|
+
redirectURL: string;
|
|
167
|
+
connector?: Connector;
|
|
168
|
+
};
|
|
169
|
+
type ReturnType = {
|
|
170
|
+
otpId: string;
|
|
171
|
+
};
|
|
172
|
+
type ErrorType = Error;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Verify magic link code
|
|
176
|
+
*/
|
|
177
|
+
export declare function verifyMagicLink(config: Config, parameters: {
|
|
178
|
+
otpId: string;
|
|
179
|
+
code: string;
|
|
180
|
+
connector?: Connector;
|
|
181
|
+
}): Promise<void>;
|
|
182
|
+
export declare namespace verifyMagicLink {
|
|
183
|
+
type Parameters = {
|
|
184
|
+
otpId: string;
|
|
185
|
+
code: string;
|
|
186
|
+
connector?: Connector;
|
|
187
|
+
};
|
|
188
|
+
type ReturnType = void;
|
|
189
|
+
type ErrorType = Error;
|
|
190
|
+
}
|
|
153
191
|
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -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;AAkB/C;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,UAAU,
|
|
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;AAkB/C;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE;IACX,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,UAAU,GAAG,IAAI,GAAG;QACvB,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE;IACX,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,UAAU,GAAG,IAAI,GAAG;QACvB,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,QAAQ,EAAE,aAAa,CAAA;IACvB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAwEf;AAED,MAAM,CAAC,OAAO,WAAW,iBAAiB,CAAC;IACzC,KAAK,UAAU,GAAG;QAChB,QAAQ,EAAE,aAAa,CAAA;QACvB,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,KAAK,EAAE,MAAM,CAAA;IACb,kBAAkB,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB5B;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,UAAU,GAAG;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,kBAAkB,CAAC,EAAE;YAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QACnD,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACnC,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC,KAAK,UAAU,GAAG;QAChB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE;IACV,SAAS,CAAC,EAAE,SAAS,CAAA;CACjB,GACL,OAAO,CAAC,OAAO,CAAC,CAelB;AAED,MAAM,CAAC,OAAO,WAAW,cAAc,CAAC;IACtC,KAAK,UAAU,GAAG;QAChB,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,OAAO,CAAA;IACzB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB7E;AAED,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,UAAU,GAAG;QAChB,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACnC,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,UAAU,GAAG;QAChB,iBAAiB,EAAE,MAAM,CAAA;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrC,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAA;IACpC,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,KAAK,UAAU,GAAG;QAChB,iBAAiB,EAAE,MAAM,CAAA;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrC,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAA;QACpC,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB5B;AAED,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC,KAAK,UAAU,GAAG;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACnC,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,UAAU,GAAG;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB"}
|
|
@@ -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;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,
|
|
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,CA2TnB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type UseMutationOptions, type UseMutationResult } from '@tanstack/react-query';
|
|
2
|
+
import { type Config, type ResolvedRegister } from 'wagmi';
|
|
3
|
+
import { sendMagicLink } from '../actions.js';
|
|
4
|
+
type ConfigParameter<config extends Config = Config> = {
|
|
5
|
+
config?: Config | config | undefined;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Hook to send a magic link via email
|
|
9
|
+
*/
|
|
10
|
+
export declare function useSendMagicLink<config extends Config = ResolvedRegister['config'], context = unknown>(parameters?: useSendMagicLink.Parameters<config, context>): useSendMagicLink.ReturnType<context>;
|
|
11
|
+
export declare namespace useSendMagicLink {
|
|
12
|
+
type Parameters<config extends Config = Config, context = unknown> = ConfigParameter<config> & {
|
|
13
|
+
mutation?: UseMutationOptions<sendMagicLink.ReturnType, sendMagicLink.ErrorType, sendMagicLink.Parameters, context> | undefined;
|
|
14
|
+
};
|
|
15
|
+
type ReturnType<context = unknown> = UseMutationResult<sendMagicLink.ReturnType, sendMagicLink.ErrorType, sendMagicLink.Parameters, context>;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=useSendMagicLink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSendMagicLink.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSendMagicLink.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAEvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,gBAAgB,EAAa,MAAM,OAAO,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,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,gBAAgB,CAC9B,MAAM,SAAS,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAClD,OAAO,GAAG,OAAO,EAEjB,UAAU,GAAE,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAM,GAC5D,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAWtC;AAED,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,KAAK,UAAU,CACb,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,OAAO,GAAG,OAAO,IACf,eAAe,CAAC,MAAM,CAAC,GAAG;QAC5B,QAAQ,CAAC,EACL,kBAAkB,CAChB,aAAa,CAAC,UAAU,EACxB,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,UAAU,EACxB,OAAO,CACR,GACD,SAAS,CAAA;KACd,CAAA;IAED,KAAK,UAAU,CAAC,OAAO,GAAG,OAAO,IAAI,iBAAiB,CACpD,aAAa,CAAC,UAAU,EACxB,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,UAAU,EACxB,OAAO,CACR,CAAA;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type UseMutationOptions, type UseMutationResult } from '@tanstack/react-query';
|
|
2
|
+
import { type Config, type ResolvedRegister } from 'wagmi';
|
|
3
|
+
import { verifyMagicLink } from '../actions.js';
|
|
4
|
+
type ConfigParameter<config extends Config = Config> = {
|
|
5
|
+
config?: Config | config | undefined;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Hook to verify a magic link code
|
|
9
|
+
*/
|
|
10
|
+
export declare function useVerifyMagicLink<config extends Config = ResolvedRegister['config'], context = unknown>(parameters?: useVerifyMagicLink.Parameters<config, context>): useVerifyMagicLink.ReturnType<context>;
|
|
11
|
+
export declare namespace useVerifyMagicLink {
|
|
12
|
+
type Parameters<config extends Config = Config, context = unknown> = ConfigParameter<config> & {
|
|
13
|
+
mutation?: UseMutationOptions<verifyMagicLink.ReturnType, verifyMagicLink.ErrorType, verifyMagicLink.Parameters, context> | undefined;
|
|
14
|
+
};
|
|
15
|
+
type ReturnType<context = unknown> = UseMutationResult<verifyMagicLink.ReturnType, verifyMagicLink.ErrorType, verifyMagicLink.Parameters, context>;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=useVerifyMagicLink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVerifyMagicLink.d.ts","sourceRoot":"","sources":["../../../src/hooks/useVerifyMagicLink.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAEvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,gBAAgB,EAAa,MAAM,OAAO,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,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,kBAAkB,CAChC,MAAM,SAAS,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAClD,OAAO,GAAG,OAAO,EAEjB,UAAU,GAAE,kBAAkB,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAM,GAC9D,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAWxC;AAED,MAAM,CAAC,OAAO,WAAW,kBAAkB,CAAC;IAC1C,KAAK,UAAU,CACb,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,OAAO,GAAG,OAAO,IACf,eAAe,CAAC,MAAM,CAAC,GAAG;QAC5B,QAAQ,CAAC,EACL,kBAAkB,CAChB,eAAe,CAAC,UAAU,EAC1B,eAAe,CAAC,SAAS,EACzB,eAAe,CAAC,UAAU,EAC1B,OAAO,CACR,GACD,SAAS,CAAA;KACd,CAAA;IAED,KAAK,UAAU,CAAC,OAAO,GAAG,OAAO,IAAI,iBAAiB,CACpD,eAAe,CAAC,UAAU,EAC1B,eAAe,CAAC,SAAS,EACzB,eAAe,CAAC,UAAU,EAC1B,OAAO,CACR,CAAA;CACF"}
|