MCPcopy Index your code
hub / github.com/darkreader/darkreader / validateTheme

Function validateTheme

src/utils/validation.ts:196–224  ·  view source on GitHub ↗
(theme: Partial<Theme> | null | undefined)

Source from the content-addressed store, hash-verified

194}
195
196export function validateTheme(theme: Partial<Theme> | null | undefined): ThemeValidationResult {
197 if (!isPlainObject(theme)) {
198 return {errors: ['Theme is not a plain object'], theme: DEFAULT_THEME};
199 }
200
201 const {validateProperty, errors} = createValidator();
202 validateProperty(theme, 'mode', isOneOf(0, 1), DEFAULT_THEME);
203 validateProperty(theme, 'brightness', isNumberBetween(0, 200), DEFAULT_THEME);
204 validateProperty(theme, 'contrast', isNumberBetween(0, 200), DEFAULT_THEME);
205 validateProperty(theme, 'grayscale', isNumberBetween(0, 100), DEFAULT_THEME);
206 validateProperty(theme, 'sepia', isNumberBetween(0, 100), DEFAULT_THEME);
207 validateProperty(theme, 'useFont', isBoolean, DEFAULT_THEME);
208 validateProperty(theme, 'fontFamily', isNonEmptyString, DEFAULT_THEME);
209 validateProperty(theme, 'textStroke', isNumberBetween(0, 1), DEFAULT_THEME);
210 validateProperty(theme, 'engine', isOneOf('dynamicTheme', 'staticTheme', 'cssFilter', 'svgFilter'), DEFAULT_THEME);
211 validateProperty(theme, 'stylesheet', isString, DEFAULT_THEME);
212 validateProperty(theme, 'darkSchemeBackgroundColor', isRegExpMatch(/^#[0-9a-f]{6}$/i), DEFAULT_THEME);
213 validateProperty(theme, 'darkSchemeTextColor', isRegExpMatch(/^#[0-9a-f]{6}$/i), DEFAULT_THEME);
214 validateProperty(theme, 'lightSchemeBackgroundColor', isRegExpMatch(/^#[0-9a-f]{6}$/i), DEFAULT_THEME);
215 validateProperty(theme, 'lightSchemeTextColor', isRegExpMatch(/^#[0-9a-f]{6}$/i), DEFAULT_THEME);
216 validateProperty(theme, 'scrollbarColor', (x: any) => x === '' || isRegExpMatch(/^(auto)|(#[0-9a-f]{6})$/i)(x), DEFAULT_THEME);
217 validateProperty(theme, 'selectionColor', isRegExpMatch(/^(auto)|(#[0-9a-f]{6})$/i), DEFAULT_THEME);
218 validateProperty(theme, 'styleSystemControls', isBoolean, DEFAULT_THEME);
219 validateProperty(theme, 'lightColorScheme', isNonEmptyString, DEFAULT_THEME);
220 validateProperty(theme, 'darkColorScheme', isNonEmptyString, DEFAULT_THEME);
221 validateProperty(theme, 'immediateModify', isBoolean, DEFAULT_THEME);
222
223 return {errors, theme};
224}

Callers 3

isValidPresetThemeFunction · 0.85
validateSettingsFunction · 0.85

Calls 6

isPlainObjectFunction · 0.85
createValidatorFunction · 0.85
validatePropertyFunction · 0.85
isOneOfFunction · 0.85
isNumberBetweenFunction · 0.85
isRegExpMatchFunction · 0.85

Tested by

no test coverage detected