From fb6788ae2af70a6c2e0a9997501404bd2cde228e Mon Sep 17 00:00:00 2001 From: alekswilc Date: Sat, 3 Aug 2024 15:03:19 +0200 Subject: [PATCH] switch to @simrail/types --- package-lock.json | 6 ++++++ package.json | 1 + src/types/payload.ts | 4 ---- src/types/player.ts | 2 ++ src/types/station.ts | 23 ----------------------- src/util/PlayerUtil.ts | 2 +- src/util/SimrailClient.ts | 20 ++++++++++---------- 7 files changed, 20 insertions(+), 38 deletions(-) delete mode 100644 src/types/payload.ts delete mode 100644 src/types/station.ts diff --git a/package-lock.json b/package-lock.json index 4b143da..c7c5e0a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@simrail/types": "^0.0.4", "dayjs": "^1.11.12", "ejs": "^3.1.10", "express": "^4.19.2", @@ -85,6 +86,11 @@ "@redis/client": "^1.0.0" } }, + "node_modules/@simrail/types": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@simrail/types/-/types-0.0.4.tgz", + "integrity": "sha512-AknM5FP+crERb3m/YtZqCgdFbrwUEwYB4BXfv1z+b7CVSrRsidAnaMIJZw/MhmsGxAmNIqQK7RPhDEx8qNzblA==" + }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", diff --git a/package.json b/package.json index d9e9d6d..dd97a16 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ }, "type": "module", "dependencies": { + "@simrail/types": "^0.0.4", "dayjs": "^1.11.12", "ejs": "^3.1.10", "express": "^4.19.2", diff --git a/src/types/payload.ts b/src/types/payload.ts deleted file mode 100644 index bab2933..0000000 --- a/src/types/payload.ts +++ /dev/null @@ -1,4 +0,0 @@ -export type ISimrailPayload = { - result: boolean; - description: string; -} \ No newline at end of file diff --git a/src/types/player.ts b/src/types/player.ts index 2edc712..8331999 100644 --- a/src/types/player.ts +++ b/src/types/player.ts @@ -1,3 +1,5 @@ +/* steam api */ + export type IPlayer = { steamid: string, communityvisibilitystate: number, diff --git a/src/types/station.ts b/src/types/station.ts deleted file mode 100644 index 946bb64..0000000 --- a/src/types/station.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ISimrailPayload } from './payload.js'; - -export type IStation = { - Name: string; - Prefix: string; - DifficultyLevel: number; - Latititude: number; - Longitude: number; - MainImageURL: string; - AdditionalImage1URL: string; - AdditionalImage2URL: string; - DispatchedBy: IStationDispatch[]; -} - -export type IStationDispatch = { - ServerCode: string, - SteamId: number -} - -export type IStationPayload = { - data: IStation[]; - count: number; -} & ISimrailPayload; \ No newline at end of file diff --git a/src/util/PlayerUtil.ts b/src/util/PlayerUtil.ts index c595ea8..8bbafc5 100644 --- a/src/util/PlayerUtil.ts +++ b/src/util/PlayerUtil.ts @@ -3,7 +3,7 @@ import { IPlayerPayload } from '../types/player.js'; const STEAM_API_KEY = process.env.STEAM_APIKEY; export class PlayerUtil { - public static async getPlayer(steamId: string) { + public static async getPlayer(steamId: number | string) { const data = (await fetch(`https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=${STEAM_API_KEY}&format=json&steamids=${steamId}`).then(x => x.json())) as IPlayerPayload; if (!data.response.players) return; return data.response.players[0]; diff --git a/src/util/SimrailClient.ts b/src/util/SimrailClient.ts index 582cc48..d48cc06 100644 --- a/src/util/SimrailClient.ts +++ b/src/util/SimrailClient.ts @@ -1,24 +1,24 @@ import { EventEmitter } from 'node:events'; -import { IStation, IStationPayload } from '../types/station.js'; + import { IPlayer } from '../types/player.js'; import { PlayerUtil } from './PlayerUtil.js'; +import { Station, ApiResponse } from '@simrail/types'; export enum SimrailClientEvents { StationJoined = 'stationJoined', StationLeft = 'stationLeft', - } export declare interface SimrailClient { - on(event: SimrailClientEvents.StationJoined, listener: (station: IStation, player: IPlayer) => void): this; - on(event: SimrailClientEvents.StationLeft, listener: (station: IStation, player: IPlayer, joinedAt: number) => void): this; + on(event: SimrailClientEvents.StationJoined, listener: (station: Station, player: IPlayer) => void): this; + on(event: SimrailClientEvents.StationLeft, listener: (station: Station, player: IPlayer, joinedAt: number) => void): this; on(event: string, listener: Function): this; } export class SimrailClient extends EventEmitter { - public stations: IStation[] = []; + public stations: Station[] = []; public stationsOccupied: Record = {}; public constructor() { @@ -41,13 +41,13 @@ export class SimrailClient extends EventEmitter { if (!await redis.json.get('stations_occupied')) redis.json.set('stations_occupied', '$', {}); - this.stations = (await redis.json.get('stations') as unknown as IStation[]); + this.stations = (await redis.json.get('stations') as unknown as Station[]); this.stationsOccupied = (await redis.json.get('stations_occupied') as unknown as Record); } private async update() { - const servers = (await fetch('https://panel.simrail.eu:8084/stations-open?serverCode=pl2').then(x => x.json())) as IStationPayload; + const servers = (await fetch('https://panel.simrail.eu:8084/stations-open?serverCode=pl2').then(x => x.json())) as ApiResponse; if (!servers.result) return @@ -68,11 +68,11 @@ export class SimrailClient extends EventEmitter { if (!data.DispatchedBy[0]?.SteamId) { // join const date = new Date(); - const player = await PlayerUtil.getPlayer(x.DispatchedBy[0]?.SteamId.toString()); + const player = await PlayerUtil.getPlayer(x.DispatchedBy[0]?.SteamId); this.emit(SimrailClientEvents.StationJoined, x, player); this.stationsOccupied[data.Prefix] = { - steamId: x.DispatchedBy[0]?.SteamId.toString(), + steamId: x.DispatchedBy[0]?.SteamId, joinedAt: date.getTime() } redis.json.set('stations_occupied', '$', this.stationsOccupied); @@ -80,7 +80,7 @@ export class SimrailClient extends EventEmitter { return; } - const player = await PlayerUtil.getPlayer(data.DispatchedBy[0]?.SteamId.toString()) + const player = await PlayerUtil.getPlayer(data.DispatchedBy[0]?.SteamId) this.emit(SimrailClientEvents.StationLeft, x, player, this.stationsOccupied[data.Prefix]?.joinedAt); delete this.stationsOccupied[data.Prefix];