From 42d838a0b3143cf5b7c390ac329e02b45107fbc2 Mon Sep 17 00:00:00 2001 From: artisticMink Date: Sun, 5 Nov 2023 16:14:59 +0100 Subject: [PATCH] Refactor TavernCardValidator error property --- server.js | 5 +++-- src/validator/TavernCardValidator.js | 28 +++++++++++++--------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/server.js b/server.js index 097ef9582..ee0658b6f 100644 --- a/server.js +++ b/server.js @@ -1188,7 +1188,8 @@ app.post("/v2/editcharacterattribute", jsonParser, async function (request, resp character = deepMerge(character, update); const validator = new TavernCardValidator(character); - if (validator.validateV2()) { + + if (true === validator.validateV2()) { await charaWrite( avatarPath, JSON.stringify(character), @@ -1197,7 +1198,7 @@ app.post("/v2/editcharacterattribute", jsonParser, async function (request, resp 'Character saved' ); } else { - response.status(400).send({message: `Validation failed for card ${character.name}`, field: validator.getValidationError}); + response.status(400).send({message: `Validation failed for card ${character.name}`, field: validator.lastValidationError}); } } catch (exception) { response.status(500).send({message: 'Unexpected error while saving character.', error: exception.toString()}); diff --git a/src/validator/TavernCardValidator.js b/src/validator/TavernCardValidator.js index 61c91c8c9..7dbdc3034 100644 --- a/src/validator/TavernCardValidator.js +++ b/src/validator/TavernCardValidator.js @@ -1,5 +1,3 @@ -const characterBook = require("lodash/object"); - /** * Validates the data structure of character cards. * Supported specs: V1, V2 @@ -8,7 +6,7 @@ const characterBook = require("lodash/object"); * @link https://github.com/malfoyslastname/character-card-spec-v2 */ class TavernCardValidator { - #validationError = null; + #lastValidationError = null; constructor(card) { this.card = card; @@ -19,24 +17,24 @@ class TavernCardValidator { * * @returns {null|string} */ - get validationError() { - return this.#validationError; + get lastValidationError() { + return this.#lastValidationError; } /** - * Validate against V1 and V2 spec. + * Validate against V1 or V2 spec. * * @returns {number|boolean} - false when neither V1 nor V2 spec were matched. Specification version number otherwise. */ validate() { - this.#validationError = null; + this.#lastValidationError = null; if (this.validateV1()) { - return 2; + return 1; } if (this.validateV2()) { - return 1; + return 2; } return false; @@ -51,7 +49,7 @@ class TavernCardValidator { const requiredFields = ['name', 'description', 'personality', 'scenario', 'first_mes', 'mes_example']; return requiredFields.every(field => { if (!this.card.hasOwnProperty(field)) { - this.#validationError = field; + this.#lastValidationError = field; return false; } return true; @@ -72,7 +70,7 @@ class TavernCardValidator { #validateSpec() { if (this.card.spec !== 'chara_card_v2') { - this.#validationError = 'spec'; + this.#lastValidationError = 'spec'; return false; } return true; @@ -80,7 +78,7 @@ class TavernCardValidator { #validateSpecVersion() { if (this.card.spec_version !== '2.0') { - this.#validationError = 'spec_version'; + this.#lastValidationError = 'spec_version'; return false; } return true; @@ -90,14 +88,14 @@ class TavernCardValidator { const data = this.card.data; if (!data) { - this.#validationError = 'data'; + this.#lastValidationError = 'data'; return false; } const requiredFields = ['name', 'description', 'personality', 'scenario', 'first_mes', 'mes_example', 'creator_notes', 'system_prompt', 'post_history_instructions', 'alternate_greetings', 'tags', 'creator', 'character_version', 'extensions']; const isAllRequiredFieldsPresent = requiredFields.every(field => { if (!data.hasOwnProperty(field)) { - this.#validationError = `data.${field}`; + this.#lastValidationError = `data.${field}`; return false; } return true; @@ -116,7 +114,7 @@ class TavernCardValidator { const requiredFields = ['extensions', 'entries']; const isAllRequiredFieldsPresent = requiredFields.every(field => { if (!characterBook.hasOwnProperty(field)) { - this.#validationError = `data.character_book.${field}`; + this.#lastValidationError = `data.character_book.${field}`; return false; } return true;