Files
ontime/apps/server/src/services/restore-service/restore.parser.ts
T
Carlos Valente 1849b4d39f Deps migration (#1988)
* chore: migrate eslint to oxlint

* chore: migrate prettier to oxfmt

* chore: migrate typescript

* chore: toThrow should have a expected value

* chore: cast test value as Day

* chore: small title fix

* chore: mocks should be hoisted

* chore: incorrect async useage

* chore: test should be inside description

* chore: test sohuld include an expeced

* chore: oxfmt

---------

Co-authored-by: alex-Arc <omnivox@LAPTOP-RC5SNBVV.localdomain>
2026-03-08 16:22:12 +01:00

63 lines
1.4 KiB
TypeScript

import { Playback } from 'ontime-types';
import { is } from '../../utils/is.js';
import type { RestorePoint } from './restore.type.js';
/**
* Utility validates a RestorePoint
*/
export function isRestorePoint(restorePoint: unknown): restorePoint is RestorePoint {
if (!is.object(restorePoint)) {
return false;
}
if (
!is.objectWithKeys(restorePoint, [
'playback',
'selectedEventId',
'startedAt',
'addedTime',
'pausedAt',
'firstStart',
'startEpoch',
'currentDay',
])
) {
return false;
}
if (!is.string(restorePoint.playback) && !Object.values(Playback).includes(restorePoint.playback as Playback)) {
return false;
}
if (!is.string(restorePoint.selectedEventId) && restorePoint.selectedEventId !== null) {
return false;
}
if (!is.number(restorePoint.startedAt) && restorePoint.startedAt !== null) {
return false;
}
if (!is.number(restorePoint.addedTime)) {
return false;
}
if (!is.number(restorePoint.pausedAt) && restorePoint.pausedAt !== null) {
return false;
}
if (!is.number(restorePoint.firstStart) && restorePoint.firstStart !== null) {
return false;
}
if (!is.number(restorePoint.startEpoch) && restorePoint.startEpoch !== null) {
return false;
}
if (!is.number(restorePoint.currentDay) && restorePoint.currentDay !== null) {
return false;
}
return true;
}