UNPKG

@golemio/pid

Version:
40 lines 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MetroRunsMessagesTransformation = void 0; const AbstractTransformation_1 = require("@golemio/core/dist/helpers/transformation/AbstractTransformation"); class MetroRunsMessagesTransformation extends AbstractTransformation_1.AbstractTransformation { constructor() { super(...arguments); this.name = "MetroRunMessages"; this.transform = ({ data }) => { let { $: messageData, vlak: trainData } = data.m; if (!trainData) { return []; } if (!Array.isArray(trainData)) { trainData = [trainData]; } const elements = trainData.map((train) => ({ messageData, trainData: train })); return this.transformArray(elements); }; this.transformInternal = ({ messageData, trainData }) => { const delayOriginSeconds = parseInt(trainData.$.odch); const messageTimestamp = new Date(messageData.tm); const scheduledTimestamp = new Date(messageTimestamp); // delay is in seconds, positive number means the train is ahead of time scheduledTimestamp.setSeconds(scheduledTimestamp.getSeconds() + delayOriginSeconds); return { route_name: messageData.linka, message_timestamp: messageTimestamp, train_set_number_scheduled: trainData.$.csp.trimStart(), train_set_number_real: trainData.$.csr.trimStart(), train_number: trainData.$.cv, track_id: trainData.$.ko, delay_origin: delayOriginSeconds, actual_position_timestamp_scheduled: scheduledTimestamp, }; }; } } exports.MetroRunsMessagesTransformation = MetroRunsMessagesTransformation; //# sourceMappingURL=MetroRunsMessagesTransformation.js.map