@vcollab/yaml-language-server-tag-validation 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +712 -0
- package/CONTRIBUTING.md +8 -0
- package/DCO +37 -0
- package/Dockerfile +11 -0
- package/LICENSE +21 -0
- package/README.md +475 -0
- package/bin/yaml-language-server +27 -0
- package/docs/scalaruri-custom-tags.md +269 -0
- package/l10n/bundle.l10n.de.json +62 -0
- package/l10n/bundle.l10n.fr.json +62 -0
- package/l10n/bundle.l10n.ja.json +62 -0
- package/l10n/bundle.l10n.json +61 -0
- package/l10n/bundle.l10n.ko.json +62 -0
- package/l10n/bundle.l10n.zh-cn.json +62 -0
- package/l10n/bundle.l10n.zh-tw.json +62 -0
- package/lib/esm/commands.d.ts +3 -0
- package/lib/esm/commands.js +9 -0
- package/lib/esm/commands.js.map +1 -0
- package/lib/esm/index.d.ts +3 -0
- package/lib/esm/index.js +4 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/languageserver/commandExecutor.d.ts +10 -0
- package/lib/esm/languageserver/commandExecutor.js +21 -0
- package/lib/esm/languageserver/commandExecutor.js.map +1 -0
- package/lib/esm/languageserver/handlers/languageHandlers.d.ts +61 -0
- package/lib/esm/languageserver/handlers/languageHandlers.js +236 -0
- package/lib/esm/languageserver/handlers/languageHandlers.js.map +1 -0
- package/lib/esm/languageserver/handlers/notificationHandlers.d.ts +29 -0
- package/lib/esm/languageserver/handlers/notificationHandlers.js +46 -0
- package/lib/esm/languageserver/handlers/notificationHandlers.js.map +1 -0
- package/lib/esm/languageserver/handlers/requestHandlers.d.ts +9 -0
- package/lib/esm/languageserver/handlers/requestHandlers.js +23 -0
- package/lib/esm/languageserver/handlers/requestHandlers.js.map +1 -0
- package/lib/esm/languageserver/handlers/schemaSelectionHandlers.d.ts +13 -0
- package/lib/esm/languageserver/handlers/schemaSelectionHandlers.js +72 -0
- package/lib/esm/languageserver/handlers/schemaSelectionHandlers.js.map +1 -0
- package/lib/esm/languageserver/handlers/settingsHandlers.d.ts +42 -0
- package/lib/esm/languageserver/handlers/settingsHandlers.js +316 -0
- package/lib/esm/languageserver/handlers/settingsHandlers.js.map +1 -0
- package/lib/esm/languageserver/handlers/validationHandlers.d.ts +15 -0
- package/lib/esm/languageserver/handlers/validationHandlers.js +108 -0
- package/lib/esm/languageserver/handlers/validationHandlers.js.map +1 -0
- package/lib/esm/languageserver/handlers/workspaceHandlers.d.ts +9 -0
- package/lib/esm/languageserver/handlers/workspaceHandlers.js +17 -0
- package/lib/esm/languageserver/handlers/workspaceHandlers.js.map +1 -0
- package/lib/esm/languageserver/telemetry.d.ts +9 -0
- package/lib/esm/languageserver/telemetry.js +20 -0
- package/lib/esm/languageserver/telemetry.js.map +1 -0
- package/lib/esm/languageservice/jsonASTTypes.d.ts +49 -0
- package/lib/esm/languageservice/jsonASTTypes.js +6 -0
- package/lib/esm/languageservice/jsonASTTypes.js.map +1 -0
- package/lib/esm/languageservice/jsonSchema.d.ts +103 -0
- package/lib/esm/languageservice/jsonSchema.js +12 -0
- package/lib/esm/languageservice/jsonSchema.js.map +1 -0
- package/lib/esm/languageservice/parser/ast-converter.d.ts +11 -0
- package/lib/esm/languageservice/parser/ast-converter.js +176 -0
- package/lib/esm/languageservice/parser/ast-converter.js.map +1 -0
- package/lib/esm/languageservice/parser/astNodeUtils.d.ts +4 -0
- package/lib/esm/languageservice/parser/astNodeUtils.js +48 -0
- package/lib/esm/languageservice/parser/astNodeUtils.js.map +1 -0
- package/lib/esm/languageservice/parser/custom-tag-provider.d.ts +7 -0
- package/lib/esm/languageservice/parser/custom-tag-provider.js +58 -0
- package/lib/esm/languageservice/parser/custom-tag-provider.js.map +1 -0
- package/lib/esm/languageservice/parser/isKubernetes.d.ts +4 -0
- package/lib/esm/languageservice/parser/isKubernetes.js +17 -0
- package/lib/esm/languageservice/parser/isKubernetes.js.map +1 -0
- package/lib/esm/languageservice/parser/jsonDocument.d.ts +83 -0
- package/lib/esm/languageservice/parser/jsonDocument.js +171 -0
- package/lib/esm/languageservice/parser/jsonDocument.js.map +1 -0
- package/lib/esm/languageservice/parser/scalar-type.d.ts +8 -0
- package/lib/esm/languageservice/parser/scalar-type.js +17 -0
- package/lib/esm/languageservice/parser/scalar-type.js.map +1 -0
- package/lib/esm/languageservice/parser/schemaValidation/baseValidator.d.ts +124 -0
- package/lib/esm/languageservice/parser/schemaValidation/baseValidator.js +1254 -0
- package/lib/esm/languageservice/parser/schemaValidation/baseValidator.js.map +1 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft04Validator.d.ts +17 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft04Validator.js +30 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft04Validator.js.map +1 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft07Validator.d.ts +15 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft07Validator.js +28 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft07Validator.js.map +1 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft2019Validator.d.ts +28 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft2019Validator.js +224 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft2019Validator.js.map +1 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft2020Validator.d.ts +17 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft2020Validator.js +126 -0
- package/lib/esm/languageservice/parser/schemaValidation/draft2020Validator.js.map +1 -0
- package/lib/esm/languageservice/parser/schemaValidation/validatorFactory.d.ts +3 -0
- package/lib/esm/languageservice/parser/schemaValidation/validatorFactory.js +24 -0
- package/lib/esm/languageservice/parser/schemaValidation/validatorFactory.js.map +1 -0
- package/lib/esm/languageservice/parser/yaml-documents.d.ts +71 -0
- package/lib/esm/languageservice/parser/yaml-documents.js +258 -0
- package/lib/esm/languageservice/parser/yaml-documents.js.map +1 -0
- package/lib/esm/languageservice/parser/yamlParser07.d.ts +15 -0
- package/lib/esm/languageservice/parser/yamlParser07.js +50 -0
- package/lib/esm/languageservice/parser/yamlParser07.js.map +1 -0
- package/lib/esm/languageservice/services/crdUtil.d.ts +23 -0
- package/lib/esm/languageservice/services/crdUtil.js +74 -0
- package/lib/esm/languageservice/services/crdUtil.js.map +1 -0
- package/lib/esm/languageservice/services/documentSymbols.d.ts +12 -0
- package/lib/esm/languageservice/services/documentSymbols.js +67 -0
- package/lib/esm/languageservice/services/documentSymbols.js.map +1 -0
- package/lib/esm/languageservice/services/modelineUtil.d.ts +9 -0
- package/lib/esm/languageservice/services/modelineUtil.js +29 -0
- package/lib/esm/languageservice/services/modelineUtil.js.map +1 -0
- package/lib/esm/languageservice/services/schemaRequestHandler.d.ts +12 -0
- package/lib/esm/languageservice/services/schemaRequestHandler.js +84 -0
- package/lib/esm/languageservice/services/schemaRequestHandler.js.map +1 -0
- package/lib/esm/languageservice/services/validation/map-key-order.d.ts +7 -0
- package/lib/esm/languageservice/services/validation/map-key-order.js +35 -0
- package/lib/esm/languageservice/services/validation/map-key-order.js.map +1 -0
- package/lib/esm/languageservice/services/validation/types.d.ts +6 -0
- package/lib/esm/languageservice/services/validation/types.js +6 -0
- package/lib/esm/languageservice/services/validation/types.js.map +1 -0
- package/lib/esm/languageservice/services/validation/unused-anchors.d.ts +8 -0
- package/lib/esm/languageservice/services/validation/unused-anchors.js +91 -0
- package/lib/esm/languageservice/services/validation/unused-anchors.js.map +1 -0
- package/lib/esm/languageservice/services/validation/yaml-style.d.ts +12 -0
- package/lib/esm/languageservice/services/validation/yaml-style.js +28 -0
- package/lib/esm/languageservice/services/validation/yaml-style.js.map +1 -0
- package/lib/esm/languageservice/services/yamlCodeActions.d.ts +25 -0
- package/lib/esm/languageservice/services/yamlCodeActions.js +342 -0
- package/lib/esm/languageservice/services/yamlCodeActions.js.map +1 -0
- package/lib/esm/languageservice/services/yamlCodeLens.d.ts +11 -0
- package/lib/esm/languageservice/services/yamlCodeLens.js +46 -0
- package/lib/esm/languageservice/services/yamlCodeLens.js.map +1 -0
- package/lib/esm/languageservice/services/yamlCommands.d.ts +3 -0
- package/lib/esm/languageservice/services/yamlCommands.js +46 -0
- package/lib/esm/languageservice/services/yamlCommands.js.map +1 -0
- package/lib/esm/languageservice/services/yamlCompletion.d.ts +77 -0
- package/lib/esm/languageservice/services/yamlCompletion.js +1501 -0
- package/lib/esm/languageservice/services/yamlCompletion.js.map +1 -0
- package/lib/esm/languageservice/services/yamlDefinition.d.ts +9 -0
- package/lib/esm/languageservice/services/yamlDefinition.js +37 -0
- package/lib/esm/languageservice/services/yamlDefinition.js.map +1 -0
- package/lib/esm/languageservice/services/yamlFolding.d.ts +4 -0
- package/lib/esm/languageservice/services/yamlFolding.js +62 -0
- package/lib/esm/languageservice/services/yamlFolding.js.map +1 -0
- package/lib/esm/languageservice/services/yamlFormatter.d.ts +8 -0
- package/lib/esm/languageservice/services/yamlFormatter.js +46 -0
- package/lib/esm/languageservice/services/yamlFormatter.js.map +1 -0
- package/lib/esm/languageservice/services/yamlHover.d.ts +47 -0
- package/lib/esm/languageservice/services/yamlHover.js +366 -0
- package/lib/esm/languageservice/services/yamlHover.js.map +1 -0
- package/lib/esm/languageservice/services/yamlLinks.d.ts +8 -0
- package/lib/esm/languageservice/services/yamlLinks.js +27 -0
- package/lib/esm/languageservice/services/yamlLinks.js.map +1 -0
- package/lib/esm/languageservice/services/yamlOnTypeFormatting.d.ts +4 -0
- package/lib/esm/languageservice/services/yamlOnTypeFormatting.js +43 -0
- package/lib/esm/languageservice/services/yamlOnTypeFormatting.js.map +1 -0
- package/lib/esm/languageservice/services/yamlRename.d.ts +18 -0
- package/lib/esm/languageservice/services/yamlRename.js +184 -0
- package/lib/esm/languageservice/services/yamlRename.js.map +1 -0
- package/lib/esm/languageservice/services/yamlSchemaService.d.ts +99 -0
- package/lib/esm/languageservice/services/yamlSchemaService.js +1110 -0
- package/lib/esm/languageservice/services/yamlSchemaService.js.map +1 -0
- package/lib/esm/languageservice/services/yamlSelectionRanges.d.ts +3 -0
- package/lib/esm/languageservice/services/yamlSelectionRanges.js +130 -0
- package/lib/esm/languageservice/services/yamlSelectionRanges.js.map +1 -0
- package/lib/esm/languageservice/services/yamlValidation.d.ts +26 -0
- package/lib/esm/languageservice/services/yamlValidation.js +135 -0
- package/lib/esm/languageservice/services/yamlValidation.js.map +1 -0
- package/lib/esm/languageservice/telemetry.d.ts +16 -0
- package/lib/esm/languageservice/telemetry.js +6 -0
- package/lib/esm/languageservice/telemetry.js.map +1 -0
- package/lib/esm/languageservice/utils/arrUtils.d.ts +6 -0
- package/lib/esm/languageservice/utils/arrUtils.js +81 -0
- package/lib/esm/languageservice/utils/arrUtils.js.map +1 -0
- package/lib/esm/languageservice/utils/block-string-rewriter.d.ts +8 -0
- package/lib/esm/languageservice/utils/block-string-rewriter.js +215 -0
- package/lib/esm/languageservice/utils/block-string-rewriter.js.map +1 -0
- package/lib/esm/languageservice/utils/charCode.d.ts +415 -0
- package/lib/esm/languageservice/utils/charCode.js +6 -0
- package/lib/esm/languageservice/utils/charCode.js.map +1 -0
- package/lib/esm/languageservice/utils/diagnostic-filter.d.ts +50 -0
- package/lib/esm/languageservice/utils/diagnostic-filter.js +82 -0
- package/lib/esm/languageservice/utils/diagnostic-filter.js.map +1 -0
- package/lib/esm/languageservice/utils/documentPositionCalculator.d.ts +5 -0
- package/lib/esm/languageservice/utils/documentPositionCalculator.js +56 -0
- package/lib/esm/languageservice/utils/documentPositionCalculator.js.map +1 -0
- package/lib/esm/languageservice/utils/filePatternAssociation.d.ts +8 -0
- package/lib/esm/languageservice/utils/filePatternAssociation.js +23 -0
- package/lib/esm/languageservice/utils/filePatternAssociation.js.map +1 -0
- package/lib/esm/languageservice/utils/flow-style-rewriter.d.ts +6 -0
- package/lib/esm/languageservice/utils/flow-style-rewriter.js +53 -0
- package/lib/esm/languageservice/utils/flow-style-rewriter.js.map +1 -0
- package/lib/esm/languageservice/utils/indentationGuesser.d.ts +15 -0
- package/lib/esm/languageservice/utils/indentationGuesser.js +176 -0
- package/lib/esm/languageservice/utils/indentationGuesser.js.map +1 -0
- package/lib/esm/languageservice/utils/json.d.ts +11 -0
- package/lib/esm/languageservice/utils/json.js +79 -0
- package/lib/esm/languageservice/utils/json.js.map +1 -0
- package/lib/esm/languageservice/utils/math.d.ts +1 -0
- package/lib/esm/languageservice/utils/math.js +9 -0
- package/lib/esm/languageservice/utils/math.js.map +1 -0
- package/lib/esm/languageservice/utils/objects.d.ts +16 -0
- package/lib/esm/languageservice/utils/objects.js +92 -0
- package/lib/esm/languageservice/utils/objects.js.map +1 -0
- package/lib/esm/languageservice/utils/parseUtils.d.ts +17 -0
- package/lib/esm/languageservice/utils/parseUtils.js +2 -0
- package/lib/esm/languageservice/utils/parseUtils.js.map +1 -0
- package/lib/esm/languageservice/utils/paths.d.ts +5 -0
- package/lib/esm/languageservice/utils/paths.js +42 -0
- package/lib/esm/languageservice/utils/paths.js.map +1 -0
- package/lib/esm/languageservice/utils/schemaUrls.d.ts +14 -0
- package/lib/esm/languageservice/utils/schemaUrls.js +59 -0
- package/lib/esm/languageservice/utils/schemaUrls.js.map +1 -0
- package/lib/esm/languageservice/utils/schemaUtils.d.ts +19 -0
- package/lib/esm/languageservice/utils/schemaUtils.js +62 -0
- package/lib/esm/languageservice/utils/schemaUtils.js.map +1 -0
- package/lib/esm/languageservice/utils/strings.d.ts +10 -0
- package/lib/esm/languageservice/utils/strings.js +79 -0
- package/lib/esm/languageservice/utils/strings.js.map +1 -0
- package/lib/esm/languageservice/utils/textBuffer.d.ts +12 -0
- package/lib/esm/languageservice/utils/textBuffer.js +45 -0
- package/lib/esm/languageservice/utils/textBuffer.js.map +1 -0
- package/lib/esm/languageservice/utils/yamlAstUtils.d.ts +13 -0
- package/lib/esm/languageservice/utils/yamlAstUtils.js +108 -0
- package/lib/esm/languageservice/utils/yamlAstUtils.js.map +1 -0
- package/lib/esm/languageservice/utils/yamlScalar.d.ts +1 -0
- package/lib/esm/languageservice/utils/yamlScalar.js +69 -0
- package/lib/esm/languageservice/utils/yamlScalar.js.map +1 -0
- package/lib/esm/languageservice/yamlLanguageService.d.ts +135 -0
- package/lib/esm/languageservice/yamlLanguageService.js +101 -0
- package/lib/esm/languageservice/yamlLanguageService.js.map +1 -0
- package/lib/esm/languageservice/yamlTypes.d.ts +18 -0
- package/lib/esm/languageservice/yamlTypes.js +6 -0
- package/lib/esm/languageservice/yamlTypes.js.map +1 -0
- package/lib/esm/nodeTranslationSetup.d.ts +9 -0
- package/lib/esm/nodeTranslationSetup.js +34 -0
- package/lib/esm/nodeTranslationSetup.js.map +1 -0
- package/lib/esm/requestTypes.d.ts +63 -0
- package/lib/esm/requestTypes.js +46 -0
- package/lib/esm/requestTypes.js.map +1 -0
- package/lib/esm/server.d.ts +1 -0
- package/lib/esm/server.js +55 -0
- package/lib/esm/server.js.map +1 -0
- package/lib/esm/webworker/yamlServerMain.d.ts +1 -0
- package/lib/esm/webworker/yamlServerMain.js +40 -0
- package/lib/esm/webworker/yamlServerMain.js.map +1 -0
- package/lib/esm/yamlServerInit.d.ts +23 -0
- package/lib/esm/yamlServerInit.js +123 -0
- package/lib/esm/yamlServerInit.js.map +1 -0
- package/lib/esm/yamlSettings.d.ts +112 -0
- package/lib/esm/yamlSettings.js +69 -0
- package/lib/esm/yamlSettings.js.map +1 -0
- package/lib/umd/commands.d.ts +3 -0
- package/lib/umd/commands.js +22 -0
- package/lib/umd/commands.js.map +1 -0
- package/lib/umd/index.d.ts +3 -0
- package/lib/umd/index.js +32 -0
- package/lib/umd/index.js.map +1 -0
- package/lib/umd/languageserver/commandExecutor.d.ts +10 -0
- package/lib/umd/languageserver/commandExecutor.js +35 -0
- package/lib/umd/languageserver/commandExecutor.js.map +1 -0
- package/lib/umd/languageserver/handlers/languageHandlers.d.ts +61 -0
- package/lib/umd/languageserver/handlers/languageHandlers.js +250 -0
- package/lib/umd/languageserver/handlers/languageHandlers.js.map +1 -0
- package/lib/umd/languageserver/handlers/notificationHandlers.d.ts +29 -0
- package/lib/umd/languageserver/handlers/notificationHandlers.js +60 -0
- package/lib/umd/languageserver/handlers/notificationHandlers.js.map +1 -0
- package/lib/umd/languageserver/handlers/requestHandlers.d.ts +9 -0
- package/lib/umd/languageserver/handlers/requestHandlers.js +37 -0
- package/lib/umd/languageserver/handlers/requestHandlers.js.map +1 -0
- package/lib/umd/languageserver/handlers/schemaSelectionHandlers.d.ts +13 -0
- package/lib/umd/languageserver/handlers/schemaSelectionHandlers.js +86 -0
- package/lib/umd/languageserver/handlers/schemaSelectionHandlers.js.map +1 -0
- package/lib/umd/languageserver/handlers/settingsHandlers.d.ts +42 -0
- package/lib/umd/languageserver/handlers/settingsHandlers.js +330 -0
- package/lib/umd/languageserver/handlers/settingsHandlers.js.map +1 -0
- package/lib/umd/languageserver/handlers/validationHandlers.d.ts +15 -0
- package/lib/umd/languageserver/handlers/validationHandlers.js +122 -0
- package/lib/umd/languageserver/handlers/validationHandlers.js.map +1 -0
- package/lib/umd/languageserver/handlers/workspaceHandlers.d.ts +9 -0
- package/lib/umd/languageserver/handlers/workspaceHandlers.js +31 -0
- package/lib/umd/languageserver/handlers/workspaceHandlers.js.map +1 -0
- package/lib/umd/languageserver/telemetry.d.ts +9 -0
- package/lib/umd/languageserver/telemetry.js +34 -0
- package/lib/umd/languageserver/telemetry.js.map +1 -0
- package/lib/umd/languageservice/jsonASTTypes.d.ts +49 -0
- package/lib/umd/languageservice/jsonASTTypes.js +17 -0
- package/lib/umd/languageservice/jsonASTTypes.js.map +1 -0
- package/lib/umd/languageservice/jsonSchema.d.ts +103 -0
- package/lib/umd/languageservice/jsonSchema.js +25 -0
- package/lib/umd/languageservice/jsonSchema.js.map +1 -0
- package/lib/umd/languageservice/parser/ast-converter.d.ts +11 -0
- package/lib/umd/languageservice/parser/ast-converter.js +191 -0
- package/lib/umd/languageservice/parser/ast-converter.js.map +1 -0
- package/lib/umd/languageservice/parser/astNodeUtils.d.ts +4 -0
- package/lib/umd/languageservice/parser/astNodeUtils.js +64 -0
- package/lib/umd/languageservice/parser/astNodeUtils.js.map +1 -0
- package/lib/umd/languageservice/parser/custom-tag-provider.d.ts +7 -0
- package/lib/umd/languageservice/parser/custom-tag-provider.js +72 -0
- package/lib/umd/languageservice/parser/custom-tag-provider.js.map +1 -0
- package/lib/umd/languageservice/parser/isKubernetes.d.ts +4 -0
- package/lib/umd/languageservice/parser/isKubernetes.js +32 -0
- package/lib/umd/languageservice/parser/isKubernetes.js.map +1 -0
- package/lib/umd/languageservice/parser/jsonDocument.d.ts +83 -0
- package/lib/umd/languageservice/parser/jsonDocument.js +193 -0
- package/lib/umd/languageservice/parser/jsonDocument.js.map +1 -0
- package/lib/umd/languageservice/parser/scalar-type.d.ts +8 -0
- package/lib/umd/languageservice/parser/scalar-type.js +31 -0
- package/lib/umd/languageservice/parser/scalar-type.js.map +1 -0
- package/lib/umd/languageservice/parser/schemaValidation/baseValidator.d.ts +124 -0
- package/lib/umd/languageservice/parser/schemaValidation/baseValidator.js +1270 -0
- package/lib/umd/languageservice/parser/schemaValidation/baseValidator.js.map +1 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft04Validator.d.ts +17 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft04Validator.js +44 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft04Validator.js.map +1 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft07Validator.d.ts +15 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft07Validator.js +42 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft07Validator.js.map +1 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft2019Validator.d.ts +28 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft2019Validator.js +238 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft2019Validator.js.map +1 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft2020Validator.d.ts +17 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft2020Validator.js +140 -0
- package/lib/umd/languageservice/parser/schemaValidation/draft2020Validator.js.map +1 -0
- package/lib/umd/languageservice/parser/schemaValidation/validatorFactory.d.ts +3 -0
- package/lib/umd/languageservice/parser/schemaValidation/validatorFactory.js +38 -0
- package/lib/umd/languageservice/parser/schemaValidation/validatorFactory.js.map +1 -0
- package/lib/umd/languageservice/parser/yaml-documents.d.ts +71 -0
- package/lib/umd/languageservice/parser/yaml-documents.js +274 -0
- package/lib/umd/languageservice/parser/yaml-documents.js.map +1 -0
- package/lib/umd/languageservice/parser/yamlParser07.d.ts +15 -0
- package/lib/umd/languageservice/parser/yamlParser07.js +65 -0
- package/lib/umd/languageservice/parser/yamlParser07.js.map +1 -0
- package/lib/umd/languageservice/services/crdUtil.d.ts +23 -0
- package/lib/umd/languageservice/services/crdUtil.js +89 -0
- package/lib/umd/languageservice/services/crdUtil.js.map +1 -0
- package/lib/umd/languageservice/services/documentSymbols.d.ts +12 -0
- package/lib/umd/languageservice/services/documentSymbols.js +81 -0
- package/lib/umd/languageservice/services/documentSymbols.js.map +1 -0
- package/lib/umd/languageservice/services/modelineUtil.d.ts +9 -0
- package/lib/umd/languageservice/services/modelineUtil.js +44 -0
- package/lib/umd/languageservice/services/modelineUtil.js.map +1 -0
- package/lib/umd/languageservice/services/schemaRequestHandler.d.ts +12 -0
- package/lib/umd/languageservice/services/schemaRequestHandler.js +98 -0
- package/lib/umd/languageservice/services/schemaRequestHandler.js.map +1 -0
- package/lib/umd/languageservice/services/validation/map-key-order.d.ts +7 -0
- package/lib/umd/languageservice/services/validation/map-key-order.js +49 -0
- package/lib/umd/languageservice/services/validation/map-key-order.js.map +1 -0
- package/lib/umd/languageservice/services/validation/types.d.ts +6 -0
- package/lib/umd/languageservice/services/validation/types.js +17 -0
- package/lib/umd/languageservice/services/validation/types.js.map +1 -0
- package/lib/umd/languageservice/services/validation/unused-anchors.d.ts +8 -0
- package/lib/umd/languageservice/services/validation/unused-anchors.js +105 -0
- package/lib/umd/languageservice/services/validation/unused-anchors.js.map +1 -0
- package/lib/umd/languageservice/services/validation/yaml-style.d.ts +12 -0
- package/lib/umd/languageservice/services/validation/yaml-style.js +42 -0
- package/lib/umd/languageservice/services/validation/yaml-style.js.map +1 -0
- package/lib/umd/languageservice/services/yamlCodeActions.d.ts +25 -0
- package/lib/umd/languageservice/services/yamlCodeActions.js +356 -0
- package/lib/umd/languageservice/services/yamlCodeActions.js.map +1 -0
- package/lib/umd/languageservice/services/yamlCodeLens.d.ts +11 -0
- package/lib/umd/languageservice/services/yamlCodeLens.js +60 -0
- package/lib/umd/languageservice/services/yamlCodeLens.js.map +1 -0
- package/lib/umd/languageservice/services/yamlCommands.d.ts +3 -0
- package/lib/umd/languageservice/services/yamlCommands.js +60 -0
- package/lib/umd/languageservice/services/yamlCommands.js.map +1 -0
- package/lib/umd/languageservice/services/yamlCompletion.d.ts +77 -0
- package/lib/umd/languageservice/services/yamlCompletion.js +1515 -0
- package/lib/umd/languageservice/services/yamlCompletion.js.map +1 -0
- package/lib/umd/languageservice/services/yamlDefinition.d.ts +9 -0
- package/lib/umd/languageservice/services/yamlDefinition.js +51 -0
- package/lib/umd/languageservice/services/yamlDefinition.js.map +1 -0
- package/lib/umd/languageservice/services/yamlFolding.d.ts +4 -0
- package/lib/umd/languageservice/services/yamlFolding.js +76 -0
- package/lib/umd/languageservice/services/yamlFolding.js.map +1 -0
- package/lib/umd/languageservice/services/yamlFormatter.d.ts +8 -0
- package/lib/umd/languageservice/services/yamlFormatter.js +60 -0
- package/lib/umd/languageservice/services/yamlFormatter.js.map +1 -0
- package/lib/umd/languageservice/services/yamlHover.d.ts +47 -0
- package/lib/umd/languageservice/services/yamlHover.js +380 -0
- package/lib/umd/languageservice/services/yamlHover.js.map +1 -0
- package/lib/umd/languageservice/services/yamlLinks.d.ts +8 -0
- package/lib/umd/languageservice/services/yamlLinks.js +41 -0
- package/lib/umd/languageservice/services/yamlLinks.js.map +1 -0
- package/lib/umd/languageservice/services/yamlOnTypeFormatting.d.ts +4 -0
- package/lib/umd/languageservice/services/yamlOnTypeFormatting.js +57 -0
- package/lib/umd/languageservice/services/yamlOnTypeFormatting.js.map +1 -0
- package/lib/umd/languageservice/services/yamlRename.d.ts +18 -0
- package/lib/umd/languageservice/services/yamlRename.js +198 -0
- package/lib/umd/languageservice/services/yamlRename.js.map +1 -0
- package/lib/umd/languageservice/services/yamlSchemaService.d.ts +99 -0
- package/lib/umd/languageservice/services/yamlSchemaService.js +1124 -0
- package/lib/umd/languageservice/services/yamlSchemaService.js.map +1 -0
- package/lib/umd/languageservice/services/yamlSelectionRanges.d.ts +3 -0
- package/lib/umd/languageservice/services/yamlSelectionRanges.js +144 -0
- package/lib/umd/languageservice/services/yamlSelectionRanges.js.map +1 -0
- package/lib/umd/languageservice/services/yamlValidation.d.ts +26 -0
- package/lib/umd/languageservice/services/yamlValidation.js +150 -0
- package/lib/umd/languageservice/services/yamlValidation.js.map +1 -0
- package/lib/umd/languageservice/telemetry.d.ts +16 -0
- package/lib/umd/languageservice/telemetry.js +17 -0
- package/lib/umd/languageservice/telemetry.js.map +1 -0
- package/lib/umd/languageservice/utils/arrUtils.d.ts +6 -0
- package/lib/umd/languageservice/utils/arrUtils.js +99 -0
- package/lib/umd/languageservice/utils/arrUtils.js.map +1 -0
- package/lib/umd/languageservice/utils/block-string-rewriter.d.ts +8 -0
- package/lib/umd/languageservice/utils/block-string-rewriter.js +229 -0
- package/lib/umd/languageservice/utils/block-string-rewriter.js.map +1 -0
- package/lib/umd/languageservice/utils/charCode.d.ts +415 -0
- package/lib/umd/languageservice/utils/charCode.js +17 -0
- package/lib/umd/languageservice/utils/charCode.js.map +1 -0
- package/lib/umd/languageservice/utils/diagnostic-filter.d.ts +50 -0
- package/lib/umd/languageservice/utils/diagnostic-filter.js +98 -0
- package/lib/umd/languageservice/utils/diagnostic-filter.js.map +1 -0
- package/lib/umd/languageservice/utils/documentPositionCalculator.d.ts +5 -0
- package/lib/umd/languageservice/utils/documentPositionCalculator.js +73 -0
- package/lib/umd/languageservice/utils/documentPositionCalculator.js.map +1 -0
- package/lib/umd/languageservice/utils/filePatternAssociation.d.ts +8 -0
- package/lib/umd/languageservice/utils/filePatternAssociation.js +37 -0
- package/lib/umd/languageservice/utils/filePatternAssociation.js.map +1 -0
- package/lib/umd/languageservice/utils/flow-style-rewriter.d.ts +6 -0
- package/lib/umd/languageservice/utils/flow-style-rewriter.js +67 -0
- package/lib/umd/languageservice/utils/flow-style-rewriter.js.map +1 -0
- package/lib/umd/languageservice/utils/indentationGuesser.d.ts +15 -0
- package/lib/umd/languageservice/utils/indentationGuesser.js +190 -0
- package/lib/umd/languageservice/utils/indentationGuesser.js.map +1 -0
- package/lib/umd/languageservice/utils/json.d.ts +11 -0
- package/lib/umd/languageservice/utils/json.js +93 -0
- package/lib/umd/languageservice/utils/json.js.map +1 -0
- package/lib/umd/languageservice/utils/math.d.ts +1 -0
- package/lib/umd/languageservice/utils/math.js +23 -0
- package/lib/umd/languageservice/utils/math.js.map +1 -0
- package/lib/umd/languageservice/utils/objects.d.ts +16 -0
- package/lib/umd/languageservice/utils/objects.js +112 -0
- package/lib/umd/languageservice/utils/objects.js.map +1 -0
- package/lib/umd/languageservice/utils/parseUtils.d.ts +17 -0
- package/lib/umd/languageservice/utils/parseUtils.js +15 -0
- package/lib/umd/languageservice/utils/parseUtils.js.map +1 -0
- package/lib/umd/languageservice/utils/paths.d.ts +5 -0
- package/lib/umd/languageservice/utils/paths.js +58 -0
- package/lib/umd/languageservice/utils/paths.js.map +1 -0
- package/lib/umd/languageservice/utils/schemaUrls.d.ts +14 -0
- package/lib/umd/languageservice/utils/schemaUrls.js +74 -0
- package/lib/umd/languageservice/utils/schemaUrls.js.map +1 -0
- package/lib/umd/languageservice/utils/schemaUtils.d.ts +19 -0
- package/lib/umd/languageservice/utils/schemaUtils.js +80 -0
- package/lib/umd/languageservice/utils/schemaUtils.js.map +1 -0
- package/lib/umd/languageservice/utils/strings.d.ts +10 -0
- package/lib/umd/languageservice/utils/strings.js +99 -0
- package/lib/umd/languageservice/utils/strings.js.map +1 -0
- package/lib/umd/languageservice/utils/textBuffer.d.ts +12 -0
- package/lib/umd/languageservice/utils/textBuffer.js +59 -0
- package/lib/umd/languageservice/utils/textBuffer.js.map +1 -0
- package/lib/umd/languageservice/utils/yamlAstUtils.d.ts +13 -0
- package/lib/umd/languageservice/utils/yamlAstUtils.js +126 -0
- package/lib/umd/languageservice/utils/yamlAstUtils.js.map +1 -0
- package/lib/umd/languageservice/utils/yamlScalar.d.ts +1 -0
- package/lib/umd/languageservice/utils/yamlScalar.js +83 -0
- package/lib/umd/languageservice/utils/yamlScalar.js.map +1 -0
- package/lib/umd/languageservice/yamlLanguageService.d.ts +135 -0
- package/lib/umd/languageservice/yamlLanguageService.js +115 -0
- package/lib/umd/languageservice/yamlLanguageService.js.map +1 -0
- package/lib/umd/languageservice/yamlTypes.d.ts +18 -0
- package/lib/umd/languageservice/yamlTypes.js +17 -0
- package/lib/umd/languageservice/yamlTypes.js.map +1 -0
- package/lib/umd/nodeTranslationSetup.d.ts +9 -0
- package/lib/umd/nodeTranslationSetup.js +48 -0
- package/lib/umd/nodeTranslationSetup.js.map +1 -0
- package/lib/umd/requestTypes.d.ts +63 -0
- package/lib/umd/requestTypes.js +59 -0
- package/lib/umd/requestTypes.js.map +1 -0
- package/lib/umd/server.d.ts +1 -0
- package/lib/umd/server.js +67 -0
- package/lib/umd/server.js.map +1 -0
- package/lib/umd/webworker/yamlServerMain.d.ts +1 -0
- package/lib/umd/webworker/yamlServerMain.js +52 -0
- package/lib/umd/webworker/yamlServerMain.js.map +1 -0
- package/lib/umd/yamlServerInit.d.ts +23 -0
- package/lib/umd/yamlServerInit.js +137 -0
- package/lib/umd/yamlServerInit.js.map +1 -0
- package/lib/umd/yamlSettings.d.ts +112 -0
- package/lib/umd/yamlSettings.js +84 -0
- package/lib/umd/yamlSettings.js.map +1 -0
- package/out/server/src/commands.d.ts +3 -0
- package/out/server/src/commands.js +12 -0
- package/out/server/src/commands.js.map +1 -0
- package/out/server/src/index.d.ts +3 -0
- package/out/server/src/index.js +22 -0
- package/out/server/src/index.js.map +1 -0
- package/out/server/src/languageserver/commandExecutor.d.ts +10 -0
- package/out/server/src/languageserver/commandExecutor.js +25 -0
- package/out/server/src/languageserver/commandExecutor.js.map +1 -0
- package/out/server/src/languageserver/handlers/languageHandlers.d.ts +61 -0
- package/out/server/src/languageserver/handlers/languageHandlers.js +240 -0
- package/out/server/src/languageserver/handlers/languageHandlers.js.map +1 -0
- package/out/server/src/languageserver/handlers/notificationHandlers.d.ts +29 -0
- package/out/server/src/languageserver/handlers/notificationHandlers.js +50 -0
- package/out/server/src/languageserver/handlers/notificationHandlers.js.map +1 -0
- package/out/server/src/languageserver/handlers/requestHandlers.d.ts +9 -0
- package/out/server/src/languageserver/handlers/requestHandlers.js +27 -0
- package/out/server/src/languageserver/handlers/requestHandlers.js.map +1 -0
- package/out/server/src/languageserver/handlers/schemaSelectionHandlers.d.ts +13 -0
- package/out/server/src/languageserver/handlers/schemaSelectionHandlers.js +76 -0
- package/out/server/src/languageserver/handlers/schemaSelectionHandlers.js.map +1 -0
- package/out/server/src/languageserver/handlers/settingsHandlers.d.ts +42 -0
- package/out/server/src/languageserver/handlers/settingsHandlers.js +320 -0
- package/out/server/src/languageserver/handlers/settingsHandlers.js.map +1 -0
- package/out/server/src/languageserver/handlers/validationHandlers.d.ts +15 -0
- package/out/server/src/languageserver/handlers/validationHandlers.js +112 -0
- package/out/server/src/languageserver/handlers/validationHandlers.js.map +1 -0
- package/out/server/src/languageserver/handlers/workspaceHandlers.d.ts +9 -0
- package/out/server/src/languageserver/handlers/workspaceHandlers.js +21 -0
- package/out/server/src/languageserver/handlers/workspaceHandlers.js.map +1 -0
- package/out/server/src/languageserver/telemetry.d.ts +9 -0
- package/out/server/src/languageserver/telemetry.js +24 -0
- package/out/server/src/languageserver/telemetry.js.map +1 -0
- package/out/server/src/languageservice/jsonASTTypes.d.ts +49 -0
- package/out/server/src/languageservice/jsonASTTypes.js +7 -0
- package/out/server/src/languageservice/jsonASTTypes.js.map +1 -0
- package/out/server/src/languageservice/jsonSchema.d.ts +103 -0
- package/out/server/src/languageservice/jsonSchema.js +15 -0
- package/out/server/src/languageservice/jsonSchema.js.map +1 -0
- package/out/server/src/languageservice/parser/ast-converter.d.ts +11 -0
- package/out/server/src/languageservice/parser/ast-converter.js +181 -0
- package/out/server/src/languageservice/parser/ast-converter.js.map +1 -0
- package/out/server/src/languageservice/parser/astNodeUtils.d.ts +4 -0
- package/out/server/src/languageservice/parser/astNodeUtils.js +54 -0
- package/out/server/src/languageservice/parser/astNodeUtils.js.map +1 -0
- package/out/server/src/languageservice/parser/custom-tag-provider.d.ts +7 -0
- package/out/server/src/languageservice/parser/custom-tag-provider.js +62 -0
- package/out/server/src/languageservice/parser/custom-tag-provider.js.map +1 -0
- package/out/server/src/languageservice/parser/isKubernetes.d.ts +4 -0
- package/out/server/src/languageservice/parser/isKubernetes.js +22 -0
- package/out/server/src/languageservice/parser/isKubernetes.js.map +1 -0
- package/out/server/src/languageservice/parser/jsonDocument.d.ts +83 -0
- package/out/server/src/languageservice/parser/jsonDocument.js +183 -0
- package/out/server/src/languageservice/parser/jsonDocument.js.map +1 -0
- package/out/server/src/languageservice/parser/scalar-type.d.ts +8 -0
- package/out/server/src/languageservice/parser/scalar-type.js +21 -0
- package/out/server/src/languageservice/parser/scalar-type.js.map +1 -0
- package/out/server/src/languageservice/parser/schemaValidation/baseValidator.d.ts +124 -0
- package/out/server/src/languageservice/parser/schemaValidation/baseValidator.js +1260 -0
- package/out/server/src/languageservice/parser/schemaValidation/baseValidator.js.map +1 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft04Validator.d.ts +17 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft04Validator.js +34 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft04Validator.js.map +1 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft07Validator.d.ts +15 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft07Validator.js +32 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft07Validator.js.map +1 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft2019Validator.d.ts +28 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft2019Validator.js +228 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft2019Validator.js.map +1 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft2020Validator.d.ts +17 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft2020Validator.js +130 -0
- package/out/server/src/languageservice/parser/schemaValidation/draft2020Validator.js.map +1 -0
- package/out/server/src/languageservice/parser/schemaValidation/validatorFactory.d.ts +3 -0
- package/out/server/src/languageservice/parser/schemaValidation/validatorFactory.js +28 -0
- package/out/server/src/languageservice/parser/schemaValidation/validatorFactory.js.map +1 -0
- package/out/server/src/languageservice/parser/yaml-documents.d.ts +71 -0
- package/out/server/src/languageservice/parser/yaml-documents.js +264 -0
- package/out/server/src/languageservice/parser/yaml-documents.js.map +1 -0
- package/out/server/src/languageservice/parser/yamlParser07.d.ts +15 -0
- package/out/server/src/languageservice/parser/yamlParser07.js +55 -0
- package/out/server/src/languageservice/parser/yamlParser07.js.map +1 -0
- package/out/server/src/languageservice/services/crdUtil.d.ts +23 -0
- package/out/server/src/languageservice/services/crdUtil.js +79 -0
- package/out/server/src/languageservice/services/crdUtil.js.map +1 -0
- package/out/server/src/languageservice/services/documentSymbols.d.ts +12 -0
- package/out/server/src/languageservice/services/documentSymbols.js +71 -0
- package/out/server/src/languageservice/services/documentSymbols.js.map +1 -0
- package/out/server/src/languageservice/services/modelineUtil.d.ts +9 -0
- package/out/server/src/languageservice/services/modelineUtil.js +34 -0
- package/out/server/src/languageservice/services/modelineUtil.js.map +1 -0
- package/out/server/src/languageservice/services/schemaRequestHandler.d.ts +12 -0
- package/out/server/src/languageservice/services/schemaRequestHandler.js +88 -0
- package/out/server/src/languageservice/services/schemaRequestHandler.js.map +1 -0
- package/out/server/src/languageservice/services/validation/map-key-order.d.ts +7 -0
- package/out/server/src/languageservice/services/validation/map-key-order.js +39 -0
- package/out/server/src/languageservice/services/validation/map-key-order.js.map +1 -0
- package/out/server/src/languageservice/services/validation/types.d.ts +6 -0
- package/out/server/src/languageservice/services/validation/types.js +7 -0
- package/out/server/src/languageservice/services/validation/types.js.map +1 -0
- package/out/server/src/languageservice/services/validation/unused-anchors.d.ts +8 -0
- package/out/server/src/languageservice/services/validation/unused-anchors.js +95 -0
- package/out/server/src/languageservice/services/validation/unused-anchors.js.map +1 -0
- package/out/server/src/languageservice/services/validation/yaml-style.d.ts +12 -0
- package/out/server/src/languageservice/services/validation/yaml-style.js +32 -0
- package/out/server/src/languageservice/services/validation/yaml-style.js.map +1 -0
- package/out/server/src/languageservice/services/yamlCodeActions.d.ts +25 -0
- package/out/server/src/languageservice/services/yamlCodeActions.js +346 -0
- package/out/server/src/languageservice/services/yamlCodeActions.js.map +1 -0
- package/out/server/src/languageservice/services/yamlCodeLens.d.ts +11 -0
- package/out/server/src/languageservice/services/yamlCodeLens.js +50 -0
- package/out/server/src/languageservice/services/yamlCodeLens.js.map +1 -0
- package/out/server/src/languageservice/services/yamlCommands.d.ts +3 -0
- package/out/server/src/languageservice/services/yamlCommands.js +50 -0
- package/out/server/src/languageservice/services/yamlCommands.js.map +1 -0
- package/out/server/src/languageservice/services/yamlCompletion.d.ts +77 -0
- package/out/server/src/languageservice/services/yamlCompletion.js +1505 -0
- package/out/server/src/languageservice/services/yamlCompletion.js.map +1 -0
- package/out/server/src/languageservice/services/yamlDefinition.d.ts +9 -0
- package/out/server/src/languageservice/services/yamlDefinition.js +41 -0
- package/out/server/src/languageservice/services/yamlDefinition.js.map +1 -0
- package/out/server/src/languageservice/services/yamlFolding.d.ts +4 -0
- package/out/server/src/languageservice/services/yamlFolding.js +66 -0
- package/out/server/src/languageservice/services/yamlFolding.js.map +1 -0
- package/out/server/src/languageservice/services/yamlFormatter.d.ts +8 -0
- package/out/server/src/languageservice/services/yamlFormatter.js +50 -0
- package/out/server/src/languageservice/services/yamlFormatter.js.map +1 -0
- package/out/server/src/languageservice/services/yamlHover.d.ts +47 -0
- package/out/server/src/languageservice/services/yamlHover.js +370 -0
- package/out/server/src/languageservice/services/yamlHover.js.map +1 -0
- package/out/server/src/languageservice/services/yamlLinks.d.ts +8 -0
- package/out/server/src/languageservice/services/yamlLinks.js +31 -0
- package/out/server/src/languageservice/services/yamlLinks.js.map +1 -0
- package/out/server/src/languageservice/services/yamlOnTypeFormatting.d.ts +4 -0
- package/out/server/src/languageservice/services/yamlOnTypeFormatting.js +47 -0
- package/out/server/src/languageservice/services/yamlOnTypeFormatting.js.map +1 -0
- package/out/server/src/languageservice/services/yamlRename.d.ts +18 -0
- package/out/server/src/languageservice/services/yamlRename.js +188 -0
- package/out/server/src/languageservice/services/yamlRename.js.map +1 -0
- package/out/server/src/languageservice/services/yamlSchemaService.d.ts +99 -0
- package/out/server/src/languageservice/services/yamlSchemaService.js +1114 -0
- package/out/server/src/languageservice/services/yamlSchemaService.js.map +1 -0
- package/out/server/src/languageservice/services/yamlSelectionRanges.d.ts +3 -0
- package/out/server/src/languageservice/services/yamlSelectionRanges.js +134 -0
- package/out/server/src/languageservice/services/yamlSelectionRanges.js.map +1 -0
- package/out/server/src/languageservice/services/yamlValidation.d.ts +26 -0
- package/out/server/src/languageservice/services/yamlValidation.js +140 -0
- package/out/server/src/languageservice/services/yamlValidation.js.map +1 -0
- package/out/server/src/languageservice/telemetry.d.ts +16 -0
- package/out/server/src/languageservice/telemetry.js +7 -0
- package/out/server/src/languageservice/telemetry.js.map +1 -0
- package/out/server/src/languageservice/utils/arrUtils.d.ts +6 -0
- package/out/server/src/languageservice/utils/arrUtils.js +89 -0
- package/out/server/src/languageservice/utils/arrUtils.js.map +1 -0
- package/out/server/src/languageservice/utils/block-string-rewriter.d.ts +8 -0
- package/out/server/src/languageservice/utils/block-string-rewriter.js +219 -0
- package/out/server/src/languageservice/utils/block-string-rewriter.js.map +1 -0
- package/out/server/src/languageservice/utils/charCode.d.ts +415 -0
- package/out/server/src/languageservice/utils/charCode.js +7 -0
- package/out/server/src/languageservice/utils/charCode.js.map +1 -0
- package/out/server/src/languageservice/utils/diagnostic-filter.d.ts +50 -0
- package/out/server/src/languageservice/utils/diagnostic-filter.js +88 -0
- package/out/server/src/languageservice/utils/diagnostic-filter.js.map +1 -0
- package/out/server/src/languageservice/utils/documentPositionCalculator.d.ts +5 -0
- package/out/server/src/languageservice/utils/documentPositionCalculator.js +63 -0
- package/out/server/src/languageservice/utils/documentPositionCalculator.js.map +1 -0
- package/out/server/src/languageservice/utils/filePatternAssociation.d.ts +8 -0
- package/out/server/src/languageservice/utils/filePatternAssociation.js +27 -0
- package/out/server/src/languageservice/utils/filePatternAssociation.js.map +1 -0
- package/out/server/src/languageservice/utils/flow-style-rewriter.d.ts +6 -0
- package/out/server/src/languageservice/utils/flow-style-rewriter.js +57 -0
- package/out/server/src/languageservice/utils/flow-style-rewriter.js.map +1 -0
- package/out/server/src/languageservice/utils/indentationGuesser.d.ts +15 -0
- package/out/server/src/languageservice/utils/indentationGuesser.js +180 -0
- package/out/server/src/languageservice/utils/indentationGuesser.js.map +1 -0
- package/out/server/src/languageservice/utils/json.d.ts +11 -0
- package/out/server/src/languageservice/utils/json.js +83 -0
- package/out/server/src/languageservice/utils/json.js.map +1 -0
- package/out/server/src/languageservice/utils/math.d.ts +1 -0
- package/out/server/src/languageservice/utils/math.js +13 -0
- package/out/server/src/languageservice/utils/math.js.map +1 -0
- package/out/server/src/languageservice/utils/objects.d.ts +16 -0
- package/out/server/src/languageservice/utils/objects.js +102 -0
- package/out/server/src/languageservice/utils/objects.js.map +1 -0
- package/out/server/src/languageservice/utils/parseUtils.d.ts +17 -0
- package/out/server/src/languageservice/utils/parseUtils.js +5 -0
- package/out/server/src/languageservice/utils/parseUtils.js.map +1 -0
- package/out/server/src/languageservice/utils/paths.d.ts +5 -0
- package/out/server/src/languageservice/utils/paths.js +48 -0
- package/out/server/src/languageservice/utils/paths.js.map +1 -0
- package/out/server/src/languageservice/utils/schemaUrls.d.ts +14 -0
- package/out/server/src/languageservice/utils/schemaUrls.js +64 -0
- package/out/server/src/languageservice/utils/schemaUrls.js.map +1 -0
- package/out/server/src/languageservice/utils/schemaUtils.d.ts +19 -0
- package/out/server/src/languageservice/utils/schemaUtils.js +70 -0
- package/out/server/src/languageservice/utils/schemaUtils.js.map +1 -0
- package/out/server/src/languageservice/utils/strings.d.ts +10 -0
- package/out/server/src/languageservice/utils/strings.js +89 -0
- package/out/server/src/languageservice/utils/strings.js.map +1 -0
- package/out/server/src/languageservice/utils/textBuffer.d.ts +12 -0
- package/out/server/src/languageservice/utils/textBuffer.js +49 -0
- package/out/server/src/languageservice/utils/textBuffer.js.map +1 -0
- package/out/server/src/languageservice/utils/yamlAstUtils.d.ts +13 -0
- package/out/server/src/languageservice/utils/yamlAstUtils.js +116 -0
- package/out/server/src/languageservice/utils/yamlAstUtils.js.map +1 -0
- package/out/server/src/languageservice/utils/yamlScalar.d.ts +1 -0
- package/out/server/src/languageservice/utils/yamlScalar.js +73 -0
- package/out/server/src/languageservice/utils/yamlScalar.js.map +1 -0
- package/out/server/src/languageservice/yamlLanguageService.d.ts +135 -0
- package/out/server/src/languageservice/yamlLanguageService.js +105 -0
- package/out/server/src/languageservice/yamlLanguageService.js.map +1 -0
- package/out/server/src/languageservice/yamlTypes.d.ts +18 -0
- package/out/server/src/languageservice/yamlTypes.js +7 -0
- package/out/server/src/languageservice/yamlTypes.js.map +1 -0
- package/out/server/src/nodeTranslationSetup.d.ts +9 -0
- package/out/server/src/nodeTranslationSetup.js +38 -0
- package/out/server/src/nodeTranslationSetup.js.map +1 -0
- package/out/server/src/requestTypes.d.ts +63 -0
- package/out/server/src/requestTypes.js +49 -0
- package/out/server/src/requestTypes.js.map +1 -0
- package/out/server/src/server.d.ts +1 -0
- package/out/server/src/server.js +57 -0
- package/out/server/src/server.js.map +1 -0
- package/out/server/src/webworker/yamlServerMain.d.ts +1 -0
- package/out/server/src/webworker/yamlServerMain.js +42 -0
- package/out/server/src/webworker/yamlServerMain.js.map +1 -0
- package/out/server/src/yamlServerInit.d.ts +23 -0
- package/out/server/src/yamlServerInit.js +127 -0
- package/out/server/src/yamlServerInit.js.map +1 -0
- package/out/server/src/yamlSettings.d.ts +112 -0
- package/out/server/src/yamlSettings.js +74 -0
- package/out/server/src/yamlSettings.js.map +1 -0
- package/out/server/test/arrUtils.test.d.ts +1 -0
- package/out/server/test/arrUtils.test.js +60 -0
- package/out/server/test/arrUtils.test.js.map +1 -0
- package/out/server/test/astUtils.test.d.ts +1 -0
- package/out/server/test/astUtils.test.js +79 -0
- package/out/server/test/astUtils.test.js.map +1 -0
- package/out/server/test/autoCompletion.test.d.ts +1 -0
- package/out/server/test/autoCompletion.test.js +2832 -0
- package/out/server/test/autoCompletion.test.js.map +1 -0
- package/out/server/test/autoCompletionFix.test.d.ts +1 -0
- package/out/server/test/autoCompletionFix.test.js +1591 -0
- package/out/server/test/autoCompletionFix.test.js.map +1 -0
- package/out/server/test/bundlel10n.test.d.ts +1 -0
- package/out/server/test/bundlel10n.test.js +73 -0
- package/out/server/test/bundlel10n.test.js.map +1 -0
- package/out/server/test/code-action-schema.test.d.ts +1 -0
- package/out/server/test/code-action-schema.test.js +89 -0
- package/out/server/test/code-action-schema.test.js.map +1 -0
- package/out/server/test/customTags.test.d.ts +1 -0
- package/out/server/test/customTags.test.js +88 -0
- package/out/server/test/customTags.test.js.map +1 -0
- package/out/server/test/defaultSnippets.test.d.ts +1 -0
- package/out/server/test/defaultSnippets.test.js +384 -0
- package/out/server/test/defaultSnippets.test.js.map +1 -0
- package/out/server/test/diagnostic-filter.test.d.ts +1 -0
- package/out/server/test/diagnostic-filter.test.js +161 -0
- package/out/server/test/diagnostic-filter.test.js.map +1 -0
- package/out/server/test/documentPositionCalculator.test.d.ts +1 -0
- package/out/server/test/documentPositionCalculator.test.js +69 -0
- package/out/server/test/documentPositionCalculator.test.js.map +1 -0
- package/out/server/test/documentSymbols.test.d.ts +1 -0
- package/out/server/test/documentSymbols.test.js +267 -0
- package/out/server/test/documentSymbols.test.js.map +1 -0
- package/out/server/test/findLinks.test.d.ts +1 -0
- package/out/server/test/findLinks.test.js +58 -0
- package/out/server/test/findLinks.test.js.map +1 -0
- package/out/server/test/flow-style-rewriter.test.d.ts +1 -0
- package/out/server/test/flow-style-rewriter.test.js +79 -0
- package/out/server/test/flow-style-rewriter.test.js.map +1 -0
- package/out/server/test/formatter.test.d.ts +1 -0
- package/out/server/test/formatter.test.js +170 -0
- package/out/server/test/formatter.test.js.map +1 -0
- package/out/server/test/hover.test.d.ts +1 -0
- package/out/server/test/hover.test.js +1056 -0
- package/out/server/test/hover.test.js.map +1 -0
- package/out/server/test/integration.test.d.ts +1 -0
- package/out/server/test/integration.test.js +293 -0
- package/out/server/test/integration.test.js.map +1 -0
- package/out/server/test/invalid-metaschema.test.d.ts +1 -0
- package/out/server/test/invalid-metaschema.test.js +43 -0
- package/out/server/test/invalid-metaschema.test.js.map +1 -0
- package/out/server/test/jsonParser.test.d.ts +1 -0
- package/out/server/test/jsonParser.test.js +1682 -0
- package/out/server/test/jsonParser.test.js.map +1 -0
- package/out/server/test/multipleDocuments.test.d.ts +1 -0
- package/out/server/test/multipleDocuments.test.js +117 -0
- package/out/server/test/multipleDocuments.test.js.map +1 -0
- package/out/server/test/objects.test.d.ts +1 -0
- package/out/server/test/objects.test.js +110 -0
- package/out/server/test/objects.test.js.map +1 -0
- package/out/server/test/paths.test.d.ts +1 -0
- package/out/server/test/paths.test.js +223 -0
- package/out/server/test/paths.test.js.map +1 -0
- package/out/server/test/scalaruri.test.d.ts +1 -0
- package/out/server/test/scalaruri.test.js +363 -0
- package/out/server/test/scalaruri.test.js.map +1 -0
- package/out/server/test/schema.test.d.ts +1 -0
- package/out/server/test/schema.test.js +952 -0
- package/out/server/test/schema.test.js.map +1 -0
- package/out/server/test/schema2019Validation.test.d.ts +1 -0
- package/out/server/test/schema2019Validation.test.js +3630 -0
- package/out/server/test/schema2019Validation.test.js.map +1 -0
- package/out/server/test/schema2020Validation.test.d.ts +1 -0
- package/out/server/test/schema2020Validation.test.js +2037 -0
- package/out/server/test/schema2020Validation.test.js.map +1 -0
- package/out/server/test/schemaRequestHandler.test.d.ts +1 -0
- package/out/server/test/schemaRequestHandler.test.js +48 -0
- package/out/server/test/schemaRequestHandler.test.js.map +1 -0
- package/out/server/test/schemaSelectionHandlers.test.d.ts +1 -0
- package/out/server/test/schemaSelectionHandlers.test.js +99 -0
- package/out/server/test/schemaSelectionHandlers.test.js.map +1 -0
- package/out/server/test/schemaValidation.test.d.ts +1 -0
- package/out/server/test/schemaValidation.test.js +2269 -0
- package/out/server/test/schemaValidation.test.js.map +1 -0
- package/out/server/test/settingsHandlers.test.d.ts +1 -0
- package/out/server/test/settingsHandlers.test.js +299 -0
- package/out/server/test/settingsHandlers.test.js.map +1 -0
- package/out/server/test/strings.test.d.ts +1 -0
- package/out/server/test/strings.test.js +92 -0
- package/out/server/test/strings.test.js.map +1 -0
- package/out/server/test/telemetry.test.d.ts +1 -0
- package/out/server/test/telemetry.test.js +36 -0
- package/out/server/test/telemetry.test.js.map +1 -0
- package/out/server/test/textBuffer.test.d.ts +1 -0
- package/out/server/test/textBuffer.test.js +41 -0
- package/out/server/test/textBuffer.test.js.map +1 -0
- package/out/server/test/utils/errorMessages.d.ts +27 -0
- package/out/server/test/utils/errorMessages.js +38 -0
- package/out/server/test/utils/errorMessages.js.map +1 -0
- package/out/server/test/utils/serviceSetup.d.ts +17 -0
- package/out/server/test/utils/serviceSetup.js +74 -0
- package/out/server/test/utils/serviceSetup.js.map +1 -0
- package/out/server/test/utils/testHelper.d.ts +78 -0
- package/out/server/test/utils/testHelper.js +202 -0
- package/out/server/test/utils/testHelper.js.map +1 -0
- package/out/server/test/utils/testsTypes.d.ts +29 -0
- package/out/server/test/utils/testsTypes.js +61 -0
- package/out/server/test/utils/testsTypes.js.map +1 -0
- package/out/server/test/utils/verifyError.d.ts +8 -0
- package/out/server/test/utils/verifyError.js +82 -0
- package/out/server/test/utils/verifyError.js.map +1 -0
- package/out/server/test/yaml-documents.test.d.ts +1 -0
- package/out/server/test/yaml-documents.test.js +198 -0
- package/out/server/test/yaml-documents.test.js.map +1 -0
- package/out/server/test/yamlCodeActions.test.d.ts +1 -0
- package/out/server/test/yamlCodeActions.test.js +864 -0
- package/out/server/test/yamlCodeActions.test.js.map +1 -0
- package/out/server/test/yamlCodeLens.test.d.ts +1 -0
- package/out/server/test/yamlCodeLens.test.js +165 -0
- package/out/server/test/yamlCodeLens.test.js.map +1 -0
- package/out/server/test/yamlCommands.test.d.ts +1 -0
- package/out/server/test/yamlCommands.test.js +89 -0
- package/out/server/test/yamlCommands.test.js.map +1 -0
- package/out/server/test/yamlDefinition.test.d.ts +1 -0
- package/out/server/test/yamlDefinition.test.js +30 -0
- package/out/server/test/yamlDefinition.test.js.map +1 -0
- package/out/server/test/yamlFolding.test.d.ts +1 -0
- package/out/server/test/yamlFolding.test.js +142 -0
- package/out/server/test/yamlFolding.test.js.map +1 -0
- package/out/server/test/yamlLanguageService.test.d.ts +1 -0
- package/out/server/test/yamlLanguageService.test.js +90 -0
- package/out/server/test/yamlLanguageService.test.js.map +1 -0
- package/out/server/test/yamlOnTypeFormatting.test.d.ts +1 -0
- package/out/server/test/yamlOnTypeFormatting.test.js +69 -0
- package/out/server/test/yamlOnTypeFormatting.test.js.map +1 -0
- package/out/server/test/yamlParser.test.d.ts +1 -0
- package/out/server/test/yamlParser.test.js +242 -0
- package/out/server/test/yamlParser.test.js.map +1 -0
- package/out/server/test/yamlRename.test.d.ts +1 -0
- package/out/server/test/yamlRename.test.js +106 -0
- package/out/server/test/yamlRename.test.js.map +1 -0
- package/out/server/test/yamlSchema.test.d.ts +1 -0
- package/out/server/test/yamlSchema.test.js +62 -0
- package/out/server/test/yamlSchema.test.js.map +1 -0
- package/out/server/test/yamlSchemaService.test.d.ts +1 -0
- package/out/server/test/yamlSchemaService.test.js +403 -0
- package/out/server/test/yamlSchemaService.test.js.map +1 -0
- package/out/server/test/yamlSelectionRanges.test.d.ts +1 -0
- package/out/server/test/yamlSelectionRanges.test.js +248 -0
- package/out/server/test/yamlSelectionRanges.test.js.map +1 -0
- package/out/server/test/yamlValidation.test.d.ts +1 -0
- package/out/server/test/yamlValidation.test.js +303 -0
- package/out/server/test/yamlValidation.test.js.map +1 -0
- package/package.json +106 -0
- package/scripts/check-dependencies.js +21 -0
- package/tsconfig.esm.json +15 -0
- package/tsconfig.umd.json +14 -0
|
@@ -0,0 +1,1110 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Red Hat, Inc. All rights reserved.
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
import { SchemaDialect } from '../jsonSchema';
|
|
7
|
+
import { SchemaPriority } from '../yamlLanguageService';
|
|
8
|
+
import { UnresolvedSchema, ResolvedSchema, JSONSchemaService, } from 'vscode-json-languageservice/lib/umd/services/jsonSchemaService';
|
|
9
|
+
import { URI } from 'vscode-uri';
|
|
10
|
+
import * as l10n from '@vscode/l10n';
|
|
11
|
+
import * as path from 'path';
|
|
12
|
+
import { getSchemaFromModeline } from './modelineUtil';
|
|
13
|
+
import { parse } from 'yaml';
|
|
14
|
+
import * as Json from 'jsonc-parser';
|
|
15
|
+
import Ajv from 'ajv';
|
|
16
|
+
import Ajv4 from 'ajv-draft-04';
|
|
17
|
+
import Ajv2019 from 'ajv/dist/2019';
|
|
18
|
+
import Ajv2020 from 'ajv/dist/2020';
|
|
19
|
+
import { autoDetectKubernetesSchemaFromDocument } from './crdUtil';
|
|
20
|
+
import { CRD_CATALOG_URL, KUBERNETES_SCHEMA_URL } from '../utils/schemaUrls';
|
|
21
|
+
const ajv4 = new Ajv4({ allErrors: true });
|
|
22
|
+
const ajv7 = new Ajv({ allErrors: true });
|
|
23
|
+
const ajv2019 = new Ajv2019({ allErrors: true });
|
|
24
|
+
const ajv2020 = new Ajv2020({ allErrors: true });
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
26
|
+
const jsonSchema04 = require('ajv-draft-04/dist/refs/json-schema-draft-04.json');
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
28
|
+
const jsonSchema07 = require('ajv/dist/refs/json-schema-draft-07.json');
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
30
|
+
const jsonSchema2019 = require('ajv/dist/refs/json-schema-2019-09/schema.json');
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
32
|
+
const jsonSchema2020 = require('ajv/dist/refs/json-schema-2020-12/schema.json');
|
|
33
|
+
const schema04Validator = ajv4.compile(jsonSchema04);
|
|
34
|
+
const schema07Validator = ajv7.compile(jsonSchema07);
|
|
35
|
+
const schema2019Validator = ajv2019.compile(jsonSchema2019);
|
|
36
|
+
const schema2020Validator = ajv2020.compile(jsonSchema2020);
|
|
37
|
+
const schemaDialectCache = new Map();
|
|
38
|
+
const schemaDialectInFlight = new Map();
|
|
39
|
+
// metadata/keywords that don't add constraints and thus don't count as $ref siblings
|
|
40
|
+
const REF_SIBLING_NONCONSTRAINT_KEYS = new Set([
|
|
41
|
+
'$ref',
|
|
42
|
+
'_$ref',
|
|
43
|
+
'$schema',
|
|
44
|
+
'$id',
|
|
45
|
+
'id',
|
|
46
|
+
'_baseUrl',
|
|
47
|
+
'_dialect',
|
|
48
|
+
'$anchor',
|
|
49
|
+
'$dynamicAnchor',
|
|
50
|
+
'$dynamicRef',
|
|
51
|
+
'$recursiveAnchor',
|
|
52
|
+
'$recursiveRef',
|
|
53
|
+
'definitions',
|
|
54
|
+
'$defs',
|
|
55
|
+
'$comment',
|
|
56
|
+
'title',
|
|
57
|
+
'description',
|
|
58
|
+
'$vocabulary',
|
|
59
|
+
'examples',
|
|
60
|
+
'default',
|
|
61
|
+
'url',
|
|
62
|
+
'closestTitle',
|
|
63
|
+
'unevaluatedProperties',
|
|
64
|
+
'unevaluatedItems',
|
|
65
|
+
]);
|
|
66
|
+
export var MODIFICATION_ACTIONS;
|
|
67
|
+
(function (MODIFICATION_ACTIONS) {
|
|
68
|
+
MODIFICATION_ACTIONS[MODIFICATION_ACTIONS["delete"] = 0] = "delete";
|
|
69
|
+
MODIFICATION_ACTIONS[MODIFICATION_ACTIONS["add"] = 1] = "add";
|
|
70
|
+
MODIFICATION_ACTIONS[MODIFICATION_ACTIONS["deleteAll"] = 2] = "deleteAll";
|
|
71
|
+
})(MODIFICATION_ACTIONS || (MODIFICATION_ACTIONS = {}));
|
|
72
|
+
export class YAMLSchemaService extends JSONSchemaService {
|
|
73
|
+
constructor(requestService, contextService, promiseConstructor, yamlSettings) {
|
|
74
|
+
super(requestService, contextService, promiseConstructor);
|
|
75
|
+
this.schemaUriToNameAndDescription = new Map();
|
|
76
|
+
this.customSchemaProvider = undefined;
|
|
77
|
+
this.requestService = requestService;
|
|
78
|
+
this.schemaPriorityMapping = new Map();
|
|
79
|
+
this.yamlSettings = yamlSettings;
|
|
80
|
+
}
|
|
81
|
+
registerCustomSchemaProvider(customSchemaProvider) {
|
|
82
|
+
this.customSchemaProvider = customSchemaProvider;
|
|
83
|
+
}
|
|
84
|
+
getAllSchemas() {
|
|
85
|
+
const result = [];
|
|
86
|
+
const schemaUris = new Set();
|
|
87
|
+
for (const filePattern of this.filePatternAssociations) {
|
|
88
|
+
const schemaUri = filePattern.uris[0];
|
|
89
|
+
if (schemaUris.has(schemaUri)) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
schemaUris.add(schemaUri);
|
|
93
|
+
const schemaHandle = {
|
|
94
|
+
uri: schemaUri,
|
|
95
|
+
fromStore: false,
|
|
96
|
+
usedForCurrentFile: false,
|
|
97
|
+
};
|
|
98
|
+
if (this.schemaUriToNameAndDescription.has(schemaUri)) {
|
|
99
|
+
const { name, description, versions } = this.schemaUriToNameAndDescription.get(schemaUri);
|
|
100
|
+
schemaHandle.name = name;
|
|
101
|
+
schemaHandle.description = description;
|
|
102
|
+
schemaHandle.fromStore = true;
|
|
103
|
+
schemaHandle.versions = versions;
|
|
104
|
+
}
|
|
105
|
+
result.push(schemaHandle);
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
collectSchemaNodes(push, ...values) {
|
|
110
|
+
const collect = (value) => {
|
|
111
|
+
if (!value || typeof value !== 'object')
|
|
112
|
+
return;
|
|
113
|
+
if (Array.isArray(value)) {
|
|
114
|
+
for (const entry of value) {
|
|
115
|
+
collect(entry);
|
|
116
|
+
}
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
push(value);
|
|
120
|
+
};
|
|
121
|
+
for (const value of values) {
|
|
122
|
+
collect(value);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
schemaMapValues(map) {
|
|
126
|
+
if (!map || typeof map !== 'object')
|
|
127
|
+
return undefined;
|
|
128
|
+
return Object.values(map);
|
|
129
|
+
}
|
|
130
|
+
async resolveSchemaContent(schemaToResolve, schemaURL, dependencies) {
|
|
131
|
+
const resolveErrors = schemaToResolve.errors.slice(0);
|
|
132
|
+
const loc = toDisplayString(schemaURL);
|
|
133
|
+
const raw = schemaToResolve.schema;
|
|
134
|
+
if (raw === null || Array.isArray(raw) || (typeof raw !== 'object' && typeof raw !== 'boolean')) {
|
|
135
|
+
const got = raw === null ? 'null' : Array.isArray(raw) ? 'array' : typeof raw;
|
|
136
|
+
resolveErrors.push(l10n.t("Schema '{0}' is not valid: {1}", loc, `expected a JSON Schema object or boolean, got "${got}".`));
|
|
137
|
+
return new ResolvedSchema({}, resolveErrors);
|
|
138
|
+
}
|
|
139
|
+
const _cloneSchema = (value, seen, stopCondition) => {
|
|
140
|
+
// primitives and null
|
|
141
|
+
if (value === null || typeof value !== 'object')
|
|
142
|
+
return value;
|
|
143
|
+
if (stopCondition) {
|
|
144
|
+
const replacement = stopCondition(value, seen.size);
|
|
145
|
+
if (replacement !== undefined)
|
|
146
|
+
return replacement;
|
|
147
|
+
}
|
|
148
|
+
// already cloned
|
|
149
|
+
if (seen.has(value))
|
|
150
|
+
return seen.get(value);
|
|
151
|
+
// clone arrays
|
|
152
|
+
if (Array.isArray(value)) {
|
|
153
|
+
const arr = [];
|
|
154
|
+
seen.set(value, arr);
|
|
155
|
+
for (const item of value) {
|
|
156
|
+
arr.push(_cloneSchema(item, seen, stopCondition));
|
|
157
|
+
}
|
|
158
|
+
return arr;
|
|
159
|
+
}
|
|
160
|
+
// clone objects
|
|
161
|
+
const result = {};
|
|
162
|
+
seen.set(value, result);
|
|
163
|
+
for (const prop in value) {
|
|
164
|
+
result[prop] = _cloneSchema(value[prop], seen, stopCondition);
|
|
165
|
+
}
|
|
166
|
+
return result;
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* ----------------------------
|
|
170
|
+
* Meta-validate a schema node against its dialect's meta-schema
|
|
171
|
+
* ----------------------------
|
|
172
|
+
*/
|
|
173
|
+
const _loadSchema = this.loadSchema.bind(this);
|
|
174
|
+
async function _metaValidateSchemaNode(node, hasNestedSchema) {
|
|
175
|
+
if (!node || typeof node !== 'object')
|
|
176
|
+
return;
|
|
177
|
+
const dialect = await pickSchemaDialect(node.$schema, _loadSchema);
|
|
178
|
+
dialect && (node._dialect = dialect);
|
|
179
|
+
const validator = pickMetaValidator(dialect);
|
|
180
|
+
if (!validator)
|
|
181
|
+
return;
|
|
182
|
+
let toValidate = node;
|
|
183
|
+
if (hasNestedSchema) {
|
|
184
|
+
// clone for meta-validation: stop at dialect boundaries abd replace with {}
|
|
185
|
+
const stopAtDialectBoundary = (val, seenSize) => {
|
|
186
|
+
if (seenSize !== 0 && val && typeof val === 'object' && val.$schema)
|
|
187
|
+
return {};
|
|
188
|
+
return undefined;
|
|
189
|
+
};
|
|
190
|
+
toValidate = _cloneSchema(node, new Map(), stopAtDialectBoundary);
|
|
191
|
+
}
|
|
192
|
+
if (!validator(toValidate)) {
|
|
193
|
+
const errs = [];
|
|
194
|
+
for (const err of validator.errors) {
|
|
195
|
+
errs.push(`${err.instancePath} : ${err.message}`);
|
|
196
|
+
}
|
|
197
|
+
resolveErrors.push(l10n.t("Schema '{0}' is not valid: {1}", loc, `\n${errs.join('\n')}`));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
const resourceIndexByUri = new Map();
|
|
201
|
+
const _getResourceIndex = (resourceUri) => {
|
|
202
|
+
let entry = resourceIndexByUri.get(resourceUri);
|
|
203
|
+
if (!entry) {
|
|
204
|
+
entry = { fragments: new Map() };
|
|
205
|
+
resourceIndexByUri.set(resourceUri, entry);
|
|
206
|
+
}
|
|
207
|
+
return entry;
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* Adds a resource's dynamic anchors to the inherited scope from parent resources
|
|
211
|
+
*
|
|
212
|
+
* Draft 2020-12: For $dynamicRef resolution, when schema A references schema B,
|
|
213
|
+
* B's dynamic anchors are added to A's scope. This builds a chain where $dynamicRef
|
|
214
|
+
* looks for the outermost (first) matching anchor.
|
|
215
|
+
*/
|
|
216
|
+
const _addResourceDynamicAnchors = (scope, resourceUri) => {
|
|
217
|
+
const entry = resourceIndexByUri.get(resourceUri);
|
|
218
|
+
if (!entry || entry.fragments.size === 0)
|
|
219
|
+
return scope;
|
|
220
|
+
let result = scope;
|
|
221
|
+
for (const [name, entryItem] of entry.fragments) {
|
|
222
|
+
if (!entryItem.dynamic)
|
|
223
|
+
continue;
|
|
224
|
+
const current = result?.get(name) ?? [];
|
|
225
|
+
if (current.some((existing) => existing._baseUrl === resourceUri))
|
|
226
|
+
continue;
|
|
227
|
+
// clone map on first modification
|
|
228
|
+
if (result === scope)
|
|
229
|
+
result = scope ? new Map(scope) : new Map();
|
|
230
|
+
result.set(name, current.concat(entryItem.node));
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
};
|
|
234
|
+
// resolve relative URI against base URI
|
|
235
|
+
// e.g. resolve "./foo.json" against "http://example.com/bar.json" => "http://example.com/foo.json"
|
|
236
|
+
const _resolveAgainstBase = (baseUri, ref) => {
|
|
237
|
+
if (this.contextService)
|
|
238
|
+
return this.contextService.resolveRelativePath(ref, baseUri);
|
|
239
|
+
return this.normalizeId(ref);
|
|
240
|
+
};
|
|
241
|
+
const _preferLocalBaseForRemoteId = async (currentBase, id) => {
|
|
242
|
+
try {
|
|
243
|
+
const currentBaseUri = URI.parse(currentBase);
|
|
244
|
+
const idUri = URI.parse(id);
|
|
245
|
+
const localFileName = path.posix.basename(idUri.path);
|
|
246
|
+
const localDir = path.posix.dirname(currentBaseUri.path);
|
|
247
|
+
const localPath = path.posix.join(localDir, localFileName);
|
|
248
|
+
const localUriStr = currentBaseUri.with({ path: localPath, query: idUri.query, fragment: idUri.fragment }).toString();
|
|
249
|
+
if (localUriStr === currentBase)
|
|
250
|
+
return localUriStr;
|
|
251
|
+
const content = await this.requestService(localUriStr);
|
|
252
|
+
return content ? localUriStr : _resolveAgainstBase(currentBase, id);
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
return _resolveAgainstBase(currentBase, id);
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
const _indexSchemaResources = async (root, initialBaseUri) => {
|
|
259
|
+
const preOrderStack = [{ node: root, baseUri: initialBaseUri }];
|
|
260
|
+
const postOrderStack = [];
|
|
261
|
+
const childListByNode = new WeakMap();
|
|
262
|
+
const seen = new Set();
|
|
263
|
+
while (preOrderStack.length) {
|
|
264
|
+
const current = preOrderStack.pop();
|
|
265
|
+
if (!current)
|
|
266
|
+
continue;
|
|
267
|
+
const node = current.node;
|
|
268
|
+
if (!node || typeof node !== 'object' || seen.has(node))
|
|
269
|
+
continue;
|
|
270
|
+
seen.add(node);
|
|
271
|
+
let baseUri = current.baseUri;
|
|
272
|
+
const id = node.$id || node.id;
|
|
273
|
+
if (id) {
|
|
274
|
+
const preferredBaseUri = await _preferLocalBaseForRemoteId(baseUri, id);
|
|
275
|
+
node._baseUrl = preferredBaseUri;
|
|
276
|
+
const hashIndex = preferredBaseUri.indexOf('#');
|
|
277
|
+
if (hashIndex !== -1 && hashIndex < preferredBaseUri.length - 1) {
|
|
278
|
+
// Draft-07 and earlier: $id with fragment defines a plain-name anchor scoped to the resolved base
|
|
279
|
+
const frag = preferredBaseUri.slice(hashIndex + 1);
|
|
280
|
+
_getResourceIndex(baseUri).fragments.set(frag, { node });
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
// $id without fragment creates a new embedded resource scope
|
|
284
|
+
baseUri = preferredBaseUri;
|
|
285
|
+
const entry = _getResourceIndex(preferredBaseUri);
|
|
286
|
+
if (!entry.root) {
|
|
287
|
+
entry.root = node;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Draft 2019-09+: $anchor keyword
|
|
292
|
+
if (node.$anchor) {
|
|
293
|
+
_getResourceIndex(baseUri).fragments.set(node.$anchor, { node });
|
|
294
|
+
}
|
|
295
|
+
// Draft 2020-12+: $dynamicAnchor keyword
|
|
296
|
+
if (node.$dynamicAnchor) {
|
|
297
|
+
node._baseUrl = baseUri;
|
|
298
|
+
_getResourceIndex(baseUri).fragments.set(node.$dynamicAnchor, { node, dynamic: true });
|
|
299
|
+
}
|
|
300
|
+
const children = [];
|
|
301
|
+
childListByNode.set(node, children);
|
|
302
|
+
// collect all child schemas
|
|
303
|
+
this.collectSchemaNodes((entry) => {
|
|
304
|
+
children.push(entry);
|
|
305
|
+
preOrderStack.push({ node: entry, baseUri });
|
|
306
|
+
}, node.not, node.if, node.then, node.else, node.contains, node.propertyNames, node.additionalProperties, node.items, node.additionalItems, node.prefixItems, this.schemaMapValues(node.properties), this.schemaMapValues(node.patternProperties), this.schemaMapValues(node.definitions), this.schemaMapValues(node.$defs), this.schemaMapValues(node.dependentSchemas), this.schemaMapValues(node.dependencies), node.allOf, node.anyOf, node.oneOf, node.schemaSequence);
|
|
307
|
+
postOrderStack.push(node);
|
|
308
|
+
}
|
|
309
|
+
const hasNestedSchema = new WeakMap();
|
|
310
|
+
while (postOrderStack.length) {
|
|
311
|
+
const node = postOrderStack.pop();
|
|
312
|
+
let hasNested = false;
|
|
313
|
+
for (const child of childListByNode.get(node)) {
|
|
314
|
+
if (child.$schema || hasNestedSchema.get(child)) {
|
|
315
|
+
hasNested = true;
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
hasNestedSchema.set(node, hasNested);
|
|
320
|
+
if (node === root || node.$schema)
|
|
321
|
+
await _metaValidateSchemaNode(node, hasNested);
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
let schema = raw;
|
|
325
|
+
const schemaBaseURL = schemaToResolve.uri ?? schemaURL;
|
|
326
|
+
await _indexSchemaResources(schema, schemaBaseURL);
|
|
327
|
+
const _findSection = (schemaRoot, refPath, sourceURI) => {
|
|
328
|
+
if (!refPath) {
|
|
329
|
+
return schemaRoot;
|
|
330
|
+
}
|
|
331
|
+
// JSON pointer style
|
|
332
|
+
if (refPath[0] === '/') {
|
|
333
|
+
let current = schemaRoot;
|
|
334
|
+
const parts = refPath.substr(1).split('/');
|
|
335
|
+
for (const part of parts) {
|
|
336
|
+
// in JSON Pointer: ~ must be escaped as ~0, / must be escaped as ~1
|
|
337
|
+
current = current?.[part.replace(/~1/g, '/').replace(/~0/g, '~')];
|
|
338
|
+
if (current === null)
|
|
339
|
+
return undefined;
|
|
340
|
+
}
|
|
341
|
+
return current;
|
|
342
|
+
}
|
|
343
|
+
// plain-name fragment ($anchor or $id#fragment) -> lookup in collected fragments
|
|
344
|
+
return _getResourceIndex(sourceURI).fragments.get(refPath).node;
|
|
345
|
+
};
|
|
346
|
+
const _merge = (target, sourceRoot, sourceURI, refPath, clone = false) => {
|
|
347
|
+
const section = _findSection(sourceRoot, refPath, sourceURI);
|
|
348
|
+
if (typeof section === 'boolean') {
|
|
349
|
+
if (!section)
|
|
350
|
+
target.not = {};
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
if (typeof section === 'object' && section) {
|
|
354
|
+
const source = clone ? _cloneSchema(section, new Map()) : section;
|
|
355
|
+
for (const key in source) {
|
|
356
|
+
if (Object.prototype.hasOwnProperty.call(source, key) && !Object.prototype.hasOwnProperty.call(target, key)) {
|
|
357
|
+
target[key] = source[key];
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
resolveErrors.push(l10n.t("$ref '{0}' in '{1}' cannot be resolved.", refPath, sourceURI));
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
const _resolveRefUri = (parentSchemaURL, refUri) => {
|
|
367
|
+
const resolvedAgainstParent = _resolveAgainstBase(parentSchemaURL, refUri);
|
|
368
|
+
if (!refUri.startsWith('/'))
|
|
369
|
+
return resolvedAgainstParent;
|
|
370
|
+
const parentResource = resourceIndexByUri.get(parentSchemaURL)?.root;
|
|
371
|
+
const parentResourceId = parentResource?.$id || parentResource?.id;
|
|
372
|
+
const resolvedParentId = _resolveAgainstBase(parentSchemaURL, parentResourceId);
|
|
373
|
+
if (!resolvedParentId.startsWith('http://') && !resolvedParentId.startsWith('https://'))
|
|
374
|
+
return resolvedAgainstParent;
|
|
375
|
+
return _resolveAgainstBase(resolvedParentId, refUri);
|
|
376
|
+
};
|
|
377
|
+
const _resolveLocalSiblingFromRemoteUri = (parentSchemaURL, resolvedRefUri) => {
|
|
378
|
+
try {
|
|
379
|
+
const parentUri = URI.parse(parentSchemaURL);
|
|
380
|
+
const targetUri = URI.parse(resolvedRefUri);
|
|
381
|
+
if (parentUri.scheme !== 'file')
|
|
382
|
+
return undefined;
|
|
383
|
+
if (targetUri.scheme !== 'http' && targetUri.scheme !== 'https')
|
|
384
|
+
return undefined;
|
|
385
|
+
const localFileName = path.posix.basename(targetUri.path);
|
|
386
|
+
if (!localFileName)
|
|
387
|
+
return undefined;
|
|
388
|
+
const localDir = path.posix.dirname(parentUri.path);
|
|
389
|
+
const localPath = path.posix.join(localDir, localFileName);
|
|
390
|
+
return parentUri.with({ path: localPath, query: targetUri.query, fragment: targetUri.fragment }).toString();
|
|
391
|
+
}
|
|
392
|
+
catch {
|
|
393
|
+
return undefined;
|
|
394
|
+
}
|
|
395
|
+
};
|
|
396
|
+
const resolveExternalLink = (node, uri, linkPath, parentSchemaURL, parentSchemaDependencies, resolutionStack, recursiveAnchorBase, inheritedDynamicScope
|
|
397
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
398
|
+
) => {
|
|
399
|
+
const _attachResolvedSchema = (node, schemaRoot, schemaUri, linkPath, parentSchemaDependencies, resolveRefDependencies, resolutionStack, recursiveAnchorBase, inheritedDynamicScope
|
|
400
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
401
|
+
) => {
|
|
402
|
+
parentSchemaDependencies[schemaUri] = true;
|
|
403
|
+
_merge(node, schemaRoot, schemaUri, linkPath, !!inheritedDynamicScope || !!recursiveAnchorBase);
|
|
404
|
+
if (!recursiveAnchorBase || !node._baseUrl)
|
|
405
|
+
node._baseUrl = schemaUri;
|
|
406
|
+
node.url = schemaUri;
|
|
407
|
+
const nextStack = new Set(resolutionStack);
|
|
408
|
+
nextStack.add(schemaUri);
|
|
409
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
410
|
+
return resolveRefs(node, schemaRoot, schemaUri, resolveRefDependencies, nextStack, recursiveAnchorBase, inheritedDynamicScope);
|
|
411
|
+
};
|
|
412
|
+
const _resolveByUri = (targetUris, index = 0) => {
|
|
413
|
+
const targetUri = targetUris[index];
|
|
414
|
+
const embeddedSchema = resourceIndexByUri.get(targetUri)?.root;
|
|
415
|
+
if (embeddedSchema) {
|
|
416
|
+
return _attachResolvedSchema(node, embeddedSchema, targetUri, linkPath, parentSchemaDependencies, parentSchemaDependencies, resolutionStack, recursiveAnchorBase, inheritedDynamicScope);
|
|
417
|
+
}
|
|
418
|
+
const referencedHandle = this.getOrAddSchemaHandle(targetUri);
|
|
419
|
+
return referencedHandle.getUnresolvedSchema().then(async (unresolvedSchema) => {
|
|
420
|
+
if (unresolvedSchema.errors?.some((error) => error.toLowerCase().includes('unable to load schema from')) &&
|
|
421
|
+
index + 1 < targetUris.length) {
|
|
422
|
+
return _resolveByUri(targetUris, index + 1);
|
|
423
|
+
}
|
|
424
|
+
if (unresolvedSchema.errors.length) {
|
|
425
|
+
const loc = linkPath ? targetUri + '#' + linkPath : targetUri;
|
|
426
|
+
resolveErrors.push(l10n.t("Problems loading reference '{0}': {1}", loc, unresolvedSchema.errors[0]));
|
|
427
|
+
}
|
|
428
|
+
// index resources for the newly loaded schema
|
|
429
|
+
await _indexSchemaResources(unresolvedSchema.schema, targetUri);
|
|
430
|
+
return _attachResolvedSchema(node, unresolvedSchema.schema, targetUri, linkPath, parentSchemaDependencies, referencedHandle.dependencies, resolutionStack, recursiveAnchorBase, inheritedDynamicScope);
|
|
431
|
+
});
|
|
432
|
+
};
|
|
433
|
+
const resolvedUri = _resolveRefUri(parentSchemaURL, uri);
|
|
434
|
+
const localSiblingUri = _resolveLocalSiblingFromRemoteUri(parentSchemaURL, resolvedUri);
|
|
435
|
+
const targetUris = localSiblingUri && localSiblingUri !== resolvedUri ? [localSiblingUri, resolvedUri] : [resolvedUri];
|
|
436
|
+
return _resolveByUri(targetUris);
|
|
437
|
+
};
|
|
438
|
+
const resolveRefs = async (node, parentSchema, parentSchemaURL, parentSchemaDependencies, resolutionStack, recursiveAnchorBase, inheritedDynamicScope
|
|
439
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
440
|
+
) => {
|
|
441
|
+
if (!node || typeof node !== 'object') {
|
|
442
|
+
return null;
|
|
443
|
+
}
|
|
444
|
+
const toWalk = [{ node, baseURL: parentSchemaURL, recursiveAnchorBase, inheritedDynamicScope }];
|
|
445
|
+
const seen = new WeakSet(); // prevents re-walking the same schema object graph
|
|
446
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
447
|
+
const openPromises = [];
|
|
448
|
+
// handle $ref with siblings based on dialect
|
|
449
|
+
const _handleRef = (next, nodeBaseURL, nodeDialect, recursiveAnchorBase, inheritedDynamicScope, siblingRefCycleKeys) => {
|
|
450
|
+
const currentDynamicScope = _addResourceDynamicAnchors(inheritedDynamicScope, nodeBaseURL);
|
|
451
|
+
this.collectSchemaNodes((entry) => toWalk.push({ node: entry, baseURL: nodeBaseURL, recursiveAnchorBase, inheritedDynamicScope: currentDynamicScope }), this.schemaMapValues(next.definitions || next.$defs));
|
|
452
|
+
// checks if a node with $ref has other constraint keywords
|
|
453
|
+
const _hasRefSiblings = (node) => {
|
|
454
|
+
for (const k of Object.keys(node)) {
|
|
455
|
+
if (REF_SIBLING_NONCONSTRAINT_KEYS.has(k))
|
|
456
|
+
continue;
|
|
457
|
+
return true;
|
|
458
|
+
}
|
|
459
|
+
return false;
|
|
460
|
+
};
|
|
461
|
+
/**
|
|
462
|
+
* For Draft-2019+:
|
|
463
|
+
* { $ref: "...", <siblings...> }
|
|
464
|
+
* becomes
|
|
465
|
+
* { allOf: [ { $ref: "..." }, <siblings...> ] }
|
|
466
|
+
*/
|
|
467
|
+
const _rewriteRefWithSiblingsToAllOf = (node) => {
|
|
468
|
+
const siblings = {};
|
|
469
|
+
for (const k of Object.keys(node)) {
|
|
470
|
+
if (!REF_SIBLING_NONCONSTRAINT_KEYS.has(k)) {
|
|
471
|
+
siblings[k] = node[k];
|
|
472
|
+
delete node[k];
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
const refValue = node.$dynamicRef ?? node.$recursiveRef ?? node.$ref;
|
|
476
|
+
if (typeof refValue !== 'string')
|
|
477
|
+
return;
|
|
478
|
+
node.allOf = [
|
|
479
|
+
{ [node.$dynamicRef ? '$dynamicRef' : node.$recursiveRef ? '$recursiveRef' : '$ref']: refValue },
|
|
480
|
+
siblings,
|
|
481
|
+
];
|
|
482
|
+
delete node.$dynamicRef;
|
|
483
|
+
delete node.$recursiveRef;
|
|
484
|
+
delete node.$ref;
|
|
485
|
+
};
|
|
486
|
+
const _stripRefSiblings = (node) => {
|
|
487
|
+
for (const k of Object.keys(node)) {
|
|
488
|
+
if (!REF_SIBLING_NONCONSTRAINT_KEYS.has(k))
|
|
489
|
+
delete node[k];
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
const seenRefs = new Set();
|
|
493
|
+
const _mergeIfResourceAlreadyInResolutionStack = (ref, resolvedResource, frag) => {
|
|
494
|
+
if (!resolutionStack.has(resolvedResource))
|
|
495
|
+
return false;
|
|
496
|
+
if (!seenRefs.has(ref)) {
|
|
497
|
+
const source = resourceIndexByUri.get(resolvedResource)?.root;
|
|
498
|
+
if (source && typeof source === 'object') {
|
|
499
|
+
_merge(next, source, resolvedResource, frag, !!recursiveAnchorBase);
|
|
500
|
+
}
|
|
501
|
+
seenRefs.add(ref);
|
|
502
|
+
}
|
|
503
|
+
return true;
|
|
504
|
+
};
|
|
505
|
+
while (next.$dynamicRef || next.$recursiveRef || next.$ref) {
|
|
506
|
+
const isDynamicRef = typeof next.$dynamicRef === 'string';
|
|
507
|
+
const isRecursiveRef = !isDynamicRef && typeof next.$recursiveRef === 'string';
|
|
508
|
+
const rawRef = next.$dynamicRef ?? next.$recursiveRef ?? next.$ref;
|
|
509
|
+
if (typeof rawRef !== 'string')
|
|
510
|
+
break;
|
|
511
|
+
next._$ref = rawRef;
|
|
512
|
+
// parse ref into base URI and fragment
|
|
513
|
+
const ref = decodeURIComponent(rawRef);
|
|
514
|
+
const segments = ref.split('#', 2);
|
|
515
|
+
const baseUri = segments[0];
|
|
516
|
+
const frag = segments.length > 1 ? segments[1] : '';
|
|
517
|
+
const resolvedRefKey = `${baseUri ? _resolveAgainstBase(nodeBaseURL, baseUri) : nodeBaseURL}#${frag}`;
|
|
518
|
+
if (_hasRefSiblings(next)) {
|
|
519
|
+
// Draft-07 and earlier: ignore siblings
|
|
520
|
+
if (nodeDialect === SchemaDialect.draft04 || nodeDialect === SchemaDialect.draft07) {
|
|
521
|
+
_stripRefSiblings(next);
|
|
522
|
+
}
|
|
523
|
+
else {
|
|
524
|
+
if (siblingRefCycleKeys?.has(resolvedRefKey))
|
|
525
|
+
break;
|
|
526
|
+
// Draft-2019+: support sibling keywords
|
|
527
|
+
_rewriteRefWithSiblingsToAllOf(next);
|
|
528
|
+
if (Array.isArray(next.allOf)) {
|
|
529
|
+
for (let i = 0; i < next.allOf.length; i++) {
|
|
530
|
+
const entry = next.allOf[i];
|
|
531
|
+
if (entry && typeof entry === 'object') {
|
|
532
|
+
let nextSiblingRefCycleKeys;
|
|
533
|
+
if (i === 0) {
|
|
534
|
+
nextSiblingRefCycleKeys = new Set(siblingRefCycleKeys);
|
|
535
|
+
nextSiblingRefCycleKeys.add(resolvedRefKey);
|
|
536
|
+
}
|
|
537
|
+
toWalk.push({
|
|
538
|
+
node: entry,
|
|
539
|
+
baseURL: nodeBaseURL,
|
|
540
|
+
recursiveAnchorBase,
|
|
541
|
+
inheritedDynamicScope: currentDynamicScope,
|
|
542
|
+
siblingRefCycleKeys: nextSiblingRefCycleKeys,
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
delete next.$dynamicRef;
|
|
551
|
+
delete next.$recursiveRef;
|
|
552
|
+
delete next.$ref;
|
|
553
|
+
// Draft-2019+: $recursiveRef
|
|
554
|
+
if (isRecursiveRef && (ref === '#' || ref === '')) {
|
|
555
|
+
const targetRoot = resourceIndexByUri.get(nodeBaseURL)?.root;
|
|
556
|
+
const recursiveBase = targetRoot?.$recursiveAnchor && recursiveAnchorBase ? recursiveAnchorBase : nodeBaseURL;
|
|
557
|
+
if (recursiveBase.length > 0) {
|
|
558
|
+
if (resolutionStack?.has(recursiveBase) || recursiveBase === nodeBaseURL) {
|
|
559
|
+
const sourceRoot = resourceIndexByUri.get(recursiveBase)?.root ?? parentSchema;
|
|
560
|
+
if (!seenRefs.has(ref)) {
|
|
561
|
+
_merge(next, sourceRoot, recursiveBase, '', false);
|
|
562
|
+
seenRefs.add(ref);
|
|
563
|
+
}
|
|
564
|
+
continue;
|
|
565
|
+
}
|
|
566
|
+
openPromises.push(resolveExternalLink(next, recursiveBase, '', nodeBaseURL, parentSchemaDependencies, resolutionStack, recursiveAnchorBase, currentDynamicScope));
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
continue;
|
|
570
|
+
}
|
|
571
|
+
// Draft-2020+: $dynamicRef
|
|
572
|
+
else if (isDynamicRef) {
|
|
573
|
+
const targetResource = baseUri.length > 0 ? _resolveAgainstBase(nodeBaseURL, baseUri) : nodeBaseURL;
|
|
574
|
+
const targetFragments = resourceIndexByUri.get(targetResource)?.fragments;
|
|
575
|
+
const targetHasDynamicAnchor = frag.length > 0 && targetFragments?.get(frag)?.dynamic;
|
|
576
|
+
const dynamicTarget = targetHasDynamicAnchor ? currentDynamicScope?.get(frag)?.[0] : undefined;
|
|
577
|
+
const resolveResource = dynamicTarget ? dynamicTarget._baseUrl : targetResource;
|
|
578
|
+
if (dynamicTarget && (resolveResource === nodeBaseURL || resolutionStack.has(resolveResource))) {
|
|
579
|
+
if (!seenRefs.has(ref)) {
|
|
580
|
+
_merge(next, dynamicTarget, resolveResource, '', false);
|
|
581
|
+
seenRefs.add(ref);
|
|
582
|
+
}
|
|
583
|
+
continue;
|
|
584
|
+
}
|
|
585
|
+
if (baseUri.length > 0 || targetHasDynamicAnchor) {
|
|
586
|
+
if (_mergeIfResourceAlreadyInResolutionStack(ref, resolveResource, frag))
|
|
587
|
+
continue;
|
|
588
|
+
openPromises.push(resolveExternalLink(next, resolveResource, frag, nodeBaseURL, parentSchemaDependencies, resolutionStack, recursiveAnchorBase, currentDynamicScope));
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
// normal $ref with external baseUri
|
|
593
|
+
else if (baseUri.length > 0) {
|
|
594
|
+
const resolvedBaseUri = _resolveAgainstBase(nodeBaseURL, baseUri);
|
|
595
|
+
if (_mergeIfResourceAlreadyInResolutionStack(ref, resolvedBaseUri, frag))
|
|
596
|
+
continue;
|
|
597
|
+
// resolve relative to this node's base URL
|
|
598
|
+
openPromises.push(resolveExternalLink(next, baseUri, frag, nodeBaseURL, parentSchemaDependencies, resolutionStack, recursiveAnchorBase, currentDynamicScope));
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
601
|
+
// local $ref or $dynamicRef
|
|
602
|
+
if (!seenRefs.has(ref)) {
|
|
603
|
+
_merge(next, parentSchema, nodeBaseURL, frag, isDynamicRef && !!currentDynamicScope);
|
|
604
|
+
seenRefs.add(ref);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
// recursively process children
|
|
608
|
+
this.collectSchemaNodes((entry) => toWalk.push({
|
|
609
|
+
node: entry,
|
|
610
|
+
baseURL: next._baseUrl || nodeBaseURL,
|
|
611
|
+
dialect: nodeDialect,
|
|
612
|
+
recursiveAnchorBase,
|
|
613
|
+
inheritedDynamicScope: currentDynamicScope,
|
|
614
|
+
}), next.not, next.if, next.then, next.else, next.contains, next.propertyNames, next.additionalProperties, next.items, next.additionalItems, next.prefixItems, this.schemaMapValues(next.properties), this.schemaMapValues(next.patternProperties), this.schemaMapValues(next.dependentSchemas), this.schemaMapValues(next.dependencies), next.allOf, next.anyOf, next.oneOf, next.schemaSequence);
|
|
615
|
+
};
|
|
616
|
+
// handle file path with fragments
|
|
617
|
+
if (parentSchemaURL.indexOf('#') > 0) {
|
|
618
|
+
const segments = parentSchemaURL.split('#', 2);
|
|
619
|
+
if (segments[0].length > 0 && segments[1].length > 0) {
|
|
620
|
+
const newSchema = {};
|
|
621
|
+
await resolveExternalLink(newSchema, segments[0], segments[1], parentSchemaURL, parentSchemaDependencies, resolutionStack, recursiveAnchorBase, inheritedDynamicScope);
|
|
622
|
+
for (const key in schema) {
|
|
623
|
+
if (key === 'required') {
|
|
624
|
+
continue;
|
|
625
|
+
}
|
|
626
|
+
if (Object.prototype.hasOwnProperty.call(schema, key) && !Object.prototype.hasOwnProperty.call(newSchema, key)) {
|
|
627
|
+
newSchema[key] = schema[key];
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
schema = newSchema;
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
while (toWalk.length) {
|
|
634
|
+
const item = toWalk.pop();
|
|
635
|
+
const next = item.node;
|
|
636
|
+
const nodeBaseURL = next._baseUrl || item.baseURL;
|
|
637
|
+
const nodeDialect = next._dialect || item.dialect;
|
|
638
|
+
const nodeRecursiveAnchorBase = item.recursiveAnchorBase ?? (next.$recursiveAnchor ? nodeBaseURL : undefined);
|
|
639
|
+
if (seen.has(next))
|
|
640
|
+
continue;
|
|
641
|
+
seen.add(next);
|
|
642
|
+
_handleRef(next, nodeBaseURL, nodeDialect, nodeRecursiveAnchorBase, item.inheritedDynamicScope, item.siblingRefCycleKeys);
|
|
643
|
+
}
|
|
644
|
+
return Promise.all(openPromises);
|
|
645
|
+
};
|
|
646
|
+
const resolutionStack = new Set(); // prevents $ref/$recursiveRef/$dynamicRef loops across schema URIs
|
|
647
|
+
const rootResource = schema._baseUrl || schemaURL;
|
|
648
|
+
if (rootResource)
|
|
649
|
+
resolutionStack.add(rootResource);
|
|
650
|
+
await resolveRefs(schema, schema, schemaURL, dependencies, resolutionStack);
|
|
651
|
+
return new ResolvedSchema(schema, resolveErrors);
|
|
652
|
+
}
|
|
653
|
+
getSchemaForResource(resource, doc) {
|
|
654
|
+
const resolveModelineSchema = () => {
|
|
655
|
+
let schemaFromModeline = getSchemaFromModeline(doc);
|
|
656
|
+
if (schemaFromModeline !== undefined) {
|
|
657
|
+
if (!schemaFromModeline.startsWith('file:') && !schemaFromModeline.startsWith('http')) {
|
|
658
|
+
// If path contains a fragment and it is left intact, "#" will be
|
|
659
|
+
// considered part of the filename and converted to "%23" by
|
|
660
|
+
// path.resolve() -> take it out and add back after path.resolve
|
|
661
|
+
let appendix = '';
|
|
662
|
+
if (schemaFromModeline.indexOf('#') > 0) {
|
|
663
|
+
const segments = schemaFromModeline.split('#', 2);
|
|
664
|
+
schemaFromModeline = segments[0];
|
|
665
|
+
appendix = segments[1];
|
|
666
|
+
}
|
|
667
|
+
if (!path.isAbsolute(schemaFromModeline)) {
|
|
668
|
+
const resUri = URI.parse(resource);
|
|
669
|
+
schemaFromModeline = URI.file(path.resolve(path.parse(resUri.fsPath).dir, schemaFromModeline)).toString();
|
|
670
|
+
}
|
|
671
|
+
else {
|
|
672
|
+
schemaFromModeline = URI.file(schemaFromModeline).toString();
|
|
673
|
+
}
|
|
674
|
+
if (appendix.length > 0) {
|
|
675
|
+
schemaFromModeline += '#' + appendix;
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
return schemaFromModeline;
|
|
679
|
+
}
|
|
680
|
+
};
|
|
681
|
+
const resolveSchemaForResource = (schemas) => {
|
|
682
|
+
const schemaHandle = super.createCombinedSchema(resource, schemas);
|
|
683
|
+
return schemaHandle.getResolvedSchema().then((schema) => {
|
|
684
|
+
return this.finalizeResolvedSchema(schema, schemaHandle.url, doc, false);
|
|
685
|
+
});
|
|
686
|
+
};
|
|
687
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
688
|
+
const resolveSchema = async () => {
|
|
689
|
+
const seen = Object.create(null);
|
|
690
|
+
const schemas = [];
|
|
691
|
+
let k8sAllSchema = undefined;
|
|
692
|
+
for (const entry of this.filePatternAssociations) {
|
|
693
|
+
if (entry.matchesPattern(resource)) {
|
|
694
|
+
for (const schemaId of entry.getURIs()) {
|
|
695
|
+
if (!seen[schemaId]) {
|
|
696
|
+
if (this.yamlSettings?.kubernetesCRDStoreEnabled && schemaId === KUBERNETES_SCHEMA_URL) {
|
|
697
|
+
if (!k8sAllSchema) {
|
|
698
|
+
k8sAllSchema = await this.getResolvedSchema(KUBERNETES_SCHEMA_URL);
|
|
699
|
+
}
|
|
700
|
+
const kubeSchema = autoDetectKubernetesSchemaFromDocument(doc, this.yamlSettings.kubernetesCRDStoreUrl ?? CRD_CATALOG_URL, k8sAllSchema);
|
|
701
|
+
if (kubeSchema) {
|
|
702
|
+
schemas.push(kubeSchema);
|
|
703
|
+
seen[schemaId] = true;
|
|
704
|
+
}
|
|
705
|
+
else {
|
|
706
|
+
schemas.push(schemaId);
|
|
707
|
+
seen[schemaId] = true;
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
else {
|
|
711
|
+
schemas.push(schemaId);
|
|
712
|
+
seen[schemaId] = true;
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
if (schemas.length > 0) {
|
|
719
|
+
// Join all schemas with the highest priority.
|
|
720
|
+
const highestPrioSchemas = this.highestPrioritySchemas(schemas);
|
|
721
|
+
return resolveSchemaForResource(highestPrioSchemas);
|
|
722
|
+
}
|
|
723
|
+
return Promise.resolve(null);
|
|
724
|
+
};
|
|
725
|
+
const modelineSchema = resolveModelineSchema();
|
|
726
|
+
if (modelineSchema) {
|
|
727
|
+
return resolveSchemaForResource([modelineSchema]);
|
|
728
|
+
}
|
|
729
|
+
if (this.customSchemaProvider) {
|
|
730
|
+
return this.customSchemaProvider(resource)
|
|
731
|
+
.then((schemaUri) => {
|
|
732
|
+
if (Array.isArray(schemaUri)) {
|
|
733
|
+
if (schemaUri.length === 0) {
|
|
734
|
+
return resolveSchema();
|
|
735
|
+
}
|
|
736
|
+
return Promise.all(schemaUri.map((schemaUri) => {
|
|
737
|
+
return this.resolveCustomSchema(schemaUri, doc);
|
|
738
|
+
})).then((schemas) => {
|
|
739
|
+
return {
|
|
740
|
+
errors: [],
|
|
741
|
+
schema: {
|
|
742
|
+
allOf: schemas.map((schemaObj) => {
|
|
743
|
+
return schemaObj.schema;
|
|
744
|
+
}),
|
|
745
|
+
},
|
|
746
|
+
};
|
|
747
|
+
}, () => {
|
|
748
|
+
return resolveSchema();
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
if (!schemaUri) {
|
|
752
|
+
return resolveSchema();
|
|
753
|
+
}
|
|
754
|
+
return this.resolveCustomSchema(schemaUri, doc);
|
|
755
|
+
})
|
|
756
|
+
.then((schema) => {
|
|
757
|
+
return schema;
|
|
758
|
+
}, () => {
|
|
759
|
+
return resolveSchema();
|
|
760
|
+
});
|
|
761
|
+
}
|
|
762
|
+
return resolveSchema();
|
|
763
|
+
}
|
|
764
|
+
finalizeResolvedSchema(schema, schemaUrl, doc, includeErrorsForSequence) {
|
|
765
|
+
if (schema.schema && typeof schema.schema === 'object') {
|
|
766
|
+
schema.schema.url = schemaUrl;
|
|
767
|
+
if (schema.schema.schemaSequence && schema.schema.schemaSequence[doc.currentDocIndex]) {
|
|
768
|
+
const selectedSchema = schema.schema.schemaSequence[doc.currentDocIndex];
|
|
769
|
+
if (includeErrorsForSequence) {
|
|
770
|
+
return new ResolvedSchema(selectedSchema, schema.errors);
|
|
771
|
+
}
|
|
772
|
+
return new ResolvedSchema(selectedSchema);
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
return schema;
|
|
776
|
+
}
|
|
777
|
+
// Set the priority of a schema in the schema service
|
|
778
|
+
addSchemaPriority(uri, priority) {
|
|
779
|
+
let currSchemaArray = this.schemaPriorityMapping.get(uri);
|
|
780
|
+
if (currSchemaArray) {
|
|
781
|
+
currSchemaArray = currSchemaArray.add(priority);
|
|
782
|
+
this.schemaPriorityMapping.set(uri, currSchemaArray);
|
|
783
|
+
}
|
|
784
|
+
else {
|
|
785
|
+
this.schemaPriorityMapping.set(uri, new Set().add(priority));
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
/**
|
|
789
|
+
* Search through all the schemas and find the ones with the highest priority
|
|
790
|
+
*/
|
|
791
|
+
highestPrioritySchemas(schemas) {
|
|
792
|
+
let highestPrio = 0;
|
|
793
|
+
const priorityMapping = new Map();
|
|
794
|
+
schemas.forEach((schema) => {
|
|
795
|
+
// If the schema does not have a priority then give it a default one of [0]
|
|
796
|
+
const priority = this.schemaPriorityMapping.get(schema) || [0];
|
|
797
|
+
priority.forEach((prio) => {
|
|
798
|
+
if (prio > highestPrio) {
|
|
799
|
+
highestPrio = prio;
|
|
800
|
+
}
|
|
801
|
+
// Build up a mapping of priority to schemas so that we can easily get the highest priority schemas easier
|
|
802
|
+
let currPriorityArray = priorityMapping.get(prio);
|
|
803
|
+
if (currPriorityArray) {
|
|
804
|
+
currPriorityArray = currPriorityArray.concat(schema);
|
|
805
|
+
priorityMapping.set(prio, currPriorityArray);
|
|
806
|
+
}
|
|
807
|
+
else {
|
|
808
|
+
priorityMapping.set(prio, [schema]);
|
|
809
|
+
}
|
|
810
|
+
});
|
|
811
|
+
});
|
|
812
|
+
return priorityMapping.get(highestPrio) || [];
|
|
813
|
+
}
|
|
814
|
+
async resolveCustomSchema(schemaUri, doc) {
|
|
815
|
+
const unresolvedSchema = await this.loadSchema(schemaUri);
|
|
816
|
+
const schema = await this.resolveSchemaContent(unresolvedSchema, schemaUri, []);
|
|
817
|
+
return this.finalizeResolvedSchema(schema, schemaUri, doc, true);
|
|
818
|
+
}
|
|
819
|
+
/**
|
|
820
|
+
* Save a schema with schema ID and schema content.
|
|
821
|
+
* Overrides previous schemas set for that schema ID.
|
|
822
|
+
*/
|
|
823
|
+
async saveSchema(schemaId, schemaContent) {
|
|
824
|
+
const id = this.normalizeId(schemaId);
|
|
825
|
+
this.getOrAddSchemaHandle(id, schemaContent);
|
|
826
|
+
this.schemaPriorityMapping.set(id, new Set().add(SchemaPriority.Settings));
|
|
827
|
+
return Promise.resolve(undefined);
|
|
828
|
+
}
|
|
829
|
+
/**
|
|
830
|
+
* Delete schemas on specific path
|
|
831
|
+
*/
|
|
832
|
+
async deleteSchemas(deletions) {
|
|
833
|
+
deletions.schemas.forEach((s) => {
|
|
834
|
+
this.deleteSchema(s);
|
|
835
|
+
});
|
|
836
|
+
return Promise.resolve(undefined);
|
|
837
|
+
}
|
|
838
|
+
/**
|
|
839
|
+
* Delete a schema with schema ID.
|
|
840
|
+
*/
|
|
841
|
+
async deleteSchema(schemaId) {
|
|
842
|
+
const id = this.normalizeId(schemaId);
|
|
843
|
+
if (this.schemasById[id]) {
|
|
844
|
+
delete this.schemasById[id];
|
|
845
|
+
}
|
|
846
|
+
this.schemaPriorityMapping.delete(id);
|
|
847
|
+
return Promise.resolve(undefined);
|
|
848
|
+
}
|
|
849
|
+
/**
|
|
850
|
+
* Add content to a specified schema at a specified path
|
|
851
|
+
*/
|
|
852
|
+
async addContent(additions) {
|
|
853
|
+
const schema = await this.getResolvedSchema(additions.schema);
|
|
854
|
+
if (schema) {
|
|
855
|
+
const resolvedSchemaLocation = this.resolveJSONSchemaToSection(schema.schema, additions.path);
|
|
856
|
+
if (typeof resolvedSchemaLocation === 'object') {
|
|
857
|
+
resolvedSchemaLocation[additions.key] = additions.content;
|
|
858
|
+
}
|
|
859
|
+
await this.saveSchema(additions.schema, schema.schema);
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
/**
|
|
863
|
+
* Delete content in a specified schema at a specified path
|
|
864
|
+
*/
|
|
865
|
+
async deleteContent(deletions) {
|
|
866
|
+
const schema = await this.getResolvedSchema(deletions.schema);
|
|
867
|
+
if (schema) {
|
|
868
|
+
const resolvedSchemaLocation = this.resolveJSONSchemaToSection(schema.schema, deletions.path);
|
|
869
|
+
if (typeof resolvedSchemaLocation === 'object') {
|
|
870
|
+
delete resolvedSchemaLocation[deletions.key];
|
|
871
|
+
}
|
|
872
|
+
await this.saveSchema(deletions.schema, schema.schema);
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
/**
|
|
876
|
+
* Take a JSON Schema and the path that you would like to get to
|
|
877
|
+
* @returns the JSON Schema resolved at that specific path
|
|
878
|
+
*/
|
|
879
|
+
resolveJSONSchemaToSection(schema, paths) {
|
|
880
|
+
const splitPathway = paths.split('/');
|
|
881
|
+
let resolvedSchemaLocation = schema;
|
|
882
|
+
for (const path of splitPathway) {
|
|
883
|
+
if (path === '') {
|
|
884
|
+
continue;
|
|
885
|
+
}
|
|
886
|
+
this.resolveNext(resolvedSchemaLocation, path);
|
|
887
|
+
resolvedSchemaLocation = resolvedSchemaLocation[path];
|
|
888
|
+
}
|
|
889
|
+
return resolvedSchemaLocation;
|
|
890
|
+
}
|
|
891
|
+
/**
|
|
892
|
+
* Resolve the next Object if they have compatible types
|
|
893
|
+
* @param object a location in the JSON Schema
|
|
894
|
+
* @param token the next token that you want to search for
|
|
895
|
+
*/
|
|
896
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
897
|
+
resolveNext(object, token) {
|
|
898
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
899
|
+
if (Array.isArray(object) && isNaN(token)) {
|
|
900
|
+
throw new Error('Expected a number after the array object');
|
|
901
|
+
}
|
|
902
|
+
else if (typeof object === 'object' && typeof token !== 'string') {
|
|
903
|
+
throw new Error('Expected a string after the object');
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
/**
|
|
907
|
+
* Everything below here is needed because we're importing from vscode-json-languageservice umd and we need
|
|
908
|
+
* to provide a wrapper around the javascript methods we are calling since they have no type
|
|
909
|
+
*/
|
|
910
|
+
normalizeId(id) {
|
|
911
|
+
// The parent's `super.normalizeId(id)` isn't visible, so duplicated the code here
|
|
912
|
+
try {
|
|
913
|
+
return URI.parse(id).toString();
|
|
914
|
+
}
|
|
915
|
+
catch (e) {
|
|
916
|
+
return id;
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
getOrAddSchemaHandle(id, unresolvedSchemaContent) {
|
|
920
|
+
return super.getOrAddSchemaHandle(id, unresolvedSchemaContent);
|
|
921
|
+
}
|
|
922
|
+
loadSchema(schemaUri) {
|
|
923
|
+
const requestService = this.requestService;
|
|
924
|
+
return super.loadSchema(schemaUri).then(async (unresolvedJsonSchema) => {
|
|
925
|
+
// If json-language-server failed to parse the schema, attempt to parse it as YAML instead.
|
|
926
|
+
// If the YAML file starts with %YAML 1.x or contains a comment with a number the schema will
|
|
927
|
+
// contain a number instead of being undefined, so we need to check for that too.
|
|
928
|
+
if (unresolvedJsonSchema.errors &&
|
|
929
|
+
(unresolvedJsonSchema.schema === undefined || typeof unresolvedJsonSchema.schema === 'number')) {
|
|
930
|
+
return requestService(schemaUri).then((content) => {
|
|
931
|
+
if (!content) {
|
|
932
|
+
const errorMessage = l10n.t("Unable to load schema from '{0}': No content. {1}", toDisplayString(schemaUri), unresolvedJsonSchema.errors);
|
|
933
|
+
return new UnresolvedSchema({}, [errorMessage]);
|
|
934
|
+
}
|
|
935
|
+
try {
|
|
936
|
+
const schemaContent = parse(content);
|
|
937
|
+
return new UnresolvedSchema(schemaContent, []);
|
|
938
|
+
}
|
|
939
|
+
catch (yamlError) {
|
|
940
|
+
const errorMessage = l10n.t("Unable to parse content from '{0}': {1}.", toDisplayString(schemaUri), yamlError);
|
|
941
|
+
return new UnresolvedSchema({}, [errorMessage]);
|
|
942
|
+
}
|
|
943
|
+
},
|
|
944
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
945
|
+
(error) => {
|
|
946
|
+
let errorMessage = error.toString();
|
|
947
|
+
const errorSplit = error.toString().split('Error: ');
|
|
948
|
+
if (errorSplit.length > 1) {
|
|
949
|
+
// more concise error message, URL and context are attached by caller anyways
|
|
950
|
+
errorMessage = errorSplit[1];
|
|
951
|
+
}
|
|
952
|
+
return new UnresolvedSchema({}, [errorMessage]);
|
|
953
|
+
});
|
|
954
|
+
}
|
|
955
|
+
unresolvedJsonSchema.uri = schemaUri;
|
|
956
|
+
if (this.schemaUriToNameAndDescription.has(schemaUri)) {
|
|
957
|
+
const { name, description, versions } = this.schemaUriToNameAndDescription.get(schemaUri);
|
|
958
|
+
unresolvedJsonSchema.schema.title = name ?? unresolvedJsonSchema.schema.title;
|
|
959
|
+
unresolvedJsonSchema.schema.description = description ?? unresolvedJsonSchema.schema.description;
|
|
960
|
+
unresolvedJsonSchema.schema.versions = versions ?? unresolvedJsonSchema.schema.versions;
|
|
961
|
+
}
|
|
962
|
+
else if (unresolvedJsonSchema.errors && unresolvedJsonSchema.errors.length > 0) {
|
|
963
|
+
let errorMessage = unresolvedJsonSchema.errors[0];
|
|
964
|
+
if (errorMessage.toLowerCase().indexOf('load') !== -1) {
|
|
965
|
+
errorMessage = l10n.t("Unable to load schema from '{0}': No content.", toDisplayString(schemaUri));
|
|
966
|
+
}
|
|
967
|
+
else if (errorMessage.toLowerCase().indexOf('parse') !== -1) {
|
|
968
|
+
const content = await requestService(schemaUri);
|
|
969
|
+
const jsonErrors = [];
|
|
970
|
+
const schemaContent = Json.parse(content, jsonErrors);
|
|
971
|
+
if (jsonErrors.length && schemaContent) {
|
|
972
|
+
const { offset } = jsonErrors[0];
|
|
973
|
+
const { line, column } = getLineAndColumnFromOffset(content, offset);
|
|
974
|
+
errorMessage = l10n.t("Unable to parse content from '{0}': Parse error at line: {1} column: {2}", toDisplayString(schemaUri), line, column);
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
return new UnresolvedSchema({}, [errorMessage]);
|
|
978
|
+
}
|
|
979
|
+
return unresolvedJsonSchema;
|
|
980
|
+
});
|
|
981
|
+
}
|
|
982
|
+
registerExternalSchema(uri, filePatterns, unresolvedSchema, name, description, versions) {
|
|
983
|
+
if (name || description) {
|
|
984
|
+
this.schemaUriToNameAndDescription.set(uri, { name, description, versions });
|
|
985
|
+
}
|
|
986
|
+
return super.registerExternalSchema(uri, filePatterns, unresolvedSchema);
|
|
987
|
+
}
|
|
988
|
+
clearExternalSchemas() {
|
|
989
|
+
super.clearExternalSchemas();
|
|
990
|
+
}
|
|
991
|
+
setSchemaContributions(schemaContributions) {
|
|
992
|
+
super.setSchemaContributions(schemaContributions);
|
|
993
|
+
}
|
|
994
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
995
|
+
getRegisteredSchemaIds(filter) {
|
|
996
|
+
return super.getRegisteredSchemaIds(filter);
|
|
997
|
+
}
|
|
998
|
+
getResolvedSchema(schemaId) {
|
|
999
|
+
return super.getResolvedSchema(schemaId);
|
|
1000
|
+
}
|
|
1001
|
+
onResourceChange(uri) {
|
|
1002
|
+
return super.onResourceChange(uri);
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
function toDisplayString(url) {
|
|
1006
|
+
try {
|
|
1007
|
+
const uri = URI.parse(url);
|
|
1008
|
+
if (uri.scheme === 'file') {
|
|
1009
|
+
return uri.fsPath;
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
catch (e) {
|
|
1013
|
+
// ignore
|
|
1014
|
+
}
|
|
1015
|
+
return url;
|
|
1016
|
+
}
|
|
1017
|
+
function getLineAndColumnFromOffset(text, offset) {
|
|
1018
|
+
const lines = text.slice(0, offset).split(/\r?\n/);
|
|
1019
|
+
const line = lines.length; // 1-based line number
|
|
1020
|
+
const column = lines[lines.length - 1].length + 1; // 1-based column number
|
|
1021
|
+
return { line, column };
|
|
1022
|
+
}
|
|
1023
|
+
function normalizeSchemaUri(uri) {
|
|
1024
|
+
if (!uri)
|
|
1025
|
+
return '';
|
|
1026
|
+
let s;
|
|
1027
|
+
if (typeof uri === 'string') {
|
|
1028
|
+
s = uri;
|
|
1029
|
+
}
|
|
1030
|
+
else {
|
|
1031
|
+
s = uri.$id || uri.id || '';
|
|
1032
|
+
}
|
|
1033
|
+
s = s.trim();
|
|
1034
|
+
// strips fragment (# or #/something)
|
|
1035
|
+
const hash = s.indexOf('#');
|
|
1036
|
+
s = hash === -1 ? s : s.slice(0, hash);
|
|
1037
|
+
// normalize http to https (don't normalize custom dialects)
|
|
1038
|
+
s = s.replace(/^http:\/\/json-schema\.org\//i, 'https://json-schema.org/');
|
|
1039
|
+
// normalize to no trailing slash
|
|
1040
|
+
s = s.replace(/\/+$/g, '');
|
|
1041
|
+
return s;
|
|
1042
|
+
}
|
|
1043
|
+
function knownDialectFromSchemaUri(schemaUri) {
|
|
1044
|
+
if (schemaUri === normalizeSchemaUri(ajv4.defaultMeta()))
|
|
1045
|
+
return SchemaDialect.draft04;
|
|
1046
|
+
if (schemaUri === normalizeSchemaUri(ajv7.defaultMeta()))
|
|
1047
|
+
return SchemaDialect.draft07;
|
|
1048
|
+
if (schemaUri === normalizeSchemaUri(ajv2019.defaultMeta()))
|
|
1049
|
+
return SchemaDialect.draft2019;
|
|
1050
|
+
if (schemaUri === normalizeSchemaUri(ajv2020.defaultMeta()))
|
|
1051
|
+
return SchemaDialect.draft2020;
|
|
1052
|
+
return undefined;
|
|
1053
|
+
}
|
|
1054
|
+
async function pickSchemaDialect($schema, loadSchema) {
|
|
1055
|
+
if (!$schema)
|
|
1056
|
+
return undefined;
|
|
1057
|
+
const s = normalizeSchemaUri($schema || '');
|
|
1058
|
+
const dialect = knownDialectFromSchemaUri(s);
|
|
1059
|
+
if (dialect)
|
|
1060
|
+
return dialect;
|
|
1061
|
+
// cache custom dialect result
|
|
1062
|
+
const cached = schemaDialectCache.get(s);
|
|
1063
|
+
if (cached) {
|
|
1064
|
+
return cached;
|
|
1065
|
+
}
|
|
1066
|
+
const inflight = schemaDialectInFlight.get(s);
|
|
1067
|
+
if (inflight) {
|
|
1068
|
+
return inflight;
|
|
1069
|
+
}
|
|
1070
|
+
if (!loadSchema)
|
|
1071
|
+
return undefined;
|
|
1072
|
+
// resolve custom dialect: load the dialect meta-schema doc and infer base dialect from its $schema
|
|
1073
|
+
const promise = (async () => {
|
|
1074
|
+
const meta = await loadSchema(s);
|
|
1075
|
+
if (meta.errors?.length)
|
|
1076
|
+
return undefined;
|
|
1077
|
+
const metaSchema = meta.schema;
|
|
1078
|
+
if (!metaSchema || typeof metaSchema !== 'object')
|
|
1079
|
+
return undefined;
|
|
1080
|
+
const metaDialect = knownDialectFromSchemaUri(metaSchema.$schema);
|
|
1081
|
+
if (metaDialect)
|
|
1082
|
+
return metaDialect;
|
|
1083
|
+
return undefined;
|
|
1084
|
+
})();
|
|
1085
|
+
schemaDialectInFlight.set(s, promise);
|
|
1086
|
+
try {
|
|
1087
|
+
const result = await promise;
|
|
1088
|
+
schemaDialectCache.set(s, result);
|
|
1089
|
+
return result;
|
|
1090
|
+
}
|
|
1091
|
+
finally {
|
|
1092
|
+
schemaDialectInFlight.delete(s);
|
|
1093
|
+
}
|
|
1094
|
+
}
|
|
1095
|
+
function pickMetaValidator(dialect) {
|
|
1096
|
+
switch (dialect) {
|
|
1097
|
+
case SchemaDialect.draft04:
|
|
1098
|
+
return schema04Validator;
|
|
1099
|
+
case SchemaDialect.draft07:
|
|
1100
|
+
return schema07Validator;
|
|
1101
|
+
case SchemaDialect.draft2019:
|
|
1102
|
+
return schema2019Validator;
|
|
1103
|
+
case SchemaDialect.draft2020:
|
|
1104
|
+
return schema2020Validator;
|
|
1105
|
+
default:
|
|
1106
|
+
// don't meta-validate unknown schema URI
|
|
1107
|
+
return undefined;
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
//# sourceMappingURL=yamlSchemaService.js.map
|