Complete residential site build with Docker Compose & Gitea Actions deployment
This commit is contained in:
node_modules/yaml-language-server/lib/esm/languageservice/parser/schemaValidation/baseValidator.d.ts
Generated
Vendored
+124
@@ -0,0 +1,124 @@
|
||||
import type { JSONSchema, JSONSchemaRef, SchemaDialect } from '../../jsonSchema';
|
||||
import type { ASTNode, ArrayASTNode, NumberASTNode, ObjectASTNode, StringASTNode } from '../../jsonASTTypes';
|
||||
import { ErrorCode } from 'vscode-json-languageservice';
|
||||
import { Diagnostic, DiagnosticSeverity } from 'vscode-languageserver-types';
|
||||
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
||||
export declare const YAML_SOURCE = "YAML";
|
||||
export interface IRange {
|
||||
offset: number;
|
||||
length: number;
|
||||
}
|
||||
export declare enum ProblemType {
|
||||
missingRequiredPropWarning = "missingRequiredPropWarning",
|
||||
typeMismatchWarning = "typeMismatchWarning",
|
||||
constWarning = "constWarning"
|
||||
}
|
||||
export declare const ProblemTypeMessages: Record<ProblemType, string>;
|
||||
export interface IProblem {
|
||||
location: IRange;
|
||||
severity: DiagnosticSeverity;
|
||||
code?: ErrorCode;
|
||||
message: string;
|
||||
source?: string;
|
||||
problemType?: ProblemType;
|
||||
problemArgs?: string[];
|
||||
schemaUri?: string[];
|
||||
data?: Record<string, unknown>;
|
||||
}
|
||||
export interface IApplicableSchema {
|
||||
node: ASTNode;
|
||||
inverted?: boolean;
|
||||
schema: JSONSchema;
|
||||
}
|
||||
export interface ISchemaCollector {
|
||||
schemas: IApplicableSchema[];
|
||||
add(schema: IApplicableSchema): void;
|
||||
merge(other: ISchemaCollector): void;
|
||||
include(node: ASTNode): boolean;
|
||||
newSub(): ISchemaCollector;
|
||||
}
|
||||
export declare const formats: Record<string, {
|
||||
errorMessage: string;
|
||||
pattern: RegExp;
|
||||
}>;
|
||||
export declare class ValidationResult {
|
||||
problems: IProblem[];
|
||||
propertiesMatches: number;
|
||||
propertiesValueMatches: number;
|
||||
primaryValueMatches: number;
|
||||
enumValueMatch: boolean;
|
||||
enumValues: any[];
|
||||
/**
|
||||
* Optional bookkeeping for newer drafts (2019/2020).
|
||||
* BaseValidator only populates evaluatedProperties conservatively for object keywords it processes directly.
|
||||
*/
|
||||
evaluatedProperties?: Set<string>;
|
||||
evaluatedItemsByNode?: Map<ASTNode, Set<number>>;
|
||||
constructor(isKubernetes: boolean);
|
||||
getEvaluatedItems(node: ASTNode): Set<number>;
|
||||
hasProblems(): boolean;
|
||||
merge(other: ValidationResult): void;
|
||||
mergeEnumValues(other: ValidationResult): void;
|
||||
mergeWarningGeneric(sub: ValidationResult, problemTypesToMerge: ProblemType[]): void;
|
||||
mergePropertyMatch(propertyValidationResult: ValidationResult, mergeEvaluated?: boolean): void;
|
||||
private mergeSources;
|
||||
compareGeneric(other: ValidationResult): number;
|
||||
compareKubernetes(other: ValidationResult): number;
|
||||
}
|
||||
export interface Options {
|
||||
isKubernetes: boolean;
|
||||
disableAdditionalProperties: boolean;
|
||||
uri: string;
|
||||
callFromAutoComplete?: boolean;
|
||||
}
|
||||
interface IValidationMatch {
|
||||
schema: JSONSchema;
|
||||
validationResult: ValidationResult;
|
||||
matchingSchemas: ISchemaCollector;
|
||||
}
|
||||
export declare abstract class BaseValidator {
|
||||
protected collectSeenKeys(node: ObjectASTNode): Record<string, ASTNode>;
|
||||
validateDocument(root: ASTNode, textDocument: TextDocument, schema: JSONSchema, options: Options): Diagnostic[];
|
||||
getMatchingSchemas(root: ASTNode, schema: JSONSchema, options: Options, focusOffset: number, exclude: ASTNode | null): IApplicableSchema[];
|
||||
protected getNoOpCollector(): ISchemaCollector;
|
||||
protected getSchemaSource(schema: JSONSchema, originalSchema: JSONSchema): string;
|
||||
protected getSchemaUri(schema: JSONSchema, originalSchema: JSONSchema): string[];
|
||||
/**
|
||||
* Draft-specific hook: interpret numeric bounds in the draft’s way.
|
||||
* - Draft07+: numeric exclusiveMinimum/exclusiveMaximum
|
||||
* - Draft04: boolean exclusiveMinimum/exclusiveMaximum that modify minimum/maximum
|
||||
*/
|
||||
protected abstract getNumberLimits(schema: JSONSchema): {
|
||||
minimum?: number;
|
||||
maximum?: number;
|
||||
exclusiveMinimum?: number;
|
||||
exclusiveMaximum?: number;
|
||||
};
|
||||
/**
|
||||
* Get the current validator's dialect.
|
||||
*/
|
||||
protected abstract getCurrentDialect(): SchemaDialect;
|
||||
protected validateNode(node: ASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options): void;
|
||||
protected validateGenericNode(node: ASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options): void;
|
||||
protected validateStringNode(node: StringASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult): void;
|
||||
protected validateNumberNode(node: NumberASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult): void;
|
||||
protected validateArrayNode(node: ArrayASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options): void;
|
||||
protected applyContains(node: ArrayASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, _matchingSchemas: ISchemaCollector, options: Options): void;
|
||||
protected applyArrayLength(node: ArrayASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, _options: Options): void;
|
||||
protected applyUniqueItems(node: ArrayASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult): void;
|
||||
protected validateObjectNode(node: ObjectASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options): void;
|
||||
protected applyRequired(node: ObjectASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, _options: Options, seenKeys: Record<string, ASTNode>): void;
|
||||
protected applyProperties(_node: ObjectASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options, seenKeys: Record<string, ASTNode>, _unprocessedProperties: string[], propertyProcessed: (prop: string) => void): void;
|
||||
protected applyPatternProperties(_node: ObjectASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options, seenKeys: Record<string, ASTNode>, unprocessedProperties: string[], propertyProcessed: (prop: string) => void): void;
|
||||
protected applyAdditionalProperties(_node: ObjectASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options, seenKeys: Record<string, ASTNode>, unprocessedProperties: string[]): void;
|
||||
protected applyPropertyCount(node: ObjectASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult): void;
|
||||
protected applyDependencies(node: ObjectASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options, seenKeys: Record<string, ASTNode>): void;
|
||||
protected applyPropertyNames(node: ObjectASTNode, schema: JSONSchema, validationResult: ValidationResult, options: Options): void;
|
||||
protected applyUnevaluatedProperties(_node: ObjectASTNode, _schema: JSONSchema, _originalSchema: JSONSchema, _validationResult: ValidationResult, _matchingSchemas: ISchemaCollector, _options: Options, _seenKeys?: Record<string, ASTNode>, _unprocessedProperties?: string[]): void;
|
||||
protected applyUnevaluatedItems(_node: ArrayASTNode | ASTNode, _schema: JSONSchema, _originalSchema: JSONSchema, _validationResult: ValidationResult, _matchingSchemas: ISchemaCollector, _options: Options): void;
|
||||
protected alternativeComparison(subValidationResult: ValidationResult, bestMatch: IValidationMatch, subSchema: JSONSchema, subMatchingSchemas: ISchemaCollector): IValidationMatch;
|
||||
protected genericComparison(node: ASTNode, maxOneMatch: boolean, subValidationResult: ValidationResult, bestMatch: IValidationMatch, subSchema: JSONSchema, subMatchingSchemas: ISchemaCollector): IValidationMatch;
|
||||
protected mergeValidationMatches(bestMatch: IValidationMatch, subMatchingSchemas: ISchemaCollector, subValidationResult: ValidationResult): void;
|
||||
}
|
||||
export declare function asSchema(schema: JSONSchemaRef): JSONSchema | undefined;
|
||||
export {};
|
||||
Generated
Vendored
+1254
File diff suppressed because it is too large
Load Diff
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
import type { JSONSchema } from '../../jsonSchema';
|
||||
import { SchemaDialect } from '../../jsonSchema';
|
||||
import { BaseValidator } from './baseValidator';
|
||||
export declare class Draft04Validator extends BaseValidator {
|
||||
protected getCurrentDialect(): SchemaDialect;
|
||||
/**
|
||||
* Keyword: exclusiveMinimum/exclusiveMaximum
|
||||
*
|
||||
* Booleans that make minimum/maximum exclusive.
|
||||
*/
|
||||
protected getNumberLimits(schema: JSONSchema): {
|
||||
minimum?: number;
|
||||
maximum?: number;
|
||||
exclusiveMinimum?: number;
|
||||
exclusiveMaximum?: number;
|
||||
};
|
||||
}
|
||||
Generated
Vendored
+30
@@ -0,0 +1,30 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) IBM Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import { SchemaDialect } from '../../jsonSchema';
|
||||
import { isBoolean, isNumber } from '../../utils/objects';
|
||||
import { BaseValidator } from './baseValidator';
|
||||
export class Draft04Validator extends BaseValidator {
|
||||
getCurrentDialect() {
|
||||
return SchemaDialect.draft04;
|
||||
}
|
||||
/**
|
||||
* Keyword: exclusiveMinimum/exclusiveMaximum
|
||||
*
|
||||
* Booleans that make minimum/maximum exclusive.
|
||||
*/
|
||||
getNumberLimits(schema) {
|
||||
const minimum = isNumber(schema.minimum) ? schema.minimum : undefined;
|
||||
const maximum = isNumber(schema.maximum) ? schema.maximum : undefined;
|
||||
const exclusiveMinimum = isBoolean(schema.exclusiveMinimum) && schema.exclusiveMinimum ? minimum : undefined;
|
||||
const exclusiveMaximum = isBoolean(schema.exclusiveMaximum) && schema.exclusiveMaximum ? maximum : undefined;
|
||||
return {
|
||||
minimum: exclusiveMinimum === undefined ? minimum : undefined,
|
||||
maximum: exclusiveMaximum === undefined ? maximum : undefined,
|
||||
exclusiveMinimum,
|
||||
exclusiveMaximum,
|
||||
};
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=draft04Validator.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"draft04Validator.js","sourceRoot":"","sources":["../../../../../src/languageservice/parser/schemaValidation/draft04Validator.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IAC9B,iBAAiB;QAClC,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACgB,eAAe,CAAC,MAAkB;QAMnD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtE,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7G,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAE7G,OAAO;YACL,OAAO,EAAE,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAC7D,OAAO,EAAE,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAC7D,gBAAgB;YAChB,gBAAgB;SACjB,CAAC;IACJ,CAAC;CACF"}
|
||||
Generated
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
import type { JSONSchema } from '../../jsonSchema';
|
||||
import { SchemaDialect } from '../../jsonSchema';
|
||||
import { BaseValidator } from './baseValidator';
|
||||
export declare class Draft07Validator extends BaseValidator {
|
||||
protected getCurrentDialect(): SchemaDialect;
|
||||
/**
|
||||
* Keyword: exclusiveMinimum/exclusiveMaximum are treated as numeric bounds
|
||||
*/
|
||||
protected getNumberLimits(schema: JSONSchema): {
|
||||
minimum?: number;
|
||||
maximum?: number;
|
||||
exclusiveMinimum?: number;
|
||||
exclusiveMaximum?: number;
|
||||
};
|
||||
}
|
||||
Generated
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) IBM Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import { SchemaDialect } from '../../jsonSchema';
|
||||
import { isNumber } from '../../utils/objects';
|
||||
import { BaseValidator } from './baseValidator';
|
||||
export class Draft07Validator extends BaseValidator {
|
||||
getCurrentDialect() {
|
||||
return SchemaDialect.draft07;
|
||||
}
|
||||
/**
|
||||
* Keyword: exclusiveMinimum/exclusiveMaximum are treated as numeric bounds
|
||||
*/
|
||||
getNumberLimits(schema) {
|
||||
const minimum = isNumber(schema.minimum) ? schema.minimum : undefined;
|
||||
const maximum = isNumber(schema.maximum) ? schema.maximum : undefined;
|
||||
const exclusiveMinimum = isNumber(schema.exclusiveMinimum) ? schema.exclusiveMinimum : undefined;
|
||||
const exclusiveMaximum = isNumber(schema.exclusiveMaximum) ? schema.exclusiveMaximum : undefined;
|
||||
return {
|
||||
minimum: exclusiveMinimum === undefined ? minimum : undefined,
|
||||
maximum: exclusiveMaximum === undefined ? maximum : undefined,
|
||||
exclusiveMinimum,
|
||||
exclusiveMaximum,
|
||||
};
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=draft07Validator.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"draft07Validator.js","sourceRoot":"","sources":["../../../../../src/languageservice/parser/schemaValidation/draft07Validator.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IAC9B,iBAAiB;QAClC,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED;;OAEG;IACO,eAAe,CAAC,MAAkB;QAM1C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QACjG,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjG,OAAO;YACL,OAAO,EAAE,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAC7D,OAAO,EAAE,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAC7D,gBAAgB;YAChB,gBAAgB;SACjB,CAAC;IACJ,CAAC;CACF"}
|
||||
Generated
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
import type { JSONSchema } from '../../jsonSchema';
|
||||
import { SchemaDialect } from '../../jsonSchema';
|
||||
import type { ASTNode, ArrayASTNode, ObjectASTNode } from '../../jsonASTTypes';
|
||||
import { Draft07Validator } from './draft07Validator';
|
||||
import { ValidationResult } from './baseValidator';
|
||||
import type { ISchemaCollector, Options } from './baseValidator';
|
||||
export declare class Draft2019Validator extends Draft07Validator {
|
||||
protected getCurrentDialect(): SchemaDialect;
|
||||
/**
|
||||
* Keyword: contains + minContains/maxContains
|
||||
*
|
||||
* Draft-07 behavior: contains must match at least 1 item.
|
||||
* Draft-2019-09 behavior: minContains/maxContains constrain how many matches are required/allowed.
|
||||
*/
|
||||
protected applyContains(node: ArrayASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, _matchingSchemas: ISchemaCollector, options: Options): void;
|
||||
/**
|
||||
* Keyword: dependentRequired + dependentSchemas.
|
||||
*/
|
||||
protected applyDependencies(node: ObjectASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options, seenKeys: Record<string, ASTNode>): void;
|
||||
/**
|
||||
* Keyword: unevaluatedProperties
|
||||
*/
|
||||
protected applyUnevaluatedProperties(node: ObjectASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options, seenKeys?: Record<string, ASTNode>): void;
|
||||
/**
|
||||
* Keyword: unevaluatedItems
|
||||
*/
|
||||
protected applyUnevaluatedItems(node: ArrayASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options): void;
|
||||
}
|
||||
Generated
Vendored
+224
@@ -0,0 +1,224 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) IBM Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import { SchemaDialect } from '../../jsonSchema';
|
||||
import { isNumber } from '../../utils/objects';
|
||||
import * as l10n from '@vscode/l10n';
|
||||
import { DiagnosticSeverity } from 'vscode-languageserver-types';
|
||||
import { ErrorCode } from 'vscode-json-languageservice';
|
||||
import { Draft07Validator } from './draft07Validator';
|
||||
import { ValidationResult, asSchema } from './baseValidator';
|
||||
export class Draft2019Validator extends Draft07Validator {
|
||||
getCurrentDialect() {
|
||||
return SchemaDialect.draft2019;
|
||||
}
|
||||
/**
|
||||
* Keyword: contains + minContains/maxContains
|
||||
*
|
||||
* Draft-07 behavior: contains must match at least 1 item.
|
||||
* Draft-2019-09 behavior: minContains/maxContains constrain how many matches are required/allowed.
|
||||
*/
|
||||
applyContains(node, schema, originalSchema, validationResult, _matchingSchemas, options) {
|
||||
const containsSchema = asSchema(schema.contains);
|
||||
if (!containsSchema)
|
||||
return;
|
||||
const minContainsRaw = schema.minContains;
|
||||
const maxContainsRaw = schema.maxContains;
|
||||
const minContains = isNumber(minContainsRaw) ? minContainsRaw : 1;
|
||||
const maxContains = isNumber(maxContainsRaw) ? maxContainsRaw : undefined;
|
||||
let matchCount = 0;
|
||||
const items = (node.items ?? []);
|
||||
for (const item of items) {
|
||||
const itemValidationResult = new ValidationResult(options.isKubernetes);
|
||||
this.validateNode(item, containsSchema, schema, itemValidationResult, this.getNoOpCollector(), options);
|
||||
if (!itemValidationResult.hasProblems()) {
|
||||
matchCount++;
|
||||
if (maxContains !== undefined && matchCount > maxContains) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (matchCount < minContains) {
|
||||
validationResult.problems.push({
|
||||
location: { offset: node.offset, length: node.length },
|
||||
severity: DiagnosticSeverity.Warning,
|
||||
message: schema.errorMessage || l10n.t('Array has too few items matching "contains". Expected {0} or more.', minContains),
|
||||
source: this.getSchemaSource(schema, originalSchema),
|
||||
schemaUri: this.getSchemaUri(schema, originalSchema),
|
||||
});
|
||||
}
|
||||
if (maxContains !== undefined && matchCount > maxContains) {
|
||||
validationResult.problems.push({
|
||||
location: { offset: node.offset, length: node.length },
|
||||
severity: DiagnosticSeverity.Warning,
|
||||
message: schema.errorMessage || l10n.t('Array has too many items matching "contains". Expected {0} or fewer.', maxContains),
|
||||
source: this.getSchemaSource(schema, originalSchema),
|
||||
schemaUri: this.getSchemaUri(schema, originalSchema),
|
||||
});
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Keyword: dependentRequired + dependentSchemas.
|
||||
*/
|
||||
applyDependencies(node, schema, originalSchema, validationResult, matchingSchemas, options, seenKeys) {
|
||||
// keep draft-07 dependencies support
|
||||
super.applyDependencies(node, schema, originalSchema, validationResult, matchingSchemas, options, seenKeys);
|
||||
const dependentRequired = schema.dependentRequired;
|
||||
if (dependentRequired && typeof dependentRequired === 'object') {
|
||||
for (const prop of Object.keys(dependentRequired)) {
|
||||
if (!seenKeys[prop])
|
||||
continue;
|
||||
const requiredProps = dependentRequired[prop];
|
||||
if (!Array.isArray(requiredProps))
|
||||
continue;
|
||||
for (const requiredProp of requiredProps) {
|
||||
if (!seenKeys[requiredProp]) {
|
||||
validationResult.problems.push({
|
||||
location: { offset: node.offset, length: node.length },
|
||||
severity: DiagnosticSeverity.Warning,
|
||||
message: l10n.t('Object is missing property {0} required by property {1}.', requiredProp, prop),
|
||||
source: this.getSchemaSource(schema, originalSchema),
|
||||
schemaUri: this.getSchemaUri(schema, originalSchema),
|
||||
});
|
||||
}
|
||||
else {
|
||||
validationResult.propertiesValueMatches++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const dependentSchemas = schema.dependentSchemas;
|
||||
if (dependentSchemas && typeof dependentSchemas === 'object') {
|
||||
for (const prop of Object.keys(dependentSchemas)) {
|
||||
if (!seenKeys[prop])
|
||||
continue;
|
||||
const depSchema = asSchema(dependentSchemas[prop]);
|
||||
if (!depSchema)
|
||||
continue;
|
||||
const depValidationResult = new ValidationResult(options.isKubernetes);
|
||||
this.validateNode(node, depSchema, schema, depValidationResult, matchingSchemas, options);
|
||||
validationResult.mergePropertyMatch(depValidationResult);
|
||||
validationResult.mergeEnumValues(depValidationResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Keyword: unevaluatedProperties
|
||||
*/
|
||||
applyUnevaluatedProperties(node, schema, originalSchema, validationResult, matchingSchemas, options, seenKeys) {
|
||||
const unevaluated = schema.unevaluatedProperties;
|
||||
if (unevaluated === undefined)
|
||||
return;
|
||||
if (!seenKeys)
|
||||
return;
|
||||
// ensure evaluatedProperties exists
|
||||
validationResult.evaluatedProperties ?? (validationResult.evaluatedProperties = new Set());
|
||||
// remaining = properties not evaluated by properties/patternProperties/additionalProperties
|
||||
const remaining = Object.keys(seenKeys).filter((name) => !validationResult.evaluatedProperties?.has(name));
|
||||
if (remaining.length === 0)
|
||||
return;
|
||||
// unevaluatedProperties: false => forbid remaining properties
|
||||
if (unevaluated === false) {
|
||||
for (const propName of remaining) {
|
||||
const child = seenKeys[propName];
|
||||
if (!child)
|
||||
continue;
|
||||
const propertyNode = child.type === 'property' ? child : child.parent;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const keyNode = propertyNode.keyNode;
|
||||
if (!keyNode)
|
||||
continue;
|
||||
validationResult.problems.push({
|
||||
location: { offset: keyNode.offset, length: keyNode.length },
|
||||
severity: DiagnosticSeverity.Warning,
|
||||
code: ErrorCode.PropertyExpected,
|
||||
message: schema.errorMessage || l10n.t('Property {0} is not allowed.', propName),
|
||||
source: this.getSchemaSource(schema, originalSchema),
|
||||
schemaUri: this.getSchemaUri(schema, originalSchema),
|
||||
});
|
||||
validationResult.evaluatedProperties?.add(propName);
|
||||
}
|
||||
return;
|
||||
}
|
||||
// unevaluatedProperties: true => allow anything remaining, but mark evaluated
|
||||
if (unevaluated === true) {
|
||||
for (const propName of remaining) {
|
||||
validationResult.evaluatedProperties?.add(propName);
|
||||
}
|
||||
return;
|
||||
}
|
||||
// unevaluatedProperties: <schema> => validate value of each remaining property
|
||||
const unevaluatedSchema = asSchema(unevaluated);
|
||||
if (!unevaluatedSchema)
|
||||
return;
|
||||
for (const propName of remaining) {
|
||||
const child = seenKeys[propName];
|
||||
if (!child)
|
||||
continue;
|
||||
const valueNode = child.type === 'property' ? child.valueNode : child;
|
||||
if (!valueNode)
|
||||
continue;
|
||||
const subResult = new ValidationResult(options.isKubernetes);
|
||||
this.validateNode(valueNode, unevaluatedSchema, schema, subResult, matchingSchemas, options);
|
||||
validationResult.mergePropertyMatch(subResult);
|
||||
validationResult.mergeEnumValues(subResult);
|
||||
validationResult.evaluatedProperties?.add(propName);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Keyword: unevaluatedItems
|
||||
*/
|
||||
applyUnevaluatedItems(node, schema, originalSchema, validationResult, matchingSchemas, options) {
|
||||
const unevaluated = schema.unevaluatedItems;
|
||||
if (unevaluated === undefined)
|
||||
return;
|
||||
const items = (node.items ?? []);
|
||||
if (items.length === 0)
|
||||
return;
|
||||
const evaluated = validationResult.getEvaluatedItems(node);
|
||||
const remaining = [];
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
if (!evaluated.has(i))
|
||||
remaining.push(i);
|
||||
}
|
||||
if (remaining.length === 0)
|
||||
return;
|
||||
// unevaluatedItems: false => forbid remaining indices
|
||||
if (unevaluated === false) {
|
||||
for (const idx of remaining) {
|
||||
const item = items[idx];
|
||||
validationResult.problems.push({
|
||||
location: { offset: item.offset, length: item.length || 1 },
|
||||
severity: DiagnosticSeverity.Warning,
|
||||
code: ErrorCode.PropertyExpected,
|
||||
message: schema.errorMessage || l10n.t('Array has too many items according to schema. Expected {0} or fewer.', idx),
|
||||
source: this.getSchemaSource(schema, originalSchema),
|
||||
schemaUri: this.getSchemaUri(schema, originalSchema),
|
||||
});
|
||||
evaluated.add(idx);
|
||||
}
|
||||
return;
|
||||
}
|
||||
// unevaluatedItems: true => allow everything remaining, but mark evaluated
|
||||
if (unevaluated === true) {
|
||||
for (const idx of remaining)
|
||||
evaluated.add(idx);
|
||||
return;
|
||||
}
|
||||
// unevaluatedItems: <schema> => validate remaining items against that schema
|
||||
const unevaluatedSchema = asSchema(unevaluated);
|
||||
if (!unevaluatedSchema)
|
||||
return;
|
||||
for (const idx of remaining) {
|
||||
const item = items[idx];
|
||||
const subResult = new ValidationResult(options.isKubernetes);
|
||||
// validate the item node with the unevaluatedItems subschema
|
||||
this.validateNode(item, unevaluatedSchema, schema, subResult, matchingSchemas, options);
|
||||
validationResult.merge(subResult);
|
||||
validationResult.mergeEnumValues(subResult);
|
||||
evaluated.add(idx);
|
||||
}
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=draft2019Validator.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
import type { JSONSchema } from '../../jsonSchema';
|
||||
import { SchemaDialect } from '../../jsonSchema';
|
||||
import type { ArrayASTNode } from '../../jsonASTTypes';
|
||||
import { Draft2019Validator } from './draft2019Validator';
|
||||
import type { ISchemaCollector, Options } from './baseValidator';
|
||||
import { ValidationResult } from './baseValidator';
|
||||
export declare class Draft2020Validator extends Draft2019Validator {
|
||||
protected getCurrentDialect(): SchemaDialect;
|
||||
/**
|
||||
* Keyword: prefixItems + items
|
||||
*/
|
||||
protected validateArrayNode(node: ArrayASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, matchingSchemas: ISchemaCollector, options: Options): void;
|
||||
/**
|
||||
* Draft 2020-12: contains keyword affects the unevaluatedItems keyword
|
||||
*/
|
||||
protected applyContains(node: ArrayASTNode, schema: JSONSchema, originalSchema: JSONSchema, validationResult: ValidationResult, _matchingSchemas: ISchemaCollector, options: Options): void;
|
||||
}
|
||||
Generated
Vendored
+126
@@ -0,0 +1,126 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) IBM Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import { SchemaDialect } from '../../jsonSchema';
|
||||
import { isNumber } from '../../utils/objects';
|
||||
import * as l10n from '@vscode/l10n';
|
||||
import { DiagnosticSeverity } from 'vscode-languageserver-types';
|
||||
import { Draft2019Validator } from './draft2019Validator';
|
||||
import { ValidationResult, asSchema } from './baseValidator';
|
||||
export class Draft2020Validator extends Draft2019Validator {
|
||||
getCurrentDialect() {
|
||||
return SchemaDialect.draft2020;
|
||||
}
|
||||
/**
|
||||
* Keyword: prefixItems + items
|
||||
*/
|
||||
validateArrayNode(node, schema, originalSchema, validationResult, matchingSchemas, options) {
|
||||
const items = (node.items ?? []);
|
||||
// prefixItems/items/contains contribute to evaluatedItems
|
||||
const evaluatedItems = validationResult.getEvaluatedItems(node);
|
||||
const prefixItems = schema.prefixItems;
|
||||
// validate prefixItems
|
||||
if (Array.isArray(prefixItems)) {
|
||||
const limit = Math.min(prefixItems.length, items.length);
|
||||
for (let i = 0; i < limit; i++) {
|
||||
const subSchema = asSchema(prefixItems[i]);
|
||||
if (!subSchema) {
|
||||
evaluatedItems.add(i);
|
||||
continue;
|
||||
}
|
||||
const itemValidationResult = new ValidationResult(options.isKubernetes);
|
||||
this.validateNode(items[i], subSchema, schema, itemValidationResult, matchingSchemas, options);
|
||||
validationResult.mergePropertyMatch(itemValidationResult, false);
|
||||
validationResult.mergeEnumValues(itemValidationResult);
|
||||
// mark as evaluated even if invalid (avoids duplicate unevaluatedItems noise)
|
||||
evaluatedItems.add(i);
|
||||
}
|
||||
}
|
||||
// validate remaining items against items
|
||||
const itemsKeyword = schema.items;
|
||||
const prefixLen = Array.isArray(prefixItems) ? prefixItems.length : 0;
|
||||
if (items.length > prefixLen) {
|
||||
if (itemsKeyword === false) {
|
||||
// "items": false => no items allowed beyond prefixItems
|
||||
validationResult.problems.push({
|
||||
location: { offset: node.offset, length: node.length },
|
||||
severity: DiagnosticSeverity.Warning,
|
||||
message: l10n.t('Array has too many items according to schema. Expected {0} or fewer.', prefixLen),
|
||||
source: this.getSchemaSource(schema, originalSchema),
|
||||
schemaUri: this.getSchemaUri(schema, originalSchema),
|
||||
});
|
||||
// mark these as evaluated by "items": false (so unevaluatedItems doesn't also complain)
|
||||
for (let i = prefixLen; i < items.length; i++) {
|
||||
evaluatedItems.add(i);
|
||||
}
|
||||
}
|
||||
else {
|
||||
const tailSchema = asSchema(itemsKeyword);
|
||||
// if items is undefined, there's no constraint for remaining items and they remain unevaluated
|
||||
if (tailSchema) {
|
||||
for (let i = prefixLen; i < items.length; i++) {
|
||||
const itemValidationResult = new ValidationResult(options.isKubernetes);
|
||||
this.validateNode(items[i], tailSchema, schema, itemValidationResult, matchingSchemas, options);
|
||||
validationResult.mergePropertyMatch(itemValidationResult, false);
|
||||
validationResult.mergeEnumValues(itemValidationResult);
|
||||
// mark as evaluated even if invalid (avoids duplicate unevaluatedItems noise)
|
||||
evaluatedItems.add(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// contains enforces min/max and marks matching indices as evaluated
|
||||
this.applyContains(node, schema, originalSchema, validationResult, matchingSchemas, options);
|
||||
// generic array keywords
|
||||
this.applyArrayLength(node, schema, originalSchema, validationResult, options);
|
||||
this.applyUniqueItems(node, schema, originalSchema, validationResult);
|
||||
}
|
||||
/**
|
||||
* Draft 2020-12: contains keyword affects the unevaluatedItems keyword
|
||||
*/
|
||||
applyContains(node, schema, originalSchema, validationResult, _matchingSchemas, options) {
|
||||
const containsSchema = asSchema(schema.contains);
|
||||
if (!containsSchema)
|
||||
return;
|
||||
const items = (node.items ?? []);
|
||||
const minContainsRaw = schema.minContains;
|
||||
const maxContainsRaw = schema.maxContains;
|
||||
const minContains = isNumber(minContainsRaw) ? minContainsRaw : 1;
|
||||
const maxContains = isNumber(maxContainsRaw) ? maxContainsRaw : undefined;
|
||||
let matchCount = 0;
|
||||
// ensure evaluatedItems exists
|
||||
const evaluatedItems = validationResult.getEvaluatedItems(node);
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
const itemValidationResult = new ValidationResult(options.isKubernetes);
|
||||
this.validateNode(items[i], containsSchema, schema, itemValidationResult, this.getNoOpCollector(), options);
|
||||
if (!itemValidationResult.hasProblems()) {
|
||||
// items that match contains are considered evaluated
|
||||
evaluatedItems.add(i);
|
||||
matchCount++;
|
||||
if (maxContains !== undefined && matchCount > maxContains) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (matchCount < minContains) {
|
||||
validationResult.problems.push({
|
||||
location: { offset: node.offset, length: node.length },
|
||||
severity: DiagnosticSeverity.Warning,
|
||||
message: schema.errorMessage || l10n.t('Array has too few items matching "contains". Expected {0} or more.', minContains),
|
||||
source: this.getSchemaSource(schema, originalSchema),
|
||||
schemaUri: this.getSchemaUri(schema, originalSchema),
|
||||
});
|
||||
}
|
||||
if (maxContains !== undefined && matchCount > maxContains) {
|
||||
validationResult.problems.push({
|
||||
location: { offset: node.offset, length: node.length },
|
||||
severity: DiagnosticSeverity.Warning,
|
||||
message: schema.errorMessage || l10n.t('Array has too many items matching "contains". Expected {0} or fewer.', maxContains),
|
||||
source: this.getSchemaSource(schema, originalSchema),
|
||||
schemaUri: this.getSchemaUri(schema, originalSchema),
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=draft2020Validator.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"draft2020Validator.js","sourceRoot":"","sources":["../../../../../src/languageservice/parser/schemaValidation/draft2020Validator.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,OAAO,kBAAmB,SAAQ,kBAAkB;IACrC,iBAAiB;QAClC,OAAO,aAAa,CAAC,SAAS,CAAC;IACjC,CAAC;IAED;;OAEG;IACgB,iBAAiB,CAClC,IAAkB,EAClB,MAAkB,EAClB,cAA0B,EAC1B,gBAAkC,EAClC,eAAiC,EACjC,OAAgB;QAEhB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAc,CAAC;QAC9C,0DAA0D;QAC1D,MAAM,cAAc,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEhE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,uBAAuB;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,SAAS,EAAE;oBACd,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACtB,SAAS;iBACV;gBACD,MAAM,oBAAoB,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACxE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;gBAE/F,gBAAgB,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;gBACjE,gBAAgB,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;gBAEvD,8EAA8E;gBAC9E,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACvB;SACF;QAED,yCAAyC;QACzC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE;YAC5B,IAAI,YAAY,KAAK,KAAK,EAAE;gBAC1B,wDAAwD;gBACxD,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAC7B,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;oBACtD,QAAQ,EAAE,kBAAkB,CAAC,OAAO;oBACpC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,sEAAsE,EAAE,SAAS,CAAC;oBAClG,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC;oBACpD,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;iBACrD,CAAC,CAAC;gBAEH,wFAAwF;gBACxF,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC7C,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACvB;aACF;iBAAM;gBACL,MAAM,UAAU,GAAG,QAAQ,CAAC,YAA6B,CAAC,CAAC;gBAC3D,+FAA+F;gBAC/F,IAAI,UAAU,EAAE;oBACd,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC7C,MAAM,oBAAoB,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;wBACxE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,oBAAoB,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;wBAEhG,gBAAgB,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;wBACjE,gBAAgB,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;wBAEvD,8EAA8E;wBAC9E,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACvB;iBACF;aACF;SACF;QAED,oEAAoE;QACpE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QAE7F,yBAAyB;QACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC/E,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACgB,aAAa,CAC9B,IAAkB,EAClB,MAAkB,EAClB,cAA0B,EAC1B,gBAAkC,EAClC,gBAAkC,EAClC,OAAgB;QAEhB,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc;YAAE,OAAO;QAE5B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAc,CAAC;QAE9C,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC;QAC1C,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC;QAE1C,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1E,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,+BAA+B;QAC/B,MAAM,cAAc,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEhE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,oBAAoB,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACxE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;YAC5G,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,EAAE;gBACvC,qDAAqD;gBACrD,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAEtB,UAAU,EAAE,CAAC;gBACb,IAAI,WAAW,KAAK,SAAS,IAAI,UAAU,GAAG,WAAW,EAAE;oBACzD,MAAM;iBACP;aACF;SACF;QAED,IAAI,UAAU,GAAG,WAAW,EAAE;YAC5B,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC7B,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;gBACtD,QAAQ,EAAE,kBAAkB,CAAC,OAAO;gBACpC,OAAO,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,oEAAoE,EAAE,WAAW,CAAC;gBACzH,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC;gBACpD,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;aACrD,CAAC,CAAC;SACJ;QAED,IAAI,WAAW,KAAK,SAAS,IAAI,UAAU,GAAG,WAAW,EAAE;YACzD,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC7B,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;gBACtD,QAAQ,EAAE,kBAAkB,CAAC,OAAO;gBACpC,OAAO,EACL,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,sEAAsE,EAAE,WAAW,CAAC;gBACpH,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC;gBACpD,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;aACrD,CAAC,CAAC;SACJ;IACH,CAAC;CACF"}
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
import { SchemaDialect } from '../../jsonSchema';
|
||||
import { BaseValidator } from './baseValidator';
|
||||
export declare function getValidator(dialect: SchemaDialect): BaseValidator;
|
||||
Generated
Vendored
+24
@@ -0,0 +1,24 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) IBM Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import { SchemaDialect } from '../../jsonSchema';
|
||||
import { Draft04Validator } from './draft04Validator';
|
||||
import { Draft07Validator } from './draft07Validator';
|
||||
import { Draft2019Validator } from './draft2019Validator';
|
||||
import { Draft2020Validator } from './draft2020Validator';
|
||||
export function getValidator(dialect) {
|
||||
switch (dialect) {
|
||||
case SchemaDialect.draft04:
|
||||
return new Draft04Validator();
|
||||
case SchemaDialect.draft07:
|
||||
return new Draft07Validator();
|
||||
case SchemaDialect.draft2019:
|
||||
return new Draft2019Validator();
|
||||
case SchemaDialect.draft2020:
|
||||
return new Draft2020Validator();
|
||||
default:
|
||||
return new Draft07Validator(); // fallback
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=validatorFactory.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"validatorFactory.js","sourceRoot":"","sources":["../../../../../src/languageservice/parser/schemaValidation/validatorFactory.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,UAAU,YAAY,CAAC,OAAsB;IACjD,QAAQ,OAAO,EAAE;QACf,KAAK,aAAa,CAAC,OAAO;YACxB,OAAO,IAAI,gBAAgB,EAAE,CAAC;QAChC,KAAK,aAAa,CAAC,OAAO;YACxB,OAAO,IAAI,gBAAgB,EAAE,CAAC;QAChC,KAAK,aAAa,CAAC,SAAS;YAC1B,OAAO,IAAI,kBAAkB,EAAE,CAAC;QAClC,KAAK,aAAa,CAAC,SAAS;YAC1B,OAAO,IAAI,kBAAkB,EAAE,CAAC;QAClC;YACE,OAAO,IAAI,gBAAgB,EAAE,CAAC,CAAC,WAAW;KAC7C;AACH,CAAC"}
|
||||
Reference in New Issue
Block a user