authjs-corepass-provider 0.1.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/LICENSE +21 -0
- package/README.md +450 -0
- package/db/corepass-schema.postgres.sql +46 -0
- package/db/corepass-schema.sql +50 -0
- package/dist/chunk-72ZEQHQO.js +33 -0
- package/dist/chunk-72ZEQHQO.js.map +1 -0
- package/dist/index.d.ts +427 -0
- package/dist/index.js +1289 -0
- package/dist/index.js.map +1 -0
- package/dist/provider.d.ts +12 -0
- package/dist/provider.js +7 -0
- package/dist/provider.js.map +1 -0
- package/package.json +42 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
export { default as CorePass, default } from './provider.js';
|
|
2
|
+
import { Adapter } from '@auth/core/adapters';
|
|
3
|
+
import '@auth/core/providers/webauthn';
|
|
4
|
+
|
|
5
|
+
type CorePassChallengeStore = {
|
|
6
|
+
put(key: string, value: string, ttlSeconds: number): Promise<void>;
|
|
7
|
+
get(key: string): Promise<string | null>;
|
|
8
|
+
delete(key: string): Promise<void>;
|
|
9
|
+
};
|
|
10
|
+
type CorePassPendingRegistration = {
|
|
11
|
+
token: string;
|
|
12
|
+
credentialId: string;
|
|
13
|
+
credentialPublicKey: string;
|
|
14
|
+
counter: number;
|
|
15
|
+
credentialDeviceType: string;
|
|
16
|
+
credentialBackedUp: boolean;
|
|
17
|
+
transports: string | null;
|
|
18
|
+
email: string | null;
|
|
19
|
+
refId: string | null;
|
|
20
|
+
aaguid: string | null;
|
|
21
|
+
createdAt: number;
|
|
22
|
+
expiresAt: number;
|
|
23
|
+
};
|
|
24
|
+
type CorePassUserIdentity = {
|
|
25
|
+
coreId: string;
|
|
26
|
+
userId: string;
|
|
27
|
+
refId: string | null;
|
|
28
|
+
};
|
|
29
|
+
type CorePassProfile = {
|
|
30
|
+
userId: string;
|
|
31
|
+
coreId: string;
|
|
32
|
+
o18y: boolean | null;
|
|
33
|
+
o21y: boolean | null;
|
|
34
|
+
kyc: boolean | null;
|
|
35
|
+
kycDoc: string | null;
|
|
36
|
+
providedTill: number | null;
|
|
37
|
+
};
|
|
38
|
+
type CorePassStore = {
|
|
39
|
+
createPendingRegistration(reg: CorePassPendingRegistration): Promise<void>;
|
|
40
|
+
getPendingRegistrationByCredentialId(credentialId: string): Promise<CorePassPendingRegistration | null>;
|
|
41
|
+
deletePendingRegistrationByToken(token: string): Promise<void>;
|
|
42
|
+
getIdentityByCoreId(coreId: string): Promise<CorePassUserIdentity | null>;
|
|
43
|
+
getIdentityByUserId?(userId: string): Promise<CorePassUserIdentity | null>;
|
|
44
|
+
upsertIdentity(identity: CorePassUserIdentity): Promise<void>;
|
|
45
|
+
upsertProfile(profile: CorePassProfile): Promise<void>;
|
|
46
|
+
};
|
|
47
|
+
type CreateCorePassServerOptions = {
|
|
48
|
+
/**
|
|
49
|
+
* Auth.js adapter.
|
|
50
|
+
* Used to create users, link the WebAuthn account, and create authenticators.
|
|
51
|
+
*/
|
|
52
|
+
adapter: Required<Pick<Adapter, "createUser" | "getUser" | "updateUser" | "linkAccount" | "getUserByAccount" | "getAuthenticator" | "createAuthenticator">>;
|
|
53
|
+
/**
|
|
54
|
+
* CorePass extension store (pending registrations + CoreID mapping + profile).
|
|
55
|
+
*/
|
|
56
|
+
store: CorePassStore;
|
|
57
|
+
/**
|
|
58
|
+
* Store for short-lived WebAuthn challenges (KV/Redis/DB/etc).
|
|
59
|
+
*/
|
|
60
|
+
challengeStore: CorePassChallengeStore;
|
|
61
|
+
rpID: string;
|
|
62
|
+
rpName: string;
|
|
63
|
+
expectedOrigin: string;
|
|
64
|
+
/**
|
|
65
|
+
* Enrichment signature must be calculated over this path.
|
|
66
|
+
* Defaults to `/passkey/data`.
|
|
67
|
+
*/
|
|
68
|
+
signaturePath?: string;
|
|
69
|
+
/**
|
|
70
|
+
* AAGUID allowlist.
|
|
71
|
+
*
|
|
72
|
+
* - Default: CorePass AAGUID (`636f7265-7061-7373-6964-656e74696679`)
|
|
73
|
+
* - Set to `false` to disable AAGUID checks (allow any authenticator).
|
|
74
|
+
*/
|
|
75
|
+
allowedAaguids?: string | false;
|
|
76
|
+
/**
|
|
77
|
+
* WebAuthn algorithm preferences (COSE `alg` ids).
|
|
78
|
+
*
|
|
79
|
+
* Default: `[-257, -7, -8]` (RS256, ES256, Ed25519) like the injector.
|
|
80
|
+
*/
|
|
81
|
+
pubKeyCredAlgs?: number[];
|
|
82
|
+
/**
|
|
83
|
+
* If true, finalization fails if the resulting email is missing.
|
|
84
|
+
* Defaults to false.
|
|
85
|
+
*/
|
|
86
|
+
emailRequired?: boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Policy flags enforced during the enrich (pending) finalization path only.
|
|
89
|
+
* Not enforced for immediate-finalize.
|
|
90
|
+
*
|
|
91
|
+
* Defaults: false
|
|
92
|
+
*/
|
|
93
|
+
requireO18y?: boolean;
|
|
94
|
+
requireO21y?: boolean;
|
|
95
|
+
requireKyc?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* TTL for pending registrations (seconds). Defaults to 600 (10 minutes).
|
|
98
|
+
*/
|
|
99
|
+
pendingTtlSeconds?: number;
|
|
100
|
+
/**
|
|
101
|
+
* Enable `refId` support (capture it in start/finish/enrich and store it).
|
|
102
|
+
*
|
|
103
|
+
* Defaults to `false`.
|
|
104
|
+
*/
|
|
105
|
+
enableRefId?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Registration webhook URL to POST after successful finalization.
|
|
108
|
+
*
|
|
109
|
+
* Payload: `{ coreId, refId? }`
|
|
110
|
+
*/
|
|
111
|
+
registrationWebhookUrl?: string;
|
|
112
|
+
/**
|
|
113
|
+
* Registration webhook secret for HMAC signing. If set, webhook requests will include:
|
|
114
|
+
* - `X-Webhook-Timestamp` (unix seconds)
|
|
115
|
+
* - `X-Webhook-Signature` (`sha256=<hex>`)
|
|
116
|
+
*
|
|
117
|
+
* Signature input:
|
|
118
|
+
* `timestamp + "\\n" + requestBody`
|
|
119
|
+
*
|
|
120
|
+
* If unset, webhooks are not signed.
|
|
121
|
+
*/
|
|
122
|
+
registrationWebhookSecret?: string;
|
|
123
|
+
/**
|
|
124
|
+
* Number of registration webhook delivery attempts for a single finalization.
|
|
125
|
+
*
|
|
126
|
+
* Retries happen when:
|
|
127
|
+
* - fetch throws (network error), or
|
|
128
|
+
* - response is non-2xx
|
|
129
|
+
*
|
|
130
|
+
* Allowed range: 1-10
|
|
131
|
+
* Default: 3
|
|
132
|
+
*/
|
|
133
|
+
registrationWebhookRetries?: number;
|
|
134
|
+
/**
|
|
135
|
+
* If enabled, POST a registration webhook after finalization:
|
|
136
|
+
* - always sends `coreId`
|
|
137
|
+
* - includes `refId` only if present
|
|
138
|
+
*
|
|
139
|
+
* Defaults to `false`.
|
|
140
|
+
*/
|
|
141
|
+
postRegistrationWebhooks?: boolean;
|
|
142
|
+
/**
|
|
143
|
+
* Login webhook URL to POST after successful login.
|
|
144
|
+
*
|
|
145
|
+
* Payload: `{ coreId, refId? }`
|
|
146
|
+
*/
|
|
147
|
+
loginWebhookUrl?: string;
|
|
148
|
+
/**
|
|
149
|
+
* Login webhook secret for HMAC signing (same header/signature format as registration).
|
|
150
|
+
*/
|
|
151
|
+
loginWebhookSecret?: string;
|
|
152
|
+
/**
|
|
153
|
+
* Number of login webhook delivery attempts. Allowed range: 1-10. Default: 3.
|
|
154
|
+
*/
|
|
155
|
+
loginWebhookRetries?: number;
|
|
156
|
+
/**
|
|
157
|
+
* If enabled, POST a login webhook after successful login.
|
|
158
|
+
*
|
|
159
|
+
* Defaults to `false`.
|
|
160
|
+
*/
|
|
161
|
+
postLoginWebhooks?: boolean;
|
|
162
|
+
/**
|
|
163
|
+
* Logout webhook URL to POST after logout.
|
|
164
|
+
*
|
|
165
|
+
* Payload: `{ coreId, refId? }`
|
|
166
|
+
*/
|
|
167
|
+
logoutWebhookUrl?: string;
|
|
168
|
+
/**
|
|
169
|
+
* Logout webhook secret for HMAC signing (same header/signature format as registration).
|
|
170
|
+
*/
|
|
171
|
+
logoutWebhookSecret?: string;
|
|
172
|
+
/**
|
|
173
|
+
* Number of logout webhook delivery attempts. Allowed range: 1-10. Default: 3.
|
|
174
|
+
*/
|
|
175
|
+
logoutWebhookRetries?: number;
|
|
176
|
+
/**
|
|
177
|
+
* If enabled, POST a logout webhook after logout.
|
|
178
|
+
*
|
|
179
|
+
* Defaults to `false`.
|
|
180
|
+
*/
|
|
181
|
+
postLogoutWebhooks?: boolean;
|
|
182
|
+
/**
|
|
183
|
+
* If enabled, `finishRegistration` may finalize immediately when `coreId` is provided.
|
|
184
|
+
* Defaults to false.
|
|
185
|
+
*
|
|
186
|
+
* Security note: immediate finalization shifts trust to whatever provides `coreId` to the server.
|
|
187
|
+
* The default flow requires an Ed448-signed enrichment request to prove CoreID ownership.
|
|
188
|
+
*/
|
|
189
|
+
allowImmediateFinalize?: boolean;
|
|
190
|
+
/**
|
|
191
|
+
* The provider id to use when linking accounts. Defaults to `corepass`.
|
|
192
|
+
*/
|
|
193
|
+
providerId?: string;
|
|
194
|
+
/**
|
|
195
|
+
* Acceptable timestamp window for enrichment requests.
|
|
196
|
+
*/
|
|
197
|
+
timestampWindowMs?: number;
|
|
198
|
+
/**
|
|
199
|
+
* Allowed future skew for enrichment requests.
|
|
200
|
+
*/
|
|
201
|
+
timestampFutureSkewMs?: number;
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
declare function createCorePassServer(options: CreateCorePassServerOptions): {
|
|
205
|
+
startRegistration: (req: Request) => Promise<Response>;
|
|
206
|
+
finishRegistration: (req: Request) => Promise<Response>;
|
|
207
|
+
enrichRegistration: (req: Request) => Promise<Response>;
|
|
208
|
+
postLoginWebhook: (args: {
|
|
209
|
+
userId: string;
|
|
210
|
+
}) => Promise<void>;
|
|
211
|
+
postLogoutWebhook: (args: {
|
|
212
|
+
userId: string;
|
|
213
|
+
}) => Promise<void>;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
declare function validateCoreIdMainnet(coreId: string): boolean;
|
|
217
|
+
/**
|
|
218
|
+
* Default CorePass derivation:
|
|
219
|
+
* - Validate CoreID as mainnet ICAN
|
|
220
|
+
* - Treat BBAN as hex encoding of the raw 57-byte Ed448 public key (114 hex chars)
|
|
221
|
+
*/
|
|
222
|
+
declare function deriveEd448PublicKeyFromCoreId(coreId: string): Uint8Array | null;
|
|
223
|
+
|
|
224
|
+
declare function memoryChallengeStore(): CorePassChallengeStore;
|
|
225
|
+
type RedisLike = {
|
|
226
|
+
set: (key: string, value: string, opts: {
|
|
227
|
+
ex: number;
|
|
228
|
+
}) => Promise<unknown>;
|
|
229
|
+
get: (key: string) => Promise<string | null>;
|
|
230
|
+
del: (key: string) => Promise<unknown>;
|
|
231
|
+
};
|
|
232
|
+
declare function redisChallengeStore(redis: RedisLike): CorePassChallengeStore;
|
|
233
|
+
type KvLike = {
|
|
234
|
+
put: (key: string, value: string, opts: {
|
|
235
|
+
expirationTtl: number;
|
|
236
|
+
}) => Promise<unknown>;
|
|
237
|
+
get: (key: string) => Promise<string | null>;
|
|
238
|
+
delete: (key: string) => Promise<unknown>;
|
|
239
|
+
};
|
|
240
|
+
declare function kvChallengeStore(kv: KvLike): CorePassChallengeStore;
|
|
241
|
+
/**
|
|
242
|
+
* Vercel KV client shape (based on `@vercel/kv`).
|
|
243
|
+
* We intentionally don't import `@vercel/kv` to avoid a hard dependency.
|
|
244
|
+
*/
|
|
245
|
+
type VercelKvLike = {
|
|
246
|
+
set: (key: string, value: string, opts: {
|
|
247
|
+
ex: number;
|
|
248
|
+
}) => Promise<unknown>;
|
|
249
|
+
get: <T = string>(key: string) => Promise<T | null>;
|
|
250
|
+
del: (key: string) => Promise<unknown>;
|
|
251
|
+
};
|
|
252
|
+
declare function vercelKvChallengeStore(kv: VercelKvLike): CorePassChallengeStore;
|
|
253
|
+
/**
|
|
254
|
+
* Upstash Redis REST client shape (based on `@upstash/redis`).
|
|
255
|
+
* We intentionally don't import `@upstash/redis` to avoid a hard dependency.
|
|
256
|
+
*/
|
|
257
|
+
type UpstashRedisLike = {
|
|
258
|
+
set: (key: string, value: string, opts: {
|
|
259
|
+
ex: number;
|
|
260
|
+
}) => Promise<unknown>;
|
|
261
|
+
get: <T = string>(key: string) => Promise<T | null>;
|
|
262
|
+
del: (key: string) => Promise<unknown>;
|
|
263
|
+
};
|
|
264
|
+
declare function upstashRedisChallengeStore(redis: UpstashRedisLike): CorePassChallengeStore;
|
|
265
|
+
/**
|
|
266
|
+
* Durable Object stub shape (Cloudflare).
|
|
267
|
+
* Your Durable Object must implement these routes:
|
|
268
|
+
* - POST /challenge/put { key, value, ttlSeconds }
|
|
269
|
+
* - GET /challenge/get?key=...
|
|
270
|
+
* - POST /challenge/delete { key }
|
|
271
|
+
*/
|
|
272
|
+
type DurableObjectStubLike = {
|
|
273
|
+
fetch: (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
274
|
+
};
|
|
275
|
+
declare function durableObjectChallengeStore(stub: DurableObjectStubLike): CorePassChallengeStore;
|
|
276
|
+
/**
|
|
277
|
+
* DynamoDB-style store (pluggable).
|
|
278
|
+
* This avoids hard-depending on AWS SDK packages while still making wiring easy.
|
|
279
|
+
*/
|
|
280
|
+
type DynamoLike = {
|
|
281
|
+
put: (args: {
|
|
282
|
+
key: string;
|
|
283
|
+
value: string;
|
|
284
|
+
expiresAt: number;
|
|
285
|
+
}) => Promise<unknown>;
|
|
286
|
+
get: (key: string) => Promise<{
|
|
287
|
+
value: string;
|
|
288
|
+
expiresAt: number;
|
|
289
|
+
} | null>;
|
|
290
|
+
delete: (key: string) => Promise<unknown>;
|
|
291
|
+
};
|
|
292
|
+
declare function dynamoChallengeStore(dynamo: DynamoLike): CorePassChallengeStore;
|
|
293
|
+
|
|
294
|
+
type D1Like = {
|
|
295
|
+
prepare: (sql: string) => {
|
|
296
|
+
bind: (...params: unknown[]) => {
|
|
297
|
+
run: () => Promise<unknown>;
|
|
298
|
+
first: <T = unknown>() => Promise<T | null>;
|
|
299
|
+
all?: <T = unknown>() => Promise<{
|
|
300
|
+
results: T[];
|
|
301
|
+
}>;
|
|
302
|
+
};
|
|
303
|
+
};
|
|
304
|
+
};
|
|
305
|
+
declare function d1CorePassStore(db: D1Like): CorePassStore;
|
|
306
|
+
type PgLike = {
|
|
307
|
+
query: (text: string, params?: unknown[]) => Promise<{
|
|
308
|
+
rows: any[];
|
|
309
|
+
}>;
|
|
310
|
+
};
|
|
311
|
+
declare function postgresCorePassStore(pg: PgLike): CorePassStore;
|
|
312
|
+
type SupabaseLike = {
|
|
313
|
+
from: (table: string) => any;
|
|
314
|
+
};
|
|
315
|
+
declare function supabaseCorePassStore(supabase: SupabaseLike): CorePassStore;
|
|
316
|
+
|
|
317
|
+
type WithoutStore<T> = Omit<T, "store">;
|
|
318
|
+
type WithoutStoreAndChallengeStore<T> = Omit<T, "store" | "challengeStore">;
|
|
319
|
+
declare function createCorePassServerD1(options: WithoutStore<CreateCorePassServerOptions> & {
|
|
320
|
+
db: D1Like;
|
|
321
|
+
}): {
|
|
322
|
+
startRegistration: (req: Request) => Promise<Response>;
|
|
323
|
+
finishRegistration: (req: Request) => Promise<Response>;
|
|
324
|
+
enrichRegistration: (req: Request) => Promise<Response>;
|
|
325
|
+
postLoginWebhook: (args: {
|
|
326
|
+
userId: string;
|
|
327
|
+
}) => Promise<void>;
|
|
328
|
+
postLogoutWebhook: (args: {
|
|
329
|
+
userId: string;
|
|
330
|
+
}) => Promise<void>;
|
|
331
|
+
};
|
|
332
|
+
declare function createCorePassServerPostgres(options: WithoutStore<CreateCorePassServerOptions> & {
|
|
333
|
+
pg: PgLike;
|
|
334
|
+
}): {
|
|
335
|
+
startRegistration: (req: Request) => Promise<Response>;
|
|
336
|
+
finishRegistration: (req: Request) => Promise<Response>;
|
|
337
|
+
enrichRegistration: (req: Request) => Promise<Response>;
|
|
338
|
+
postLoginWebhook: (args: {
|
|
339
|
+
userId: string;
|
|
340
|
+
}) => Promise<void>;
|
|
341
|
+
postLogoutWebhook: (args: {
|
|
342
|
+
userId: string;
|
|
343
|
+
}) => Promise<void>;
|
|
344
|
+
};
|
|
345
|
+
declare function createCorePassServerSupabase(options: WithoutStore<CreateCorePassServerOptions> & {
|
|
346
|
+
supabase: SupabaseLike;
|
|
347
|
+
}): {
|
|
348
|
+
startRegistration: (req: Request) => Promise<Response>;
|
|
349
|
+
finishRegistration: (req: Request) => Promise<Response>;
|
|
350
|
+
enrichRegistration: (req: Request) => Promise<Response>;
|
|
351
|
+
postLoginWebhook: (args: {
|
|
352
|
+
userId: string;
|
|
353
|
+
}) => Promise<void>;
|
|
354
|
+
postLogoutWebhook: (args: {
|
|
355
|
+
userId: string;
|
|
356
|
+
}) => Promise<void>;
|
|
357
|
+
};
|
|
358
|
+
/**
|
|
359
|
+
* Popular stack factory: Cloudflare Workers (D1 + KV)
|
|
360
|
+
*/
|
|
361
|
+
declare function createCorePassServerCloudflareD1Kv(options: WithoutStoreAndChallengeStore<CreateCorePassServerOptions> & {
|
|
362
|
+
db: D1Like;
|
|
363
|
+
kv: KvLike;
|
|
364
|
+
}): {
|
|
365
|
+
startRegistration: (req: Request) => Promise<Response>;
|
|
366
|
+
finishRegistration: (req: Request) => Promise<Response>;
|
|
367
|
+
enrichRegistration: (req: Request) => Promise<Response>;
|
|
368
|
+
postLoginWebhook: (args: {
|
|
369
|
+
userId: string;
|
|
370
|
+
}) => Promise<void>;
|
|
371
|
+
postLogoutWebhook: (args: {
|
|
372
|
+
userId: string;
|
|
373
|
+
}) => Promise<void>;
|
|
374
|
+
};
|
|
375
|
+
/**
|
|
376
|
+
* Popular stack factory: Postgres + Redis
|
|
377
|
+
*/
|
|
378
|
+
declare function createCorePassServerPostgresRedis(options: WithoutStoreAndChallengeStore<CreateCorePassServerOptions> & {
|
|
379
|
+
pg: PgLike;
|
|
380
|
+
redis: RedisLike;
|
|
381
|
+
}): {
|
|
382
|
+
startRegistration: (req: Request) => Promise<Response>;
|
|
383
|
+
finishRegistration: (req: Request) => Promise<Response>;
|
|
384
|
+
enrichRegistration: (req: Request) => Promise<Response>;
|
|
385
|
+
postLoginWebhook: (args: {
|
|
386
|
+
userId: string;
|
|
387
|
+
}) => Promise<void>;
|
|
388
|
+
postLogoutWebhook: (args: {
|
|
389
|
+
userId: string;
|
|
390
|
+
}) => Promise<void>;
|
|
391
|
+
};
|
|
392
|
+
/**
|
|
393
|
+
* Popular stack factory: Supabase (Postgres) + Upstash Redis REST
|
|
394
|
+
*/
|
|
395
|
+
declare function createCorePassServerSupabaseUpstash(options: WithoutStoreAndChallengeStore<CreateCorePassServerOptions> & {
|
|
396
|
+
supabase: SupabaseLike;
|
|
397
|
+
redis: UpstashRedisLike;
|
|
398
|
+
}): {
|
|
399
|
+
startRegistration: (req: Request) => Promise<Response>;
|
|
400
|
+
finishRegistration: (req: Request) => Promise<Response>;
|
|
401
|
+
enrichRegistration: (req: Request) => Promise<Response>;
|
|
402
|
+
postLoginWebhook: (args: {
|
|
403
|
+
userId: string;
|
|
404
|
+
}) => Promise<void>;
|
|
405
|
+
postLogoutWebhook: (args: {
|
|
406
|
+
userId: string;
|
|
407
|
+
}) => Promise<void>;
|
|
408
|
+
};
|
|
409
|
+
/**
|
|
410
|
+
* Popular stack factory: Supabase (Postgres) + Vercel KV
|
|
411
|
+
*/
|
|
412
|
+
declare function createCorePassServerSupabaseVercelKv(options: WithoutStoreAndChallengeStore<CreateCorePassServerOptions> & {
|
|
413
|
+
supabase: SupabaseLike;
|
|
414
|
+
kv: VercelKvLike;
|
|
415
|
+
}): {
|
|
416
|
+
startRegistration: (req: Request) => Promise<Response>;
|
|
417
|
+
finishRegistration: (req: Request) => Promise<Response>;
|
|
418
|
+
enrichRegistration: (req: Request) => Promise<Response>;
|
|
419
|
+
postLoginWebhook: (args: {
|
|
420
|
+
userId: string;
|
|
421
|
+
}) => Promise<void>;
|
|
422
|
+
postLogoutWebhook: (args: {
|
|
423
|
+
userId: string;
|
|
424
|
+
}) => Promise<void>;
|
|
425
|
+
};
|
|
426
|
+
|
|
427
|
+
export { type CorePassChallengeStore, type CorePassPendingRegistration, type CorePassProfile, type CorePassStore, type CorePassUserIdentity, type CreateCorePassServerOptions, type D1Like, type DurableObjectStubLike, type DynamoLike, type KvLike, type PgLike, type RedisLike, type SupabaseLike, type UpstashRedisLike, type VercelKvLike, createCorePassServer, createCorePassServerCloudflareD1Kv, createCorePassServerD1, createCorePassServerPostgres, createCorePassServerPostgresRedis, createCorePassServerSupabase, createCorePassServerSupabaseUpstash, createCorePassServerSupabaseVercelKv, d1CorePassStore, deriveEd448PublicKeyFromCoreId, durableObjectChallengeStore, dynamoChallengeStore, kvChallengeStore, memoryChallengeStore, postgresCorePassStore, redisChallengeStore, supabaseCorePassStore, upstashRedisChallengeStore, validateCoreIdMainnet, vercelKvChallengeStore };
|