UNPKG

alepha

Version:

Easy-to-use modern TypeScript framework for building many kind of applications.

276 lines 16.1 kB
import { Static } from "alepha"; import { CryptoProvider } from "alepha/crypto"; import { DateTimeProvider } from "alepha/datetime"; //#region ../../src/api/verifications/entities/verifications.d.ts declare const verifications: import("alepha/orm").EntityPrimitive<import("zod").ZodObject<{ id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>; createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>; type: import("zod").ZodEnum<{ code: "code"; link: "link"; }>; target: import("zod").ZodString; purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>; code: import("zod").ZodString; verifiedAt: import("zod").ZodOptional<import("zod").ZodString>; attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>; }, import("zod/v4/core").$strip>>; declare const verificationEntitySchema: import("zod").ZodObject<{ id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>; createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>; type: import("zod").ZodEnum<{ code: "code"; link: "link"; }>; target: import("zod").ZodString; purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>; code: import("zod").ZodString; verifiedAt: import("zod").ZodOptional<import("zod").ZodString>; attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>; }, import("zod/v4/core").$strip>; declare const verificationEntityInsertSchema: import("alepha/orm").TObjectInsert<import("zod").ZodObject<{ id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>; createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>; type: import("zod").ZodEnum<{ code: "code"; link: "link"; }>; target: import("zod").ZodString; purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>; code: import("zod").ZodString; verifiedAt: import("zod").ZodOptional<import("zod").ZodString>; attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>; }, import("zod/v4/core").$strip>>; type VerificationEntity = Static<typeof verifications.schema>; //#endregion //#region ../../src/api/verifications/schemas/verificationSettingsSchema.d.ts declare const verificationSettingsSchema: import("zod").ZodObject<{ code: import("zod").ZodObject<{ maxAttempts: import("zod").ZodInt; codeLength: import("zod").ZodInt; codeExpiration: import("zod").ZodInt; verificationCooldown: import("zod").ZodInt; limitPerDay: import("zod").ZodInt; }, import("zod/v4/core").$strip>; link: import("zod").ZodObject<{ maxAttempts: import("zod").ZodInt; codeExpiration: import("zod").ZodInt; verificationCooldown: import("zod").ZodInt; limitPerDay: import("zod").ZodInt; }, import("zod/v4/core").$strip>; purgeDays: import("zod").ZodInt; }, import("zod/v4/core").$strip>; type VerificationSettings = Static<typeof verificationSettingsSchema>; //#endregion //#region ../../src/api/verifications/parameters/VerificationParameters.d.ts /** * Verification settings configuration atom */ declare const verificationOptions: import("alepha").Atom<import("zod").ZodObject<{ code: import("zod").ZodObject<{ maxAttempts: import("zod").ZodInt; codeLength: import("zod").ZodInt; codeExpiration: import("zod").ZodInt; verificationCooldown: import("zod").ZodInt; limitPerDay: import("zod").ZodInt; }, import("zod/v4/core").$strip>; link: import("zod").ZodObject<{ maxAttempts: import("zod").ZodInt; codeExpiration: import("zod").ZodInt; verificationCooldown: import("zod").ZodInt; limitPerDay: import("zod").ZodInt; }, import("zod/v4/core").$strip>; purgeDays: import("zod").ZodInt; }, import("zod/v4/core").$strip>, "alepha.api.verifications.options">; type VerificationOptions = Static<typeof verificationOptions.schema>; declare module "alepha" { interface State { [verificationOptions.key]: VerificationOptions; } } declare class VerificationParameters { protected readonly options: Readonly<{ code: { maxAttempts: number; codeLength: number; codeExpiration: number; verificationCooldown: number; limitPerDay: number; }; link: { maxAttempts: number; codeExpiration: number; verificationCooldown: number; limitPerDay: number; }; purgeDays: number; }>; get<K extends keyof VerificationSettings>(key: K): VerificationSettings[K]; } //#endregion //#region ../../src/api/verifications/schemas/requestVerificationCodeResponseSchema.d.ts declare const requestVerificationCodeResponseSchema: import("zod").ZodObject<{ token: import("zod").ZodString; codeExpiration: import("zod").ZodInt; verificationCooldown: import("zod").ZodInt; maxVerificationAttempts: import("zod").ZodInt; }, import("zod/v4/core").$strip>; type RequestVerificationResponse = Static<typeof requestVerificationCodeResponseSchema>; //#endregion //#region ../../src/api/verifications/schemas/validateVerificationCodeResponseSchema.d.ts declare const validateVerificationCodeResponseSchema: import("zod").ZodObject<{ ok: import("zod").ZodBoolean; alreadyVerified: import("zod").ZodOptional<import("zod").ZodBoolean>; }, import("zod/v4/core").$strip>; type ValidateVerificationCodeResponse = Static<typeof validateVerificationCodeResponseSchema>; //#endregion //#region ../../src/api/verifications/schemas/verificationTypeEnumSchema.d.ts declare const verificationTypeEnumSchema: import("zod").ZodEnum<{ code: "code"; link: "link"; }>; type VerificationTypeEnum = Static<typeof verificationTypeEnumSchema>; //#endregion //#region ../../src/api/verifications/services/VerificationService.d.ts declare class VerificationService { protected readonly log: import("alepha/logger").Logger; protected readonly dateTimeProvider: DateTimeProvider; protected readonly crypto: CryptoProvider; protected readonly verificationParameters: VerificationParameters; protected readonly verificationRepository: import("alepha/orm").Repository<import("zod").ZodObject<{ id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>; createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>; type: import("zod").ZodEnum<{ code: "code"; link: "link"; }>; target: import("zod").ZodString; purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>; code: import("zod").ZodString; verifiedAt: import("zod").ZodOptional<import("zod").ZodString>; attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>; }, import("zod/v4/core").$strip>>; findByEntry(entry: VerificationEntry): Promise<VerificationEntity>; findRecentsByEntry(entry: VerificationEntry): Promise<import("alepha/orm").PgStatic<import("zod").ZodObject<{ id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>; createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>; type: import("zod").ZodEnum<{ code: "code"; link: "link"; }>; target: import("zod").ZodString; purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>; code: import("zod").ZodString; verifiedAt: import("zod").ZodOptional<import("zod").ZodString>; attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>; }, import("zod/v4/core").$strip>, import("alepha/orm").PgRelationMap<import("zod").ZodObject<{ id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>; createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>; type: import("zod").ZodEnum<{ code: "code"; link: "link"; }>; target: import("zod").ZodString; purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>; code: import("zod").ZodString; verifiedAt: import("zod").ZodOptional<import("zod").ZodString>; attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>; }, import("zod/v4/core").$strip>>>[]>; /** * Creates a verification entry and returns the token. * The caller is responsible for sending notifications with the token. * This allows for context-specific notifications (e.g., password reset vs email verification). */ createVerification(entry: VerificationEntry): Promise<RequestVerificationResponse>; verifyCode(entry: VerificationEntry, code: string): Promise<ValidateVerificationCodeResponse>; hashCode(code: string): string; generateToken(type: VerificationTypeEnum): string; } interface VerificationEntry { type: VerificationTypeEnum; target: string; /** * Logical purpose bucket. Cooldown and daily-limit checks are scoped to * `(type, target, purpose)`, so flows that share a `(type, target)` pair * — e.g. email verification and password reset, both `type: "code"` on the * same email — get independent rate-limit windows instead of colliding. * * Defaults to `"default"` when omitted (back-compatible with callers and * rows that predate this field). */ purpose?: string; } //#endregion //#region ../../src/api/verifications/controllers/VerificationController.d.ts declare class VerificationController { protected readonly verificationService: VerificationService; readonly url = "/verifications"; readonly group = "verifications"; readonly validateVerificationCode: import("alepha/server").ActionPrimitiveFn<{ params: import("zod").ZodObject<{ type: import("zod").ZodEnum<{ code: "code"; link: "link"; }>; }, import("zod/v4/core").$strip>; body: import("zod").ZodObject<{ target: import("zod").ZodString; token: import("zod").ZodString; }, import("zod/v4/core").$strip>; response: import("zod").ZodObject<{ ok: import("zod").ZodBoolean; alreadyVerified: import("zod").ZodOptional<import("zod").ZodBoolean>; }, import("zod/v4/core").$strip>; }>; } //#endregion //#region ../../src/api/verifications/jobs/VerificationJobs.d.ts declare class VerificationJobs { protected readonly verificationRepository: import("alepha/orm").Repository<import("zod").ZodObject<{ id: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_PRIMARY_KEY>, typeof import("alepha/orm").PG_DEFAULT>; createdAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_CREATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; updatedAt: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_UPDATED_AT>, typeof import("alepha/orm").PG_DEFAULT>; version: import("alepha/orm").PgAttr<import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_VERSION>, typeof import("alepha/orm").PG_DEFAULT>; type: import("zod").ZodEnum<{ code: "code"; link: "link"; }>; target: import("zod").ZodString; purpose: import("alepha/orm").PgAttr<import("zod").ZodString, typeof import("alepha/orm").PG_DEFAULT>; code: import("zod").ZodString; verifiedAt: import("zod").ZodOptional<import("zod").ZodString>; attempts: import("alepha/orm").PgAttr<import("zod").ZodInt, typeof import("alepha/orm").PG_DEFAULT>; }, import("zod/v4/core").$strip>>; protected readonly verificationParameters: VerificationParameters; protected readonly dateTimeProvider: DateTimeProvider; readonly cleanExpired: import("alepha/scheduler").SchedulerPrimitive; } //#endregion //#region ../../src/api/verifications/index.d.ts /** * Email and phone verification workflows. * * **Features:** * - Verification token generation * - Verification code sending * - Verification completion tracking * - Resend functionality * * @module alepha.api.verifications */ declare const AlephaApiVerification: import("alepha").Service<import("alepha").Module>; //#endregion export { AlephaApiVerification, RequestVerificationResponse, ValidateVerificationCodeResponse, VerificationController, VerificationEntity, VerificationEntry, VerificationJobs, VerificationOptions, VerificationParameters, VerificationService, VerificationTypeEnum, requestVerificationCodeResponseSchema, validateVerificationCodeResponseSchema, verificationEntityInsertSchema, verificationEntitySchema, verificationOptions, verificationTypeEnumSchema, verifications }; //# sourceMappingURL=index.d.ts.map