@cairs-npm/express-auth-2fa 0.1.3 → 0.1.5

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/index.d.cts CHANGED
@@ -161,145 +161,67 @@ interface Logger {
161
161
  error: (obj: object, msg?: string) => void;
162
162
  }
163
163
  declare const configSchema: z.ZodObject<{
164
- db: z.ZodType<Db, z.ZodTypeDef, Db>;
164
+ db: z.ZodCustom<Db, Db>;
165
165
  issuer: z.ZodString;
166
- /** PEM PKCS8 private key (Ed25519 or RSA). Required, min 32 bytes. */
167
166
  jwtPrivateKey: z.ZodString;
168
- /** 32-byte AES key, raw string or base64. Required. */
169
167
  encryptionKey: z.ZodString;
170
168
  keyId: z.ZodDefault<z.ZodString>;
171
- userAdapter: z.ZodType<UserAdapter, z.ZodTypeDef, UserAdapter>;
172
- smsProvider: z.ZodType<SmsProvider, z.ZodTypeDef, SmsProvider>;
173
- /** Enables the always-present EMAIL method (default for new users). */
174
- emailProvider: z.ZodOptional<z.ZodType<EmailProvider, z.ZodTypeDef, EmailProvider>>;
175
- /** MongoClient for transactions; defaults to the client behind `db`. */
176
- client: z.ZodOptional<z.ZodType<MongoClient, z.ZodTypeDef, MongoClient>>;
177
- logger: z.ZodOptional<z.ZodType<Logger, z.ZodTypeDef, Logger>>;
178
- hooks: z.ZodOptional<z.ZodType<Hooks, z.ZodTypeDef, Hooks>>;
179
- clock: z.ZodOptional<z.ZodType<Clock, z.ZodTypeDef, Clock>>;
169
+ userAdapter: z.ZodCustom<UserAdapter, UserAdapter>;
170
+ smsProvider: z.ZodCustom<SmsProvider, SmsProvider>;
171
+ emailProvider: z.ZodOptional<z.ZodCustom<EmailProvider, EmailProvider>>;
172
+ client: z.ZodOptional<z.ZodCustom<MongoClient, MongoClient>>;
173
+ logger: z.ZodOptional<z.ZodCustom<Logger, Logger>>;
174
+ hooks: z.ZodOptional<z.ZodCustom<Hooks, Hooks>>;
175
+ clock: z.ZodOptional<z.ZodCustom<Clock, Clock>>;
180
176
  collectionPrefix: z.ZodDefault<z.ZodString>;
181
- /**
182
- * Passkeys (WebAuthn) as a second step. `rpID` is the site's domain (e.g. "childmatch.com",
183
- * "localhost"); `origins` are the exact browser origins allowed (e.g. "https://app.childmatch.com").
184
- * Omit to turn passkeys off.
185
- */
186
177
  passkeys: z.ZodOptional<z.ZodObject<{
187
178
  rpID: z.ZodString;
188
179
  rpName: z.ZodString;
189
- origins: z.ZodArray<z.ZodString, "many">;
190
- }, "strip", z.ZodTypeAny, {
191
- rpID: string;
192
- rpName: string;
193
- origins: string[];
194
- }, {
195
- rpID: string;
196
- rpName: string;
197
- origins: string[];
198
- }>>;
199
- /**
200
- * Allow POST /auth/login/start: sign in with the identifier and a verification method only
201
- * (no password). Single-factor — enable only for apps that already sign in by code. Pass a
202
- * function to allow it per request, e.g. only for `type: "badge"`.
203
- */
204
- passwordlessLogin: z.ZodDefault<z.ZodUnion<[z.ZodBoolean, z.ZodType<(input: {
180
+ origins: z.ZodArray<z.ZodString>;
181
+ }, z.core.$strip>>;
182
+ passwordlessLogin: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodCustom<(input: {
205
183
  username: string;
206
184
  type?: string;
207
- }) => boolean | Promise<boolean>, z.ZodTypeDef, (input: {
185
+ }) => boolean | Promise<boolean>, (input: {
208
186
  username: string;
209
187
  type?: string;
210
188
  }) => boolean | Promise<boolean>>]>>;
211
- /**
212
- * Project-wide 2-Step Verification switch. False: password sign-in never asks for a code
213
- * (whatever each user chose) and the two-step setting can't be turned on. Passwordless
214
- * sign-in still sends a code — it's the only factor there.
215
- */
216
- twoStepEnabled: z.ZodDefault<z.ZodBoolean>;
217
- /** 2-Step Verification state for users who have not chosen one yet. */
189
+ twoStepEnabled: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodCustom<(input: {
190
+ userId: string;
191
+ }) => boolean | Promise<boolean>, (input: {
192
+ userId: string;
193
+ }) => boolean | Promise<boolean>>]>>;
218
194
  twoStepDefault: z.ZodDefault<z.ZodBoolean>;
219
- limits: z.ZodDefault<z.ZodObject<{
220
- /** Failed passwords before lockout (BR-2). */
195
+ limits: z.ZodPrefault<z.ZodObject<{
221
196
  loginMaxAttempts: z.ZodDefault<z.ZodNumber>;
222
- /** Window for failed-login counting, minutes (BR-2). */
223
197
  loginWindowMin: z.ZodDefault<z.ZodNumber>;
224
- /** Lockout duration, minutes (BR-2, BR-9). */
225
198
  lockMinutes: z.ZodDefault<z.ZodNumber>;
226
- /** Min seconds between SMS sends on one challenge (BR-6). */
227
199
  smsResendSec: z.ZodDefault<z.ZodNumber>;
228
- /** Max SMS sends per challenge (BR-6). */
229
200
  smsMaxPerChallenge: z.ZodDefault<z.ZodNumber>;
230
- /** Max SMS sends per user per hour (BR-6). */
231
201
  smsMaxPerUserHour: z.ZodDefault<z.ZodNumber>;
232
- /** Wrong codes per challenge before lockout (BR-9). */
233
202
  mfaMaxAttempts: z.ZodDefault<z.ZodNumber>;
234
- /** Max verification methods per user (BR-16). */
235
203
  maxMethods: z.ZodDefault<z.ZodNumber>;
236
- /** Per-IP login requests per minute (NFR-B4). */
237
204
  loginIpPerMin: z.ZodDefault<z.ZodNumber>;
238
- /** Per-IP MFA verify requests per minute (NFR-B4). */
239
205
  verifyIpPerMin: z.ZodDefault<z.ZodNumber>;
240
- /** Per-IP step-up requests per minute (NFR-B4). */
241
206
  stepUpIpPerMin: z.ZodDefault<z.ZodNumber>;
242
- }, "strip", z.ZodTypeAny, {
243
- loginMaxAttempts: number;
244
- loginWindowMin: number;
245
- lockMinutes: number;
246
- smsResendSec: number;
247
- smsMaxPerChallenge: number;
248
- smsMaxPerUserHour: number;
249
- mfaMaxAttempts: number;
250
- maxMethods: number;
251
- loginIpPerMin: number;
252
- verifyIpPerMin: number;
253
- stepUpIpPerMin: number;
254
- }, {
255
- loginMaxAttempts?: number | undefined;
256
- loginWindowMin?: number | undefined;
257
- lockMinutes?: number | undefined;
258
- smsResendSec?: number | undefined;
259
- smsMaxPerChallenge?: number | undefined;
260
- smsMaxPerUserHour?: number | undefined;
261
- mfaMaxAttempts?: number | undefined;
262
- maxMethods?: number | undefined;
263
- loginIpPerMin?: number | undefined;
264
- verifyIpPerMin?: number | undefined;
265
- stepUpIpPerMin?: number | undefined;
266
- }>>;
267
- /**
268
- * Set false to turn off every RATE_LIMITED check: the per-IP limits on login / code
269
- * verify / send / step-up and the code-send cooldown and caps. Account lockouts after
270
- * failed passwords or codes (LOCKED) still apply.
271
- */
207
+ }, z.core.$strip>>;
272
208
  rateLimits: z.ZodDefault<z.ZodBoolean>;
273
- argon2: z.ZodDefault<z.ZodObject<{
209
+ argon2: z.ZodPrefault<z.ZodObject<{
274
210
  memoryKiB: z.ZodDefault<z.ZodNumber>;
275
211
  iterations: z.ZodDefault<z.ZodNumber>;
276
212
  parallelism: z.ZodDefault<z.ZodNumber>;
277
- }, "strip", z.ZodTypeAny, {
278
- memoryKiB: number;
279
- iterations: number;
280
- parallelism: number;
281
- }, {
282
- memoryKiB?: number | undefined;
283
- iterations?: number | undefined;
284
- parallelism?: number | undefined;
285
- }>>;
286
- cookies: z.ZodDefault<z.ZodObject<{
213
+ }, z.core.$strip>>;
214
+ cookies: z.ZodPrefault<z.ZodObject<{
287
215
  secure: z.ZodDefault<z.ZodBoolean>;
288
216
  domain: z.ZodOptional<z.ZodString>;
289
- sameSite: z.ZodDefault<z.ZodEnum<["lax", "strict", "none"]>>;
217
+ sameSite: z.ZodDefault<z.ZodEnum<{
218
+ lax: "lax";
219
+ strict: "strict";
220
+ none: "none";
221
+ }>>;
290
222
  path: z.ZodDefault<z.ZodString>;
291
- }, "strip", z.ZodTypeAny, {
292
- path: string;
293
- secure: boolean;
294
- sameSite: "lax" | "strict" | "none";
295
- domain?: string | undefined;
296
- }, {
297
- path?: string | undefined;
298
- secure?: boolean | undefined;
299
- domain?: string | undefined;
300
- sameSite?: "lax" | "strict" | "none" | undefined;
301
- }>>;
302
- ttl: z.ZodDefault<z.ZodObject<{
223
+ }, z.core.$strip>>;
224
+ ttl: z.ZodPrefault<z.ZodObject<{
303
225
  accessTokenSec: z.ZodDefault<z.ZodNumber>;
304
226
  refreshTokenDays: z.ZodDefault<z.ZodNumber>;
305
227
  trustedDeviceDays: z.ZodDefault<z.ZodNumber>;
@@ -307,146 +229,9 @@ declare const configSchema: z.ZodObject<{
307
229
  stepUpSec: z.ZodDefault<z.ZodNumber>;
308
230
  pendingMethodMin: z.ZodDefault<z.ZodNumber>;
309
231
  auditDays: z.ZodDefault<z.ZodNumber>;
310
- }, "strip", z.ZodTypeAny, {
311
- accessTokenSec: number;
312
- refreshTokenDays: number;
313
- trustedDeviceDays: number;
314
- challengeSec: number;
315
- stepUpSec: number;
316
- pendingMethodMin: number;
317
- auditDays: number;
318
- }, {
319
- accessTokenSec?: number | undefined;
320
- refreshTokenDays?: number | undefined;
321
- trustedDeviceDays?: number | undefined;
322
- challengeSec?: number | undefined;
323
- stepUpSec?: number | undefined;
324
- pendingMethodMin?: number | undefined;
325
- auditDays?: number | undefined;
326
- }>>;
327
- /** Serve GET /auth/openapi.json (A.7 docs). */
232
+ }, z.core.$strip>>;
328
233
  exposeDocs: z.ZodDefault<z.ZodBoolean>;
329
- }, "strip", z.ZodTypeAny, {
330
- db: Db;
331
- issuer: string;
332
- jwtPrivateKey: string;
333
- encryptionKey: string;
334
- keyId: string;
335
- userAdapter: UserAdapter;
336
- smsProvider: SmsProvider;
337
- collectionPrefix: string;
338
- passwordlessLogin: boolean | ((input: {
339
- username: string;
340
- type?: string;
341
- }) => boolean | Promise<boolean>);
342
- twoStepEnabled: boolean;
343
- twoStepDefault: boolean;
344
- limits: {
345
- loginMaxAttempts: number;
346
- loginWindowMin: number;
347
- lockMinutes: number;
348
- smsResendSec: number;
349
- smsMaxPerChallenge: number;
350
- smsMaxPerUserHour: number;
351
- mfaMaxAttempts: number;
352
- maxMethods: number;
353
- loginIpPerMin: number;
354
- verifyIpPerMin: number;
355
- stepUpIpPerMin: number;
356
- };
357
- rateLimits: boolean;
358
- argon2: {
359
- memoryKiB: number;
360
- iterations: number;
361
- parallelism: number;
362
- };
363
- cookies: {
364
- path: string;
365
- secure: boolean;
366
- sameSite: "lax" | "strict" | "none";
367
- domain?: string | undefined;
368
- };
369
- ttl: {
370
- accessTokenSec: number;
371
- refreshTokenDays: number;
372
- trustedDeviceDays: number;
373
- challengeSec: number;
374
- stepUpSec: number;
375
- pendingMethodMin: number;
376
- auditDays: number;
377
- };
378
- exposeDocs: boolean;
379
- emailProvider?: EmailProvider | undefined;
380
- client?: MongoClient | undefined;
381
- logger?: Logger | undefined;
382
- hooks?: Hooks | undefined;
383
- clock?: Clock | undefined;
384
- passkeys?: {
385
- rpID: string;
386
- rpName: string;
387
- origins: string[];
388
- } | undefined;
389
- }, {
390
- db: Db;
391
- issuer: string;
392
- jwtPrivateKey: string;
393
- encryptionKey: string;
394
- userAdapter: UserAdapter;
395
- smsProvider: SmsProvider;
396
- keyId?: string | undefined;
397
- emailProvider?: EmailProvider | undefined;
398
- client?: MongoClient | undefined;
399
- logger?: Logger | undefined;
400
- hooks?: Hooks | undefined;
401
- clock?: Clock | undefined;
402
- collectionPrefix?: string | undefined;
403
- passkeys?: {
404
- rpID: string;
405
- rpName: string;
406
- origins: string[];
407
- } | undefined;
408
- passwordlessLogin?: boolean | ((input: {
409
- username: string;
410
- type?: string;
411
- }) => boolean | Promise<boolean>) | undefined;
412
- twoStepEnabled?: boolean | undefined;
413
- twoStepDefault?: boolean | undefined;
414
- limits?: {
415
- loginMaxAttempts?: number | undefined;
416
- loginWindowMin?: number | undefined;
417
- lockMinutes?: number | undefined;
418
- smsResendSec?: number | undefined;
419
- smsMaxPerChallenge?: number | undefined;
420
- smsMaxPerUserHour?: number | undefined;
421
- mfaMaxAttempts?: number | undefined;
422
- maxMethods?: number | undefined;
423
- loginIpPerMin?: number | undefined;
424
- verifyIpPerMin?: number | undefined;
425
- stepUpIpPerMin?: number | undefined;
426
- } | undefined;
427
- rateLimits?: boolean | undefined;
428
- argon2?: {
429
- memoryKiB?: number | undefined;
430
- iterations?: number | undefined;
431
- parallelism?: number | undefined;
432
- } | undefined;
433
- cookies?: {
434
- path?: string | undefined;
435
- secure?: boolean | undefined;
436
- domain?: string | undefined;
437
- sameSite?: "lax" | "strict" | "none" | undefined;
438
- } | undefined;
439
- ttl?: {
440
- accessTokenSec?: number | undefined;
441
- refreshTokenDays?: number | undefined;
442
- trustedDeviceDays?: number | undefined;
443
- challengeSec?: number | undefined;
444
- stepUpSec?: number | undefined;
445
- pendingMethodMin?: number | undefined;
446
- auditDays?: number | undefined;
447
- } | undefined;
448
- exposeDocs?: boolean | undefined;
449
- }>;
234
+ }, z.core.$strip>;
450
235
  type AuthConfigInput = z.input<typeof configSchema>;
451
236
  type AuthConfig = z.output<typeof configSchema> & {
452
237
  clock: Clock;
package/dist/index.d.ts CHANGED
@@ -161,145 +161,67 @@ interface Logger {
161
161
  error: (obj: object, msg?: string) => void;
162
162
  }
163
163
  declare const configSchema: z.ZodObject<{
164
- db: z.ZodType<Db, z.ZodTypeDef, Db>;
164
+ db: z.ZodCustom<Db, Db>;
165
165
  issuer: z.ZodString;
166
- /** PEM PKCS8 private key (Ed25519 or RSA). Required, min 32 bytes. */
167
166
  jwtPrivateKey: z.ZodString;
168
- /** 32-byte AES key, raw string or base64. Required. */
169
167
  encryptionKey: z.ZodString;
170
168
  keyId: z.ZodDefault<z.ZodString>;
171
- userAdapter: z.ZodType<UserAdapter, z.ZodTypeDef, UserAdapter>;
172
- smsProvider: z.ZodType<SmsProvider, z.ZodTypeDef, SmsProvider>;
173
- /** Enables the always-present EMAIL method (default for new users). */
174
- emailProvider: z.ZodOptional<z.ZodType<EmailProvider, z.ZodTypeDef, EmailProvider>>;
175
- /** MongoClient for transactions; defaults to the client behind `db`. */
176
- client: z.ZodOptional<z.ZodType<MongoClient, z.ZodTypeDef, MongoClient>>;
177
- logger: z.ZodOptional<z.ZodType<Logger, z.ZodTypeDef, Logger>>;
178
- hooks: z.ZodOptional<z.ZodType<Hooks, z.ZodTypeDef, Hooks>>;
179
- clock: z.ZodOptional<z.ZodType<Clock, z.ZodTypeDef, Clock>>;
169
+ userAdapter: z.ZodCustom<UserAdapter, UserAdapter>;
170
+ smsProvider: z.ZodCustom<SmsProvider, SmsProvider>;
171
+ emailProvider: z.ZodOptional<z.ZodCustom<EmailProvider, EmailProvider>>;
172
+ client: z.ZodOptional<z.ZodCustom<MongoClient, MongoClient>>;
173
+ logger: z.ZodOptional<z.ZodCustom<Logger, Logger>>;
174
+ hooks: z.ZodOptional<z.ZodCustom<Hooks, Hooks>>;
175
+ clock: z.ZodOptional<z.ZodCustom<Clock, Clock>>;
180
176
  collectionPrefix: z.ZodDefault<z.ZodString>;
181
- /**
182
- * Passkeys (WebAuthn) as a second step. `rpID` is the site's domain (e.g. "childmatch.com",
183
- * "localhost"); `origins` are the exact browser origins allowed (e.g. "https://app.childmatch.com").
184
- * Omit to turn passkeys off.
185
- */
186
177
  passkeys: z.ZodOptional<z.ZodObject<{
187
178
  rpID: z.ZodString;
188
179
  rpName: z.ZodString;
189
- origins: z.ZodArray<z.ZodString, "many">;
190
- }, "strip", z.ZodTypeAny, {
191
- rpID: string;
192
- rpName: string;
193
- origins: string[];
194
- }, {
195
- rpID: string;
196
- rpName: string;
197
- origins: string[];
198
- }>>;
199
- /**
200
- * Allow POST /auth/login/start: sign in with the identifier and a verification method only
201
- * (no password). Single-factor — enable only for apps that already sign in by code. Pass a
202
- * function to allow it per request, e.g. only for `type: "badge"`.
203
- */
204
- passwordlessLogin: z.ZodDefault<z.ZodUnion<[z.ZodBoolean, z.ZodType<(input: {
180
+ origins: z.ZodArray<z.ZodString>;
181
+ }, z.core.$strip>>;
182
+ passwordlessLogin: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodCustom<(input: {
205
183
  username: string;
206
184
  type?: string;
207
- }) => boolean | Promise<boolean>, z.ZodTypeDef, (input: {
185
+ }) => boolean | Promise<boolean>, (input: {
208
186
  username: string;
209
187
  type?: string;
210
188
  }) => boolean | Promise<boolean>>]>>;
211
- /**
212
- * Project-wide 2-Step Verification switch. False: password sign-in never asks for a code
213
- * (whatever each user chose) and the two-step setting can't be turned on. Passwordless
214
- * sign-in still sends a code — it's the only factor there.
215
- */
216
- twoStepEnabled: z.ZodDefault<z.ZodBoolean>;
217
- /** 2-Step Verification state for users who have not chosen one yet. */
189
+ twoStepEnabled: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodCustom<(input: {
190
+ userId: string;
191
+ }) => boolean | Promise<boolean>, (input: {
192
+ userId: string;
193
+ }) => boolean | Promise<boolean>>]>>;
218
194
  twoStepDefault: z.ZodDefault<z.ZodBoolean>;
219
- limits: z.ZodDefault<z.ZodObject<{
220
- /** Failed passwords before lockout (BR-2). */
195
+ limits: z.ZodPrefault<z.ZodObject<{
221
196
  loginMaxAttempts: z.ZodDefault<z.ZodNumber>;
222
- /** Window for failed-login counting, minutes (BR-2). */
223
197
  loginWindowMin: z.ZodDefault<z.ZodNumber>;
224
- /** Lockout duration, minutes (BR-2, BR-9). */
225
198
  lockMinutes: z.ZodDefault<z.ZodNumber>;
226
- /** Min seconds between SMS sends on one challenge (BR-6). */
227
199
  smsResendSec: z.ZodDefault<z.ZodNumber>;
228
- /** Max SMS sends per challenge (BR-6). */
229
200
  smsMaxPerChallenge: z.ZodDefault<z.ZodNumber>;
230
- /** Max SMS sends per user per hour (BR-6). */
231
201
  smsMaxPerUserHour: z.ZodDefault<z.ZodNumber>;
232
- /** Wrong codes per challenge before lockout (BR-9). */
233
202
  mfaMaxAttempts: z.ZodDefault<z.ZodNumber>;
234
- /** Max verification methods per user (BR-16). */
235
203
  maxMethods: z.ZodDefault<z.ZodNumber>;
236
- /** Per-IP login requests per minute (NFR-B4). */
237
204
  loginIpPerMin: z.ZodDefault<z.ZodNumber>;
238
- /** Per-IP MFA verify requests per minute (NFR-B4). */
239
205
  verifyIpPerMin: z.ZodDefault<z.ZodNumber>;
240
- /** Per-IP step-up requests per minute (NFR-B4). */
241
206
  stepUpIpPerMin: z.ZodDefault<z.ZodNumber>;
242
- }, "strip", z.ZodTypeAny, {
243
- loginMaxAttempts: number;
244
- loginWindowMin: number;
245
- lockMinutes: number;
246
- smsResendSec: number;
247
- smsMaxPerChallenge: number;
248
- smsMaxPerUserHour: number;
249
- mfaMaxAttempts: number;
250
- maxMethods: number;
251
- loginIpPerMin: number;
252
- verifyIpPerMin: number;
253
- stepUpIpPerMin: number;
254
- }, {
255
- loginMaxAttempts?: number | undefined;
256
- loginWindowMin?: number | undefined;
257
- lockMinutes?: number | undefined;
258
- smsResendSec?: number | undefined;
259
- smsMaxPerChallenge?: number | undefined;
260
- smsMaxPerUserHour?: number | undefined;
261
- mfaMaxAttempts?: number | undefined;
262
- maxMethods?: number | undefined;
263
- loginIpPerMin?: number | undefined;
264
- verifyIpPerMin?: number | undefined;
265
- stepUpIpPerMin?: number | undefined;
266
- }>>;
267
- /**
268
- * Set false to turn off every RATE_LIMITED check: the per-IP limits on login / code
269
- * verify / send / step-up and the code-send cooldown and caps. Account lockouts after
270
- * failed passwords or codes (LOCKED) still apply.
271
- */
207
+ }, z.core.$strip>>;
272
208
  rateLimits: z.ZodDefault<z.ZodBoolean>;
273
- argon2: z.ZodDefault<z.ZodObject<{
209
+ argon2: z.ZodPrefault<z.ZodObject<{
274
210
  memoryKiB: z.ZodDefault<z.ZodNumber>;
275
211
  iterations: z.ZodDefault<z.ZodNumber>;
276
212
  parallelism: z.ZodDefault<z.ZodNumber>;
277
- }, "strip", z.ZodTypeAny, {
278
- memoryKiB: number;
279
- iterations: number;
280
- parallelism: number;
281
- }, {
282
- memoryKiB?: number | undefined;
283
- iterations?: number | undefined;
284
- parallelism?: number | undefined;
285
- }>>;
286
- cookies: z.ZodDefault<z.ZodObject<{
213
+ }, z.core.$strip>>;
214
+ cookies: z.ZodPrefault<z.ZodObject<{
287
215
  secure: z.ZodDefault<z.ZodBoolean>;
288
216
  domain: z.ZodOptional<z.ZodString>;
289
- sameSite: z.ZodDefault<z.ZodEnum<["lax", "strict", "none"]>>;
217
+ sameSite: z.ZodDefault<z.ZodEnum<{
218
+ lax: "lax";
219
+ strict: "strict";
220
+ none: "none";
221
+ }>>;
290
222
  path: z.ZodDefault<z.ZodString>;
291
- }, "strip", z.ZodTypeAny, {
292
- path: string;
293
- secure: boolean;
294
- sameSite: "lax" | "strict" | "none";
295
- domain?: string | undefined;
296
- }, {
297
- path?: string | undefined;
298
- secure?: boolean | undefined;
299
- domain?: string | undefined;
300
- sameSite?: "lax" | "strict" | "none" | undefined;
301
- }>>;
302
- ttl: z.ZodDefault<z.ZodObject<{
223
+ }, z.core.$strip>>;
224
+ ttl: z.ZodPrefault<z.ZodObject<{
303
225
  accessTokenSec: z.ZodDefault<z.ZodNumber>;
304
226
  refreshTokenDays: z.ZodDefault<z.ZodNumber>;
305
227
  trustedDeviceDays: z.ZodDefault<z.ZodNumber>;
@@ -307,146 +229,9 @@ declare const configSchema: z.ZodObject<{
307
229
  stepUpSec: z.ZodDefault<z.ZodNumber>;
308
230
  pendingMethodMin: z.ZodDefault<z.ZodNumber>;
309
231
  auditDays: z.ZodDefault<z.ZodNumber>;
310
- }, "strip", z.ZodTypeAny, {
311
- accessTokenSec: number;
312
- refreshTokenDays: number;
313
- trustedDeviceDays: number;
314
- challengeSec: number;
315
- stepUpSec: number;
316
- pendingMethodMin: number;
317
- auditDays: number;
318
- }, {
319
- accessTokenSec?: number | undefined;
320
- refreshTokenDays?: number | undefined;
321
- trustedDeviceDays?: number | undefined;
322
- challengeSec?: number | undefined;
323
- stepUpSec?: number | undefined;
324
- pendingMethodMin?: number | undefined;
325
- auditDays?: number | undefined;
326
- }>>;
327
- /** Serve GET /auth/openapi.json (A.7 docs). */
232
+ }, z.core.$strip>>;
328
233
  exposeDocs: z.ZodDefault<z.ZodBoolean>;
329
- }, "strip", z.ZodTypeAny, {
330
- db: Db;
331
- issuer: string;
332
- jwtPrivateKey: string;
333
- encryptionKey: string;
334
- keyId: string;
335
- userAdapter: UserAdapter;
336
- smsProvider: SmsProvider;
337
- collectionPrefix: string;
338
- passwordlessLogin: boolean | ((input: {
339
- username: string;
340
- type?: string;
341
- }) => boolean | Promise<boolean>);
342
- twoStepEnabled: boolean;
343
- twoStepDefault: boolean;
344
- limits: {
345
- loginMaxAttempts: number;
346
- loginWindowMin: number;
347
- lockMinutes: number;
348
- smsResendSec: number;
349
- smsMaxPerChallenge: number;
350
- smsMaxPerUserHour: number;
351
- mfaMaxAttempts: number;
352
- maxMethods: number;
353
- loginIpPerMin: number;
354
- verifyIpPerMin: number;
355
- stepUpIpPerMin: number;
356
- };
357
- rateLimits: boolean;
358
- argon2: {
359
- memoryKiB: number;
360
- iterations: number;
361
- parallelism: number;
362
- };
363
- cookies: {
364
- path: string;
365
- secure: boolean;
366
- sameSite: "lax" | "strict" | "none";
367
- domain?: string | undefined;
368
- };
369
- ttl: {
370
- accessTokenSec: number;
371
- refreshTokenDays: number;
372
- trustedDeviceDays: number;
373
- challengeSec: number;
374
- stepUpSec: number;
375
- pendingMethodMin: number;
376
- auditDays: number;
377
- };
378
- exposeDocs: boolean;
379
- emailProvider?: EmailProvider | undefined;
380
- client?: MongoClient | undefined;
381
- logger?: Logger | undefined;
382
- hooks?: Hooks | undefined;
383
- clock?: Clock | undefined;
384
- passkeys?: {
385
- rpID: string;
386
- rpName: string;
387
- origins: string[];
388
- } | undefined;
389
- }, {
390
- db: Db;
391
- issuer: string;
392
- jwtPrivateKey: string;
393
- encryptionKey: string;
394
- userAdapter: UserAdapter;
395
- smsProvider: SmsProvider;
396
- keyId?: string | undefined;
397
- emailProvider?: EmailProvider | undefined;
398
- client?: MongoClient | undefined;
399
- logger?: Logger | undefined;
400
- hooks?: Hooks | undefined;
401
- clock?: Clock | undefined;
402
- collectionPrefix?: string | undefined;
403
- passkeys?: {
404
- rpID: string;
405
- rpName: string;
406
- origins: string[];
407
- } | undefined;
408
- passwordlessLogin?: boolean | ((input: {
409
- username: string;
410
- type?: string;
411
- }) => boolean | Promise<boolean>) | undefined;
412
- twoStepEnabled?: boolean | undefined;
413
- twoStepDefault?: boolean | undefined;
414
- limits?: {
415
- loginMaxAttempts?: number | undefined;
416
- loginWindowMin?: number | undefined;
417
- lockMinutes?: number | undefined;
418
- smsResendSec?: number | undefined;
419
- smsMaxPerChallenge?: number | undefined;
420
- smsMaxPerUserHour?: number | undefined;
421
- mfaMaxAttempts?: number | undefined;
422
- maxMethods?: number | undefined;
423
- loginIpPerMin?: number | undefined;
424
- verifyIpPerMin?: number | undefined;
425
- stepUpIpPerMin?: number | undefined;
426
- } | undefined;
427
- rateLimits?: boolean | undefined;
428
- argon2?: {
429
- memoryKiB?: number | undefined;
430
- iterations?: number | undefined;
431
- parallelism?: number | undefined;
432
- } | undefined;
433
- cookies?: {
434
- path?: string | undefined;
435
- secure?: boolean | undefined;
436
- domain?: string | undefined;
437
- sameSite?: "lax" | "strict" | "none" | undefined;
438
- } | undefined;
439
- ttl?: {
440
- accessTokenSec?: number | undefined;
441
- refreshTokenDays?: number | undefined;
442
- trustedDeviceDays?: number | undefined;
443
- challengeSec?: number | undefined;
444
- stepUpSec?: number | undefined;
445
- pendingMethodMin?: number | undefined;
446
- auditDays?: number | undefined;
447
- } | undefined;
448
- exposeDocs?: boolean | undefined;
449
- }>;
234
+ }, z.core.$strip>;
450
235
  type AuthConfigInput = z.input<typeof configSchema>;
451
236
  type AuthConfig = z.output<typeof configSchema> & {
452
237
  clock: Clock;