/* SPDX-License-Identifier: MIT AND CC0-1.0 * * License text of the original lib/index.js from jsonschema library: * *************************************** * * jsonschema is licensed under MIT license. * * Copyright (C) 2012-2015 Tom de Grunt <tom@degrunt.nl> * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * ******************************************************************************* * * License notice for the adaptation to use in Haketilo: * *************************************** * * Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org> * * This program is free software: you can redistribute it and/or modify * it under the terms of the CC0 1.0 Universal License as published by * the Creative Commons Corporation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * CC0 1.0 Universal License for more details. */ #FROM common/jsonschema/validator.js IMPORT Validator #EXPORT Validator #FROM common/jsonschema/helpers.js IMPORT ValidatorResult, ValidationError, \ ValidatorResultError, SchemaError #EXPORT ValidatorResult #EXPORT ValidationError #EXPORT ValidatorResultError #EXPORT SchemaError #FROM common/jsonschema/scan.js IMPORT SchemaScanResult, scan #FROM common/entities.js IMPORT parse_schema_uri #EXPORT scan #EXPORT SchemaScanResult function validate(instance, schema, options) { var v = new Validator(); return v.validate(instance, schema, options); }; #EXPORT validate const haketilo_schemas = [ /* 1.x Hydrilla JSON schema series */ #INCLUDE schemas/1.x/api_query_result-1.0.1.schema.json , #INCLUDE schemas/1.x/api_mapping_description-1.0.1.schema.json , #INCLUDE schemas/1.x/api_resource_description-1.0.1.schema.json , #INCLUDE schemas/1.x/common_definitions-1.0.1.schema.json , /* 2.x Hydrilla JSON schema series */ #INCLUDE schemas/2.x/api_query_result-2.schema.json , #INCLUDE schemas/2.x/api_mapping_description-2.schema.json , #INCLUDE schemas/2.x/api_resource_description-2.schema.json , #INCLUDE schemas/2.x/common_definitions-2.schema.json ].reduce((ac, s) => Object.assign(ac, {[s.$id]: s}), {}); for (const [$id, schema] of [...Object.entries(haketilo_schemas)]) { const parsed = parse_schema_uri($id); const schema_name = `${parsed.name_base}-${parsed.major}.schema.json`; haketilo_schemas[schema_name] = schema; } #EXPORT haketilo_schemas const haketilo_validator = new Validator(); Object.values(haketilo_schemas) .forEach(s => haketilo_validator.addSchema(s, s.$id)); #EXPORT haketilo_validator