rtech-struct
Version:
Rtech Platform Superstruct Entity
57 lines (48 loc) • 1.61 kB
JavaScript
const s = require('superstruct')
const SpecialCondition = s.enums(['Not Standard'])
const VehicleType = s.enums(['AIRFREIGHT', 'TRUCK', 'VAN', 'VANLITE'])
const FlowType = s.enums(['Domestic', 'Europe', 'Extra UE'])
const MobilityPackageItem = s.object({
id: s.union([s.string(), s.number()]),
pe_footprint_unit: s.number(),
pe_footprint: s.number(),
pe_weight: s.number(),
final_pe: s.number(),
special_conditions: s.array(SpecialCondition),
stackable: s.boolean(),
stack_count: s.optional(s.number()),
quantity: s.number(),
is_dangerous: s.boolean(),
is_multistep: s.boolean()
})
const NotStandardMobilityPackageDetails = s.object({
type: s.literal('not_standard')
})
const StandardMobilityPackageDetails = s.object({
type: s.literal('standard'),
total_pe_footprint: s.number(),
total_pe_weight: s.number(),
final_total_pe_load: s.number(),
vehicle_types: s.array(VehicleType),
flow_types: s.array(FlowType),
expected_transit_time: s.number(),
estimated_speedness: s.number(),
adr: s.boolean(),
multistep: s.boolean(),
engine_needed: s.boolean(),
packages: s.array(MobilityPackageItem)
})
const MobilityPackageDetails = s.union([NotStandardMobilityPackageDetails, StandardMobilityPackageDetails])
const MobilityPackageQualifier = s.object({
type: s.literal('mobility-package'),
details: MobilityPackageDetails
})
const Qualifiers = s.array(MobilityPackageQualifier)
module.exports = {
MobilityPackageItem,
NotStandardMobilityPackageDetails,
StandardMobilityPackageDetails,
MobilityPackageDetails,
MobilityPackageQualifier,
Qualifiers
}