PSA/shared/workflow/runtime/schemas/documentEventSchemas.ts
Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

97 lines
3.8 KiB
TypeScript

import { z } from 'zod';
import { BaseDomainEventPayloadSchema, uuidSchema } from './commonEventPayloadSchemas';
const documentIdSchema = uuidSchema('Document ID');
const userIdSchema = uuidSchema('User ID');
export const documentUploadedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
documentId: documentIdSchema,
uploadedByUserId: userIdSchema.optional(),
uploadedAt: z.string().datetime().optional(),
fileName: z.string().min(1),
contentType: z.string().min(1),
sizeBytes: z.number().int().nonnegative(),
storageKey: z.string().min(1),
}).describe('Payload for DOCUMENT_UPLOADED');
export type DocumentUploadedEventPayload = z.infer<typeof documentUploadedEventPayloadSchema>;
export const documentDeletedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
documentId: documentIdSchema,
deletedByUserId: userIdSchema.optional(),
deletedAt: z.string().datetime().optional(),
reason: z.string().optional(),
}).describe('Payload for DOCUMENT_DELETED');
export type DocumentDeletedEventPayload = z.infer<typeof documentDeletedEventPayloadSchema>;
export const documentAssociatedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
documentId: documentIdSchema,
entityType: z.string().min(1),
entityId: z.string().min(1),
associatedByUserId: userIdSchema.optional(),
associatedAt: z.string().datetime().optional(),
}).describe('Payload for DOCUMENT_ASSOCIATED');
export type DocumentAssociatedEventPayload = z.infer<typeof documentAssociatedEventPayloadSchema>;
export const documentDetachedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
documentId: documentIdSchema,
entityType: z.string().min(1),
entityId: z.string().min(1),
detachedByUserId: userIdSchema.optional(),
detachedAt: z.string().datetime().optional(),
reason: z.string().optional(),
}).describe('Payload for DOCUMENT_DETACHED');
export type DocumentDetachedEventPayload = z.infer<typeof documentDetachedEventPayloadSchema>;
export const documentGeneratedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
documentId: documentIdSchema,
sourceType: z.string().min(1),
sourceId: z.string().min(1),
generatedByUserId: userIdSchema.optional(),
generatedAt: z.string().datetime().optional(),
fileName: z.string().min(1),
}).describe('Payload for DOCUMENT_GENERATED');
export type DocumentGeneratedEventPayload = z.infer<typeof documentGeneratedEventPayloadSchema>;
export const documentSignatureRequestedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
documentId: documentIdSchema,
requestId: z.string().uuid(),
requestedByUserId: userIdSchema.optional(),
requestedAt: z.string().datetime().optional(),
signers: z
.array(
z.object({
email: z.string().email(),
name: z.string().optional(),
})
)
.min(1),
expiresAt: z.string().datetime().optional(),
}).describe('Payload for DOCUMENT_SIGNATURE_REQUESTED');
export type DocumentSignatureRequestedEventPayload = z.infer<
typeof documentSignatureRequestedEventPayloadSchema
>;
export const documentSignedEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
documentId: documentIdSchema,
requestId: z.string().uuid(),
signedAt: z.string().datetime().optional(),
signerEmail: z.string().email().optional(),
signerId: z.string().uuid().optional(),
}).describe('Payload for DOCUMENT_SIGNED');
export type DocumentSignedEventPayload = z.infer<typeof documentSignedEventPayloadSchema>;
export const documentSignatureExpiredEventPayloadSchema = BaseDomainEventPayloadSchema.extend({
documentId: documentIdSchema,
requestId: z.string().uuid(),
expiredAt: z.string().datetime().optional(),
}).describe('Payload for DOCUMENT_SIGNATURE_EXPIRED');
export type DocumentSignatureExpiredEventPayload = z.infer<typeof documentSignatureExpiredEventPayloadSchema>;