UNPKG

@tmlmobilidade/types

Version:

This package provides shared Zod validation schemas and their corresponding TypeScript types for use across projects. All types are automatically inferred from the schemas to ensure full type safety and reduce maintenance overhead.

62 lines (61 loc) 3.02 kB
/* * */ import { z } from 'zod'; /* * */ export const RideAnalysisSchema = z.object({ grade: z.enum(['pass', 'fail', 'error']), message: z.string(), reason: z.string(), value: z.number().nullable(), }).strict(); /* * */ export const atLeasOneEventOnFirstStopSchema = RideAnalysisSchema.extend({ reason: z.enum(['FOUND_ONE_OR_MORE_EVENTS_ON_FIRST_STOP', 'NO_EVENTS_FOUND_ON_FIRST_STOP']), }).strict(); /* * */ export const atMostTwoDriverIdsSchema = RideAnalysisSchema.extend({ reason: z.enum(['FOUND_MORE_THAN_2_DRIVER_IDS', 'FOUND_ONE_OR_TWO_DRIVER_IDS', 'NO_DRIVER_ID_FOUND']), }).strict(); /* * */ export const atMostTwoVehicleIdsSchema = RideAnalysisSchema.extend({ reason: z.enum(['FOUND_MORE_THAN_2_VEHICLE_IDS', 'FOUND_ONE_OR_TWO_VEHICLE_IDS', 'NO_VEHICLE_ID_FOUND']), }).strict(); /* * */ export const avgIntervalVehicleEventsSchema = RideAnalysisSchema.extend({ reason: z.enum(['AVG_INTERVAL_HIGHER_THAN_20_SECONDS', 'AVG_INTERVAL_LOWER_THAN_OR_EQUAL_TO_20_SECONDS', 'NO_VEHICLE_EVENTS_FOUND']), }).strict(); /* * */ export const endedAtLastStopSchema = RideAnalysisSchema.extend({ reason: z.enum(['ENDED_AT_LAST_STOP', 'ENDED_OUTSIDE_OF_LAST_STOP', 'NO_VEHICLE_EVENTS_FOUND', 'NO_PATH_DATA']), }).strict(); /* * */ export const excessiveVehicleEventDelaySchema = RideAnalysisSchema.extend({ reason: z.enum(['ALL_VEHICLE_EVENTS_ARE_WITHIN_DELAY_LIMITS', 'THERE_ARE_VEHICLE_EVENTS_WITH_EXCESSIVE_DELAY']), }).strict(); /* * */ export const lessThanTenVehicleEventsSchema = RideAnalysisSchema.extend({ reason: z.enum(['FOUND_MORE_THAN_10_VEHICLE_EVENTS', 'FOUND_ONLY_1_VEHICLE_EVENT', 'FOUND_LESS_THAN_10_VEHICLE_EVENTS']), }).strict(); /* * */ export const matchingLocationTransactionsSchema = RideAnalysisSchema.extend({ reason: z.enum(['ALL_STOPS_HAVE_LOCATION_TRANSACTIONS', 'MISSING_LOCATION_TRANSACTION_FOR_AT_LEAST_ONE_STOP', 'NO_PATH_DATA']), }).strict(); /* * */ export const ontimeStartSchema = RideAnalysisSchema.extend({ reason: z.enum(['NO_OBSERVED_START_TIME', 'NO_SCHEDULED_START_TIME', 'RIDE_STARTED_EARLY', 'RIDE_STARTED_MORE_THAN_FIVE_MINUTES_LATE', 'RIDE_STARTED_ZERO_TO_FIVE_MINUTES_LATE']), }).strict(); /* * */ export const simpleOneValidationTransactionSchema = RideAnalysisSchema.extend({ reason: z.enum(['FOUND_AT_LEAST_ONE_VALIDATION_TRANSACTION', 'NO_VALIDATION_TRANSACTION_FOUND']), }).strict(); /* * */ export const simpleOneVehicleEventOrValidationTransactionSchema = RideAnalysisSchema.extend({ reason: z.enum(['FOUND_VEHICLE_EVENT_OR_VALIDATION_TRANSACTION', 'NO_VEHICLE_EVENT_OR_VALIDATION_TRANSACTION_FOUND']), }).strict(); /* * */ export const simpleThreeVehicleEventsSchema = RideAnalysisSchema.extend({ reason: z.enum(['ALL_STOPS_FOUND', 'MISSING_FIRST_STOPS', 'MISSING_LAST_STOPS', 'MISSING_MIDDLE_STOPS', 'NO_PATH_DATA']), }).strict(); /* * */ export const transactionSequentialitySchema = RideAnalysisSchema.extend({ reason: z.enum(['ALL_TRANSACTIONS_RECEIVED_SO_FAR', 'MISSING_TRANSACTIONS']), }).strict();