@coinbase/cdp-core 0.0.20 → 0.0.21

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.
Files changed (87) hide show
  1. package/README.md +75 -1
  2. package/dist/esm/index.js +29 -27
  3. package/dist/esm/index103.js +1 -1
  4. package/dist/esm/index15.js +8 -8
  5. package/dist/esm/index16.js +2 -2
  6. package/dist/esm/index17.js +39 -158
  7. package/dist/esm/index18.js +16 -47
  8. package/dist/esm/index19.js +4 -152
  9. package/dist/esm/index2.js +154 -87
  10. package/dist/esm/index20.js +5 -56
  11. package/dist/esm/index21.js +158 -39
  12. package/dist/esm/index22.js +47 -16
  13. package/dist/esm/index23.js +152 -4
  14. package/dist/esm/index24.js +56 -5
  15. package/dist/esm/index25.js +8 -12
  16. package/dist/esm/index26.js +17 -11
  17. package/dist/esm/index27.js +45 -8
  18. package/dist/esm/index28.js +13 -17
  19. package/dist/esm/index29.js +50 -40
  20. package/dist/esm/index3.js +4 -4
  21. package/dist/esm/index30.js +6 -13
  22. package/dist/esm/index31.js +20 -54
  23. package/dist/esm/index32.js +11 -6
  24. package/dist/esm/index33.js +3 -21
  25. package/dist/esm/index34.js +3 -3
  26. package/dist/esm/index35.js +34 -3
  27. package/dist/esm/index36.js +10 -32
  28. package/dist/esm/index37.js +4 -12
  29. package/dist/esm/index38.js +28 -4
  30. package/dist/esm/index39.js +6 -28
  31. package/dist/esm/index40.js +24 -6
  32. package/dist/esm/index41.js +16 -24
  33. package/dist/esm/index42.js +54 -16
  34. package/dist/esm/index43.js +22 -53
  35. package/dist/esm/index44.js +11 -23
  36. package/dist/esm/index45.js +26 -10
  37. package/dist/esm/index46.js +41 -26
  38. package/dist/esm/index47.js +54 -41
  39. package/dist/esm/index48.js +126 -54
  40. package/dist/esm/index49.js +11 -126
  41. package/dist/esm/index50.js +101 -9
  42. package/dist/esm/index51.js +6 -104
  43. package/dist/esm/index52.js +3 -7
  44. package/dist/esm/index53.js +15 -3
  45. package/dist/esm/index54.js +42 -14
  46. package/dist/esm/index55.js +74 -38
  47. package/dist/esm/index56.js +2 -79
  48. package/dist/esm/index57.js +2 -2
  49. package/dist/esm/index58.js +13 -2
  50. package/dist/esm/index59.js +2 -2
  51. package/dist/esm/index6.js +4 -4
  52. package/dist/esm/index60.js +1 -1
  53. package/dist/esm/index61.js +1 -1
  54. package/dist/esm/index62.js +2 -2
  55. package/dist/esm/index63.js +2 -2
  56. package/dist/esm/index64.js +1 -1
  57. package/dist/esm/index65.js +1 -1
  58. package/dist/esm/index66.js +3 -3
  59. package/dist/esm/index7.js +7 -6
  60. package/dist/esm/index70.js +1 -1
  61. package/dist/esm/index72.js +4 -4
  62. package/dist/esm/index73.js +2 -104
  63. package/dist/esm/index74.js +17 -75
  64. package/dist/esm/index75.js +20 -80
  65. package/dist/esm/index76.js +80 -2
  66. package/dist/esm/index77.js +100 -17
  67. package/dist/esm/index78.js +31 -18
  68. package/dist/esm/index79.js +6 -32
  69. package/dist/esm/index8.js +10 -8
  70. package/dist/esm/index80.js +54 -6
  71. package/dist/esm/index81.js +11 -10
  72. package/dist/esm/index82.js +2 -55
  73. package/dist/esm/index83.js +45 -11
  74. package/dist/esm/index84.js +14 -2
  75. package/dist/esm/index85.js +9 -44
  76. package/dist/esm/index86.js +78 -13
  77. package/dist/esm/index88.js +20 -12
  78. package/dist/esm/index89.js +9 -35
  79. package/dist/esm/index90.js +19 -41
  80. package/dist/esm/index91.js +93 -20
  81. package/dist/esm/index92.js +20 -9
  82. package/dist/esm/index93.js +114 -16
  83. package/dist/esm/index94.js +11 -92
  84. package/dist/esm/index95.js +35 -20
  85. package/dist/esm/index96.js +41 -117
  86. package/dist/types/index.d.ts +33 -0
  87. package/package.json +3 -3
@@ -1,89 +1,89 @@
1
- import { configureCdpApiClient as I, setAuthManager as l, initiateAuthentication as v, createEndUserEvmAccount as A, verifyEmailAuthentication as E, verifySmsAuthentication as k, signEvmHashWithEndUserAccount as S, signEvmTransactionWithEndUserAccount as M, sendEvmTransactionWithEndUserAccount as T, signEvmMessageWithEndUserAccount as U, signEvmTypedDataWithEndUserAccount as C, exportEndUserEvmAccount as j } from "@coinbase/cdp-api-client";
2
- import { AuthManager as P } from "./index6.js";
3
- import { toAuthState as d } from "./index7.js";
1
+ import { configureCdpApiClient as A, setAuthManager as v, initiateAuthentication as S, createEndUserEvmAccount as E, createEndUserEvmSmartAccount as g, verifyEmailAuthentication as k, verifySmsAuthentication as U, signEvmHashWithEndUserAccount as M, signEvmTransactionWithEndUserAccount as T, sendEvmTransactionWithEndUserAccount as j, signEvmMessageWithEndUserAccount as O, signEvmTypedDataWithEndUserAccount as P, sendUserOperationWithEndUserAccount as C, getUserOperationWithEndUserAccount as x, exportEndUserEvmAccount as H } from "@coinbase/cdp-api-client";
2
+ import { AuthManager as W } from "./index6.js";
3
+ import { toAuthState as m } from "./index7.js";
4
4
  import { withAuth as o } from "./index8.js";
5
- import { createExportKeyPair as x } from "./index9.js";
6
- import { decryptWithPrivateKey as b } from "./index10.js";
7
- import { MockAuthManager as K } from "./index11.js";
8
- import { mockUser as g } from "./index12.js";
9
- import { isChainSupportedForCDPSends as W } from "./index13.js";
10
- import { getConfig as n, setCoreAuthManager as m, getCoreAuthManager as s, setConfig as D } from "./index14.js";
5
+ import { createExportKeyPair as b } from "./index9.js";
6
+ import { decryptWithPrivateKey as K } from "./index10.js";
7
+ import { MockAuthManager as D } from "./index11.js";
8
+ import { mockUser as p } from "./index12.js";
9
+ import { isChainSupportedForCDPSends as z } from "./index13.js";
10
+ import { getConfig as t, setCoreAuthManager as h, getCoreAuthManager as s, setConfig as N } from "./index14.js";
11
11
  import "viem";
12
- import { serializeTransaction as p } from "./index15.js";
13
- const Q = async (e) => {
12
+ import { serializeTransaction as w } from "./index15.js";
13
+ const _ = async (e) => {
14
14
  if (!e.projectId)
15
15
  throw new Error("Project ID is required");
16
16
  let r;
17
17
  try {
18
- r = n().projectId !== e.projectId;
18
+ r = t().projectId !== e.projectId;
19
19
  } catch {
20
20
  r = !0;
21
21
  }
22
- if (D(e), n().useMock) {
23
- m(new K(n().projectId));
22
+ if (N(e), t().useMock) {
23
+ h(new D(t().projectId));
24
24
  return;
25
25
  }
26
- if (I({
27
- debugging: n().debugging,
28
- basePath: n().basePath
26
+ if (A({
27
+ debugging: t().debugging,
28
+ basePath: t().basePath
29
29
  }), r) {
30
- const t = new P(n().projectId);
31
- m(t), l(t);
30
+ const n = new W(t().projectId);
31
+ h(n), v(n);
32
32
  }
33
33
  await s().ensureInitialized();
34
- }, R = async (e) => h({
34
+ }, ee = async (e) => y({
35
35
  email: e.email,
36
36
  type: "email"
37
- }), X = async (e) => h({
37
+ }), te = async (e) => y({
38
38
  phoneNumber: e.phoneNumber,
39
39
  type: "sms"
40
- }), Y = async (e) => w(
40
+ }), re = async (e) => l(
41
41
  e,
42
42
  "Mock email OTP verified",
43
- (r, t) => E(r, t)
44
- ), Z = async (e) => w(
43
+ (r, n) => k(r, n)
44
+ ), ne = async (e) => l(
45
45
  e,
46
46
  "Mock SMS OTP verified",
47
- (r, t) => k(r, t)
48
- ), _ = async () => s().getUser(), ee = async () => s().isSignedIn(), te = async () => {
49
- if (n().useMock) {
47
+ (r, n) => U(r, n)
48
+ ), se = async () => s().getUser(), ae = async () => s().isSignedIn(), ce = async () => {
49
+ if (t().useMock) {
50
50
  await s().signOut();
51
51
  return;
52
52
  }
53
53
  if (!await s().isSignedIn())
54
54
  throw new Error("User not signed in");
55
55
  await s().signOut();
56
- }, ne = async () => s().getToken(), re = (e) => {
56
+ }, ie = async () => s().getToken(), oe = (e) => {
57
57
  s().addAuthStateChangeCallback(e);
58
- }, se = async (e) => n().useMock ? { signature: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: t }) => ({
59
- signature: (await S(n().projectId, r.userId, {
58
+ }, ue = async (e) => t().useMock ? { signature: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: n }) => ({
59
+ signature: (await M(t().projectId, r.userId, {
60
60
  hash: e.hash,
61
61
  address: e.evmAccount,
62
- walletSecretId: t
62
+ walletSecretId: n
63
63
  })).signature
64
- })), ae = async (e) => n().useMock ? { signedTransaction: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: t }) => {
65
- const i = p(e.transaction);
64
+ })), de = async (e) => t().useMock ? { signedTransaction: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: n }) => {
65
+ const i = w(e.transaction);
66
66
  return {
67
- signedTransaction: (await M(
68
- n().projectId,
67
+ signedTransaction: (await T(
68
+ t().projectId,
69
69
  r.userId,
70
70
  {
71
71
  transaction: i,
72
72
  address: e.evmAccount,
73
- walletSecretId: t
73
+ walletSecretId: n
74
74
  }
75
75
  )).signedTransaction
76
76
  };
77
- }), ie = async (e) => {
78
- if (!W(e.network))
77
+ }), me = async (e) => {
78
+ if (!z(e.network))
79
79
  throw new Error(`Chain ${e.network} is not supported by the CDP Apis`);
80
- if (n().useMock)
80
+ if (t().useMock)
81
81
  return { transactionHash: "0x0" };
82
- const r = p(e.transaction);
83
- return o(e, s(), async ({ user: t, walletSecretId: i }) => ({
84
- transactionHash: (await T(
85
- n().projectId,
86
- t.userId,
82
+ const r = w(e.transaction);
83
+ return o(e, s(), async ({ user: n, walletSecretId: i }) => ({
84
+ transactionHash: (await j(
85
+ t().projectId,
86
+ n.userId,
87
87
  {
88
88
  transaction: r,
89
89
  address: e.evmAccount,
@@ -92,99 +92,166 @@ const Q = async (e) => {
92
92
  }
93
93
  )).transactionHash
94
94
  }));
95
- }, ce = async (e) => n().useMock ? { signature: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: t }) => ({
96
- signature: (await U(n().projectId, r.userId, {
95
+ }, ge = async (e) => t().useMock ? { signature: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: n }) => ({
96
+ signature: (await O(t().projectId, r.userId, {
97
97
  message: e.message,
98
98
  address: e.evmAccount,
99
- walletSecretId: t
99
+ walletSecretId: n
100
100
  })).signature
101
- })), oe = async (e) => n().useMock ? { signature: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: t }) => ({
102
- signature: (await C(n().projectId, r.userId, {
101
+ })), pe = async (e) => t().useMock ? { signature: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: n }) => ({
102
+ signature: (await P(t().projectId, r.userId, {
103
103
  typedData: e.typedData,
104
104
  address: e.evmAccount,
105
- walletSecretId: t
105
+ walletSecretId: n
106
106
  })).signature
107
- })), ue = async (e) => {
108
- if (n().useMock)
107
+ })), he = async (e) => t().useMock ? {
108
+ userOperationHash: "0x1234567890123456789012345678901234567890123456789012345678901234"
109
+ } : o(e, s(), async ({ user: r, walletSecretId: n }) => ({
110
+ userOperationHash: (await C(
111
+ t().projectId,
112
+ r.userId,
113
+ e.evmSmartAccount,
114
+ {
115
+ network: e.network,
116
+ calls: e.calls.map((a) => ({
117
+ to: a.to,
118
+ value: String(a.value ?? 0n),
119
+ data: a.data ?? "0x"
120
+ })),
121
+ walletSecretId: n,
122
+ useCdpPaymaster: e.useCdpPaymaster ?? !1,
123
+ paymasterUrl: e.paymasterUrl
124
+ }
125
+ )).userOpHash
126
+ })), we = async (e) => t().useMock ? {
127
+ userOpHash: e.userOperationHash,
128
+ network: e.network,
129
+ calls: [
130
+ {
131
+ to: "0x1234567890123456789012345678901234567890",
132
+ value: "0",
133
+ data: "0x"
134
+ }
135
+ ],
136
+ status: "complete",
137
+ transactionHash: "0x9876543210987654321098765432109876543210987654321098765432109876",
138
+ receipts: []
139
+ } : o(e, s(), async ({ user: r }) => await x(
140
+ t().projectId,
141
+ r.userId,
142
+ e.evmSmartAccount,
143
+ e.userOperationHash
144
+ )), ye = async (e) => {
145
+ if (t().useMock)
109
146
  return {
110
147
  privateKey: "mock-private-key"
111
148
  };
112
- const r = await x();
113
- return o(e, s(), async ({ user: t, walletSecretId: i }) => {
114
- const a = await j(n().projectId, t.userId, {
149
+ const r = await b();
150
+ return o(e, s(), async ({ user: n, walletSecretId: i }) => {
151
+ const a = await H(t().projectId, n.userId, {
115
152
  address: e.evmAccount,
116
153
  walletSecretId: i,
117
154
  exportEncryptionKey: r.publicKeyBase64
118
155
  });
119
156
  return {
120
- privateKey: await b(
157
+ privateKey: await K(
121
158
  r.privateKey,
122
159
  a.encryptedPrivateKey
123
160
  )
124
161
  };
125
162
  });
126
- }, h = async (e) => {
127
- if (n().useMock)
163
+ }, y = async (e) => {
164
+ if (t().useMock)
128
165
  return {
129
166
  message: "Mock sign in initiated",
130
167
  flowId: "mock-flow-id"
131
168
  };
132
169
  if (await s().isSignedIn())
133
170
  throw new Error("User is already authenticated. Please sign out first.");
134
- const t = await v(n().projectId, e);
171
+ const n = await S(t().projectId, e);
135
172
  return {
136
- flowId: t.flowId,
137
- message: t.message
173
+ flowId: n.flowId,
174
+ message: n.message
138
175
  };
139
- }, w = async (e, r, t) => {
140
- if (n().useMock)
176
+ }, l = async (e, r, n) => {
177
+ if (t().useMock)
141
178
  return await s().setAuthState({
142
179
  accessToken: "mock-access-token",
143
180
  expiresAt: Date.now() + 1e3 * 60 * 60 * 24,
144
- user: g
181
+ user: p
145
182
  }), {
146
183
  message: r,
147
- user: g,
184
+ user: p,
148
185
  isNewUser: !1
149
186
  };
150
187
  if (await s().isSignedIn())
151
188
  throw new Error("User is already authenticated. Please sign out first.");
152
- const a = await t(n().projectId, {
189
+ const a = await n(t().projectId, {
153
190
  flowId: e.flowId,
154
191
  otp: e.otp
155
192
  });
156
- let c = d(a.accessToken, a.validUntil, a.endUser);
193
+ let c = m(a.accessToken, a.validUntil, a.endUser);
157
194
  if (await s().setAuthState(c), !c.user.evmAccounts || c.user.evmAccounts.length === 0)
158
195
  try {
159
- const u = await s().getWalletSecretId(), f = await A(n().projectId, c.user.userId, {
196
+ const u = await s().getWalletSecretId();
197
+ let d = await E(t().projectId, c.user.userId, {
160
198
  walletSecretId: u
161
199
  });
162
- c = d(a.accessToken, a.validUntil, f), await s().setAuthState(c);
200
+ if (t().createAccountOnLogin === "evm-smart") {
201
+ const [I] = d.evmAccounts;
202
+ d = await g(
203
+ t().projectId,
204
+ c.user.userId,
205
+ {
206
+ owner: I,
207
+ enableSpendPermissions: !1
208
+ // Defaulting to false until the feature is ready.
209
+ }
210
+ );
211
+ }
212
+ c = m(a.accessToken, a.validUntil, d), await s().setAuthState(c);
163
213
  } catch (u) {
164
214
  throw new Error(`Failed to create EVM account: ${u}`);
165
215
  }
166
- const y = await s().getUser();
216
+ if (t().createAccountOnLogin === "evm-smart" && (!c.user.evmSmartAccounts || c.user.evmSmartAccounts.length === 0))
217
+ try {
218
+ const [u] = c.user.evmAccounts, d = await g(
219
+ t().projectId,
220
+ c.user.userId,
221
+ {
222
+ owner: u,
223
+ enableSpendPermissions: !1
224
+ // Defaulting to false until the feature is ready.
225
+ }
226
+ );
227
+ c = m(a.accessToken, a.validUntil, d), await s().setAuthState(c);
228
+ } catch (u) {
229
+ throw new Error(`Failed to create EVM Smart Account: ${u}`);
230
+ }
231
+ const f = await s().getUser();
167
232
  return {
168
233
  message: a.message,
169
- user: y,
234
+ user: f,
170
235
  isNewUser: a.isNewEndUser
171
236
  };
172
237
  };
173
238
  export {
174
- ue as exportEvmAccount,
175
- ne as getAccessToken,
176
- _ as getCurrentUser,
177
- Q as initialize,
178
- ee as isSignedIn,
179
- re as onAuthStateChange,
180
- ie as sendEvmTransaction,
181
- se as signEvmHash,
182
- ce as signEvmMessage,
183
- ae as signEvmTransaction,
184
- oe as signEvmTypedData,
185
- R as signInWithEmail,
186
- X as signInWithSms,
187
- te as signOut,
188
- Y as verifyEmailOTP,
189
- Z as verifySmsOTP
239
+ ye as exportEvmAccount,
240
+ ie as getAccessToken,
241
+ se as getCurrentUser,
242
+ we as getUserOperation,
243
+ _ as initialize,
244
+ ae as isSignedIn,
245
+ oe as onAuthStateChange,
246
+ me as sendEvmTransaction,
247
+ he as sendUserOperation,
248
+ ue as signEvmHash,
249
+ ge as signEvmMessage,
250
+ de as signEvmTransaction,
251
+ pe as signEvmTypedData,
252
+ ee as signInWithEmail,
253
+ te as signInWithSms,
254
+ ce as signOut,
255
+ re as verifyEmailOTP,
256
+ ne as verifySmsOTP
190
257
  };
@@ -1,58 +1,7 @@
1
- import { chainConfig as a } from "./index81.js";
2
- import { defineChain as t } from "./index27.js";
3
- const e = 11155111, r = /* @__PURE__ */ t({
4
- ...a,
5
- id: 84532,
6
- network: "base-sepolia",
7
- name: "Base Sepolia",
8
- nativeCurrency: { name: "Sepolia Ether", symbol: "ETH", decimals: 18 },
9
- rpcUrls: {
10
- default: {
11
- http: ["https://sepolia.base.org"]
12
- }
13
- },
14
- blockExplorers: {
15
- default: {
16
- name: "Basescan",
17
- url: "https://sepolia.basescan.org",
18
- apiUrl: "https://api-sepolia.basescan.org/api"
19
- }
20
- },
21
- contracts: {
22
- ...a.contracts,
23
- disputeGameFactory: {
24
- [e]: {
25
- address: "0xd6E6dBf4F7EA0ac412fD8b65ED297e64BB7a06E1"
26
- }
27
- },
28
- l2OutputOracle: {
29
- [e]: {
30
- address: "0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254"
31
- }
32
- },
33
- portal: {
34
- [e]: {
35
- address: "0x49f53e41452c74589e85ca1677426ba426459e85",
36
- blockCreated: 4446677
37
- }
38
- },
39
- l1StandardBridge: {
40
- [e]: {
41
- address: "0xfd0Bf71F60660E2f608ed56e1659C450eB113120",
42
- blockCreated: 4446677
43
- }
44
- },
45
- multicall3: {
46
- address: "0xca11bde05977b3631167028862be2a173976ca11",
47
- blockCreated: 1059647
48
- }
49
- },
50
- testnet: !0,
51
- sourceId: e
52
- });
53
- ({
54
- ...r
55
- });
1
+ const h = async (t) => {
2
+ const a = await window.crypto.subtle.digest("SHA-256", t), r = new Uint8Array(a);
3
+ return Array.from(r).map((s) => s.toString(16).padStart(2, "0")).join("");
4
+ };
56
5
  export {
57
- r as baseSepolia
6
+ h as hash
58
7
  };
@@ -1,43 +1,162 @@
1
- import { CompactSign as i } from "./index70.js";
2
- import { JWTInvalid as r } from "./index71.js";
3
- import { JWTClaimsBuilder as n } from "./index72.js";
4
- class d {
5
- #s;
6
- #t;
7
- constructor(t = {}) {
8
- this.#t = new n(t);
9
- }
10
- setIssuer(t) {
11
- return this.#t.iss = t, this;
12
- }
13
- setSubject(t) {
14
- return this.#t.sub = t, this;
15
- }
16
- setAudience(t) {
17
- return this.#t.aud = t, this;
18
- }
19
- setJti(t) {
20
- return this.#t.jti = t, this;
21
- }
22
- setNotBefore(t) {
23
- return this.#t.nbf = t, this;
24
- }
25
- setExpirationTime(t) {
26
- return this.#t.exp = t, this;
27
- }
28
- setIssuedAt(t) {
29
- return this.#t.iat = t, this;
30
- }
31
- setProtectedHeader(t) {
32
- return this.#s = t, this;
33
- }
34
- async sign(t, e) {
35
- const s = new i(this.#t.data());
36
- if (s.setProtectedHeader(this.#s), Array.isArray(this.#s?.crit) && this.#s.crit.includes("b64") && this.#s.b64 === !1)
37
- throw new r("JWTs MUST NOT use unencoded payload");
38
- return s.sign(t, e);
1
+ const H = (m) => (h, n, r) => {
2
+ const s = r.subscribe;
3
+ return r.subscribe = (c, i, a) => {
4
+ let l = c;
5
+ if (i) {
6
+ const g = a?.equalityFn || Object.is;
7
+ let v = c(r.getState());
8
+ l = (f) => {
9
+ const u = c(f);
10
+ if (!g(v, u)) {
11
+ const y = v;
12
+ i(v = u, y);
13
+ }
14
+ }, a?.fireImmediately && i(v, v);
15
+ }
16
+ return s(l);
17
+ }, m(h, n, r);
18
+ }, R = H;
19
+ function F(m, h) {
20
+ let n;
21
+ try {
22
+ n = m();
23
+ } catch {
24
+ return;
39
25
  }
26
+ return {
27
+ getItem: (s) => {
28
+ var e;
29
+ const c = (a) => a === null ? null : JSON.parse(a, void 0), i = (e = n.getItem(s)) != null ? e : null;
30
+ return i instanceof Promise ? i.then(c) : c(i);
31
+ },
32
+ setItem: (s, e) => n.setItem(s, JSON.stringify(e, void 0)),
33
+ removeItem: (s) => n.removeItem(s)
34
+ };
40
35
  }
36
+ const p = (m) => (h) => {
37
+ try {
38
+ const n = m(h);
39
+ return n instanceof Promise ? n : {
40
+ then(r) {
41
+ return p(r)(n);
42
+ },
43
+ catch(r) {
44
+ return this;
45
+ }
46
+ };
47
+ } catch (n) {
48
+ return {
49
+ then(r) {
50
+ return this;
51
+ },
52
+ catch(r) {
53
+ return p(r)(n);
54
+ }
55
+ };
56
+ }
57
+ }, O = (m, h) => (n, r, s) => {
58
+ let e = {
59
+ storage: F(() => localStorage),
60
+ partialize: (t) => t,
61
+ version: 0,
62
+ merge: (t, S) => ({
63
+ ...S,
64
+ ...t
65
+ }),
66
+ ...h
67
+ }, c = !1;
68
+ const i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set();
69
+ let l = e.storage;
70
+ if (!l)
71
+ return m(
72
+ (...t) => {
73
+ console.warn(
74
+ `[zustand persist middleware] Unable to update item '${e.name}', the given storage is currently unavailable.`
75
+ ), n(...t);
76
+ },
77
+ r,
78
+ s
79
+ );
80
+ const g = () => {
81
+ const t = e.partialize({ ...r() });
82
+ return l.setItem(e.name, {
83
+ state: t,
84
+ version: e.version
85
+ });
86
+ }, v = s.setState;
87
+ s.setState = (t, S) => {
88
+ v(t, S), g();
89
+ };
90
+ const f = m(
91
+ (...t) => {
92
+ n(...t), g();
93
+ },
94
+ r,
95
+ s
96
+ );
97
+ s.getInitialState = () => f;
98
+ let u;
99
+ const y = () => {
100
+ var t, S;
101
+ if (!l) return;
102
+ c = !1, i.forEach((o) => {
103
+ var d;
104
+ return o((d = r()) != null ? d : f);
105
+ });
106
+ const b = ((S = e.onRehydrateStorage) == null ? void 0 : S.call(e, (t = r()) != null ? t : f)) || void 0;
107
+ return p(l.getItem.bind(l))(e.name).then((o) => {
108
+ if (o)
109
+ if (typeof o.version == "number" && o.version !== e.version) {
110
+ if (e.migrate) {
111
+ const d = e.migrate(
112
+ o.state,
113
+ o.version
114
+ );
115
+ return d instanceof Promise ? d.then((I) => [!0, I]) : [!0, d];
116
+ }
117
+ console.error(
118
+ "State loaded from storage couldn't be migrated since no migrate function was provided"
119
+ );
120
+ } else
121
+ return [!1, o.state];
122
+ return [!1, void 0];
123
+ }).then((o) => {
124
+ var d;
125
+ const [I, _] = o;
126
+ if (u = e.merge(
127
+ _,
128
+ (d = r()) != null ? d : f
129
+ ), n(u, !0), I)
130
+ return g();
131
+ }).then(() => {
132
+ b?.(u, void 0), u = r(), c = !0, a.forEach((o) => o(u));
133
+ }).catch((o) => {
134
+ b?.(void 0, o);
135
+ });
136
+ };
137
+ return s.persist = {
138
+ setOptions: (t) => {
139
+ e = {
140
+ ...e,
141
+ ...t
142
+ }, t.storage && (l = t.storage);
143
+ },
144
+ clearStorage: () => {
145
+ l?.removeItem(e.name);
146
+ },
147
+ getOptions: () => e,
148
+ rehydrate: () => y(),
149
+ hasHydrated: () => c,
150
+ onHydrate: (t) => (i.add(t), () => {
151
+ i.delete(t);
152
+ }),
153
+ onFinishHydration: (t) => (a.add(t), () => {
154
+ a.delete(t);
155
+ })
156
+ }, e.skipHydration || y(), u || f;
157
+ }, w = O;
41
158
  export {
42
- d as SignJWT
159
+ F as createJSONStorage,
160
+ w as persist,
161
+ R as subscribeWithSelector
43
162
  };
@@ -1,19 +1,50 @@
1
- async function n() {
2
- const e = await window.crypto.subtle.generateKey(
3
- {
4
- name: "ECDSA",
5
- namedCurve: "P-256"
6
- // secp256r1
7
- },
8
- !1,
9
- // Do not allow key export.
10
- ["sign", "verify"]
11
- // Key usages
12
- ), r = await window.crypto.subtle.exportKey("spki", e.publicKey), t = new Uint8Array(r), a = btoa(
13
- Array.from(t).map((i) => String.fromCharCode(i)).join("")
14
- );
15
- return { privateKey: e.privateKey, publicKeyBase64: a };
1
+ class n {
2
+ events = {};
3
+ /**
4
+ * Add an event listener.
5
+ *
6
+ * @param event - The name of the event to listen for.
7
+ * @param listener - The function to call when the event is emitted.
8
+ */
9
+ on(e, s) {
10
+ this.events[e] || (this.events[e] = []), this.events[e].push(s);
11
+ }
12
+ /**
13
+ * Remove an event listener.
14
+ *
15
+ * @param event - The name of the event to remove the listener from.
16
+ * @param listener - The function to remove from the event listeners.
17
+ */
18
+ removeListener(e, s) {
19
+ if (!this.events[e])
20
+ return;
21
+ const t = this.events[e].indexOf(s);
22
+ t > -1 && this.events[e].splice(t, 1);
23
+ }
24
+ /**
25
+ * Emit an event.
26
+ *
27
+ * @param event - The name of the event to emit.
28
+ * @param args - The arguments to pass to the event listeners.
29
+ */
30
+ emit(e, ...s) {
31
+ this.events[e] && this.events[e].forEach((t) => {
32
+ try {
33
+ t(...s);
34
+ } catch (i) {
35
+ console.error(`Error in event listener for ${e}:`, i);
36
+ }
37
+ });
38
+ }
39
+ /**
40
+ * Remove all listeners for an event.
41
+ *
42
+ * @param event - The name of the event to remove all listeners from. If not provided, removes all listeners for all events.
43
+ */
44
+ removeAllListeners(e) {
45
+ e ? delete this.events[e] : this.events = {};
46
+ }
16
47
  }
17
48
  export {
18
- n as createKeyPair
49
+ n as EventEmitter
19
50
  };