1
0
mirror of https://github.com/koloml/furbooru-tagging-assistant.git synced 2025-12-24 07:12:57 +00:00

Validators: Using functions for common value checks

This commit is contained in:
2025-08-04 13:32:19 +04:00
parent e27257516d
commit 470021ee8c

View File

@@ -16,6 +16,22 @@ type EntitiesValidationMap = {
[EntityKey in keyof App.EntityNamesMap]?: ValidationFunction<App.EntityNamesMap[EntityKey]>;
};
/**
* Check if the following value is defined, not empty and is of correct type.
* @param value Value to be checked.
*/
function validateRequiredString(value: unknown): boolean {
return Boolean(value && typeof value === 'string');
}
/**
* Check if the following value is not set or is a valid array.
* @param value Value to be checked.
*/
function validateOptionalArray(value: unknown): boolean {
return typeof value === 'undefined' || value === null || Array.isArray(value);
}
/**
* Map of validators for each entity. Function should throw the error if validation failed.
*/
@@ -26,12 +42,9 @@ const entitiesValidators: EntitiesValidationMap = {
}
if (
!importedObject.id
|| typeof importedObject.id !== "string"
|| !importedObject.name
|| typeof importedObject.name !== "string"
|| !importedObject.tags
|| !Array.isArray(importedObject.tags)
!validateRequiredString(importedObject?.id)
|| !validateRequiredString(importedObject?.name)
|| !validateOptionalArray(importedObject?.tags)
) {
throw new Error('Invalid profile format detected!');
}