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.

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