const validateColor = require('validate-color').default type AutoColorValue = string interface AutoColors { mainForeground: AutoColorValue mainBackground: AutoColorValue greyForeground: AutoColorValue greyBackground: AutoColorValue menuForeground: AutoColorValue menuBackground: AutoColorValue inputForeground: AutoColorValue inputBackground: AutoColorValue buttonForeground: AutoColorValue buttonBackground: AutoColorValue link: AutoColorValue linkHover: AutoColorValue } /** * @param theme value of the settings 'converse-theme' * @returns true if the theme can use autocolors */ function isAutoColorsAvailable (theme: string): boolean { return theme === 'peertube' // currently the only theme that can handle autocolors. } /** * @param autocolors * @returns true if ok. Else a string array with invalid values. */ function areAutoColorsValid (autocolors: AutoColors): true | string[] { const errors: string[] = [] for (const k in autocolors) { const color = autocolors[k as keyof AutoColors] if (!validateColor(color)) { errors.push(color) } } if (errors.length) { return errors } return true } export type { AutoColors } export { isAutoColorsAvailable, areAutoColorsValid }