UNPKG

@ministryofjustice/hmpps-digital-prison-reporting-frontend

Version:

The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.

88 lines (85 loc) 3.12 kB
import { RequestStatus, ReportType, LoadType } from '../../../types/UserReports.js'; import { z } from 'zod'; const RequestStatusSchema = z.enum([ RequestStatus.SUBMITTED, RequestStatus.STARTED, RequestStatus.PICKED, RequestStatus.READY, RequestStatus.FINISHED, RequestStatus.EXPIRED, RequestStatus.FAILED, RequestStatus.ABORTED, RequestStatus.ALL, ]); const ReportTypeSchema = z.enum([ReportType.REPORT, ReportType.DASHBOARD]); const LoadTypeSchema = z.enum([LoadType.ASYNC, LoadType.SYNC]); const AsyncReportsTimestampSchema = z.object({ lastViewed: z.coerce.date().optional(), requested: z.coerce.date().optional(), completed: z.coerce.date().optional(), expired: z.coerce.date().optional(), failed: z.coerce.date().optional(), retried: z.coerce.date().optional(), aborted: z.coerce.date().optional(), refresh: z.coerce.date().optional(), }); const QuerySummaryItemSchema = z .object({ name: z.string(), value: z.string(), }) .catchall(z.unknown()); const AsyncReportQueryDataSchema = z.object({ data: z.record(z.string(), z.union([z.string(), z.array(z.string())])).default({}), summary: z.array(QuerySummaryItemSchema), }); const AsyncReportUrlItemDataSchema = z.object({ pathname: z.string().optional(), fullUrl: z.string().optional(), search: z.string().optional(), default: z.string().optional(), }); const AsyncReportUrlDataSchema = z.object({ origin: z.string(), request: AsyncReportUrlItemDataSchema.optional(), report: AsyncReportUrlItemDataSchema.optional(), polling: AsyncReportUrlItemDataSchema.optional(), }); const ChildReportExecutionDataSchema = z.object({ variantId: z.string(), executionId: z.string().optional(), tableId: z.string().optional(), status: RequestStatusSchema.optional(), }); const ParamsConfigSchema = z.object({ data: z.record(z.string(), z.string()).default({}), queryString: z.string(), }); const normalizeStoredReportData = (data) => ({ ...data, name: data.name ?? data.variantName ?? '', }); const StoredReportDataObjectSchema = z.object({ reportId: z.string(), variantId: z.string().optional(), id: z.string(), executionId: z.string().optional(), tableId: z.string().optional(), reportName: z.string(), variantName: z.string().optional(), name: z.string().optional(), schedule: z.string().optional(), description: z.string(), status: RequestStatusSchema.optional(), timestamp: AsyncReportsTimestampSchema, dataProductDefinitionsPath: z.string().optional(), dpdPathFromQuery: z.boolean().optional(), query: AsyncReportQueryDataSchema.optional(), interactiveQuery: AsyncReportQueryDataSchema.optional(), url: AsyncReportUrlDataSchema.optional(), type: ReportTypeSchema, loadType: LoadTypeSchema.optional(), childExecutionData: z.array(ChildReportExecutionDataSchema).optional(), }); export { AsyncReportsTimestampSchema, ParamsConfigSchema, StoredReportDataObjectSchema, normalizeStoredReportData }; //# sourceMappingURL=validation.js.map