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>
This commit is contained in:
Carlos Valente
2026-03-08 16:22:12 +01:00
committed by GitHub
parent 9516ac21bb
commit 1849b4d39f
501 changed files with 2678 additions and 4654 deletions
@@ -1,140 +1,141 @@
import { CustomFields, EntryCustomFields, OntimeDelay, OntimeEvent } from 'ontime-types';
import { isValidChangeProperty } from '../integration.utils.js';
describe('isValidChangeProperty()', () => {
test('allows changing a valid event property with valid value', () => {
const testEvent = {
id: 'test',
duration: 111,
} as OntimeEvent;
expect(isValidChangeProperty(testEvent, 'duration', 123, {})).toBeTruthy();
});
test('forbids changing a valid event property with undefined value', () => {
const testEvent = {
id: 'test',
duration: 111,
} as OntimeEvent;
expect(isValidChangeProperty(testEvent, 'duration', undefined, {})).toBeFalsy();
});
test('forbids changing a non-existing property', () => {
const testEvent = {
id: 'test',
duration: 111,
} as OntimeEvent;
expect(isValidChangeProperty(testEvent, 'missing', 123, {})).toBeFalsy();
});
test('forbids changing customValues in event without custom fields', () => {
const testDelay = {
id: 'test',
duration: 111,
} as OntimeDelay;
const testCustomFields = {
test: {
type: 'text',
colour: '#ffffff',
label: 'Test Field',
},
} satisfies CustomFields;
expect(isValidChangeProperty(testDelay, 'custom:test', 123, testCustomFields)).toBeFalsy();
});
test('forbids changing a non-existing custom value', () => {
const testEvent = {
id: 'test',
duration: 111,
custom: {
field: 'test',
} as EntryCustomFields,
} as OntimeEvent;
expect(isValidChangeProperty(testEvent, 'custom:test', 123, {})).toBeFalsy();
});
test('allows changing an existing custom value', () => {
const testEvent = {
id: 'test',
duration: 111,
custom: {
test: 'test',
} as EntryCustomFields,
} as OntimeEvent;
const testCustomFields = {
test: {
type: 'text',
colour: '#ffffff',
label: 'Test Field',
},
} satisfies CustomFields;
expect(isValidChangeProperty(testEvent, 'custom:test', 123, testCustomFields)).toBeTruthy();
});
test('forbids changing a custom field with a missing value', () => {
const testEvent = {
id: 'test',
duration: 111,
custom: {
test: 'test',
} as EntryCustomFields,
} as OntimeEvent;
const testCustomFields = {
test: {
type: 'text',
colour: '#ffffff',
label: 'Test Field',
},
} satisfies CustomFields;
expect(isValidChangeProperty(testEvent, 'custom:', 123, testCustomFields)).toBeFalsy();
});
test('forbids references to prototype properties in custom object', () => {
const testEvent = {
id: 'test',
duration: 111,
custom: {
test: 'test',
} as EntryCustomFields,
} as OntimeEvent;
const testCustomFields = {
test: {
type: 'text',
colour: '#ffffff',
label: 'Test Field',
},
} satisfies CustomFields;
expect(isValidChangeProperty(testEvent, 'custom:toString', 123, testCustomFields)).toBeFalsy();
});
test('forbids references to prototype properties in object', () => {
const testEvent = {
id: 'test',
duration: 111,
custom: {
test: 'test',
} as EntryCustomFields,
} as OntimeEvent;
const testCustomFields = {
test: {
type: 'text',
colour: '#ffffff',
label: 'Test Field',
},
} satisfies CustomFields;
expect(isValidChangeProperty(testEvent, 'toString', 123, testCustomFields)).toBeFalsy();
});
});
import { CustomFields, EntryCustomFields, OntimeDelay, OntimeEvent } from 'ontime-types';
import { isValidChangeProperty } from '../integration.utils.js';
describe('isValidChangeProperty()', () => {
test('allows changing a valid event property with valid value', () => {
const testEvent = {
id: 'test',
duration: 111,
} as OntimeEvent;
expect(isValidChangeProperty(testEvent, 'duration', 123, {})).toBeTruthy();
});
test('forbids changing a valid event property with undefined value', () => {
const testEvent = {
id: 'test',
duration: 111,
} as OntimeEvent;
expect(isValidChangeProperty(testEvent, 'duration', undefined, {})).toBeFalsy();
});
test('forbids changing a non-existing property', () => {
const testEvent = {
id: 'test',
duration: 111,
} as OntimeEvent;
expect(isValidChangeProperty(testEvent, 'missing', 123, {})).toBeFalsy();
});
test('forbids changing customValues in event without custom fields', () => {
const testDelay = {
id: 'test',
duration: 111,
} as OntimeDelay;
const testCustomFields = {
test: {
type: 'text',
colour: '#ffffff',
label: 'Test Field',
},
} satisfies CustomFields;
expect(isValidChangeProperty(testDelay, 'custom:test', 123, testCustomFields)).toBeFalsy();
});
test('forbids changing a non-existing custom value', () => {
const testEvent = {
id: 'test',
duration: 111,
custom: {
field: 'test',
} as EntryCustomFields,
} as OntimeEvent;
expect(isValidChangeProperty(testEvent, 'custom:test', 123, {})).toBeFalsy();
});
test('allows changing an existing custom value', () => {
const testEvent = {
id: 'test',
duration: 111,
custom: {
test: 'test',
} as EntryCustomFields,
} as OntimeEvent;
const testCustomFields = {
test: {
type: 'text',
colour: '#ffffff',
label: 'Test Field',
},
} satisfies CustomFields;
expect(isValidChangeProperty(testEvent, 'custom:test', 123, testCustomFields)).toBeTruthy();
});
test('forbids changing a custom field with a missing value', () => {
const testEvent = {
id: 'test',
duration: 111,
custom: {
test: 'test',
} as EntryCustomFields,
} as OntimeEvent;
const testCustomFields = {
test: {
type: 'text',
colour: '#ffffff',
label: 'Test Field',
},
} satisfies CustomFields;
expect(isValidChangeProperty(testEvent, 'custom:', 123, testCustomFields)).toBeFalsy();
});
test('forbids references to prototype properties in custom object', () => {
const testEvent = {
id: 'test',
duration: 111,
custom: {
test: 'test',
} as EntryCustomFields,
} as OntimeEvent;
const testCustomFields = {
test: {
type: 'text',
colour: '#ffffff',
label: 'Test Field',
},
} satisfies CustomFields;
expect(isValidChangeProperty(testEvent, 'custom:toString', 123, testCustomFields)).toBeFalsy();
});
test('forbids references to prototype properties in object', () => {
const testEvent = {
id: 'test',
duration: 111,
custom: {
test: 'test',
} as EntryCustomFields,
} as OntimeEvent;
const testCustomFields = {
test: {
type: 'text',
colour: '#ffffff',
label: 'Test Field',
},
} satisfies CustomFields;
expect(isValidChangeProperty(testEvent, 'toString', 123, testCustomFields)).toBeFalsy();
});
});
@@ -8,9 +8,12 @@ import {
SimplePlayback,
} from 'ontime-types';
import { MILLIS_PER_HOUR } from 'ontime-utils';
import { DeepPartial } from 'ts-essentials';
import { socket } from '../adapters/WebsocketAdapter.js';
import { getCurrentRundown, getProjectCustomFields } from '../api-data/rundown/rundown.dao.js';
import { editEntry } from '../api-data/rundown/rundown.service.js';
import { willCauseRegeneration } from '../api-data/rundown/rundown.utils.js';
import { ONTIME_VERSION } from '../ONTIME_VERSION.js';
import { auxTimerService } from '../services/aux-timer-service/AuxTimerService.js';
import * as messageService from '../services/message-service/message.service.js';
@@ -18,12 +21,8 @@ import { validateMessage, validateTimerMessage } from '../services/message-servi
import { runtimeService } from '../services/runtime-service/runtime.service.js';
import { eventStore } from '../stores/EventStore.js';
import * as assert from '../utils/assert.js';
import { parseProperty, isValidChangeProperty } from './integration.utils.js';
import { socket } from '../adapters/WebsocketAdapter.js';
import { coerceEnum } from '../utils/coerceType.js';
import { editEntry } from '../api-data/rundown/rundown.service.js';
import { willCauseRegeneration } from '../api-data/rundown/rundown.utils.js';
import { getCurrentRundown, getProjectCustomFields } from '../api-data/rundown/rundown.dao.js';
import { isValidChangeProperty, parseProperty } from './integration.utils.js';
let lastRequest: Date | null = null;
@@ -5,16 +5,14 @@
*
*/
import { ErrorResponse, LogOrigin } from 'ontime-types';
import express, { type Request, type Response } from 'express';
import { logger } from '../classes/Logger.js';
import { integrationPayloadFromPath } from '../adapters/utils/parse.js';
import { dispatchFromAdapter } from './integration.controller.js';
import { ErrorResponse, LogOrigin } from 'ontime-types';
import { getErrorMessage } from 'ontime-utils';
import { integrationPayloadFromPath } from '../adapters/utils/parse.js';
import { logger } from '../classes/Logger.js';
import { isEmptyObject } from '../utils/parserUtils.js';
import { dispatchFromAdapter } from './integration.controller.js';
export const integrationRouter = express.Router();