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.

111 lines (110 loc) 4.12 kB
/* * */ import { DocumentSchema } from '../_common/document.js'; import { validateUnixTimestamp } from '../_common/unix-timestamp.js'; import { z } from 'zod'; /* * */ export var ApexValidationStatus; (function (ApexValidationStatus) { /** * VALID: * The card holder had a valid contract for the given context. */ ApexValidationStatus[ApexValidationStatus["_0_ContractValid"] = 0] = "_0_ContractValid"; /** * INVALID: * The card holder already has a valid validation for the given context. */ ApexValidationStatus[ApexValidationStatus["_1_Antipassback"] = 1] = "_1_Antipassback"; /** * INVALID: * The card holder's card is in the black list. */ ApexValidationStatus[ApexValidationStatus["_2_CardInBlackList"] = 2] = "_2_CardInBlackList"; /** * INVALID: * The validator SAM is in the black list. */ ApexValidationStatus[ApexValidationStatus["_3_SamInBlackList"] = 3] = "_3_SamInBlackList"; /** * VALID: * The card holder's card is in the white list. */ ApexValidationStatus[ApexValidationStatus["_4_CardInWhiteList"] = 4] = "_4_CardInWhiteList"; /** * VALID: * The card holder's profile is in the white list. */ ApexValidationStatus[ApexValidationStatus["_5_ProfileInWhiteList"] = 5] = "_5_ProfileInWhiteList"; /** * VALID: * The context allows for validation re-use. */ ApexValidationStatus[ApexValidationStatus["_6_Interchange"] = 6] = "_6_Interchange"; /** * INVALID: * The validation could not be written to the card. */ ApexValidationStatus[ApexValidationStatus["_7_Interrupted"] = 7] = "_7_Interrupted"; /** * INVALID: * The card holder does not have a valid contract for the given context. */ ApexValidationStatus[ApexValidationStatus["_8_NoValidContract"] = 8] = "_8_NoValidContract"; /** * INVALID: * The card holder's card is invalidated. */ ApexValidationStatus[ApexValidationStatus["_9_CardInvalidated"] = 9] = "_9_CardInvalidated"; /** * INVALID: * The card holder's card or the validator's SAM has no more space for events. */ ApexValidationStatus[ApexValidationStatus["_10_EventsFull"] = 10] = "_10_EventsFull"; /** * INVALID: * The card holder's card does not have enough units for the given context. */ ApexValidationStatus[ApexValidationStatus["_11_NotEnoughUnits"] = 11] = "_11_NotEnoughUnits"; /** * INVALID: * The card holder's contract has expired. */ ApexValidationStatus[ApexValidationStatus["_12_ContractExpired"] = 12] = "_12_ContractExpired"; /** * INVALID: * The maximum value for the validation status. This is used to validate the status. */ ApexValidationStatus[ApexValidationStatus["_13_MaxValue"] = 13] = "_13_MaxValue"; })(ApexValidationStatus || (ApexValidationStatus = {})); /* * */ export const SimplifiedApexValidationSchema = DocumentSchema.extend({ agency_id: z.string(), apex_version: z.string(), card_serial_number: z.string(), device_id: z.string(), event_type: z.number(), is_passenger: z.boolean(), line_id: z.string(), mac_ase_counter_value: z.number(), mac_sam_serial_number: z.number(), on_board_refund_id: z.string().nullable(), on_board_sale_id: z.string().nullable(), pattern_id: z.string(), product_id: z.string(), received_at: z.number().transform(validateUnixTimestamp).brand('UnixTimestamp'), stop_id: z.string(), trip_id: z.string(), units_qty: z.number().nullable(), validation_status: z.nativeEnum(ApexValidationStatus), vehicle_id: z.string(), }).strict(); export const UpdateSimplifiedApexValidationSchema = SimplifiedApexValidationSchema.partial(); /** * Validation statuses that are considered valid for the card holder to travel. */ export const ALLOWED_VALIDATION_STATUSES = [ ApexValidationStatus._0_ContractValid, ApexValidationStatus._4_CardInWhiteList, ApexValidationStatus._5_ProfileInWhiteList, ApexValidationStatus._6_Interchange, ];