@moon-x/core 0.3.0 → 0.5.0
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/README.md +1 -1
- package/dist/{chunk-CDT4MC7S.mjs → chunk-I56GRKAG.mjs} +19 -39
- package/dist/{chunk-VVL65GIB.mjs → chunk-JU5MWLXH.mjs} +14 -0
- package/dist/index.d.mts +2 -3
- package/dist/index.d.ts +2 -3
- package/dist/index.js +14 -0
- package/dist/index.mjs +1 -1
- package/dist/{interfaces-Bm7fGOAI.d.ts → interfaces-1vfik3Ef.d.ts} +24 -1
- package/dist/{interfaces-CYtJHALV.d.mts → interfaces-BdIeMGGD.d.mts} +24 -1
- package/dist/lib/index.d.mts +33 -3
- package/dist/lib/index.d.ts +33 -3
- package/dist/lib/index.js +23 -47
- package/dist/lib/index.mjs +7 -15
- package/dist/passkey-cache-WnDFQ-v4.d.mts +26 -0
- package/dist/passkey-cache-WnDFQ-v4.d.ts +26 -0
- package/dist/{post-message-CmgAfkOS.d.mts → post-message-Z6cLf0mS.d.mts} +3 -0
- package/dist/{post-message-CmgAfkOS.d.ts → post-message-Z6cLf0mS.d.ts} +3 -0
- package/dist/react/ethereum.d.mts +0 -1
- package/dist/react/ethereum.d.ts +0 -1
- package/dist/react/index.d.mts +41 -3
- package/dist/react/index.d.ts +41 -3
- package/dist/react/index.js +138 -12
- package/dist/react/index.mjs +137 -12
- package/dist/react/solana.d.mts +0 -1
- package/dist/react/solana.d.ts +0 -1
- package/dist/sdk/index.d.mts +87 -16
- package/dist/sdk/index.d.ts +87 -16
- package/dist/sdk/index.js +456 -102
- package/dist/sdk/index.mjs +440 -80
- package/dist/types/index.d.mts +135 -12
- package/dist/types/index.d.ts +135 -12
- package/dist/utils/index.d.mts +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +14 -0
- package/dist/utils/index.mjs +1 -1
- package/dist/web/index.d.mts +2 -2
- package/dist/web/index.d.ts +2 -2
- package/dist/web/index.js +29 -0
- package/dist/web/index.mjs +30 -1
- package/package.json +3 -1
- package/dist/chain-C9dvKXUY.d.mts +0 -48
- package/dist/chain-C9dvKXUY.d.ts +0 -48
- package/dist/passkey-cache-B9PT3AWX.d.mts +0 -47
- package/dist/passkey-cache-B9PT3AWX.d.ts +0 -47
|
@@ -31,6 +31,9 @@ declare const PostMessageMethod: {
|
|
|
31
31
|
readonly SIGN_TYPED_DATA: "SIGN_TYPED_DATA";
|
|
32
32
|
readonly SIGN_HASH: "SIGN_HASH";
|
|
33
33
|
readonly SIGN_7702_AUTHORIZATION: "SIGN_7702_AUTHORIZATION";
|
|
34
|
+
readonly PROVISION_EPHEMERAL_SIGNER: "PROVISION_EPHEMERAL_SIGNER";
|
|
35
|
+
readonly LIST_EPHEMERAL_SIGNERS: "LIST_EPHEMERAL_SIGNERS";
|
|
36
|
+
readonly REVOKE_EPHEMERAL_SIGNER: "REVOKE_EPHEMERAL_SIGNER";
|
|
34
37
|
readonly VERIFY_EMAIL_OTP: "VERIFY_EMAIL_OTP";
|
|
35
38
|
readonly VERIFY_OAUTH: "VERIFY_OAUTH";
|
|
36
39
|
readonly START_OAUTH: "START_OAUTH";
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { EthereumGetBalanceParams, EthereumGetBalanceResult, EthereumSendTransactionParams, EthereumSendTransactionResult, EthereumSign7702AuthorizationParams, EthereumSign7702AuthorizationResult, EthereumSignHashParams, EthereumSignHashResult, EthereumSignMessageParams, EthereumSignMessageResult, EthereumSignTransactionParams, EthereumSignTransactionResult, EthereumSignTypedDataParams, EthereumSignTypedDataResult } from '../types/index.mjs';
|
|
2
|
-
import '../chain-C9dvKXUY.mjs';
|
|
3
2
|
|
|
4
3
|
declare const useSignMessage: () => {
|
|
5
4
|
signMessage: (params: EthereumSignMessageParams) => Promise<EthereumSignMessageResult>;
|
package/dist/react/ethereum.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { EthereumGetBalanceParams, EthereumGetBalanceResult, EthereumSendTransactionParams, EthereumSendTransactionResult, EthereumSign7702AuthorizationParams, EthereumSign7702AuthorizationResult, EthereumSignHashParams, EthereumSignHashResult, EthereumSignMessageParams, EthereumSignMessageResult, EthereumSignTransactionParams, EthereumSignTransactionResult, EthereumSignTypedDataParams, EthereumSignTypedDataResult } from '../types/index.js';
|
|
2
|
-
import '../chain-C9dvKXUY.js';
|
|
3
2
|
|
|
4
3
|
declare const useSignMessage: () => {
|
|
5
4
|
signMessage: (params: EthereumSignMessageParams) => Promise<EthereumSignMessageResult>;
|
package/dist/react/index.d.mts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { PublicWallet } from '../types/index.mjs';
|
|
2
|
+
import { PublicWallet, EphemeralSigner, ListEphemeralSignersResult, ProvisionEphemeralSignerParams, ProvisionEphemeralSignerResult, RevokeEphemeralSignerParams } from '../types/index.mjs';
|
|
3
3
|
import { P as PasskeyMetadata } from '../passkey-metadata-QqFF2SWQ.mjs';
|
|
4
|
-
import '../chain-C9dvKXUY.mjs';
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* The minimal SDK surface the shared hooks rely on. Both platform
|
|
@@ -37,6 +36,9 @@ interface MoonKeyHookSDK {
|
|
|
37
36
|
logout: () => Promise<unknown>;
|
|
38
37
|
getPasskeyStatus: () => Promise<unknown>;
|
|
39
38
|
removePasskey: (credentialIdB64url: string) => Promise<unknown>;
|
|
39
|
+
provisionEphemeralSigner: (params: unknown) => Promise<unknown>;
|
|
40
|
+
listEphemeralSigners: () => Promise<unknown>;
|
|
41
|
+
revokeEphemeralSigner: (params: unknown) => Promise<unknown>;
|
|
40
42
|
sendCode: (params: {
|
|
41
43
|
email: string;
|
|
42
44
|
disableSignup?: boolean;
|
|
@@ -139,6 +141,42 @@ declare const useImportKey: () => {
|
|
|
139
141
|
}>;
|
|
140
142
|
};
|
|
141
143
|
|
|
144
|
+
interface UseEphemeralSignerResult {
|
|
145
|
+
/** Active (non-revoked) ephemeral signers for the current user + app. */
|
|
146
|
+
signers: EphemeralSigner[];
|
|
147
|
+
/** True only on the very first load; false during background re-fetches. */
|
|
148
|
+
isLoading: boolean;
|
|
149
|
+
/** True during background re-fetches (e.g. after provision/revoke). */
|
|
150
|
+
isRefreshing: boolean;
|
|
151
|
+
/** Manual re-fetch. Usually unnecessary — provision/revoke trigger it automatically. */
|
|
152
|
+
refresh: () => Promise<ListEphemeralSignersResult>;
|
|
153
|
+
/**
|
|
154
|
+
* Provision a new ephemeral signer. Resolves to the full result
|
|
155
|
+
* (including the one-time api_priv hex). Triggers a list refresh on
|
|
156
|
+
* success.
|
|
157
|
+
*/
|
|
158
|
+
provision: (params: ProvisionEphemeralSignerParams) => Promise<ProvisionEphemeralSignerResult>;
|
|
159
|
+
isProvisioning: boolean;
|
|
160
|
+
/**
|
|
161
|
+
* The most recent successful provision result. Stays populated so
|
|
162
|
+
* the caller can render the one-time priv-key surface until they
|
|
163
|
+
* call `reset()`.
|
|
164
|
+
*/
|
|
165
|
+
lastProvisioned: ProvisionEphemeralSignerResult | null;
|
|
166
|
+
/**
|
|
167
|
+
* Soft-revoke an ephemeral signer (and forward the revoke to SES).
|
|
168
|
+
* Triggers a list refresh on success. Requires a fresh WebAuthn-bound
|
|
169
|
+
* presence token — the SDK handles the ceremony internally.
|
|
170
|
+
*/
|
|
171
|
+
revoke: (params: RevokeEphemeralSignerParams) => Promise<void>;
|
|
172
|
+
isRevoking: boolean;
|
|
173
|
+
/** Most recent error across list/provision/revoke. Cleared by reset() or by the next successful op. */
|
|
174
|
+
error: string | null;
|
|
175
|
+
/** Clear `lastProvisioned` + `error`. Use after dismissing the success surface. */
|
|
176
|
+
reset: () => void;
|
|
177
|
+
}
|
|
178
|
+
declare const useEphemeralSigner: () => UseEphemeralSignerResult;
|
|
179
|
+
|
|
142
180
|
interface PasskeyStatusEntry {
|
|
143
181
|
id: string;
|
|
144
182
|
credential_id: string;
|
|
@@ -180,4 +218,4 @@ interface UseRemovePasskeyResult {
|
|
|
180
218
|
}
|
|
181
219
|
declare const useRemovePasskey: () => UseRemovePasskeyResult;
|
|
182
220
|
|
|
183
|
-
export { type LoginWithEmailState, type MoonKeyHookSDK, type PasskeyStatusEntry, type RegisterPasskeyResult, SDKProvider, type UseAddPasskeyResult, type UseLoginWithEmailCallbacks, type UsePasskeyStatusResult, type UseRemovePasskeyResult, useAddPasskey, useCreateWallet, useImportKey, useLoginWithEmail, useLogout, useMoonKeySDK, usePasskeyStatus, useRegisterPasskey, useRemovePasskey, useUser, useWallets };
|
|
221
|
+
export { type LoginWithEmailState, type MoonKeyHookSDK, type PasskeyStatusEntry, type RegisterPasskeyResult, SDKProvider, type UseAddPasskeyResult, type UseEphemeralSignerResult, type UseLoginWithEmailCallbacks, type UsePasskeyStatusResult, type UseRemovePasskeyResult, useAddPasskey, useCreateWallet, useEphemeralSigner, useImportKey, useLoginWithEmail, useLogout, useMoonKeySDK, usePasskeyStatus, useRegisterPasskey, useRemovePasskey, useUser, useWallets };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { PublicWallet } from '../types/index.js';
|
|
2
|
+
import { PublicWallet, EphemeralSigner, ListEphemeralSignersResult, ProvisionEphemeralSignerParams, ProvisionEphemeralSignerResult, RevokeEphemeralSignerParams } from '../types/index.js';
|
|
3
3
|
import { P as PasskeyMetadata } from '../passkey-metadata-QqFF2SWQ.js';
|
|
4
|
-
import '../chain-C9dvKXUY.js';
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* The minimal SDK surface the shared hooks rely on. Both platform
|
|
@@ -37,6 +36,9 @@ interface MoonKeyHookSDK {
|
|
|
37
36
|
logout: () => Promise<unknown>;
|
|
38
37
|
getPasskeyStatus: () => Promise<unknown>;
|
|
39
38
|
removePasskey: (credentialIdB64url: string) => Promise<unknown>;
|
|
39
|
+
provisionEphemeralSigner: (params: unknown) => Promise<unknown>;
|
|
40
|
+
listEphemeralSigners: () => Promise<unknown>;
|
|
41
|
+
revokeEphemeralSigner: (params: unknown) => Promise<unknown>;
|
|
40
42
|
sendCode: (params: {
|
|
41
43
|
email: string;
|
|
42
44
|
disableSignup?: boolean;
|
|
@@ -139,6 +141,42 @@ declare const useImportKey: () => {
|
|
|
139
141
|
}>;
|
|
140
142
|
};
|
|
141
143
|
|
|
144
|
+
interface UseEphemeralSignerResult {
|
|
145
|
+
/** Active (non-revoked) ephemeral signers for the current user + app. */
|
|
146
|
+
signers: EphemeralSigner[];
|
|
147
|
+
/** True only on the very first load; false during background re-fetches. */
|
|
148
|
+
isLoading: boolean;
|
|
149
|
+
/** True during background re-fetches (e.g. after provision/revoke). */
|
|
150
|
+
isRefreshing: boolean;
|
|
151
|
+
/** Manual re-fetch. Usually unnecessary — provision/revoke trigger it automatically. */
|
|
152
|
+
refresh: () => Promise<ListEphemeralSignersResult>;
|
|
153
|
+
/**
|
|
154
|
+
* Provision a new ephemeral signer. Resolves to the full result
|
|
155
|
+
* (including the one-time api_priv hex). Triggers a list refresh on
|
|
156
|
+
* success.
|
|
157
|
+
*/
|
|
158
|
+
provision: (params: ProvisionEphemeralSignerParams) => Promise<ProvisionEphemeralSignerResult>;
|
|
159
|
+
isProvisioning: boolean;
|
|
160
|
+
/**
|
|
161
|
+
* The most recent successful provision result. Stays populated so
|
|
162
|
+
* the caller can render the one-time priv-key surface until they
|
|
163
|
+
* call `reset()`.
|
|
164
|
+
*/
|
|
165
|
+
lastProvisioned: ProvisionEphemeralSignerResult | null;
|
|
166
|
+
/**
|
|
167
|
+
* Soft-revoke an ephemeral signer (and forward the revoke to SES).
|
|
168
|
+
* Triggers a list refresh on success. Requires a fresh WebAuthn-bound
|
|
169
|
+
* presence token — the SDK handles the ceremony internally.
|
|
170
|
+
*/
|
|
171
|
+
revoke: (params: RevokeEphemeralSignerParams) => Promise<void>;
|
|
172
|
+
isRevoking: boolean;
|
|
173
|
+
/** Most recent error across list/provision/revoke. Cleared by reset() or by the next successful op. */
|
|
174
|
+
error: string | null;
|
|
175
|
+
/** Clear `lastProvisioned` + `error`. Use after dismissing the success surface. */
|
|
176
|
+
reset: () => void;
|
|
177
|
+
}
|
|
178
|
+
declare const useEphemeralSigner: () => UseEphemeralSignerResult;
|
|
179
|
+
|
|
142
180
|
interface PasskeyStatusEntry {
|
|
143
181
|
id: string;
|
|
144
182
|
credential_id: string;
|
|
@@ -180,4 +218,4 @@ interface UseRemovePasskeyResult {
|
|
|
180
218
|
}
|
|
181
219
|
declare const useRemovePasskey: () => UseRemovePasskeyResult;
|
|
182
220
|
|
|
183
|
-
export { type LoginWithEmailState, type MoonKeyHookSDK, type PasskeyStatusEntry, type RegisterPasskeyResult, SDKProvider, type UseAddPasskeyResult, type UseLoginWithEmailCallbacks, type UsePasskeyStatusResult, type UseRemovePasskeyResult, useAddPasskey, useCreateWallet, useImportKey, useLoginWithEmail, useLogout, useMoonKeySDK, usePasskeyStatus, useRegisterPasskey, useRemovePasskey, useUser, useWallets };
|
|
221
|
+
export { type LoginWithEmailState, type MoonKeyHookSDK, type PasskeyStatusEntry, type RegisterPasskeyResult, SDKProvider, type UseAddPasskeyResult, type UseEphemeralSignerResult, type UseLoginWithEmailCallbacks, type UsePasskeyStatusResult, type UseRemovePasskeyResult, useAddPasskey, useCreateWallet, useEphemeralSigner, useImportKey, useLoginWithEmail, useLogout, useMoonKeySDK, usePasskeyStatus, useRegisterPasskey, useRemovePasskey, useUser, useWallets };
|
package/dist/react/index.js
CHANGED
|
@@ -33,6 +33,7 @@ __export(react_exports, {
|
|
|
33
33
|
SDKProvider: () => SDKProvider,
|
|
34
34
|
useAddPasskey: () => useAddPasskey,
|
|
35
35
|
useCreateWallet: () => useCreateWallet,
|
|
36
|
+
useEphemeralSigner: () => useEphemeralSigner,
|
|
36
37
|
useImportKey: () => useImportKey,
|
|
37
38
|
useLoginWithEmail: () => useLoginWithEmail,
|
|
38
39
|
useLogout: () => useLogout,
|
|
@@ -221,6 +222,130 @@ var useImportKey = () => {
|
|
|
221
222
|
};
|
|
222
223
|
};
|
|
223
224
|
|
|
225
|
+
// src/react/use-ephemeral-signer.ts
|
|
226
|
+
var import_react7 = require("react");
|
|
227
|
+
var useEphemeralSigner = () => {
|
|
228
|
+
const sdk = useMoonKeySDK();
|
|
229
|
+
const [signers, setSigners] = (0, import_react7.useState)([]);
|
|
230
|
+
const [isLoading, setIsLoading] = (0, import_react7.useState)(true);
|
|
231
|
+
const [isRefreshing, setIsRefreshing] = (0, import_react7.useState)(false);
|
|
232
|
+
const [hasLoadedOnce, setHasLoadedOnce] = (0, import_react7.useState)(false);
|
|
233
|
+
const [isProvisioning, setIsProvisioning] = (0, import_react7.useState)(false);
|
|
234
|
+
const [lastProvisioned, setLastProvisioned] = (0, import_react7.useState)(null);
|
|
235
|
+
const [isRevoking, setIsRevoking] = (0, import_react7.useState)(false);
|
|
236
|
+
const [error, setError] = (0, import_react7.useState)(null);
|
|
237
|
+
const refreshInternal = (0, import_react7.useCallback)(
|
|
238
|
+
async (setErrorOnFailure) => {
|
|
239
|
+
if (!sdk.listEphemeralSigners) {
|
|
240
|
+
const msg = "listEphemeralSigners not available on this SDK";
|
|
241
|
+
if (setErrorOnFailure) setError(msg);
|
|
242
|
+
throw new Error(msg);
|
|
243
|
+
}
|
|
244
|
+
if (hasLoadedOnce) {
|
|
245
|
+
setIsRefreshing(true);
|
|
246
|
+
} else {
|
|
247
|
+
setIsLoading(true);
|
|
248
|
+
}
|
|
249
|
+
try {
|
|
250
|
+
const next = await sdk.listEphemeralSigners();
|
|
251
|
+
setSigners(next.signers ?? []);
|
|
252
|
+
setHasLoadedOnce(true);
|
|
253
|
+
return next;
|
|
254
|
+
} catch (err) {
|
|
255
|
+
if (setErrorOnFailure) {
|
|
256
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
257
|
+
setError(msg);
|
|
258
|
+
}
|
|
259
|
+
throw err;
|
|
260
|
+
} finally {
|
|
261
|
+
setIsLoading(false);
|
|
262
|
+
setIsRefreshing(false);
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
[sdk, hasLoadedOnce]
|
|
266
|
+
);
|
|
267
|
+
const refresh = (0, import_react7.useCallback)(async () => {
|
|
268
|
+
setError(null);
|
|
269
|
+
return refreshInternal(true);
|
|
270
|
+
}, [refreshInternal]);
|
|
271
|
+
const provision = (0, import_react7.useCallback)(
|
|
272
|
+
async (params) => {
|
|
273
|
+
if (!sdk.provisionEphemeralSigner) {
|
|
274
|
+
const msg = "provisionEphemeralSigner not available on this SDK";
|
|
275
|
+
setError(msg);
|
|
276
|
+
throw new Error(msg);
|
|
277
|
+
}
|
|
278
|
+
setIsProvisioning(true);
|
|
279
|
+
setError(null);
|
|
280
|
+
try {
|
|
281
|
+
const next = await sdk.provisionEphemeralSigner(
|
|
282
|
+
params
|
|
283
|
+
);
|
|
284
|
+
setLastProvisioned(next);
|
|
285
|
+
refreshInternal(false).catch(() => {
|
|
286
|
+
});
|
|
287
|
+
return next;
|
|
288
|
+
} catch (err) {
|
|
289
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
290
|
+
setError(msg);
|
|
291
|
+
throw err;
|
|
292
|
+
} finally {
|
|
293
|
+
setIsProvisioning(false);
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
[sdk, refreshInternal]
|
|
297
|
+
);
|
|
298
|
+
const revoke = (0, import_react7.useCallback)(
|
|
299
|
+
async (params) => {
|
|
300
|
+
if (!sdk.revokeEphemeralSigner) {
|
|
301
|
+
const msg = "revokeEphemeralSigner not available on this SDK";
|
|
302
|
+
setError(msg);
|
|
303
|
+
throw new Error(msg);
|
|
304
|
+
}
|
|
305
|
+
setIsRevoking(true);
|
|
306
|
+
setError(null);
|
|
307
|
+
try {
|
|
308
|
+
await sdk.revokeEphemeralSigner(params);
|
|
309
|
+
refreshInternal(false).catch(() => {
|
|
310
|
+
});
|
|
311
|
+
} catch (err) {
|
|
312
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
313
|
+
setError(msg);
|
|
314
|
+
throw err;
|
|
315
|
+
} finally {
|
|
316
|
+
setIsRevoking(false);
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
[sdk, refreshInternal]
|
|
320
|
+
);
|
|
321
|
+
const reset = (0, import_react7.useCallback)(() => {
|
|
322
|
+
setLastProvisioned(null);
|
|
323
|
+
setError(null);
|
|
324
|
+
}, []);
|
|
325
|
+
const didAutoFetchRef = (0, import_react7.useRef)(false);
|
|
326
|
+
(0, import_react7.useEffect)(() => {
|
|
327
|
+
if (didAutoFetchRef.current) return;
|
|
328
|
+
if (!sdk.ready) return;
|
|
329
|
+
if (!sdk.listEphemeralSigners) return;
|
|
330
|
+
didAutoFetchRef.current = true;
|
|
331
|
+
refresh().catch(() => {
|
|
332
|
+
});
|
|
333
|
+
}, [sdk.ready, sdk.listEphemeralSigners, refresh]);
|
|
334
|
+
return {
|
|
335
|
+
signers,
|
|
336
|
+
isLoading,
|
|
337
|
+
isRefreshing,
|
|
338
|
+
refresh,
|
|
339
|
+
provision,
|
|
340
|
+
isProvisioning,
|
|
341
|
+
lastProvisioned,
|
|
342
|
+
revoke,
|
|
343
|
+
isRevoking,
|
|
344
|
+
error,
|
|
345
|
+
reset
|
|
346
|
+
};
|
|
347
|
+
};
|
|
348
|
+
|
|
224
349
|
// src/lib/auth/authentication-state.ts
|
|
225
350
|
var AuthenticationState = class {
|
|
226
351
|
constructor() {
|
|
@@ -428,7 +553,7 @@ var import_web3 = require("@solana/web3.js");
|
|
|
428
553
|
var import_bn = __toESM(require("bn.js"));
|
|
429
554
|
|
|
430
555
|
// src/react/use-passkey-status.ts
|
|
431
|
-
var
|
|
556
|
+
var import_react8 = require("react");
|
|
432
557
|
var sharedHasPasskey = null;
|
|
433
558
|
var sharedPasskeys = [];
|
|
434
559
|
var sharedLoading = false;
|
|
@@ -493,18 +618,18 @@ async function sharedRefresh(sdk) {
|
|
|
493
618
|
}
|
|
494
619
|
var usePasskeyStatus = () => {
|
|
495
620
|
const sdk = useMoonKeySDK();
|
|
496
|
-
const [, forceUpdate] = (0,
|
|
497
|
-
(0,
|
|
621
|
+
const [, forceUpdate] = (0, import_react8.useReducer)((x) => x + 1, 0);
|
|
622
|
+
(0, import_react8.useEffect)(() => {
|
|
498
623
|
const cb = () => forceUpdate();
|
|
499
624
|
subscribers.add(cb);
|
|
500
625
|
return () => {
|
|
501
626
|
subscribers.delete(cb);
|
|
502
627
|
};
|
|
503
628
|
}, []);
|
|
504
|
-
const refresh = (0,
|
|
629
|
+
const refresh = (0, import_react8.useCallback)(async () => {
|
|
505
630
|
return sharedRefresh(sdk);
|
|
506
631
|
}, [sdk]);
|
|
507
|
-
(0,
|
|
632
|
+
(0, import_react8.useEffect)(() => {
|
|
508
633
|
if (!sdk?.getPasskeyStatus) return;
|
|
509
634
|
if (sdk.ready && !sdk.isAuthenticated) {
|
|
510
635
|
resetShared();
|
|
@@ -523,12 +648,12 @@ var usePasskeyStatus = () => {
|
|
|
523
648
|
};
|
|
524
649
|
|
|
525
650
|
// src/react/use-manage-passkeys.ts
|
|
526
|
-
var
|
|
651
|
+
var import_react9 = require("react");
|
|
527
652
|
var useAddPasskey = () => {
|
|
528
653
|
const sdk = useMoonKeySDK();
|
|
529
|
-
const [isAdding, setIsAdding] = (0,
|
|
530
|
-
const [error, setError] = (0,
|
|
531
|
-
const addPasskey = (0,
|
|
654
|
+
const [isAdding, setIsAdding] = (0, import_react9.useState)(false);
|
|
655
|
+
const [error, setError] = (0, import_react9.useState)(null);
|
|
656
|
+
const addPasskey = (0, import_react9.useCallback)(
|
|
532
657
|
async (params) => {
|
|
533
658
|
if (!sdk?.addPasskey) throw new Error("SDK not ready");
|
|
534
659
|
setIsAdding(true);
|
|
@@ -549,9 +674,9 @@ var useAddPasskey = () => {
|
|
|
549
674
|
};
|
|
550
675
|
var useRemovePasskey = () => {
|
|
551
676
|
const sdk = useMoonKeySDK();
|
|
552
|
-
const [isRemoving, setIsRemoving] = (0,
|
|
553
|
-
const [error, setError] = (0,
|
|
554
|
-
const removePasskey = (0,
|
|
677
|
+
const [isRemoving, setIsRemoving] = (0, import_react9.useState)(false);
|
|
678
|
+
const [error, setError] = (0, import_react9.useState)(null);
|
|
679
|
+
const removePasskey = (0, import_react9.useCallback)(
|
|
555
680
|
async (credentialIdB64url) => {
|
|
556
681
|
if (!sdk?.removePasskey) throw new Error("SDK not ready");
|
|
557
682
|
setIsRemoving(true);
|
|
@@ -575,6 +700,7 @@ var useRemovePasskey = () => {
|
|
|
575
700
|
SDKProvider,
|
|
576
701
|
useAddPasskey,
|
|
577
702
|
useCreateWallet,
|
|
703
|
+
useEphemeralSigner,
|
|
578
704
|
useImportKey,
|
|
579
705
|
useLoginWithEmail,
|
|
580
706
|
useLogout,
|
package/dist/react/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
formatPasskeyLabel,
|
|
3
3
|
resolvePasskeyMetadata
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-I56GRKAG.mjs";
|
|
5
5
|
import "../chunk-GQKIA37O.mjs";
|
|
6
6
|
import {
|
|
7
7
|
SDKProvider,
|
|
@@ -170,8 +170,132 @@ var useImportKey = () => {
|
|
|
170
170
|
};
|
|
171
171
|
};
|
|
172
172
|
|
|
173
|
+
// src/react/use-ephemeral-signer.ts
|
|
174
|
+
import { useCallback as useCallback6, useEffect as useEffect3, useRef as useRef3, useState as useState5 } from "react";
|
|
175
|
+
var useEphemeralSigner = () => {
|
|
176
|
+
const sdk = useMoonKeySDK();
|
|
177
|
+
const [signers, setSigners] = useState5([]);
|
|
178
|
+
const [isLoading, setIsLoading] = useState5(true);
|
|
179
|
+
const [isRefreshing, setIsRefreshing] = useState5(false);
|
|
180
|
+
const [hasLoadedOnce, setHasLoadedOnce] = useState5(false);
|
|
181
|
+
const [isProvisioning, setIsProvisioning] = useState5(false);
|
|
182
|
+
const [lastProvisioned, setLastProvisioned] = useState5(null);
|
|
183
|
+
const [isRevoking, setIsRevoking] = useState5(false);
|
|
184
|
+
const [error, setError] = useState5(null);
|
|
185
|
+
const refreshInternal = useCallback6(
|
|
186
|
+
async (setErrorOnFailure) => {
|
|
187
|
+
if (!sdk.listEphemeralSigners) {
|
|
188
|
+
const msg = "listEphemeralSigners not available on this SDK";
|
|
189
|
+
if (setErrorOnFailure) setError(msg);
|
|
190
|
+
throw new Error(msg);
|
|
191
|
+
}
|
|
192
|
+
if (hasLoadedOnce) {
|
|
193
|
+
setIsRefreshing(true);
|
|
194
|
+
} else {
|
|
195
|
+
setIsLoading(true);
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
const next = await sdk.listEphemeralSigners();
|
|
199
|
+
setSigners(next.signers ?? []);
|
|
200
|
+
setHasLoadedOnce(true);
|
|
201
|
+
return next;
|
|
202
|
+
} catch (err) {
|
|
203
|
+
if (setErrorOnFailure) {
|
|
204
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
205
|
+
setError(msg);
|
|
206
|
+
}
|
|
207
|
+
throw err;
|
|
208
|
+
} finally {
|
|
209
|
+
setIsLoading(false);
|
|
210
|
+
setIsRefreshing(false);
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
[sdk, hasLoadedOnce]
|
|
214
|
+
);
|
|
215
|
+
const refresh = useCallback6(async () => {
|
|
216
|
+
setError(null);
|
|
217
|
+
return refreshInternal(true);
|
|
218
|
+
}, [refreshInternal]);
|
|
219
|
+
const provision = useCallback6(
|
|
220
|
+
async (params) => {
|
|
221
|
+
if (!sdk.provisionEphemeralSigner) {
|
|
222
|
+
const msg = "provisionEphemeralSigner not available on this SDK";
|
|
223
|
+
setError(msg);
|
|
224
|
+
throw new Error(msg);
|
|
225
|
+
}
|
|
226
|
+
setIsProvisioning(true);
|
|
227
|
+
setError(null);
|
|
228
|
+
try {
|
|
229
|
+
const next = await sdk.provisionEphemeralSigner(
|
|
230
|
+
params
|
|
231
|
+
);
|
|
232
|
+
setLastProvisioned(next);
|
|
233
|
+
refreshInternal(false).catch(() => {
|
|
234
|
+
});
|
|
235
|
+
return next;
|
|
236
|
+
} catch (err) {
|
|
237
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
238
|
+
setError(msg);
|
|
239
|
+
throw err;
|
|
240
|
+
} finally {
|
|
241
|
+
setIsProvisioning(false);
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
[sdk, refreshInternal]
|
|
245
|
+
);
|
|
246
|
+
const revoke = useCallback6(
|
|
247
|
+
async (params) => {
|
|
248
|
+
if (!sdk.revokeEphemeralSigner) {
|
|
249
|
+
const msg = "revokeEphemeralSigner not available on this SDK";
|
|
250
|
+
setError(msg);
|
|
251
|
+
throw new Error(msg);
|
|
252
|
+
}
|
|
253
|
+
setIsRevoking(true);
|
|
254
|
+
setError(null);
|
|
255
|
+
try {
|
|
256
|
+
await sdk.revokeEphemeralSigner(params);
|
|
257
|
+
refreshInternal(false).catch(() => {
|
|
258
|
+
});
|
|
259
|
+
} catch (err) {
|
|
260
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
261
|
+
setError(msg);
|
|
262
|
+
throw err;
|
|
263
|
+
} finally {
|
|
264
|
+
setIsRevoking(false);
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
[sdk, refreshInternal]
|
|
268
|
+
);
|
|
269
|
+
const reset = useCallback6(() => {
|
|
270
|
+
setLastProvisioned(null);
|
|
271
|
+
setError(null);
|
|
272
|
+
}, []);
|
|
273
|
+
const didAutoFetchRef = useRef3(false);
|
|
274
|
+
useEffect3(() => {
|
|
275
|
+
if (didAutoFetchRef.current) return;
|
|
276
|
+
if (!sdk.ready) return;
|
|
277
|
+
if (!sdk.listEphemeralSigners) return;
|
|
278
|
+
didAutoFetchRef.current = true;
|
|
279
|
+
refresh().catch(() => {
|
|
280
|
+
});
|
|
281
|
+
}, [sdk.ready, sdk.listEphemeralSigners, refresh]);
|
|
282
|
+
return {
|
|
283
|
+
signers,
|
|
284
|
+
isLoading,
|
|
285
|
+
isRefreshing,
|
|
286
|
+
refresh,
|
|
287
|
+
provision,
|
|
288
|
+
isProvisioning,
|
|
289
|
+
lastProvisioned,
|
|
290
|
+
revoke,
|
|
291
|
+
isRevoking,
|
|
292
|
+
error,
|
|
293
|
+
reset
|
|
294
|
+
};
|
|
295
|
+
};
|
|
296
|
+
|
|
173
297
|
// src/react/use-passkey-status.ts
|
|
174
|
-
import { useCallback as
|
|
298
|
+
import { useCallback as useCallback7, useEffect as useEffect4, useReducer } from "react";
|
|
175
299
|
var sharedHasPasskey = null;
|
|
176
300
|
var sharedPasskeys = [];
|
|
177
301
|
var sharedLoading = false;
|
|
@@ -237,17 +361,17 @@ async function sharedRefresh(sdk) {
|
|
|
237
361
|
var usePasskeyStatus = () => {
|
|
238
362
|
const sdk = useMoonKeySDK();
|
|
239
363
|
const [, forceUpdate] = useReducer((x) => x + 1, 0);
|
|
240
|
-
|
|
364
|
+
useEffect4(() => {
|
|
241
365
|
const cb = () => forceUpdate();
|
|
242
366
|
subscribers.add(cb);
|
|
243
367
|
return () => {
|
|
244
368
|
subscribers.delete(cb);
|
|
245
369
|
};
|
|
246
370
|
}, []);
|
|
247
|
-
const refresh =
|
|
371
|
+
const refresh = useCallback7(async () => {
|
|
248
372
|
return sharedRefresh(sdk);
|
|
249
373
|
}, [sdk]);
|
|
250
|
-
|
|
374
|
+
useEffect4(() => {
|
|
251
375
|
if (!sdk?.getPasskeyStatus) return;
|
|
252
376
|
if (sdk.ready && !sdk.isAuthenticated) {
|
|
253
377
|
resetShared();
|
|
@@ -266,12 +390,12 @@ var usePasskeyStatus = () => {
|
|
|
266
390
|
};
|
|
267
391
|
|
|
268
392
|
// src/react/use-manage-passkeys.ts
|
|
269
|
-
import { useCallback as
|
|
393
|
+
import { useCallback as useCallback8, useState as useState6 } from "react";
|
|
270
394
|
var useAddPasskey = () => {
|
|
271
395
|
const sdk = useMoonKeySDK();
|
|
272
|
-
const [isAdding, setIsAdding] =
|
|
273
|
-
const [error, setError] =
|
|
274
|
-
const addPasskey =
|
|
396
|
+
const [isAdding, setIsAdding] = useState6(false);
|
|
397
|
+
const [error, setError] = useState6(null);
|
|
398
|
+
const addPasskey = useCallback8(
|
|
275
399
|
async (params) => {
|
|
276
400
|
if (!sdk?.addPasskey) throw new Error("SDK not ready");
|
|
277
401
|
setIsAdding(true);
|
|
@@ -292,9 +416,9 @@ var useAddPasskey = () => {
|
|
|
292
416
|
};
|
|
293
417
|
var useRemovePasskey = () => {
|
|
294
418
|
const sdk = useMoonKeySDK();
|
|
295
|
-
const [isRemoving, setIsRemoving] =
|
|
296
|
-
const [error, setError] =
|
|
297
|
-
const removePasskey =
|
|
419
|
+
const [isRemoving, setIsRemoving] = useState6(false);
|
|
420
|
+
const [error, setError] = useState6(null);
|
|
421
|
+
const removePasskey = useCallback8(
|
|
298
422
|
async (credentialIdB64url) => {
|
|
299
423
|
if (!sdk?.removePasskey) throw new Error("SDK not ready");
|
|
300
424
|
setIsRemoving(true);
|
|
@@ -317,6 +441,7 @@ export {
|
|
|
317
441
|
SDKProvider,
|
|
318
442
|
useAddPasskey,
|
|
319
443
|
useCreateWallet,
|
|
444
|
+
useEphemeralSigner,
|
|
320
445
|
useImportKey,
|
|
321
446
|
useLoginWithEmail,
|
|
322
447
|
useLogout,
|
package/dist/react/solana.d.mts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { SolanaGetBalanceParams, SolanaGetBalanceResult, SolanaSendTransactionParams, SolanaSendTransactionResult, SolanaSignMessageParams, SolanaSignMessageResult, SolanaSignTransactionParams, SolanaSignTransactionResult } from '../types/index.mjs';
|
|
2
|
-
import '../chain-C9dvKXUY.mjs';
|
|
3
2
|
|
|
4
3
|
declare const useSignMessage: () => {
|
|
5
4
|
signMessage: (params: SolanaSignMessageParams) => Promise<SolanaSignMessageResult>;
|
package/dist/react/solana.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { SolanaGetBalanceParams, SolanaGetBalanceResult, SolanaSendTransactionParams, SolanaSendTransactionResult, SolanaSignMessageParams, SolanaSignMessageResult, SolanaSignTransactionParams, SolanaSignTransactionResult } from '../types/index.js';
|
|
2
|
-
import '../chain-C9dvKXUY.js';
|
|
3
2
|
|
|
4
3
|
declare const useSignMessage: () => {
|
|
5
4
|
signMessage: (params: SolanaSignMessageParams) => Promise<SolanaSignMessageResult>;
|