alepha
Version:
Easy-to-use modern TypeScript framework for building many kind of applications.
276 lines • 16.1 kB
TypeScript
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