alepha
Version:
Easy-to-use modern TypeScript framework for building many kind of applications.
77 lines (76 loc) • 2.76 kB
JavaScript
import { $module, z } from "alepha";
import { logEntrySchema } from "alepha/logger";
import { pageQuerySchema } from "alepha/orm";
//#region ../../src/api/notifications/schemas/notificationContactPreferencesSchema.ts
const notificationContactPreferencesSchema = z.object({
language: z.text().optional(),
exclude: z.array(z.text())
});
//#endregion
//#region ../../src/api/notifications/schemas/notificationContactSchema.ts
const notificationContactSchema = z.object({
email: z.email().optional(),
phoneNumber: z.e164().optional(),
firstName: z.shortText().optional(),
lastName: z.text({ size: "short" }).optional(),
language: z.bcp47().optional()
});
//#endregion
//#region ../../src/api/notifications/schemas/notificationResourceSchema.ts
const notificationResourceSchema = z.object({
id: z.uuid(),
createdAt: z.datetime(),
status: z.text(),
template: z.text().optional(),
type: z.text().optional(),
contact: z.text().optional(),
category: z.text().optional(),
critical: z.boolean().optional(),
sensitive: z.boolean().optional(),
startedAt: z.datetime().optional(),
completedAt: z.datetime().optional(),
error: z.text().optional()
});
//#endregion
//#region ../../src/api/notifications/schemas/notificationDetailResourceSchema.ts
const notificationDetailResourceSchema = notificationResourceSchema.extend({
variables: z.record(z.text(), z.any()).optional(),
rendered: z.record(z.text(), z.any()).optional(),
logs: z.array(logEntrySchema).optional()
}).meta({
title: "NotificationDetailResource",
description: "A notification resource with rendered content and logs."
});
//#endregion
//#region ../../src/api/notifications/schemas/notificationPayloadSchema.ts
const notificationPayloadSchema = z.object({
type: z.enum(["email", "sms"]),
template: z.text(),
contact: z.text(),
variables: z.record(z.text(), z.any()).optional(),
category: z.text().optional(),
critical: z.boolean().optional(),
sensitive: z.boolean().optional(),
/** Recipient language (e.g. "fr" or "fr-FR") used to pick `translations`. */
lang: z.text().optional()
});
//#endregion
//#region ../../src/api/notifications/schemas/notificationQuerySchema.ts
const notificationQuerySchema = pageQuerySchema.extend({ status: z.enum([
"pending",
"scheduled",
"retrying",
"running",
"completed",
"dead",
"cancelled"
]).optional() });
//#endregion
//#region ../../src/api/notifications/index.browser.ts
const AlephaApiNotifications = $module({
name: "alepha.api.notifications",
services: []
});
//#endregion
export { AlephaApiNotifications, notificationContactPreferencesSchema, notificationContactSchema, notificationDetailResourceSchema, notificationPayloadSchema, notificationQuerySchema, notificationResourceSchema };
//# sourceMappingURL=index.browser.js.map