@convex-dev/better-auth 0.8.8 → 0.9.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/dist/commonjs/client/adapter.d.ts +8 -4
- package/dist/commonjs/client/adapter.d.ts.map +1 -1
- package/dist/commonjs/client/adapter.js +45 -8
- package/dist/commonjs/client/adapter.js.map +1 -1
- package/dist/commonjs/client/adapterUtils.d.ts +6 -6
- package/dist/commonjs/client/adapterUtils.d.ts.map +1 -1
- package/dist/commonjs/client/adapterUtils.js +17 -9
- package/dist/commonjs/client/adapterUtils.js.map +1 -1
- package/dist/commonjs/client/createSchema.d.ts +0 -5
- package/dist/commonjs/client/createSchema.d.ts.map +1 -1
- package/dist/commonjs/client/createSchema.js +0 -8
- package/dist/commonjs/client/createSchema.js.map +1 -1
- package/dist/commonjs/client/index.d.ts +76 -3367
- package/dist/commonjs/client/index.d.ts.map +1 -1
- package/dist/commonjs/client/index.js +100 -33
- package/dist/commonjs/client/index.js.map +1 -1
- package/dist/commonjs/component/adapter.d.ts +23 -21
- package/dist/commonjs/component/adapter.d.ts.map +1 -1
- package/dist/commonjs/component/adapter.js +1 -1
- package/dist/commonjs/component/adapter.js.map +1 -1
- package/dist/commonjs/component/adapterTest.d.ts +1 -1
- package/dist/commonjs/component/adapterTest.d.ts.map +1 -1
- package/dist/commonjs/component/schema.d.ts +16 -419
- package/dist/commonjs/component/schema.d.ts.map +1 -1
- package/dist/commonjs/component/schema.js +6 -196
- package/dist/commonjs/component/schema.js.map +1 -1
- package/dist/commonjs/plugins/convex/index.d.ts +10 -2
- package/dist/commonjs/plugins/convex/index.d.ts.map +1 -1
- package/dist/commonjs/plugins/convex/index.js +17 -1
- package/dist/commonjs/plugins/convex/index.js.map +1 -1
- package/dist/commonjs/plugins/cross-domain/index.d.ts +5 -0
- package/dist/commonjs/plugins/cross-domain/index.d.ts.map +1 -1
- package/dist/commonjs/plugins/cross-domain/index.js +8 -0
- package/dist/commonjs/plugins/cross-domain/index.js.map +1 -1
- package/dist/commonjs/react/index.js +3 -2
- package/dist/commonjs/react/index.js.map +1 -1
- package/dist/commonjs/react-start/index.d.ts.map +1 -1
- package/dist/commonjs/react-start/index.js +10 -2
- package/dist/commonjs/react-start/index.js.map +1 -1
- package/dist/commonjs/utils/index.d.ts +5 -5
- package/dist/commonjs/utils/index.d.ts.map +1 -1
- package/dist/commonjs/utils/index.js +9 -11
- package/dist/commonjs/utils/index.js.map +1 -1
- package/dist/esm/client/adapter.d.ts +8 -4
- package/dist/esm/client/adapter.d.ts.map +1 -1
- package/dist/esm/client/adapter.js +45 -8
- package/dist/esm/client/adapter.js.map +1 -1
- package/dist/esm/client/adapterUtils.d.ts +6 -6
- package/dist/esm/client/adapterUtils.d.ts.map +1 -1
- package/dist/esm/client/adapterUtils.js +17 -9
- package/dist/esm/client/adapterUtils.js.map +1 -1
- package/dist/esm/client/createSchema.d.ts +0 -5
- package/dist/esm/client/createSchema.d.ts.map +1 -1
- package/dist/esm/client/createSchema.js +0 -8
- package/dist/esm/client/createSchema.js.map +1 -1
- package/dist/esm/client/index.d.ts +76 -3367
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +100 -33
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/component/adapter.d.ts +23 -21
- package/dist/esm/component/adapter.d.ts.map +1 -1
- package/dist/esm/component/adapter.js +1 -1
- package/dist/esm/component/adapter.js.map +1 -1
- package/dist/esm/component/adapterTest.d.ts +1 -1
- package/dist/esm/component/adapterTest.d.ts.map +1 -1
- package/dist/esm/component/schema.d.ts +16 -419
- package/dist/esm/component/schema.d.ts.map +1 -1
- package/dist/esm/component/schema.js +6 -196
- package/dist/esm/component/schema.js.map +1 -1
- package/dist/esm/plugins/convex/index.d.ts +10 -2
- package/dist/esm/plugins/convex/index.d.ts.map +1 -1
- package/dist/esm/plugins/convex/index.js +17 -1
- package/dist/esm/plugins/convex/index.js.map +1 -1
- package/dist/esm/plugins/cross-domain/index.d.ts +5 -0
- package/dist/esm/plugins/cross-domain/index.d.ts.map +1 -1
- package/dist/esm/plugins/cross-domain/index.js +8 -0
- package/dist/esm/plugins/cross-domain/index.js.map +1 -1
- package/dist/esm/react/index.js +3 -2
- package/dist/esm/react/index.js.map +1 -1
- package/dist/esm/react-start/index.d.ts.map +1 -1
- package/dist/esm/react-start/index.js +10 -2
- package/dist/esm/react-start/index.js.map +1 -1
- package/dist/esm/utils/index.d.ts +5 -5
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +9 -11
- package/dist/esm/utils/index.js.map +1 -1
- package/package.json +13 -8
- package/src/client/adapter.test.ts +94 -34
- package/src/client/adapter.ts +66 -14
- package/src/client/adapterUtils.ts +23 -8
- package/src/client/createSchema.ts +0 -8
- package/src/client/index.ts +124 -63
- package/src/component/_generated/api.d.ts +133 -1303
- package/src/component/adapter.ts +1 -0
- package/src/component/schema.ts +11 -214
- package/src/plugins/convex/index.ts +21 -1
- package/src/plugins/cross-domain/index.ts +8 -0
- package/src/react/index.tsx +3 -2
- package/src/react-start/index.ts +10 -2
- package/src/utils/index.ts +20 -10
- package/dist/commonjs/react/client.d.ts +0 -31
- package/dist/commonjs/react/client.d.ts.map +0 -1
- package/dist/commonjs/react/client.js +0 -96
- package/dist/commonjs/react/client.js.map +0 -1
- package/dist/commonjs/react/old-index.d.ts +0 -9
- package/dist/commonjs/react/old-index.d.ts.map +0 -1
- package/dist/commonjs/react/old-index.js +0 -15
- package/dist/commonjs/react/old-index.js.map +0 -1
- package/dist/esm/react/client.d.ts +0 -31
- package/dist/esm/react/client.d.ts.map +0 -1
- package/dist/esm/react/client.js +0 -96
- package/dist/esm/react/client.js.map +0 -1
- package/dist/esm/react/old-index.d.ts +0 -9
- package/dist/esm/react/old-index.d.ts.map +0 -1
- package/dist/esm/react/old-index.js +0 -15
- package/dist/esm/react/old-index.js.map +0 -1
package/src/component/adapter.ts
CHANGED
package/src/component/schema.ts
CHANGED
|
@@ -21,7 +21,7 @@ export const tables = {
|
|
|
21
21
|
phoneNumberVerified: v.optional(v.union(v.null(), v.boolean())),
|
|
22
22
|
userId: v.optional(v.union(v.null(), v.string())),
|
|
23
23
|
})
|
|
24
|
-
.index("email_name", ["email",
|
|
24
|
+
.index("email_name", ["email","name"])
|
|
25
25
|
.index("name", ["name"])
|
|
26
26
|
.index("userId", ["userId"])
|
|
27
27
|
.index("username", ["username"])
|
|
@@ -36,7 +36,7 @@ export const tables = {
|
|
|
36
36
|
userId: v.string(),
|
|
37
37
|
})
|
|
38
38
|
.index("expiresAt", ["expiresAt"])
|
|
39
|
-
.index("expiresAt_userId", ["expiresAt",
|
|
39
|
+
.index("expiresAt_userId", ["expiresAt","userId"])
|
|
40
40
|
.index("token", ["token"])
|
|
41
41
|
.index("userId", ["userId"]),
|
|
42
42
|
account: defineTable({
|
|
@@ -54,8 +54,8 @@ export const tables = {
|
|
|
54
54
|
updatedAt: v.number(),
|
|
55
55
|
})
|
|
56
56
|
.index("accountId", ["accountId"])
|
|
57
|
-
.index("accountId_providerId", ["accountId",
|
|
58
|
-
.index("providerId_userId", ["providerId",
|
|
57
|
+
.index("accountId_providerId", ["accountId","providerId"])
|
|
58
|
+
.index("providerId_userId", ["providerId","userId"])
|
|
59
59
|
.index("userId", ["userId"]),
|
|
60
60
|
verification: defineTable({
|
|
61
61
|
identifier: v.string(),
|
|
@@ -70,7 +70,8 @@ export const tables = {
|
|
|
70
70
|
secret: v.string(),
|
|
71
71
|
backupCodes: v.string(),
|
|
72
72
|
userId: v.string(),
|
|
73
|
-
})
|
|
73
|
+
})
|
|
74
|
+
.index("userId", ["userId"]),
|
|
74
75
|
passkey: defineTable({
|
|
75
76
|
name: v.optional(v.union(v.null(), v.string())),
|
|
76
77
|
publicKey: v.string(),
|
|
@@ -100,7 +101,6 @@ export const tables = {
|
|
|
100
101
|
})
|
|
101
102
|
.index("clientId", ["clientId"])
|
|
102
103
|
.index("userId", ["userId"]),
|
|
103
|
-
|
|
104
104
|
oauthAccessToken: defineTable({
|
|
105
105
|
accessToken: v.optional(v.union(v.null(), v.string())),
|
|
106
106
|
refreshToken: v.optional(v.union(v.null(), v.string())),
|
|
@@ -116,7 +116,6 @@ export const tables = {
|
|
|
116
116
|
.index("refreshToken", ["refreshToken"])
|
|
117
117
|
.index("clientId", ["clientId"])
|
|
118
118
|
.index("userId", ["userId"]),
|
|
119
|
-
|
|
120
119
|
oauthConsent: defineTable({
|
|
121
120
|
clientId: v.optional(v.union(v.null(), v.string())),
|
|
122
121
|
userId: v.optional(v.union(v.null(), v.string())),
|
|
@@ -125,229 +124,27 @@ export const tables = {
|
|
|
125
124
|
updatedAt: v.optional(v.union(v.null(), v.number())),
|
|
126
125
|
consentGiven: v.optional(v.union(v.null(), v.boolean())),
|
|
127
126
|
})
|
|
128
|
-
.index("clientId_userId", ["clientId",
|
|
129
|
-
.index("userId", ["userId"]),
|
|
130
|
-
|
|
131
|
-
team: defineTable({
|
|
132
|
-
name: v.string(),
|
|
133
|
-
organizationId: v.string(),
|
|
134
|
-
createdAt: v.number(),
|
|
135
|
-
updatedAt: v.optional(v.union(v.null(), v.number())),
|
|
136
|
-
}).index("organizationId", ["organizationId"]),
|
|
137
|
-
|
|
138
|
-
teamMember: defineTable({
|
|
139
|
-
teamId: v.string(),
|
|
140
|
-
userId: v.string(),
|
|
141
|
-
createdAt: v.optional(v.union(v.null(), v.number())),
|
|
142
|
-
})
|
|
143
|
-
.index("teamId", ["teamId"])
|
|
127
|
+
.index("clientId_userId", ["clientId","userId"])
|
|
144
128
|
.index("userId", ["userId"]),
|
|
145
|
-
|
|
146
|
-
organization: defineTable({
|
|
147
|
-
name: v.string(),
|
|
148
|
-
slug: v.optional(v.union(v.null(), v.string())),
|
|
149
|
-
logo: v.optional(v.union(v.null(), v.string())),
|
|
150
|
-
createdAt: v.number(),
|
|
151
|
-
metadata: v.optional(v.union(v.null(), v.string())),
|
|
152
|
-
})
|
|
153
|
-
.index("name", ["name"])
|
|
154
|
-
.index("slug", ["slug"]),
|
|
155
|
-
|
|
156
|
-
member: defineTable({
|
|
157
|
-
organizationId: v.string(),
|
|
158
|
-
userId: v.string(),
|
|
159
|
-
role: v.string(),
|
|
160
|
-
createdAt: v.number(),
|
|
161
|
-
})
|
|
162
|
-
.index("organizationId_userId", ["organizationId", "userId"])
|
|
163
|
-
.index("userId", ["userId"])
|
|
164
|
-
.index("role", ["role"]),
|
|
165
|
-
|
|
166
|
-
invitation: defineTable({
|
|
167
|
-
organizationId: v.string(),
|
|
168
|
-
email: v.string(),
|
|
169
|
-
role: v.optional(v.union(v.null(), v.string())),
|
|
170
|
-
teamId: v.optional(v.union(v.null(), v.string())),
|
|
171
|
-
status: v.string(),
|
|
172
|
-
expiresAt: v.number(),
|
|
173
|
-
inviterId: v.string(),
|
|
174
|
-
})
|
|
175
|
-
.index("email_organizationId_status", ["email", "organizationId", "status"])
|
|
176
|
-
.index("organizationId_status", ["organizationId", "status"])
|
|
177
|
-
.index("role", ["role"])
|
|
178
|
-
.index("teamId", ["teamId"])
|
|
179
|
-
.index("status", ["status"])
|
|
180
|
-
.index("inviterId", ["inviterId"]),
|
|
181
|
-
|
|
182
|
-
ssoProvider: defineTable({
|
|
183
|
-
issuer: v.string(),
|
|
184
|
-
oidcConfig: v.optional(v.union(v.null(), v.string())),
|
|
185
|
-
samlConfig: v.optional(v.union(v.null(), v.string())),
|
|
186
|
-
userId: v.optional(v.union(v.null(), v.string())),
|
|
187
|
-
providerId: v.string(),
|
|
188
|
-
organizationId: v.optional(v.union(v.null(), v.string())),
|
|
189
|
-
domain: v.string(),
|
|
190
|
-
})
|
|
191
|
-
.index("organizationId", ["organizationId"])
|
|
192
|
-
.index("domain", ["domain"])
|
|
193
|
-
.index("userId", ["userId"])
|
|
194
|
-
.index("providerId", ["providerId"]),
|
|
195
|
-
|
|
196
129
|
jwks: defineTable({
|
|
197
130
|
publicKey: v.string(),
|
|
198
131
|
privateKey: v.string(),
|
|
199
132
|
createdAt: v.number(),
|
|
200
133
|
}),
|
|
201
|
-
|
|
202
|
-
subscription: defineTable({
|
|
203
|
-
plan: v.string(),
|
|
204
|
-
referenceId: v.string(),
|
|
205
|
-
stripeCustomerId: v.optional(v.union(v.null(), v.string())),
|
|
206
|
-
stripeSubscriptionId: v.optional(v.union(v.null(), v.string())),
|
|
207
|
-
status: v.optional(v.union(v.null(), v.string())),
|
|
208
|
-
periodStart: v.optional(v.union(v.null(), v.number())),
|
|
209
|
-
periodEnd: v.optional(v.union(v.null(), v.number())),
|
|
210
|
-
trialStart: v.optional(v.union(v.null(), v.number())),
|
|
211
|
-
trialEnd: v.optional(v.union(v.null(), v.number())),
|
|
212
|
-
cancelAtPeriodEnd: v.optional(v.union(v.null(), v.boolean())),
|
|
213
|
-
seats: v.optional(v.union(v.null(), v.number())),
|
|
214
|
-
})
|
|
215
|
-
.index("stripeSubscriptionId", ["stripeSubscriptionId"])
|
|
216
|
-
.index("stripeCustomerId", ["stripeCustomerId"])
|
|
217
|
-
.index("referenceId", ["referenceId"]),
|
|
218
|
-
|
|
219
|
-
walletAddress: defineTable({
|
|
220
|
-
userId: v.string(),
|
|
221
|
-
address: v.string(),
|
|
222
|
-
chainId: v.number(),
|
|
223
|
-
isPrimary: v.optional(v.union(v.null(), v.boolean())),
|
|
224
|
-
createdAt: v.number(),
|
|
225
|
-
}).index("userId", ["userId"]),
|
|
226
|
-
|
|
227
134
|
rateLimit: defineTable({
|
|
228
135
|
key: v.optional(v.union(v.null(), v.string())),
|
|
229
136
|
count: v.optional(v.union(v.null(), v.number())),
|
|
230
137
|
lastRequest: v.optional(v.union(v.null(), v.number())),
|
|
231
|
-
})
|
|
138
|
+
})
|
|
139
|
+
.index("key", ["key"]),
|
|
232
140
|
ratelimit: defineTable({
|
|
233
141
|
key: v.string(),
|
|
234
142
|
count: v.number(),
|
|
235
143
|
lastRequest: v.number(),
|
|
236
|
-
})
|
|
144
|
+
})
|
|
145
|
+
.index("key", ["key"]),
|
|
237
146
|
};
|
|
238
147
|
|
|
239
148
|
const schema = defineSchema(tables);
|
|
240
149
|
|
|
241
150
|
export default schema;
|
|
242
|
-
|
|
243
|
-
export const specialFields = {
|
|
244
|
-
user: {
|
|
245
|
-
name: {
|
|
246
|
-
sortable: true,
|
|
247
|
-
},
|
|
248
|
-
email: {
|
|
249
|
-
sortable: true,
|
|
250
|
-
unique: true,
|
|
251
|
-
},
|
|
252
|
-
username: {
|
|
253
|
-
sortable: true,
|
|
254
|
-
unique: true,
|
|
255
|
-
},
|
|
256
|
-
phoneNumber: {
|
|
257
|
-
sortable: true,
|
|
258
|
-
unique: true,
|
|
259
|
-
},
|
|
260
|
-
},
|
|
261
|
-
session: {
|
|
262
|
-
token: {
|
|
263
|
-
unique: true,
|
|
264
|
-
},
|
|
265
|
-
userId: {
|
|
266
|
-
references: {
|
|
267
|
-
model: "user",
|
|
268
|
-
field: "id",
|
|
269
|
-
onDelete: "cascade",
|
|
270
|
-
},
|
|
271
|
-
},
|
|
272
|
-
},
|
|
273
|
-
account: {
|
|
274
|
-
userId: {
|
|
275
|
-
references: {
|
|
276
|
-
model: "user",
|
|
277
|
-
field: "id",
|
|
278
|
-
onDelete: "cascade",
|
|
279
|
-
},
|
|
280
|
-
},
|
|
281
|
-
},
|
|
282
|
-
twoFactor: {
|
|
283
|
-
userId: {
|
|
284
|
-
references: {
|
|
285
|
-
model: "user",
|
|
286
|
-
field: "id",
|
|
287
|
-
},
|
|
288
|
-
},
|
|
289
|
-
},
|
|
290
|
-
passkey: {
|
|
291
|
-
userId: {
|
|
292
|
-
references: {
|
|
293
|
-
model: "user",
|
|
294
|
-
field: "id",
|
|
295
|
-
},
|
|
296
|
-
},
|
|
297
|
-
},
|
|
298
|
-
oauthApplication: {
|
|
299
|
-
clientId: {
|
|
300
|
-
unique: true,
|
|
301
|
-
},
|
|
302
|
-
userId: {
|
|
303
|
-
references: {
|
|
304
|
-
model: "user",
|
|
305
|
-
field: "id",
|
|
306
|
-
onDelete: "cascade",
|
|
307
|
-
},
|
|
308
|
-
},
|
|
309
|
-
},
|
|
310
|
-
oauthAccessToken: {
|
|
311
|
-
accessToken: {
|
|
312
|
-
unique: true,
|
|
313
|
-
},
|
|
314
|
-
refreshToken: {
|
|
315
|
-
unique: true,
|
|
316
|
-
},
|
|
317
|
-
clientId: {
|
|
318
|
-
references: {
|
|
319
|
-
model: "oauthApplication",
|
|
320
|
-
field: "clientId",
|
|
321
|
-
onDelete: "cascade",
|
|
322
|
-
},
|
|
323
|
-
},
|
|
324
|
-
userId: {
|
|
325
|
-
references: {
|
|
326
|
-
model: "user",
|
|
327
|
-
field: "id",
|
|
328
|
-
onDelete: "cascade",
|
|
329
|
-
},
|
|
330
|
-
},
|
|
331
|
-
},
|
|
332
|
-
oauthConsent: {
|
|
333
|
-
clientId: {
|
|
334
|
-
references: {
|
|
335
|
-
model: "oauthApplication",
|
|
336
|
-
field: "clientId",
|
|
337
|
-
onDelete: "cascade",
|
|
338
|
-
},
|
|
339
|
-
},
|
|
340
|
-
userId: {
|
|
341
|
-
references: {
|
|
342
|
-
model: "user",
|
|
343
|
-
field: "id",
|
|
344
|
-
onDelete: "cascade",
|
|
345
|
-
},
|
|
346
|
-
},
|
|
347
|
-
},
|
|
348
|
-
ratelimit: {
|
|
349
|
-
key: {
|
|
350
|
-
unique: true,
|
|
351
|
-
},
|
|
352
|
-
},
|
|
353
|
-
};
|
|
@@ -60,7 +60,27 @@ export const convex = (
|
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
62
|
hooks: {
|
|
63
|
-
before: [
|
|
63
|
+
before: [
|
|
64
|
+
...bearer.hooks.before,
|
|
65
|
+
// Don't attempt to refresh the session with a query ctx
|
|
66
|
+
{
|
|
67
|
+
matcher: (ctx) => {
|
|
68
|
+
return (
|
|
69
|
+
!ctx.context.adapter.options?.isRunMutationCtx &&
|
|
70
|
+
ctx.path === "/get-session"
|
|
71
|
+
);
|
|
72
|
+
},
|
|
73
|
+
handler: createAuthMiddleware(async (ctx) => {
|
|
74
|
+
ctx.query = { ...ctx.query, disableRefresh: true };
|
|
75
|
+
ctx.context.internalAdapter.deleteSession = async (
|
|
76
|
+
..._args: any[]
|
|
77
|
+
) => {
|
|
78
|
+
//skip
|
|
79
|
+
};
|
|
80
|
+
return { context: ctx };
|
|
81
|
+
}),
|
|
82
|
+
},
|
|
83
|
+
],
|
|
64
84
|
after: [
|
|
65
85
|
...oidcProvider.hooks.after,
|
|
66
86
|
{
|
|
@@ -35,12 +35,19 @@ export const crossDomain = ({ siteUrl }: { siteUrl: string }) => {
|
|
|
35
35
|
options: {
|
|
36
36
|
trustedOrigins: [siteUrl],
|
|
37
37
|
},
|
|
38
|
+
context: {
|
|
39
|
+
oauthConfig: {
|
|
40
|
+
skipStateCookieCheck: true,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
38
43
|
};
|
|
39
44
|
},
|
|
40
45
|
hooks: {
|
|
41
46
|
before: [
|
|
42
47
|
{
|
|
43
48
|
matcher(ctx) {
|
|
49
|
+
console.log("ctx.request?.headers", ctx.request?.headers);
|
|
50
|
+
console.log("ctx.headers", ctx.headers);
|
|
44
51
|
return (
|
|
45
52
|
Boolean(
|
|
46
53
|
ctx.request?.headers.get("better-auth-cookie") ||
|
|
@@ -122,6 +129,7 @@ export const crossDomain = ({ siteUrl }: { siteUrl: string }) => {
|
|
|
122
129
|
},
|
|
123
130
|
handler: createAuthMiddleware(async (ctx) => {
|
|
124
131
|
const setCookie = ctx.context.responseHeaders?.get("set-cookie");
|
|
132
|
+
console.log("setCookie", setCookie);
|
|
125
133
|
if (!setCookie) {
|
|
126
134
|
return;
|
|
127
135
|
}
|
package/src/react/index.tsx
CHANGED
|
@@ -93,6 +93,7 @@ function useUseAuthFromBetterAuth(authClient: AuthClient) {
|
|
|
93
93
|
function useAuthFromBetterAuth() {
|
|
94
94
|
const { data: session, isPending: isSessionPending } =
|
|
95
95
|
authClient.useSession();
|
|
96
|
+
const sessionId = session?.session.id;
|
|
96
97
|
const fetchAccessToken = useCallback(
|
|
97
98
|
async () => {
|
|
98
99
|
try {
|
|
@@ -104,7 +105,7 @@ function useUseAuthFromBetterAuth(authClient: AuthClient) {
|
|
|
104
105
|
},
|
|
105
106
|
// Build a new fetchAccessToken to trigger setAuth() whenever the
|
|
106
107
|
// session changes.
|
|
107
|
-
[
|
|
108
|
+
[sessionId]
|
|
108
109
|
);
|
|
109
110
|
return useMemo(
|
|
110
111
|
() => ({
|
|
@@ -112,7 +113,7 @@ function useUseAuthFromBetterAuth(authClient: AuthClient) {
|
|
|
112
113
|
isAuthenticated: session !== null,
|
|
113
114
|
fetchAccessToken,
|
|
114
115
|
}),
|
|
115
|
-
[isSessionPending,
|
|
116
|
+
[isSessionPending, sessionId, fetchAccessToken]
|
|
116
117
|
);
|
|
117
118
|
},
|
|
118
119
|
[authClient]
|
package/src/react-start/index.ts
CHANGED
|
@@ -120,6 +120,14 @@ export const reactStartHandler = (
|
|
|
120
120
|
throw new Error("VITE_CONVEX_SITE_URL is not set");
|
|
121
121
|
}
|
|
122
122
|
const nextUrl = `${convexSiteUrl}${requestUrl.pathname}${requestUrl.search}`;
|
|
123
|
-
request.headers
|
|
124
|
-
|
|
123
|
+
const headers = new Headers(request.headers);
|
|
124
|
+
headers.set("accept-encoding", "application/json");
|
|
125
|
+
return fetch(nextUrl, {
|
|
126
|
+
method: request.method,
|
|
127
|
+
headers,
|
|
128
|
+
redirect: "manual",
|
|
129
|
+
body: request.body,
|
|
130
|
+
// @ts-expect-error - duplex is required for streaming request bodies in modern fetch
|
|
131
|
+
duplex: "half",
|
|
132
|
+
});
|
|
125
133
|
};
|
package/src/utils/index.ts
CHANGED
|
@@ -6,16 +6,11 @@ import {
|
|
|
6
6
|
} from "convex/server";
|
|
7
7
|
import { GenericCtx } from "../client";
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const value = process.env[name];
|
|
15
|
-
if (value === undefined) {
|
|
16
|
-
throw new Error(`Missing environment variable \`${name}\``);
|
|
17
|
-
}
|
|
18
|
-
return value;
|
|
9
|
+
export type RunMutationCtx<DataModel extends GenericDataModel> = (
|
|
10
|
+
| GenericMutationCtx<DataModel>
|
|
11
|
+
| GenericActionCtx<DataModel>
|
|
12
|
+
) & {
|
|
13
|
+
runMutation: GenericMutationCtx<DataModel>["runMutation"];
|
|
19
14
|
};
|
|
20
15
|
|
|
21
16
|
export const isQueryCtx = <DataModel extends GenericDataModel>(
|
|
@@ -36,6 +31,12 @@ export const isActionCtx = <DataModel extends GenericDataModel>(
|
|
|
36
31
|
return "runAction" in ctx;
|
|
37
32
|
};
|
|
38
33
|
|
|
34
|
+
export const isRunMutationCtx = <DataModel extends GenericDataModel>(
|
|
35
|
+
ctx: GenericCtx<DataModel>
|
|
36
|
+
): ctx is RunMutationCtx<DataModel> => {
|
|
37
|
+
return "runMutation" in ctx;
|
|
38
|
+
};
|
|
39
|
+
|
|
39
40
|
export const requireQueryCtx = <DataModel extends GenericDataModel>(
|
|
40
41
|
ctx: GenericCtx<DataModel>
|
|
41
42
|
): GenericQueryCtx<DataModel> => {
|
|
@@ -62,3 +63,12 @@ export const requireActionCtx = <DataModel extends GenericDataModel>(
|
|
|
62
63
|
}
|
|
63
64
|
return ctx;
|
|
64
65
|
};
|
|
66
|
+
|
|
67
|
+
export const requireRunMutationCtx = <DataModel extends GenericDataModel>(
|
|
68
|
+
ctx: GenericCtx<DataModel>
|
|
69
|
+
): RunMutationCtx<DataModel> => {
|
|
70
|
+
if (!isRunMutationCtx(ctx)) {
|
|
71
|
+
throw new Error("Mutation or action context required");
|
|
72
|
+
}
|
|
73
|
+
return ctx;
|
|
74
|
+
};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { ConvexReactClient } from "convex/react";
|
|
2
|
-
import { ReactNode } from "react";
|
|
3
|
-
import { createAuthClient } from "better-auth/react";
|
|
4
|
-
import { convexClient, crossDomainClient } from "../client/plugins";
|
|
5
|
-
import { BetterAuthClientPlugin, ClientOptions } from "better-auth";
|
|
6
|
-
export declare function useAuth(): {
|
|
7
|
-
isLoading: boolean;
|
|
8
|
-
isAuthenticated: boolean;
|
|
9
|
-
fetchAccessToken: ({ forceRefreshToken, }: {
|
|
10
|
-
forceRefreshToken: boolean;
|
|
11
|
-
}) => Promise<string | null>;
|
|
12
|
-
};
|
|
13
|
-
export type ConvexAuthClient = {
|
|
14
|
-
verbose?: boolean;
|
|
15
|
-
logger?: ConvexReactClient["logger"];
|
|
16
|
-
};
|
|
17
|
-
type CrossDomainClient = ReturnType<typeof crossDomainClient>;
|
|
18
|
-
type ConvexClient = ReturnType<typeof convexClient>;
|
|
19
|
-
type PluginsWithCrossDomain = (CrossDomainClient | ConvexClient | BetterAuthClientPlugin)[];
|
|
20
|
-
type PluginsWithoutCrossDomain = (ConvexClient | BetterAuthClientPlugin)[];
|
|
21
|
-
type AuthClientWithPlugins<Plugins extends PluginsWithCrossDomain | PluginsWithoutCrossDomain> = ReturnType<typeof createAuthClient<ClientOptions & {
|
|
22
|
-
plugins: Plugins;
|
|
23
|
-
}>>;
|
|
24
|
-
export type AuthClient = AuthClientWithPlugins<PluginsWithCrossDomain> | AuthClientWithPlugins<PluginsWithoutCrossDomain>;
|
|
25
|
-
export declare function AuthProvider({ client, authClient, children, }: {
|
|
26
|
-
client: ConvexAuthClient;
|
|
27
|
-
authClient: AuthClient;
|
|
28
|
-
children: ReactNode;
|
|
29
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
30
|
-
export {};
|
|
31
|
-
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/react/client.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAEL,SAAS,EAKV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAYpE,wBAAgB,OAAO;eATV,OAAO;qBACD,OAAO;sBACN,CAAC,EACjB,iBAAiB,GAClB,EAAE;QACD,iBAAiB,EAAE,OAAO,CAAC;KAC5B,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;EAK7B;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,KAAK,sBAAsB,GAAG,CAC1B,iBAAiB,GACjB,YAAY,GACZ,sBAAsB,CACzB,EAAE,CAAC;AACJ,KAAK,yBAAyB,GAAG,CAAC,YAAY,GAAG,sBAAsB,CAAC,EAAE,CAAC;AAC3E,KAAK,qBAAqB,CACxB,OAAO,SAAS,sBAAsB,GAAG,yBAAyB,IAChE,UAAU,CACZ,OAAO,gBAAgB,CACrB,aAAa,GAAG;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAClB,qBAAqB,CAAC,sBAAsB,CAAC,GAC7C,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAErD,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,UAAU,EACV,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAmHA"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import isNetworkError from "is-network-error";
|
|
3
|
-
import { createContext, useCallback, useContext, useEffect, useMemo, } from "react";
|
|
4
|
-
const ConvexAuthInternalContext = createContext(undefined);
|
|
5
|
-
export function useAuth() {
|
|
6
|
-
return useContext(ConvexAuthInternalContext);
|
|
7
|
-
}
|
|
8
|
-
export function AuthProvider({ client, authClient, children, }) {
|
|
9
|
-
const { data: session, isPending: isSessionPending } = authClient.useSession();
|
|
10
|
-
const verbose = client.verbose ?? false;
|
|
11
|
-
const logVerbose = useCallback((message) => {
|
|
12
|
-
if (verbose) {
|
|
13
|
-
console.debug(`${new Date().toISOString()} ${message}`);
|
|
14
|
-
client.logger?.logVerbose(message);
|
|
15
|
-
}
|
|
16
|
-
}, [verbose]);
|
|
17
|
-
const fetchToken = useCallback(async () => {
|
|
18
|
-
const initialBackoff = 100;
|
|
19
|
-
const maxBackoff = 1000;
|
|
20
|
-
let retries = 0;
|
|
21
|
-
const nextBackoff = () => {
|
|
22
|
-
const baseBackoff = initialBackoff * Math.pow(2, retries);
|
|
23
|
-
retries += 1;
|
|
24
|
-
const actualBackoff = Math.min(baseBackoff, maxBackoff);
|
|
25
|
-
const jitter = actualBackoff * (Math.random() - 0.5);
|
|
26
|
-
return actualBackoff + jitter;
|
|
27
|
-
};
|
|
28
|
-
const fetchWithRetry = async () => {
|
|
29
|
-
try {
|
|
30
|
-
const { data } = await authClient.convex.token();
|
|
31
|
-
return data?.token || null;
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
if (!isNetworkError(e)) {
|
|
35
|
-
throw e;
|
|
36
|
-
}
|
|
37
|
-
if (retries > 10) {
|
|
38
|
-
logVerbose(`fetchToken failed with network error, giving up`);
|
|
39
|
-
throw e;
|
|
40
|
-
}
|
|
41
|
-
const backoff = nextBackoff();
|
|
42
|
-
logVerbose(`fetchToken failed with network error, attempting retrying in ${backoff}ms`);
|
|
43
|
-
await new Promise((resolve) => setTimeout(resolve, backoff));
|
|
44
|
-
return fetchWithRetry();
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
return fetchWithRetry();
|
|
48
|
-
}, [client]);
|
|
49
|
-
const fetchAccessToken = useCallback(async ({ forceRefreshToken }) => {
|
|
50
|
-
if (forceRefreshToken) {
|
|
51
|
-
const token = await fetchToken();
|
|
52
|
-
logVerbose(`returning retrieved token`);
|
|
53
|
-
return token;
|
|
54
|
-
}
|
|
55
|
-
return null;
|
|
56
|
-
}, [fetchToken]);
|
|
57
|
-
useEffect(() => {
|
|
58
|
-
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
59
|
-
(async () => {
|
|
60
|
-
const url = new URL(window.location?.href);
|
|
61
|
-
const token = url.searchParams.get("ott");
|
|
62
|
-
if (token) {
|
|
63
|
-
const authClientWithCrossDomain = authClient;
|
|
64
|
-
url.searchParams.delete("ott");
|
|
65
|
-
const result = await authClientWithCrossDomain.crossDomain.oneTimeToken.verify({
|
|
66
|
-
token,
|
|
67
|
-
});
|
|
68
|
-
const session = result.data?.session;
|
|
69
|
-
if (session) {
|
|
70
|
-
await authClient.getSession({
|
|
71
|
-
fetchOptions: {
|
|
72
|
-
headers: {
|
|
73
|
-
Authorization: `Bearer ${session.token}`,
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
authClientWithCrossDomain.updateSession();
|
|
78
|
-
}
|
|
79
|
-
window.history.replaceState({}, "", url);
|
|
80
|
-
}
|
|
81
|
-
})();
|
|
82
|
-
},
|
|
83
|
-
// Explicitly chosen dependencies.
|
|
84
|
-
// This effect should mostly only run once
|
|
85
|
-
// on mount.
|
|
86
|
-
[client, authClient]);
|
|
87
|
-
const isAuthenticated = session !== null;
|
|
88
|
-
const isLoading = isSessionPending;
|
|
89
|
-
const authState = useMemo(() => ({
|
|
90
|
-
isLoading,
|
|
91
|
-
isAuthenticated,
|
|
92
|
-
fetchAccessToken,
|
|
93
|
-
}), [fetchAccessToken, isLoading, isAuthenticated]);
|
|
94
|
-
return (_jsx(ConvexAuthInternalContext.Provider, { value: authState, children: children }));
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/react/client.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ConvexReactClient } from "convex/react";
|
|
2
|
-
import { PropsWithChildren } from "react";
|
|
3
|
-
import { AuthClient } from "./client";
|
|
4
|
-
export declare function ConvexBetterAuthProvider({ client, authClient, children, }: PropsWithChildren<{
|
|
5
|
-
client: ConvexReactClient;
|
|
6
|
-
authClient: AuthClient;
|
|
7
|
-
}>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export { ConvexBetterAuthProvider as ConvexProviderWithBetterAuth };
|
|
9
|
-
//# sourceMappingURL=old-index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"old-index.d.ts","sourceRoot":"","sources":["../../../src/react/old-index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA0B,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAW,MAAM,OAAO,CAAC;AACnD,OAAO,EACL,UAAU,EAIX,MAAM,UAAU,CAAC;AAElB,wBAAgB,wBAAwB,CAAC,EACvC,MAAM,EACN,UAAU,EACV,QAAQ,GACT,EAAE,iBAAiB,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC,2CAgBD;AAGD,OAAO,EAAE,wBAAwB,IAAI,4BAA4B,EAAE,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { ConvexProviderWithAuth } from "convex/react";
|
|
4
|
-
import { useMemo } from "react";
|
|
5
|
-
import { AuthProvider, useAuth, } from "./client";
|
|
6
|
-
export function ConvexBetterAuthProvider({ client, authClient, children, }) {
|
|
7
|
-
const convexAuthClient = useMemo(() => ({
|
|
8
|
-
verbose: client.options?.verbose,
|
|
9
|
-
logger: client.logger,
|
|
10
|
-
}), [client]);
|
|
11
|
-
return (_jsx(AuthProvider, { client: convexAuthClient, authClient: authClient, children: _jsx(ConvexProviderWithAuth, { client: client, useAuth: useAuth, children: children }) }));
|
|
12
|
-
}
|
|
13
|
-
// TODO: Remove, short-lived alias
|
|
14
|
-
export { ConvexBetterAuthProvider as ConvexProviderWithBetterAuth };
|
|
15
|
-
//# sourceMappingURL=old-index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"old-index.js","sourceRoot":"","sources":["../../../src/react/old-index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,sBAAsB,EAAqB,MAAM,cAAc,CAAC;AACzE,OAAO,EAAqB,OAAO,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAEL,YAAY,EACZ,OAAO,GAER,MAAM,UAAU,CAAC;AAElB,MAAM,UAAU,wBAAwB,CAAC,EACvC,MAAM,EACN,UAAU,EACV,QAAQ,GAIR;IACA,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CACH,CAAC;QACC,OAAO,EAAG,MAAc,CAAC,OAAO,EAAE,OAAO;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAA4B,EAC/B,CAAC,MAAM,CAAC,CACT,CAAC;IACF,OAAO,CACL,KAAC,YAAY,IAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,YAC5D,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,YACrD,QAAQ,GACc,GACZ,CAChB,CAAC;AACJ,CAAC;AAED,kCAAkC;AAClC,OAAO,EAAE,wBAAwB,IAAI,4BAA4B,EAAE,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { ConvexReactClient } from "convex/react";
|
|
2
|
-
import { ReactNode } from "react";
|
|
3
|
-
import { createAuthClient } from "better-auth/react";
|
|
4
|
-
import { convexClient, crossDomainClient } from "../client/plugins/index.js";
|
|
5
|
-
import { BetterAuthClientPlugin, ClientOptions } from "better-auth";
|
|
6
|
-
export declare function useAuth(): {
|
|
7
|
-
isLoading: boolean;
|
|
8
|
-
isAuthenticated: boolean;
|
|
9
|
-
fetchAccessToken: ({ forceRefreshToken, }: {
|
|
10
|
-
forceRefreshToken: boolean;
|
|
11
|
-
}) => Promise<string | null>;
|
|
12
|
-
};
|
|
13
|
-
export type ConvexAuthClient = {
|
|
14
|
-
verbose?: boolean;
|
|
15
|
-
logger?: ConvexReactClient["logger"];
|
|
16
|
-
};
|
|
17
|
-
type CrossDomainClient = ReturnType<typeof crossDomainClient>;
|
|
18
|
-
type ConvexClient = ReturnType<typeof convexClient>;
|
|
19
|
-
type PluginsWithCrossDomain = (CrossDomainClient | ConvexClient | BetterAuthClientPlugin)[];
|
|
20
|
-
type PluginsWithoutCrossDomain = (ConvexClient | BetterAuthClientPlugin)[];
|
|
21
|
-
type AuthClientWithPlugins<Plugins extends PluginsWithCrossDomain | PluginsWithoutCrossDomain> = ReturnType<typeof createAuthClient<ClientOptions & {
|
|
22
|
-
plugins: Plugins;
|
|
23
|
-
}>>;
|
|
24
|
-
export type AuthClient = AuthClientWithPlugins<PluginsWithCrossDomain> | AuthClientWithPlugins<PluginsWithoutCrossDomain>;
|
|
25
|
-
export declare function AuthProvider({ client, authClient, children, }: {
|
|
26
|
-
client: ConvexAuthClient;
|
|
27
|
-
authClient: AuthClient;
|
|
28
|
-
children: ReactNode;
|
|
29
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
30
|
-
export {};
|
|
31
|
-
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/react/client.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAEL,SAAS,EAKV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAYpE,wBAAgB,OAAO;eATV,OAAO;qBACD,OAAO;sBACN,CAAC,EACjB,iBAAiB,GAClB,EAAE;QACD,iBAAiB,EAAE,OAAO,CAAC;KAC5B,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;EAK7B;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,KAAK,sBAAsB,GAAG,CAC1B,iBAAiB,GACjB,YAAY,GACZ,sBAAsB,CACzB,EAAE,CAAC;AACJ,KAAK,yBAAyB,GAAG,CAAC,YAAY,GAAG,sBAAsB,CAAC,EAAE,CAAC;AAC3E,KAAK,qBAAqB,CACxB,OAAO,SAAS,sBAAsB,GAAG,yBAAyB,IAChE,UAAU,CACZ,OAAO,gBAAgB,CACrB,aAAa,GAAG;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAClB,qBAAqB,CAAC,sBAAsB,CAAC,GAC7C,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAErD,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,UAAU,EACV,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAmHA"}
|