mobility-toolbox-js
Version:
Toolbox for JavaScript applications in the domains of mobility and logistics.
311 lines (261 loc) • 8.34 kB
TypeScript
/* eslint-disable @typescript-eslint/no-redundant-type-constituents */
import type { Feature, Point } from 'geojson';
import type { components } from './realtimerest.d.ts';
export { operations as RealtimeRestOperations } from './realtimerest.d.ts';
export declare type RealtimeChannelModeSuffix = '_schematic' | '';
export declare type RealtimeMode = 'raw' | 'schematic' | 'topographic';
export type RealtimeTrainsByRouteIdentifierResult =
components['schemas']['TrainsByRouteIdentifierResult'];
export type RealtimeTrajectoryCollection =
components['schemas']['TrajectoryCollection'];
export type RealtimeRouteIdentifierMatch =
components['schemas']['RouteIdentifierMatch'];
/**
* @type RealtimeBbox
*/
export type RealtimeBbox = (number | string)[];
export type RealtimeBuffer = [number, number];
export interface RealtimeBufferResponse {
client_reference: '';
content: RealtimeTrajectoryResponse[];
source: 'buffer';
timestamp: number;
}
export type RealtimeChannelName =
| 'buffer'
| 'extra_geoms'
| 'healthcheck'
| 'line'
| 'websocket'
| `deleted_vehicles${RealtimeChannelModeSuffix}`
| `full_trajectory${RealtimeChannelModeSuffix}_${RealtimeTenant}_${RealtimeTrainId}`
| `stopsequence_${RealtimeTenant}_${RealtimeTrainId}`
| `timetable_${RealtimeStationId}`
| `trajectory${RealtimeChannelModeSuffix}`;
export interface RealtimeDeletedVehiclesResponse {
client_reference: null;
content: string;
source: `deleted_vehicles${RealtimeChannelModeSuffix}`;
timestamp: number;
}
export interface RealtimeDeparture {
aimedArrivalTime?: number;
aimedDepartureTime?: number;
arrivalDelay?: number;
arrivalTime?: number;
at_station_ds100?: string; // TODO Verify it still exists
at_stoppoint: string;
call_id: number;
changes: unknown[];
created_at: number;
departureDelay?: number;
departureTime?: number;
formation?: unknown;
fzo_estimated_time: number;
has_fzo: boolean;
has_realtime_journey: boolean;
journey_start_time?: number;
line: RealtimeLine;
min_arrival_time?: number;
new_to?: boolean; // TODO Verify it still exists
next_stoppoints: string[];
no_stop_between?: boolean; // TODO Verify it still exists
no_stop_till?: unknown; // TODO Verify it still exists
operator_provides_fzo: boolean;
platform?: string;
ris_aimed_time?: number;
ris_estimated_time?: number;
state: RealtimeStopState; /// (BOARDING|STOP_CANCELLED|JOURNEY_CANCELLED|HIDDEN)/
tenant: RealtimeTenant;
time?: number;
timediff?: number; // TODO Verify it still exists
timestamp?: number; // TODO Verify it still exists
to: string[];
train_id: RealtimeTrainId;
train_number?: number;
train_type?: number;
updated_at: number;
vehicle_mode?: string;
}
export interface RealtimeDepartureExtended extends RealtimeDeparture {
cancelled?: boolean; // value generated by RealtimeAPI class
}
export type RealtimeElevatorState = 'ALL_OPERABLE' | string;
export interface RealtimeExtraGeom extends Feature {
properties: RealtimeExtraGeomProperties;
}
export interface RealtimeExtraGeomDeleted {
properties: RealtimeExtraGeomProperties;
type: 'Deleted';
}
export interface RealtimeExtraGeomProperties {
ref: number | string;
}
export type RealtimeExtraGeoms = Record<string, Feature[]>;
export interface RealtimeExtraGeomsResponse {
client_reference: null;
content: RealtimeExtraGeom | RealtimeExtraGeomDeleted;
source: `extra_geoms`;
timestamp: number;
}
export type RealtimeFeedCollection = components['schemas']['FeedCollection'];
export type RealtimeFeed = components['schemas']['Feed'];
export type RealtimeFullTrajectoryCollection =
components['schemas']['FullTrajectoryCollection'];
export type RealtimeFullTrajectory = components['schemas']['FullTrajectory'];
export type RealtimeFullTrajectoryCollectionProperties =
components['schemas']['FullTrajectoryCollectionProperties'];
export type RealtimeFullTrajectoryProperties =
components['schemas']['FullTrajectoryProperties'];
export interface RealtimeHealth {
heathly: boolean;
service: RealtimeService;
tenant: null | string;
}
export interface RealtimeHealthCheckResponse {
client_reference: null;
content: RealtimeHealth;
source: 'healthcheck';
timestamp: number;
}
export type RealtimeLine = components['schemas']['Line'];
export type RealtimeMot =
| 'bus'
| 'cablecar'
| 'coach'
| 'ferry'
| 'funicular'
| 'gondola'
| 'rail'
| 'subway'
| 'tram';
export interface RealtimeNews {
incident_program: boolean;
messages: RealtimeNewsMessage[];
}
export interface RealtimeNewsMessage {
content: string;
lines: RealtimeLine[];
title: string;
updated: string; // TODO: ISO string
}
export interface RealtimeNewsTickerResponse {
client_reference: null;
content: RealtimeNews;
source: `${RealtimeTenant}_newsticker`;
timestamp: number;
}
export type RealtimeService =
| 'redis_websocket_api'
| 'tralis_fzo'
| 'tralis_geofox'
| 'tralis_newsticker'
| 'tralis_stations'
| 'tralis_vdv'
| 'tralis_worker'
| string;
export interface RealtimeStation extends Feature {
geometry: Point;
properties: RealtimeStationproperties;
}
export type RealtimeStationId = number;
export interface RealtimeStationproperties extends Feature {
elevatorOutOfOrder: boolean;
elevators: object;
elevatorState: RealtimeElevatorState;
hasAccessibility: boolean;
hasAirport: boolean;
hasElevator: boolean;
hasZOB: boolean;
name: string;
networkLines: RealtimeLine[];
tenant: RealtimeTenant;
transfers: RealtimeTransfer[];
uic: RealtimeStationId;
}
export interface RealtimeStationResponse {
client_reference: null;
content: RealtimeNews;
source: `station_${RealtimeStationId}`;
timestamp: number;
}
export interface RealtimeStop {
aimedArrivalTime: number;
aimedDepartureTime: number;
arrivalDelay?: number;
arrivalTime: number;
cancelled: boolean;
coordinate: number[];
departureDelay: number;
departureTime: number;
formation_id?: unknown;
noDropOff?: boolean;
noPickUp?: boolean;
platform?: unknown;
state?: RealtimeStopState;
stationId?: RealtimeStationId;
stationName: string;
stopUID: string;
}
export type RealtimeStopSequence = {
vehicleType: number; // TODO: Verify this property exists
} & components['schemas']['StopSequence'];
export interface RealtimeStopSequenceResponse {
client_reference: '';
content: RealtimeStopSequence[];
source: `stopsequence_${RealtimeTenant}_${RealtimeTrainId}`;
timestamp: number;
}
export type RealtimeStopState =
| 'BOARDING'
| 'HIDDEN'
| 'JOURNEY_CANCELLED'
| 'LEAVING'
| 'STOP_CANCELLED'
| string;
export type RealtimeTenant = '' | 'sbb' | 'sbh' | 'sbm' | string;
export interface RealtimeTimetableResponse {
client_reference: null;
content: RealtimeDeparture;
source: `timetable_${RealtimeStationId}`;
timestamp: number;
}
export type RealtimeTrainId = string;
export type RealtimeTrajectory = {
properties: RealtimeTrajectoryProperties;
} & components['schemas']['TrackerTrajectory'];
export type RealtimeTrajectoryProperties = {
coordinate?: [number, number]; // Added by RealtimeEnging after first rendering on a map
delay: null | number; // Override REST api defs:
event?: string;
event_delay?: number;
line: RealtimeLine; // TOOD verfy why this does not appears in the REST api schema
name?: string; // deprecated, name is an old property, use line.name instead.
operator?: string; // deprecated, operator is an old property, use tenant instead.
original_line?: RealtimeLine;
original_rake?: string;
original_train_number?: number;
position_correction?: number;
rake?: string;
raw_coordinates?: [number, number];
raw_time?: string;
ride_state?: string;
rotation?: number; // Added by realtime engine after first rendering on a map
train_number?: number;
transmitting_vehicle?: string;
} & components['schemas']['TrackerTrajectoryProperties'];
export interface RealtimeTrajectoryResponse {
client_reference: '';
content: RealtimeTrajectory;
source: `trajectory${RealtimeChannelModeSuffix}`;
timestamp: number;
}
export type RealtimeTrajectoryState =
| 'BOARDING'
| 'HIDDEN'
| 'JOURNEY_CANCELLED'
| 'STOP_CANCELLED';
export interface RealtimeTransfer {
lines: string[];
mot: RealtimeMot;
}