UNPKG

aegis-auth

Version:

A credentials-based auth solution for Next.js (and other Node projects) with IP rate-limiting, account lockouts, and sessions in DB.

579 lines 22.3 kB
import { z } from "zod"; export declare const configSchema: z.ZodObject<{ logger: z.ZodDefault<z.ZodObject<{ debug: z.ZodFunction<z.ZodTuple<[z.ZodString, z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>], z.ZodUnknown>, z.ZodVoid>; info: z.ZodFunction<z.ZodTuple<[z.ZodString, z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>], z.ZodUnknown>, z.ZodVoid>; warn: z.ZodFunction<z.ZodTuple<[z.ZodString, z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>], z.ZodUnknown>, z.ZodVoid>; error: z.ZodFunction<z.ZodTuple<[z.ZodString, z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>], z.ZodUnknown>, z.ZodVoid>; securityEvent: z.ZodFunction<z.ZodTuple<[z.ZodString, z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>], z.ZodUnknown>, z.ZodVoid>; }, "strip", z.ZodTypeAny, { debug: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; info: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; warn: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; error: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; securityEvent: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; }, { debug: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; info: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; warn: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; error: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; securityEvent: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; }>>; session: z.ZodObject<{ cookieName: z.ZodDefault<z.ZodString>; maxAgeSeconds: z.ZodDefault<z.ZodNumber>; tokenLengthBytes: z.ZodDefault<z.ZodNumber>; tokenSecret: z.ZodDefault<z.ZodEffects<z.ZodString, string, string>>; cookieSecure: z.ZodDefault<z.ZodBoolean>; cookieSameSite: z.ZodDefault<z.ZodEnum<["strict", "lax", "none"]>>; cookieHttpOnly: z.ZodDefault<z.ZodBoolean>; maxSessionsPerUser: z.ZodDefault<z.ZodNumber>; rollingIntervalSeconds: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { cookieName: string; maxAgeSeconds: number; tokenLengthBytes: number; tokenSecret: string; cookieSecure: boolean; cookieSameSite: "none" | "strict" | "lax"; cookieHttpOnly: boolean; maxSessionsPerUser: number; rollingIntervalSeconds: number; }, { cookieName?: string | undefined; maxAgeSeconds?: number | undefined; tokenLengthBytes?: number | undefined; tokenSecret?: string | undefined; cookieSecure?: boolean | undefined; cookieSameSite?: "none" | "strict" | "lax" | undefined; cookieHttpOnly?: boolean | undefined; maxSessionsPerUser?: number | undefined; rollingIntervalSeconds?: number | undefined; }>; csrf: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; cookieName: z.ZodDefault<z.ZodString>; maxAgeSeconds: z.ZodDefault<z.ZodNumber>; tokenLengthBytes: z.ZodDefault<z.ZodNumber>; tokenSecret: z.ZodDefault<z.ZodEffects<z.ZodString, string, string>>; cookieSecure: z.ZodDefault<z.ZodBoolean>; cookieSameSite: z.ZodDefault<z.ZodEnum<["strict", "lax", "none"]>>; cookieHttpOnly: z.ZodDefault<z.ZodBoolean>; }, "strip", z.ZodTypeAny, { cookieName: string; maxAgeSeconds: number; tokenLengthBytes: number; tokenSecret: string; cookieSecure: boolean; cookieSameSite: "none" | "strict" | "lax"; cookieHttpOnly: boolean; enabled: boolean; }, { cookieName?: string | undefined; maxAgeSeconds?: number | undefined; tokenLengthBytes?: number | undefined; tokenSecret?: string | undefined; cookieSecure?: boolean | undefined; cookieSameSite?: "none" | "strict" | "lax" | undefined; cookieHttpOnly?: boolean | undefined; enabled?: boolean | undefined; }>; verification: z.ZodObject<{ tokenLengthBytes: z.ZodDefault<z.ZodNumber>; tokenExpirySeconds: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { tokenLengthBytes: number; tokenExpirySeconds: number; }, { tokenLengthBytes?: number | undefined; tokenExpirySeconds?: number | undefined; }>; rateLimiting: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; kvRestApiUrl: z.ZodOptional<z.ZodString>; kvRestApiToken: z.ZodOptional<z.ZodString>; login: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; maxRequests: z.ZodDefault<z.ZodNumber>; windowSeconds: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { enabled: boolean; maxRequests: number; windowSeconds: number; }, { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }>; register: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; maxRequests: z.ZodDefault<z.ZodNumber>; windowSeconds: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { enabled: boolean; maxRequests: number; windowSeconds: number; }, { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }>; verifyEmail: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; maxRequests: z.ZodDefault<z.ZodNumber>; windowSeconds: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { enabled: boolean; maxRequests: number; windowSeconds: number; }, { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }>; initiatePasswordReset: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; maxRequests: z.ZodDefault<z.ZodNumber>; windowSeconds: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { enabled: boolean; maxRequests: number; windowSeconds: number; }, { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }>; completePasswordReset: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; maxRequests: z.ZodDefault<z.ZodNumber>; windowSeconds: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { enabled: boolean; maxRequests: number; windowSeconds: number; }, { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }>; initiateEmailChange: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; maxRequests: z.ZodDefault<z.ZodNumber>; windowSeconds: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { enabled: boolean; maxRequests: number; windowSeconds: number; }, { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }>; completeEmailChange: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; maxRequests: z.ZodDefault<z.ZodNumber>; windowSeconds: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { enabled: boolean; maxRequests: number; windowSeconds: number; }, { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }>; }, "strip", z.ZodTypeAny, { enabled: boolean; login: { enabled: boolean; maxRequests: number; windowSeconds: number; }; register: { enabled: boolean; maxRequests: number; windowSeconds: number; }; verifyEmail: { enabled: boolean; maxRequests: number; windowSeconds: number; }; initiatePasswordReset: { enabled: boolean; maxRequests: number; windowSeconds: number; }; completePasswordReset: { enabled: boolean; maxRequests: number; windowSeconds: number; }; initiateEmailChange: { enabled: boolean; maxRequests: number; windowSeconds: number; }; completeEmailChange: { enabled: boolean; maxRequests: number; windowSeconds: number; }; kvRestApiUrl?: string | undefined; kvRestApiToken?: string | undefined; }, { login: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; register: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; verifyEmail: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; initiatePasswordReset: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; completePasswordReset: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; initiateEmailChange: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; completeEmailChange: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; enabled?: boolean | undefined; kvRestApiUrl?: string | undefined; kvRestApiToken?: string | undefined; }>; accountSecurity: z.ZodObject<{ requireEmailVerification: z.ZodDefault<z.ZodBoolean>; maxFailedLogins: z.ZodDefault<z.ZodNumber>; lockoutDurationSeconds: z.ZodDefault<z.ZodNumber>; passwordHashing: z.ZodObject<{ costFactor: z.ZodDefault<z.ZodNumber>; blockSize: z.ZodDefault<z.ZodNumber>; parallelization: z.ZodDefault<z.ZodNumber>; derivedKeyLength: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { costFactor: number; blockSize: number; parallelization: number; derivedKeyLength: number; }, { costFactor?: number | undefined; blockSize?: number | undefined; parallelization?: number | undefined; derivedKeyLength?: number | undefined; }>; }, "strip", z.ZodTypeAny, { requireEmailVerification: boolean; maxFailedLogins: number; lockoutDurationSeconds: number; passwordHashing: { costFactor: number; blockSize: number; parallelization: number; derivedKeyLength: number; }; }, { passwordHashing: { costFactor?: number | undefined; blockSize?: number | undefined; parallelization?: number | undefined; derivedKeyLength?: number | undefined; }; requireEmailVerification?: boolean | undefined; maxFailedLogins?: number | undefined; lockoutDurationSeconds?: number | undefined; }>; email: z.ZodOptional<z.ZodObject<{ resendApiKey: z.ZodOptional<z.ZodString>; from: z.ZodDefault<z.ZodString>; baseUrl: z.ZodDefault<z.ZodString>; templates: z.ZodOptional<z.ZodObject<{ verification: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodObject<{ token: z.ZodString; toEmail: z.ZodString; }, "strip", z.ZodTypeAny, { token: string; toEmail: string; }, { token: string; toEmail: string; }>], z.ZodUnknown>, z.ZodString>>; passwordReset: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodObject<{ token: z.ZodString; toEmail: z.ZodString; }, "strip", z.ZodTypeAny, { token: string; toEmail: string; }, { token: string; toEmail: string; }>], z.ZodUnknown>, z.ZodString>>; }, "strip", z.ZodTypeAny, { verification?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; passwordReset?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; }, { verification?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; passwordReset?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; }>>; }, "strip", z.ZodTypeAny, { from: string; baseUrl: string; resendApiKey?: string | undefined; templates?: { verification?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; passwordReset?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; } | undefined; }, { resendApiKey?: string | undefined; from?: string | undefined; baseUrl?: string | undefined; templates?: { verification?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; passwordReset?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; } | undefined; }>>; }, "strip", z.ZodTypeAny, { logger: { debug: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; info: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; warn: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; error: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; securityEvent: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; }; session: { cookieName: string; maxAgeSeconds: number; tokenLengthBytes: number; tokenSecret: string; cookieSecure: boolean; cookieSameSite: "none" | "strict" | "lax"; cookieHttpOnly: boolean; maxSessionsPerUser: number; rollingIntervalSeconds: number; }; csrf: { cookieName: string; maxAgeSeconds: number; tokenLengthBytes: number; tokenSecret: string; cookieSecure: boolean; cookieSameSite: "none" | "strict" | "lax"; cookieHttpOnly: boolean; enabled: boolean; }; verification: { tokenLengthBytes: number; tokenExpirySeconds: number; }; rateLimiting: { enabled: boolean; login: { enabled: boolean; maxRequests: number; windowSeconds: number; }; register: { enabled: boolean; maxRequests: number; windowSeconds: number; }; verifyEmail: { enabled: boolean; maxRequests: number; windowSeconds: number; }; initiatePasswordReset: { enabled: boolean; maxRequests: number; windowSeconds: number; }; completePasswordReset: { enabled: boolean; maxRequests: number; windowSeconds: number; }; initiateEmailChange: { enabled: boolean; maxRequests: number; windowSeconds: number; }; completeEmailChange: { enabled: boolean; maxRequests: number; windowSeconds: number; }; kvRestApiUrl?: string | undefined; kvRestApiToken?: string | undefined; }; accountSecurity: { requireEmailVerification: boolean; maxFailedLogins: number; lockoutDurationSeconds: number; passwordHashing: { costFactor: number; blockSize: number; parallelization: number; derivedKeyLength: number; }; }; email?: { from: string; baseUrl: string; resendApiKey?: string | undefined; templates?: { verification?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; passwordReset?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; } | undefined; } | undefined; }, { session: { cookieName?: string | undefined; maxAgeSeconds?: number | undefined; tokenLengthBytes?: number | undefined; tokenSecret?: string | undefined; cookieSecure?: boolean | undefined; cookieSameSite?: "none" | "strict" | "lax" | undefined; cookieHttpOnly?: boolean | undefined; maxSessionsPerUser?: number | undefined; rollingIntervalSeconds?: number | undefined; }; csrf: { cookieName?: string | undefined; maxAgeSeconds?: number | undefined; tokenLengthBytes?: number | undefined; tokenSecret?: string | undefined; cookieSecure?: boolean | undefined; cookieSameSite?: "none" | "strict" | "lax" | undefined; cookieHttpOnly?: boolean | undefined; enabled?: boolean | undefined; }; verification: { tokenLengthBytes?: number | undefined; tokenExpirySeconds?: number | undefined; }; rateLimiting: { login: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; register: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; verifyEmail: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; initiatePasswordReset: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; completePasswordReset: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; initiateEmailChange: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; completeEmailChange: { enabled?: boolean | undefined; maxRequests?: number | undefined; windowSeconds?: number | undefined; }; enabled?: boolean | undefined; kvRestApiUrl?: string | undefined; kvRestApiToken?: string | undefined; }; accountSecurity: { passwordHashing: { costFactor?: number | undefined; blockSize?: number | undefined; parallelization?: number | undefined; derivedKeyLength?: number | undefined; }; requireEmailVerification?: boolean | undefined; maxFailedLogins?: number | undefined; lockoutDurationSeconds?: number | undefined; }; email?: { resendApiKey?: string | undefined; from?: string | undefined; baseUrl?: string | undefined; templates?: { verification?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; passwordReset?: ((args_0: { token: string; toEmail: string; }, ...args: unknown[]) => string) | undefined; } | undefined; } | undefined; logger?: { debug: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; info: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; warn: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; error: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; securityEvent: (args_0: string, args_1: Record<string, unknown> | undefined, ...args: unknown[]) => void; } | undefined; }>; export type AegisAuthConfig = z.infer<typeof configSchema>; //# sourceMappingURL=schema.d.ts.map