Merge commit master into google-sheets-lite

This commit is contained in:
arc-alex
2023-12-12 11:43:10 +01:00
77 changed files with 1740 additions and 402 deletions
@@ -6,6 +6,7 @@ import { Settings } from './core/Settings.type.js';
import { UserFields } from './core/UserFields.type.js';
import { ViewSettings } from './core/Views.type.js';
import { GoogleSheet } from '../index.js';
import { HttpSettings } from '../index.js';
export type DatabaseModel = {
rundown: OntimeRundown;
@@ -16,4 +17,5 @@ export type DatabaseModel = {
userFields: UserFields;
googleSheet: GoogleSheet;
osc: OSCSettings;
http: HttpSettings;
};
@@ -0,0 +1,9 @@
import { Subscription } from './Subscription.type.js';
export type HttpSubscriptionOptions = { message: string; enabled: boolean };
export type HttpSubscription = Subscription<HttpSubscriptionOptions>;
export interface HttpSettings {
enabledOut: boolean;
subscriptions: HttpSubscription;
}
@@ -1,7 +1,7 @@
import { TimerLifeCycleKey } from './TimerLifecycle.type.js';
import { Subscription } from './Subscription.type.js';
export type OscSubscriptionOptions = { message: string; enabled: boolean };
export type OscSubscription = { [key in TimerLifeCycleKey]: OscSubscriptionOptions[] };
export type OscSubscription = Subscription<OscSubscriptionOptions>;
export interface OSCSettings {
portIn: number;
@@ -0,0 +1,3 @@
import { TimerLifeCycleKey } from './TimerLifecycle.type.js';
export type Subscription<T> = { [key in TimerLifeCycleKey]: T[] };
+4
View File
@@ -28,10 +28,14 @@ export type { Alias } from './definitions/core/Alias.type.js';
// ---> User Fields
export type { UserFields } from './definitions/core/UserFields.type.js';
// ---> Integration, Subscription
export type { Subscription } from './definitions/core/Subscription.type.js';
// ---> OSC
export type { OSCSettings, OscSubscription, OscSubscriptionOptions } from './definitions/core/OscSettings.type.js';
// ---> HTTP
export type { HttpSettings, HttpSubscription, HttpSubscriptionOptions } from './definitions/core/HttpSettings.type.js';
// ---> Google Sheet
export type { GoogleSheet, GoogleSheetState } from './definitions/core/GoogleSheet.type.js';
+1
View File
@@ -15,6 +15,7 @@ export { formatDisplay } from './src/date-utils/formatDisplay.js';
export { formatFromMillis } from './src/date-utils/formatFromMillis.js';
export { isTimeString } from './src/date-utils/isTimeString.js';
export { millisToString } from './src/date-utils/millisToString.js';
export { isColourHex } from './src/regex-utils/isColourHex.js';
// time utils
export { dayInMs, mts } from './src/timeConstants.js';
+2 -1
View File
@@ -28,5 +28,6 @@
"prettier": "^3.0.3",
"typescript": "^5.2.2",
"vitest": "^0.30.1"
}
},
"sideEffects": false
}
@@ -0,0 +1,45 @@
import { isColourHex } from './isColourHex';
describe('test isColourHex() function', () => {
it('it validates colour hex strings', () => {
const ts = ['#FFF', '#FFFF', '#FFFFFF', '#FFFFFFFF'];
for (const s of ts) {
expect(isColourHex(s)).toBe(true);
}
});
it('it validates colour hex strings', () => {
const ts = ['#F90', '#1234', '#56789A', '#BCDEF012'];
for (const s of ts) {
expect(isColourHex(s)).toBe(true);
}
});
it('it validates colour hex strings', () => {
const ts = ['#f90', '#1234', '#56789a', '#bcdef012'];
for (const s of ts) {
expect(isColourHex(s)).toBe(true);
}
});
it('it fails digits bigger than F', () => {
const ts = ['#FFG'];
for (const s of ts) {
expect(isColourHex(s)).toBe(false);
}
});
it('it fails incorect amout of digits', () => {
const ts = ['#F', '#FF', '#FFFFF', '#FFFFFFF', '#FFFFFFFFF'];
for (const s of ts) {
expect(isColourHex(s)).toBe(false);
}
});
it('it fails missing #', () => {
const ts = ['FFF', 'FFFF', 'FFFFFF', 'FFFFFFFF'];
for (const s of ts) {
expect(isColourHex(s)).toBe(false);
}
});
});
@@ -0,0 +1,10 @@
/**
* @description Validates a colour hex string
* @param {string} text - colour hex string "#FFF" | "#FFFF" | "#FFFFFF" | "#FFFFFFFF"
* @returns {boolean} string represents time
*/
export const isColourHex = (text: string): boolean => {
const regexS = /^#((?:[a-f\d]{1}){3,4})$/i;
const regexD = /^#((?:[a-f\d]{2}){3,4})$/i;
return regexS.test(text) || regexD.test(text);
};