UNPKG

terriajs

Version:

Geospatial data visualization platform.

686 lines (575 loc) 17.4 kB
// adapted from code generated by pbf v3.2.0 // see https://developers.google.com/transit/gtfs-realtime/reference/ for the standard specification // Unfortunately, pbf doesn't output modules. And typescript gets upset about the types. // If this file is regenerated, a lot of manual massaging is required to make it useful. import Pbf from "pbf"; export abstract class ProtobufMessageReader<T> { abstract readonly defaultMessage: T; public read(pbf: Pbf, end?: number): T { return pbf.readFields(this.readField, this.defaultMessage, end); } protected abstract readField(tag: number, obj?: T, pbf?: Pbf): void; } // FeedMessage ======================================== export interface FeedMessage { header?: FeedHeader | null; entity?: FeedEntity[]; } export class FeedMessageReader extends ProtobufMessageReader<FeedMessage> { readonly defaultMessage: FeedMessage = { header: null, entity: [] }; protected readField(tag: number, obj?: FeedMessage, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (obj.entity === null || obj.entity === undefined) { obj.entity = []; } if (tag === 1) obj.header = new FeedHeaderReader().read(pbf, pbf.readVarint() + pbf.pos); else if (tag === 2) obj.entity.push( new FeedEntityReader().read(pbf, pbf.readVarint() + pbf.pos) ); } } // FeedHeader ======================================== enum FeedHeaderIncrementality { FULL_DATASET, DIFFERENTIAL } export interface FeedHeader { gtfs_realtime_version?: string; incrementality?: FeedHeaderIncrementality; timestamp?: number; } export class FeedHeaderReader extends ProtobufMessageReader<FeedHeader> { readonly defaultMessage: FeedHeader = { gtfs_realtime_version: "", incrementality: FeedHeaderIncrementality.FULL_DATASET, timestamp: 0 }; protected readField(tag: number, obj?: FeedHeader, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (tag === 1) obj.gtfs_realtime_version = pbf.readString(); else if (tag === 2) obj.incrementality = pbf.readVarint(); else if (tag === 3) obj.timestamp = pbf.readVarint(); } } // FeedEntity ======================================== export interface FeedEntity { id?: string; is_deleted?: boolean; trip_update?: TripUpdate | null; vehicle?: VehiclePosition | null; alert?: Alert | null; } export class FeedEntityReader extends ProtobufMessageReader<FeedEntity> { readonly defaultMessage: FeedEntity = { id: "", is_deleted: false, trip_update: null, vehicle: null, alert: null }; protected readField(tag: number, obj?: FeedEntity, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (tag === 1) obj.id = pbf.readString(); else if (tag === 2) obj.is_deleted = pbf.readBoolean(); else if (tag === 3) obj.trip_update = new TripUpdateReader().read( pbf, pbf.readVarint() + pbf.pos ); else if (tag === 4) obj.vehicle = new VehiclePositionReader().read( pbf, pbf.readVarint() + pbf.pos ); else if (tag === 5) obj.alert = new AlertReader().read(pbf, pbf.readVarint() + pbf.pos); } } // TripUpdate ======================================== export interface TripUpdate { trip?: TripDescriptor | null; vehicle?: VehicleDescriptor | null; stop_time_update?: StopTimeUpdate[]; timestamp?: number; delay?: number; } export class TripUpdateReader extends ProtobufMessageReader<TripUpdate> { readonly defaultMessage: TripUpdate = { trip: {}, vehicle: {}, stop_time_update: [], timestamp: 0, delay: 0 }; protected readField(tag: number, obj?: TripUpdate, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (obj.stop_time_update === null || obj.stop_time_update === undefined) { obj.stop_time_update = []; } if (tag === 1) obj.trip = new TripDescriptorReader().read( pbf, pbf.readVarint() + pbf.pos ); else if (tag === 3) obj.vehicle = new VehicleDescriptorReader().read( pbf, pbf.readVarint() + pbf.pos ); else if (tag === 2) obj.stop_time_update.push( new StopTimeUpdateReader().read(pbf, pbf.readVarint() + pbf.pos) ); else if (tag === 4) obj.timestamp = pbf.readVarint(); else if (tag === 5) obj.delay = pbf.readVarint(true); } } // TripUpdate.StopTimeEvent ======================================== export interface StopTimeEvent { delay?: number; time?: number; uncertainty?: number; } export class StopTimeEventReader extends ProtobufMessageReader<StopTimeEvent> { readonly defaultMessage: StopTimeEvent = { delay: 0, time: 0, uncertainty: 0 }; protected readField(tag: number, obj?: StopTimeEvent, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (tag === 1) obj.delay = pbf.readVarint(true); else if (tag === 2) obj.time = pbf.readVarint(true); else if (tag === 3) obj.uncertainty = pbf.readVarint(true); } } // TripUpdate.StopTimeUpdate ======================================== export interface StopTimeUpdate { stop_sequence?: number; stop_id?: string; arrival?: StopTimeEvent | null; departure?: StopTimeEvent | null; schedule_relationship?: StopTimeUpdateScheduleRelationship; } export class StopTimeUpdateReader extends ProtobufMessageReader<StopTimeUpdate> { readonly defaultMessage: StopTimeUpdate = { stop_sequence: 0, stop_id: "", arrival: null, departure: null, schedule_relationship: StopTimeUpdateScheduleRelationship.NO_DATA }; protected readField(tag: number, obj?: StopTimeUpdate, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (tag === 1) obj.stop_sequence = pbf.readVarint(); else if (tag === 4) obj.stop_id = pbf.readString(); else if (tag === 2) obj.arrival = new StopTimeEventReader().read( pbf, pbf.readVarint() + pbf.pos ); else if (tag === 3) obj.departure = new StopTimeEventReader().read( pbf, pbf.readVarint() + pbf.pos ); else if (tag === 5) obj.schedule_relationship = pbf.readVarint(); } } enum StopTimeUpdateScheduleRelationship { SCHEDULED, SKIPPED, NO_DATA } // VehiclePosition ======================================== export interface VehiclePosition { trip?: TripDescriptor | null; vehicle?: VehicleDescriptor | null; position?: Position | null; current_stop_sequence?: number; stop_id?: string; current_status?: VehicleStopStatus; timestamp?: number; congestion_level?: CongestionLevel; occupancy_status?: OccupancyStatus; } export class VehiclePositionReader extends ProtobufMessageReader<VehiclePosition> { readonly defaultMessage: VehiclePosition = { trip: null, vehicle: null, position: null, current_stop_sequence: 0, stop_id: "", current_status: VehicleStopStatus.IN_TRANSIT_TO, timestamp: 0, congestion_level: CongestionLevel.UNKNOWN_CONGESTION_LEVEL, occupancy_status: OccupancyStatus.EMPTY }; protected readField(tag: number, obj?: VehiclePosition, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (tag === 1) obj.trip = new TripDescriptorReader().read( pbf, pbf.readVarint() + pbf.pos ); else if (tag === 8) obj.vehicle = new VehicleDescriptorReader().read( pbf, pbf.readVarint() + pbf.pos ); else if (tag === 2) obj.position = new PositionReader().read(pbf, pbf.readVarint() + pbf.pos); else if (tag === 3) obj.current_stop_sequence = pbf.readVarint(); else if (tag === 7) obj.stop_id = pbf.readString(); else if (tag === 4) obj.current_status = pbf.readVarint(); else if (tag === 5) obj.timestamp = pbf.readVarint(); else if (tag === 6) obj.congestion_level = pbf.readVarint(); else if (tag === 9) obj.occupancy_status = pbf.readVarint(); } } export enum VehicleStopStatus { INCOMING_AT, STOPPED_AT, IN_TRANSIT_TO } export enum CongestionLevel { UNKNOWN_CONGESTION_LEVEL, RUNNING_SMOOTHLY, STOP_AND_GO, CONGESTION, SEVERE_CONGESTION } export enum OccupancyStatus { EMPTY, MANY_SEATS_AVAILABLE, FEW_SEATS_AVAILABLE, STANDING_ROOM_ONLY, CRUSHED_STANDING_ROOM_ONLY, FULL, NOT_ACCEPTING_PASSENGERS } // Alert ======================================== export interface Alert { active_period?: TimeRange[]; informed_entity?: EntitySelector[]; cause?: AlertCause; effect?: AlertEffect; url?: TranslatedString | null; header_text?: TranslatedString | null; description_text?: TranslatedString | null; } export class AlertReader extends ProtobufMessageReader<Alert> { readonly defaultMessage: Alert = { active_period: [], informed_entity: [], cause: AlertCause.CONSTRUCTION, effect: AlertEffect.STOP_MOVED, url: null, header_text: null, description_text: null }; protected readField(tag: number, obj?: Alert, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (obj.active_period === null || obj.active_period === undefined) { obj.active_period = []; } if (obj.informed_entity === null || obj.informed_entity === undefined) { obj.informed_entity = []; } if (tag === 1) obj.active_period.push( new TimeRangeReader().read(pbf, pbf.readVarint() + pbf.pos) ); else if (tag === 5) obj.informed_entity.push( new EntitySelectorReader().read(pbf, pbf.readVarint() + pbf.pos) ); else if (tag === 6) obj.cause = pbf.readVarint(); else if (tag === 7) obj.effect = pbf.readVarint(); else if (tag === 8) obj.url = new TranslatedStringReader().read( pbf, pbf.readVarint() + pbf.pos ); else if (tag === 10) obj.header_text = new TranslatedStringReader().read( pbf, pbf.readVarint() + pbf.pos ); else if (tag === 11) obj.description_text = new TranslatedStringReader().read( pbf, pbf.readVarint() + pbf.pos ); } } enum AlertCause { UNKNOWN_CAUSE = 1, OTHER_CAUSE, TECHNICAL_PROBLEM, STRIKE, DEMONSTRATION, ACCIDENT, HOLIDAY, WEATHER, MAINTENANCE, CONSTRUCTION, POLICE_ACTIVITY, MEDICAL_EMERGENCY } enum AlertEffect { NO_SERVICE = 1, REDUCED_SERVICE, SIGNIFICANT_DELAYS, ADDITIONAL_SERVICE, MODIFIED_SERVICE, OTHER_EFFECT, UNKNOWN_EFFECT, STOP_MOVED } // TimeRange ======================================== export interface TimeRange { start?: number; end?: number; } export class TimeRangeReader extends ProtobufMessageReader<TimeRange> { readonly defaultMessage: TimeRange = { start: 0, end: 0 }; protected readField(tag: number, obj?: TimeRange, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (tag === 1) obj.start = pbf.readVarint(); else if (tag === 2) obj.end = pbf.readVarint(); } } // Position ======================================== export interface Position { latitude?: number; longitude?: number; bearing?: number; odometer?: number; speed?: number; } export class PositionReader extends ProtobufMessageReader<Position> { readonly defaultMessage: Position = { latitude: 0, longitude: 0, bearing: 0, odometer: 0, speed: 0 }; protected readField(tag: number, obj?: Position, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (tag === 1) obj.latitude = pbf.readFloat(); else if (tag === 2) obj.longitude = pbf.readFloat(); else if (tag === 3) obj.bearing = pbf.readFloat(); else if (tag === 4) obj.odometer = pbf.readDouble(); else if (tag === 5) obj.speed = pbf.readFloat(); } } // TripDescriptor ======================================== export interface TripDescriptor { trip_id?: string; route_id?: string; direction_id?: number; start_time?: string; start_date?: string; schedule_relationship?: TripDescriptorScheduleRelationship; } export class TripDescriptorReader extends ProtobufMessageReader<TripDescriptor> { readonly defaultMessage: TripDescriptor = { trip_id: "", route_id: "", direction_id: 0, start_time: "", start_date: "", schedule_relationship: TripDescriptorScheduleRelationship.SCHEDULED }; protected readField(tag: number, obj?: TripDescriptor, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (tag === 1) obj.trip_id = pbf.readString(); else if (tag === 5) obj.route_id = pbf.readString(); else if (tag === 6) obj.direction_id = pbf.readVarint(); else if (tag === 2) obj.start_time = pbf.readString(); else if (tag === 3) obj.start_date = pbf.readString(); else if (tag === 4) obj.schedule_relationship = pbf.readVarint(); } } enum TripDescriptorScheduleRelationship { SCHEDULED, ADDED, UNSCHEDULED, CANCELED } // VehicleDescriptor ======================================== // const VehicleDescriptor = (self.VehicleDescriptor = {}); // VehicleDescriptor.read = function(pbf, end) { // return pbf.readFields( // VehicleDescriptor._readField, // { id: "", label: "", license_plate: "" }, // end // ); // }; // VehicleDescriptor._readField = function(tag, obj, pbf) { // if (tag === 1) obj.id = pbf.readString(); // else if (tag === 2) obj.label = pbf.readString(); // else if (tag === 3) obj.license_plate = pbf.readString(); // }; export interface VehicleDescriptor { id?: string; label?: string; license_plate?: string; } export class VehicleDescriptorReader extends ProtobufMessageReader<VehicleDescriptor> { readonly defaultMessage: VehicleDescriptor = { id: "", label: "", license_plate: "" }; protected readField(tag: number, obj?: VehicleDescriptor, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (tag === 1) obj.id = pbf.readString(); else if (tag === 2) obj.label = pbf.readString(); else if (tag === 3) obj.license_plate = pbf.readString(); } } // EntitySelector ======================================== export interface EntitySelector { agency_id?: string; route_id?: string; route_type?: number; trip?: TripDescriptor | null; stop_id?: string; } export class EntitySelectorReader extends ProtobufMessageReader<EntitySelector> { readonly defaultMessage: EntitySelector = { agency_id: "", route_id: "", route_type: 0, trip: null, stop_id: "" }; protected readField(tag: number, obj?: EntitySelector, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (tag === 1) obj.agency_id = pbf.readString(); else if (tag === 2) obj.route_id = pbf.readString(); else if (tag === 3) obj.route_type = pbf.readVarint(true); else if (tag === 4) obj.trip = new TripDescriptorReader().read( pbf, pbf.readVarint() + pbf.pos ); else if (tag === 5) obj.stop_id = pbf.readString(); } } // TranslatedString ======================================== export interface TranslatedString { translation?: Translation[]; } export class TranslatedStringReader extends ProtobufMessageReader<TranslatedString> { readonly defaultMessage: TranslatedString = { translation: [] }; protected readField(tag: number, obj?: TranslatedString, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (obj.translation === null || obj.translation === undefined) { obj.translation = []; } if (tag === 1) obj.translation.push( new TranslationReader().read(pbf, pbf.readVarint() + pbf.pos) ); } } // TranslatedString.Translation ======================================== export interface Translation { text?: string; language?: string; } export class TranslationReader extends ProtobufMessageReader<Translation> { readonly defaultMessage: Translation = { text: "", language: "" }; protected readField(tag: number, obj?: Translation, pbf?: Pbf): void { if (pbf === null || pbf === undefined) { return; } if (obj === null || obj === undefined) { obj = {}; } if (tag === 1) obj.text = pbf.readString(); else if (tag === 2) obj.language = pbf.readString(); } }