From f44f5d7ac2d24ff836c2e1d4b2fa58da04b13052 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 25 Sep 2022 18:24:21 +1000 Subject: Refactor to mono-repo + upgrade packages --- util/src/schemas/Validator.ts | 54 ------------------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 util/src/schemas/Validator.ts (limited to 'util/src/schemas/Validator.ts') diff --git a/util/src/schemas/Validator.ts b/util/src/schemas/Validator.ts deleted file mode 100644 index e5f12ac5..00000000 --- a/util/src/schemas/Validator.ts +++ /dev/null @@ -1,54 +0,0 @@ -import Ajv from "ajv"; -import addFormats from "ajv-formats"; -import fs from "fs"; -import path from "path"; - -const SchemaPath = path.join(__dirname, "..", "..", "..", "api", "assets", "schemas.json"); -const schemas = JSON.parse(fs.readFileSync(SchemaPath, { encoding: "utf8" })); - -export const ajv = new Ajv({ - allErrors: true, - parseDate: true, - allowDate: true, - schemas, - coerceTypes: true, - messages: true, - strict: true, - strictRequired: true -}); - -addFormats(ajv); - -export function validateSchema(schema: string, data: G): G { - const valid = ajv.validate(schema, normalizeBody(data)); - if (!valid) throw ajv.errors; - return data; -} - -// Normalizer is introduced to workaround https://github.com/ajv-validator/ajv/issues/1287 -// this removes null values as ajv doesn't treat them as undefined -// normalizeBody allows to handle circular structures without issues -// taken from https://github.com/serverless/serverless/blob/master/lib/classes/ConfigSchemaHandler/index.js#L30 (MIT license) -export const normalizeBody = (body: any = {}) => { - const normalizedObjectsSet = new WeakSet(); - const normalizeObject = (object: any) => { - if (normalizedObjectsSet.has(object)) return; - normalizedObjectsSet.add(object); - if (Array.isArray(object)) { - for (const [index, value] of object.entries()) { - if (typeof value === "object") normalizeObject(value); - } - } else { - for (const [key, value] of Object.entries(object)) { - if (value == null) { - if (key === "icon" || key === "avatar" || key === "banner" || key === "splash" || key === "discovery_splash") continue; - delete object[key]; - } else if (typeof value === "object") { - normalizeObject(value); - } - } - } - }; - normalizeObject(body); - return body; -}; \ No newline at end of file -- cgit 1.5.1