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
TypeScript
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