UNPKG

rtech-struct

Version:

Rtech Platform Superstruct Entity

55 lines (40 loc) 1.48 kB
const s = require('superstruct') const { carrier } = require('./carrier') const { driver } = require('./driver') const { TRACKING_ID_SIZE_MIN, TRACKING_ID_SIZE_MAX } = require('./package') const TRACKING_PROVIDER_SIZE_MIN = 2 const TRACKING_PROVIDER_SIZE_MAX = 32 const PLATE_SIZE_MIN = 1 const PLATE_SIZE_MAX = 64 const VEHICLE_TYPE_SIZE_MIN = 1 const VEHICLE_TYPE_SIZE_MAX = 32 const INFORMATION_SIZE_MIN = 1 const INFORMATION_SIZE_MAX = 128 const BRAND_SIZE_MIN = 1 const BRAND_SIZE_MAX = 128 const ENTITY_TYPE = 'sfu/vehicle' const Vehicle = s.object({ carrier: carrier, drivers: s.optional(s.array(driver)), tracking_provider: s.size(s.string(), TRACKING_PROVIDER_SIZE_MIN, TRACKING_PROVIDER_SIZE_MAX), plate: s.size(s.string(), PLATE_SIZE_MIN, PLATE_SIZE_MAX), vehicle_type: s.size(s.string(), VEHICLE_TYPE_SIZE_MIN, VEHICLE_TYPE_SIZE_MAX), type: s.defaulted(s.optional(s.literal(ENTITY_TYPE)), ENTITY_TYPE), information: s.optional(s.size(s.string(), INFORMATION_SIZE_MIN, INFORMATION_SIZE_MAX)), brand: s.optional(s.size(s.string(), BRAND_SIZE_MIN, BRAND_SIZE_MAX)), packages: s.array(s.size(s.string(), TRACKING_ID_SIZE_MIN, TRACKING_ID_SIZE_MAX)) }) module.exports = { vehicle: Vehicle, TRACKING_PROVIDER_SIZE_MIN, TRACKING_PROVIDER_SIZE_MAX, PLATE_SIZE_MIN, PLATE_SIZE_MAX, VEHICLE_TYPE_SIZE_MIN, VEHICLE_TYPE_SIZE_MAX, INFORMATION_SIZE_MIN, INFORMATION_SIZE_MAX, BRAND_SIZE_MIN, BRAND_SIZE_MAX, ENTITY_TYPE }