This change modifies the build scripts to use --legacy-peer-deps flag when installing npm dependencies to resolve potential peer dependency conflicts during the build process. The change is applied to both bash (build.sh) and batch (build.bat) build scripts.
192 lines
5.2 KiB
JavaScript
192 lines
5.2 KiB
JavaScript
/**
|
|
* @fileoverview The instance of Ajv validator.
|
|
* @author Evgeny Poberezkin
|
|
*/
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Requirements
|
|
//------------------------------------------------------------------------------
|
|
|
|
import Ajv from "ajv";
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Helpers
|
|
//-----------------------------------------------------------------------------
|
|
|
|
/*
|
|
* Copied from ajv/lib/refs/json-schema-draft-04.json
|
|
* The MIT License (MIT)
|
|
* Copyright (c) 2015-2017 Evgeny Poberezkin
|
|
*/
|
|
const metaSchema = {
|
|
id: "http://json-schema.org/draft-04/schema#",
|
|
$schema: "http://json-schema.org/draft-04/schema#",
|
|
description: "Core schema meta-schema",
|
|
definitions: {
|
|
schemaArray: {
|
|
type: "array",
|
|
minItems: 1,
|
|
items: { $ref: "#" }
|
|
},
|
|
positiveInteger: {
|
|
type: "integer",
|
|
minimum: 0
|
|
},
|
|
positiveIntegerDefault0: {
|
|
allOf: [{ $ref: "#/definitions/positiveInteger" }, { default: 0 }]
|
|
},
|
|
simpleTypes: {
|
|
enum: ["array", "boolean", "integer", "null", "number", "object", "string"]
|
|
},
|
|
stringArray: {
|
|
type: "array",
|
|
items: { type: "string" },
|
|
minItems: 1,
|
|
uniqueItems: true
|
|
}
|
|
},
|
|
type: "object",
|
|
properties: {
|
|
id: {
|
|
type: "string"
|
|
},
|
|
$schema: {
|
|
type: "string"
|
|
},
|
|
title: {
|
|
type: "string"
|
|
},
|
|
description: {
|
|
type: "string"
|
|
},
|
|
default: { },
|
|
multipleOf: {
|
|
type: "number",
|
|
minimum: 0,
|
|
exclusiveMinimum: true
|
|
},
|
|
maximum: {
|
|
type: "number"
|
|
},
|
|
exclusiveMaximum: {
|
|
type: "boolean",
|
|
default: false
|
|
},
|
|
minimum: {
|
|
type: "number"
|
|
},
|
|
exclusiveMinimum: {
|
|
type: "boolean",
|
|
default: false
|
|
},
|
|
maxLength: { $ref: "#/definitions/positiveInteger" },
|
|
minLength: { $ref: "#/definitions/positiveIntegerDefault0" },
|
|
pattern: {
|
|
type: "string",
|
|
format: "regex"
|
|
},
|
|
additionalItems: {
|
|
anyOf: [
|
|
{ type: "boolean" },
|
|
{ $ref: "#" }
|
|
],
|
|
default: { }
|
|
},
|
|
items: {
|
|
anyOf: [
|
|
{ $ref: "#" },
|
|
{ $ref: "#/definitions/schemaArray" }
|
|
],
|
|
default: { }
|
|
},
|
|
maxItems: { $ref: "#/definitions/positiveInteger" },
|
|
minItems: { $ref: "#/definitions/positiveIntegerDefault0" },
|
|
uniqueItems: {
|
|
type: "boolean",
|
|
default: false
|
|
},
|
|
maxProperties: { $ref: "#/definitions/positiveInteger" },
|
|
minProperties: { $ref: "#/definitions/positiveIntegerDefault0" },
|
|
required: { $ref: "#/definitions/stringArray" },
|
|
additionalProperties: {
|
|
anyOf: [
|
|
{ type: "boolean" },
|
|
{ $ref: "#" }
|
|
],
|
|
default: { }
|
|
},
|
|
definitions: {
|
|
type: "object",
|
|
additionalProperties: { $ref: "#" },
|
|
default: { }
|
|
},
|
|
properties: {
|
|
type: "object",
|
|
additionalProperties: { $ref: "#" },
|
|
default: { }
|
|
},
|
|
patternProperties: {
|
|
type: "object",
|
|
additionalProperties: { $ref: "#" },
|
|
default: { }
|
|
},
|
|
dependencies: {
|
|
type: "object",
|
|
additionalProperties: {
|
|
anyOf: [
|
|
{ $ref: "#" },
|
|
{ $ref: "#/definitions/stringArray" }
|
|
]
|
|
}
|
|
},
|
|
enum: {
|
|
type: "array",
|
|
minItems: 1,
|
|
uniqueItems: true
|
|
},
|
|
type: {
|
|
anyOf: [
|
|
{ $ref: "#/definitions/simpleTypes" },
|
|
{
|
|
type: "array",
|
|
items: { $ref: "#/definitions/simpleTypes" },
|
|
minItems: 1,
|
|
uniqueItems: true
|
|
}
|
|
]
|
|
},
|
|
format: { type: "string" },
|
|
allOf: { $ref: "#/definitions/schemaArray" },
|
|
anyOf: { $ref: "#/definitions/schemaArray" },
|
|
oneOf: { $ref: "#/definitions/schemaArray" },
|
|
not: { $ref: "#" }
|
|
},
|
|
dependencies: {
|
|
exclusiveMaximum: ["maximum"],
|
|
exclusiveMinimum: ["minimum"]
|
|
},
|
|
default: { }
|
|
};
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Public Interface
|
|
//------------------------------------------------------------------------------
|
|
|
|
export default (additionalOptions = {}) => {
|
|
const ajv = new Ajv({
|
|
meta: false,
|
|
useDefaults: true,
|
|
validateSchema: false,
|
|
missingRefs: "ignore",
|
|
verbose: true,
|
|
schemaId: "auto",
|
|
...additionalOptions
|
|
});
|
|
|
|
ajv.addMetaSchema(metaSchema);
|
|
// eslint-disable-next-line no-underscore-dangle
|
|
ajv._opts.defaultMeta = metaSchema.id;
|
|
|
|
return ajv;
|
|
};
|