init: almost production-ready app

This commit is contained in:
2025-01-24 19:35:47 +01:00
commit 965a5df2fe
22 changed files with 2142 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
import type { ActiveData, SceneryData } from './common.types';
export type ActiveDataResponse = ActiveData;
export type SceneriesDataResponse = SceneryData[];
+122
View File
@@ -0,0 +1,122 @@
export interface ActiveData {
trains: ActiveTrain[];
activeSceneries: ActiveScenery[];
}
export interface ActiveTrain {
id: string;
trainNo: number;
mass: number;
speed: number;
length: number;
distance: number;
stockString: string;
driverName: string;
driverId: number;
driverIsSupporter: boolean;
driverLevel: number;
currentStationHash?: string;
currentStationName: string;
signal: string;
connectedTrack: string;
online: number;
lastSeen: number;
region: string;
isTimeout: boolean;
timetable?: ActiveTrainTimetable;
}
export interface ActiveTrainTimetable {
SKR: boolean;
TWR: boolean;
hasDangerousCargo: boolean;
hasExtraDeliveries: boolean;
warningNotes: string;
category: string;
stopList: TimetableStop[];
route: string;
timetableId: number;
sceneries: string[];
path: string;
}
export interface TimetableStop {
stopName: string;
stopNameRAW: string;
stopType: string;
stopDistance: number;
pointId: string;
comments?: string;
mainStop: boolean;
arrivalLine?: string;
arrivalTimestamp: number;
arrivalRealTimestamp: number;
arrivalDelay: number;
departureLine?: string;
departureTimestamp: number;
departureRealTimestamp: number;
departureDelay: number;
beginsHere: boolean;
terminatesHere: boolean;
confirmed: number;
stopped: number;
stopTime?: number;
}
export interface ActiveScenery {
dispatcherId: number;
dispatcherName: string;
dispatcherIsSupporter: boolean;
stationName: string;
stationHash: string;
region: string;
maxUsers: number;
currentUsers: number;
spawn: number;
lastSeen: number;
dispatcherExp: number;
nameFromHeader: string;
spawnString?: string;
networkConnectionString: string;
isOnline: number;
dispatcherRate: number;
dispatcherStatus: number;
}
export interface SceneryData {
createdAt: string;
updatedAt?: string;
id: number;
name: string;
SUP: boolean;
authors: string;
availability: string;
backupJSON: any;
checkpoints?: string;
controlType: string;
lines?: string;
project?: string;
reqLevel: number;
routes?: string;
routesInfo: SceneryRoute[];
signalType: string;
supportersOnly?: boolean;
url?: string;
projectUrl?: string;
hash?: string;
abbr: string;
hidden: boolean;
ASDEK: boolean;
hashHistory: string[];
}
export interface SceneryRoute {
routeName: string;
isElectric: boolean;
isInternal: boolean;
isRouteSBL: boolean;
routeSpeed: number;
routeLength: number;
routeTracks: number;
hidden?: boolean;
}