UNPKG

@aliceplex/core

Version:

[![License][license_badge]][license] [![Pipelines][pipelines_badge]][pipelines] [![Coverage][coverage_badge]][pipelines] [![NPM][npm_badge]][npm] [![semantic-release][semantic_release_badge]][semantic_release]

52 lines 1.91 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const ajv_1 = __importDefault(require("ajv")); const lodash_1 = __importDefault(require("lodash")); const schema_1 = require("./schema"); var Schema; (function (Schema) { Schema["Show"] = "show"; Schema["Movie"] = "movie"; Schema["Album"] = "album"; Schema["Artist"] = "artist"; Schema["Episode"] = "episode"; Schema["Actor"] = "actor"; })(Schema || (Schema = {})); exports.createAjv = (options = { allErrors: true, format: "full" }) => { const ajv = new ajv_1.default(options); ajv.addSchema(schema_1.Schemas.Definitions); ajv.addSchema(schema_1.Schemas.Actor, Schema.Actor); ajv.addSchema(schema_1.Schemas.Show, Schema.Show); ajv.addSchema(schema_1.Schemas.Movie, Schema.Movie); ajv.addSchema(schema_1.Schemas.Album, Schema.Album); ajv.addSchema(schema_1.Schemas.Artist, Schema.Artist); ajv.addSchema(schema_1.Schemas.Episode, Schema.Episode); return ajv; }; exports.validateSchema = (data, schema, options) => { const { ajv } = options; const validate = ajv.getSchema(schema); const valid = validate(data); return { valid: !!valid, errors: validate.errors || [] }; }; exports.toSerializedModel = (data, options) => { let errors = []; for (const schema of Object.values(Schema)) { const result = exports.validateSchema(data, schema, options); if (result.valid) { return data; } if (lodash_1.default.isArray(result.errors) && (errors.length <= 0 || errors.length > result.errors.length)) { errors = result.errors; } } throw new Error(JSON.stringify(errors, null, 2)); }; //# sourceMappingURL=validate.js.map