Skip to content

Commit 4356f99

Browse files
fixed test cases
1 parent b94af21 commit 4356f99

File tree

6 files changed

+93
-69
lines changed

6 files changed

+93
-69
lines changed

l10n/bundle.l10n.de.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"json.schema.invalidref": "$ref '{0}' in '{1}' kann nicht aufgelöst werden.",
44
"json.schema.problemloadingref": "Probleme beim Laden der Referenz '{0}': {1}",
55
"json.schema.nocontent": "Schema konnte nicht von '{0}' geladen werden: Kein Inhalt.",
6-
"json.schema.invalidFormat": "Inhalt von '{0}' konnte nicht analysiert werden: Analysefehler in Zeile {1}, Spalte {2}",
6+
"json.schema.invalidFormat": "Inhalt von '{0}' konnte nicht analysiert werden: Analysefehler in Zeile:{1}, Spalte:{2}",
77
"colorHexFormatWarning": "Ungültiges Farbformat. Verwenden Sie #RGB, #RGBA, #RRGGBB oder #RRGGBBAA.",
88
"dateTimeFormatWarning": "Zeichenfolge ist kein RFC3339-Datum-Zeit-Wert.",
99
"dateFormatWarning": "Zeichenfolge ist kein RFC3339-Datum.",

l10n/bundle.l10n.fr.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"json.schema.invalidref": "$ref '{0}' dans '{1}' ne peut pas être résolu",
44
"json.schema.problemloadingref": "Problèmes de chargement de la référence '{0}' : {1}",
55
"json.schema.noContent": "Impossible de charger le schéma à partir de {0}: aucun contenu.",
6-
"json.schema.invalidFormat": "Impossible d’analyser le contenu de {0}: erreur d’analyse à la ligne {1}, colonne {2}",
6+
"json.schema.invalidFormat": "Impossible d’analyser le contenu de {0}: erreur d’analyse à la ligne:{1}, colonne:{2}",
77
"colorHexFormatWarning": "Format de couleur non valide. Utilisez #RGB, #RGBA, #RRGGBB ou #RRGGBBAA.",
88
"dateTimeFormatWarning": "La chaîne n'est pas une date-heure RFC3339.",
99
"dateFormatWarning": "La chaîne n'est pas une date RFC3339.",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"lodash": "4.17.21",
3333
"prettier": "^3.5.0",
3434
"request-light": "^0.5.7",
35-
"vscode-json-languageservice": "5.6.0",
35+
"vscode-json-languageservice": "4.1.8",
3636
"vscode-languageserver": "^9.0.0",
3737
"vscode-languageserver-textdocument": "^1.0.1",
3838
"vscode-languageserver-types": "^3.16.0",

src/languageservice/services/yamlSchemaService.ts

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { getSchemaFromModeline } from './modelineUtil';
2525
import { JSONSchemaDescriptionExt } from '../../requestTypes';
2626
import { SchemaVersions } from '../yamlTypes';
2727

28+
import { parse } from 'yaml';
2829
import * as Json from 'jsonc-parser';
2930
import Ajv, { DefinedError } from 'ajv';
3031
import Ajv4 from 'ajv-draft-04';
@@ -638,38 +639,46 @@ export class YAMLSchemaService extends JSONSchemaService {
638639

639640
loadSchema(schemaUri: string): Promise<UnresolvedSchema> {
640641
const requestService = this.requestService;
641-
return super.loadSchema(schemaUri).then((unresolvedJsonSchema: UnresolvedSchema) => {
642+
return super.loadSchema(schemaUri).then(async (unresolvedJsonSchema: UnresolvedSchema) => {
642643
// If json-language-server failed to parse the schema, attempt to parse it as YAML instead.
643644
// If the YAML file starts with %YAML 1.x or contains a comment with a number the schema will
644645
// contain a number instead of being undefined, so we need to check for that too.
645646
if (
646-
unresolvedJsonSchema.errors ||
647-
unresolvedJsonSchema.schema === undefined ||
648-
typeof unresolvedJsonSchema.schema === 'number'
647+
unresolvedJsonSchema.errors &&
648+
(unresolvedJsonSchema.schema === undefined || typeof unresolvedJsonSchema.schema === 'number')
649649
) {
650650
return requestService(schemaUri).then(
651651
(content) => {
652652
if (!content) {
653-
const errorMessage = l10n.t('json.schema.noContent', toDisplayString(schemaUri), unresolvedJsonSchema.errors);
653+
const errorMessage = l10n.t(
654+
'json.schema.nocontent',
655+
"Unable to load schema from '{0}': No content. {1}",
656+
toDisplayString(schemaUri),
657+
unresolvedJsonSchema.errors
658+
);
654659
return new UnresolvedSchema(<JSONSchema>{}, [errorMessage]);
655660
}
656-
const jsonErrors: Json.ParseError[] = [];
657-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
658-
const schemaContent = Json.parse(content, jsonErrors);
659-
let errorMessage = '';
660-
if (jsonErrors.length) {
661-
const { offset } = jsonErrors[0];
662-
const { line, column } = getLineAndColumnFromOffset(content, offset);
663-
errorMessage = l10n.t('json.schema.invalidFormat', toDisplayString(schemaUri), line, column);
661+
662+
try {
663+
const schemaContent = parse(content);
664+
return new UnresolvedSchema(schemaContent, []);
665+
} catch (yamlError) {
666+
const errorMessage = l10n.t(
667+
'json.schema.invalidFormat',
668+
"Unable to parse content from '{0}': {1}.",
669+
toDisplayString(schemaUri),
670+
yamlError
671+
);
672+
return new UnresolvedSchema(<JSONSchema>{}, [errorMessage]);
664673
}
665-
return new UnresolvedSchema(<JSONSchema>{}, [errorMessage]);
666674
},
667-
(error: unknown) => {
675+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
676+
(error: any) => {
668677
let errorMessage = error.toString();
669-
const errorSplit = error.toString().split('vscode/content');
678+
const errorSplit = error.toString().split('Error: ');
670679
if (errorSplit.length > 1) {
671680
// more concise error message, URL and context are attached by caller anyways
672-
errorMessage = l10n.t('json.schema.noContent', toDisplayString(schemaUri));
681+
errorMessage = errorSplit[1];
673682
}
674683
return new UnresolvedSchema(<JSONSchema>{}, [errorMessage]);
675684
}
@@ -681,6 +690,21 @@ export class YAMLSchemaService extends JSONSchemaService {
681690
unresolvedJsonSchema.schema.title = name ?? unresolvedJsonSchema.schema.title;
682691
unresolvedJsonSchema.schema.description = description ?? unresolvedJsonSchema.schema.description;
683692
unresolvedJsonSchema.schema.versions = versions ?? unresolvedJsonSchema.schema.versions;
693+
} else if (unresolvedJsonSchema.errors && unresolvedJsonSchema.errors.length > 0) {
694+
let errorMessage: string = unresolvedJsonSchema.errors[0];
695+
if (errorMessage.toLowerCase().indexOf('load') !== -1) {
696+
errorMessage = l10n.t('json.schema.noContent', toDisplayString(schemaUri));
697+
} else if (errorMessage.toLowerCase().indexOf('parse') !== -1) {
698+
const content = await requestService(schemaUri);
699+
const jsonErrors: Json.ParseError[] = [];
700+
const schemaContent = Json.parse(content, jsonErrors);
701+
if (jsonErrors.length && schemaContent) {
702+
const { offset } = jsonErrors[0];
703+
const { line, column } = getLineAndColumnFromOffset(content, offset);
704+
errorMessage = l10n.t('json.schema.invalidFormat', toDisplayString(schemaUri), line, column);
705+
}
706+
}
707+
return new UnresolvedSchema(<JSONSchema>{}, [errorMessage]);
684708
}
685709
return unresolvedJsonSchema;
686710
});

src/yamlServerInit.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export class YAMLServerInit {
4242
*/
4343
this.connection.onInitialize(async (params: InitializeParams): Promise<InitializeResult> => {
4444
const l10nPath: string = params.initializationOptions?.l10nPath;
45-
const locale: string = params.initializationOptions?.locale;
45+
const locale: string = params.locale;
4646
if (l10nPath) {
4747
const bundleFile = locale === 'en' ? `bundle.l10n.json` : `bundle.l10n.${locale}.json`;
4848
const baseBundleFile = path.join(l10nPath, bundleFile);

yarn.lock

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -96,32 +96,32 @@
9696
picocolors "^1.1.1"
9797

9898
"@babel/compat-data@^7.27.2":
99-
version "7.27.5"
100-
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.5.tgz#7d0658ec1a8420fc866d1df1b03bea0e79934c82"
101-
integrity sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==
99+
version "7.27.7"
100+
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.7.tgz#7fd698e531050cce432b073ab64857b99e0f3804"
101+
integrity sha512-xgu/ySj2mTiUFmdE9yCMfBxLp4DHd5DwmbbD05YAuICfodYT3VvRxbrh81LGQ/8UpSdtMdfKMn3KouYDX59DGQ==
102102

103103
"@babel/core@^7.7.5":
104-
version "7.27.4"
105-
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce"
106-
integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==
104+
version "7.27.7"
105+
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.7.tgz#0ddeab1e7b17317dad8c3c3a887716f66b5c4428"
106+
integrity sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==
107107
dependencies:
108108
"@ampproject/remapping" "^2.2.0"
109109
"@babel/code-frame" "^7.27.1"
110-
"@babel/generator" "^7.27.3"
110+
"@babel/generator" "^7.27.5"
111111
"@babel/helper-compilation-targets" "^7.27.2"
112112
"@babel/helper-module-transforms" "^7.27.3"
113-
"@babel/helpers" "^7.27.4"
114-
"@babel/parser" "^7.27.4"
113+
"@babel/helpers" "^7.27.6"
114+
"@babel/parser" "^7.27.7"
115115
"@babel/template" "^7.27.2"
116-
"@babel/traverse" "^7.27.4"
117-
"@babel/types" "^7.27.3"
116+
"@babel/traverse" "^7.27.7"
117+
"@babel/types" "^7.27.7"
118118
convert-source-map "^2.0.0"
119119
debug "^4.1.0"
120120
gensync "^1.0.0-beta.2"
121121
json5 "^2.2.3"
122122
semver "^6.3.1"
123123

124-
"@babel/generator@^7.27.3":
124+
"@babel/generator@^7.27.5":
125125
version "7.27.5"
126126
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c"
127127
integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==
@@ -175,20 +175,20 @@
175175
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f"
176176
integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
177177

178-
"@babel/helpers@^7.27.4":
178+
"@babel/helpers@^7.27.6":
179179
version "7.27.6"
180180
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c"
181181
integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==
182182
dependencies:
183183
"@babel/template" "^7.27.2"
184184
"@babel/types" "^7.27.6"
185185

186-
"@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5":
187-
version "7.27.5"
188-
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826"
189-
integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==
186+
"@babel/parser@^7.27.2", "@babel/parser@^7.27.5", "@babel/parser@^7.27.7":
187+
version "7.27.7"
188+
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.7.tgz#1687f5294b45039c159730e3b9c1f1b242e425e9"
189+
integrity sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==
190190
dependencies:
191-
"@babel/types" "^7.27.3"
191+
"@babel/types" "^7.27.7"
192192

193193
"@babel/template@^7.27.2":
194194
version "7.27.2"
@@ -199,23 +199,23 @@
199199
"@babel/parser" "^7.27.2"
200200
"@babel/types" "^7.27.1"
201201

202-
"@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4":
203-
version "7.27.4"
204-
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea"
205-
integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==
202+
"@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.7":
203+
version "7.27.7"
204+
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.7.tgz#8355c39be6818362eace058cf7f3e25ac2ec3b55"
205+
integrity sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==
206206
dependencies:
207207
"@babel/code-frame" "^7.27.1"
208-
"@babel/generator" "^7.27.3"
209-
"@babel/parser" "^7.27.4"
208+
"@babel/generator" "^7.27.5"
209+
"@babel/parser" "^7.27.7"
210210
"@babel/template" "^7.27.2"
211-
"@babel/types" "^7.27.3"
211+
"@babel/types" "^7.27.7"
212212
debug "^4.3.1"
213213
globals "^11.1.0"
214214

215-
"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6":
216-
version "7.27.6"
217-
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.6.tgz#a434ca7add514d4e646c80f7375c0aa2befc5535"
218-
integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==
215+
"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.27.7":
216+
version "7.27.7"
217+
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.7.tgz#40eabd562049b2ee1a205fa589e629f945dce20f"
218+
integrity sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==
219219
dependencies:
220220
"@babel/helper-string-parser" "^7.27.1"
221221
"@babel/helper-validator-identifier" "^7.27.1"
@@ -933,12 +933,12 @@ browser-stdout@1.3.1:
933933
integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
934934

935935
browserslist@^4.24.0:
936-
version "4.25.0"
937-
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.0.tgz#986aa9c6d87916885da2b50d8eb577ac8d133b2c"
938-
integrity sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==
936+
version "4.25.1"
937+
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111"
938+
integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==
939939
dependencies:
940-
caniuse-lite "^1.0.30001718"
941-
electron-to-chromium "^1.5.160"
940+
caniuse-lite "^1.0.30001726"
941+
electron-to-chromium "^1.5.173"
942942
node-releases "^2.0.19"
943943
update-browserslist-db "^1.1.3"
944944

@@ -998,10 +998,10 @@ camelcase@^6.0.0:
998998
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
999999
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
10001000

1001-
caniuse-lite@^1.0.30001718:
1002-
version "1.0.30001724"
1003-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001724.tgz#312e163553dd70d2c0fb603d74810c85d8ed94a0"
1004-
integrity sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==
1001+
caniuse-lite@^1.0.30001726:
1002+
version "1.0.30001726"
1003+
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz#a15bd87d5a4bf01f6b6f70ae7c97fdfd28b5ae47"
1004+
integrity sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==
10051005

10061006
caseless@~0.12.0:
10071007
version "0.12.0"
@@ -1363,10 +1363,10 @@ ecc-jsbn@~0.1.1:
13631363
jsbn "~0.1.0"
13641364
safer-buffer "^2.1.0"
13651365

1366-
electron-to-chromium@^1.5.160:
1367-
version "1.5.171"
1368-
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.171.tgz#e552b4fd73d4dd941ee4c70ae288a8a39f818726"
1369-
integrity sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==
1366+
electron-to-chromium@^1.5.173:
1367+
version "1.5.176"
1368+
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.176.tgz#f4bbbd2c0a9a6a2a527c884eacc18244fa79dd88"
1369+
integrity sha512-2nDK9orkm7M9ZZkjO3PjbEd3VUulQLyg5T9O3enJdFvUg46Hzd4DUvTvAuEgbdHYXyFsiG4A5sO9IzToMH1cDg==
13701370

13711371
emoji-regex@^8.0.0:
13721372
version "8.0.0"
@@ -1548,9 +1548,9 @@ eslint-plugin-import@^2.26.0:
15481548
tsconfig-paths "^3.15.0"
15491549

15501550
eslint-plugin-prettier@^5.0.0:
1551-
version "5.5.0"
1552-
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.0.tgz#cf763962f90bad035db03ca008ffb0c9b359fb16"
1553-
integrity sha512-8qsOYwkkGrahrgoUv76NZi23koqXOGiiEzXMrT8Q7VcYaUISR+5MorIUxfWqYXN0fN/31WbSrxCxFkVQ43wwrA==
1551+
version "5.5.1"
1552+
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz#470820964de9aedb37e9ce62c3266d2d26d08d15"
1553+
integrity sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==
15541554
dependencies:
15551555
prettier-linter-helpers "^1.0.0"
15561556
synckit "^0.11.7"
@@ -3155,9 +3155,9 @@ prettier-linter-helpers@^1.0.0:
31553155
fast-diff "^1.1.2"
31563156

31573157
prettier@^3.5.0:
3158-
version "3.6.0"
3159-
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.0.tgz#18ec98d62cb0757a5d4eab40253ff3e6d0fc8dea"
3160-
integrity sha512-ujSB9uXHJKzM/2GBuE0hBOUgC77CN3Bnpqa+g80bkv3T3A93wL/xlzDATHhnhkzifz/UE2SNOvmbTz5hSkDlHw==
3158+
version "3.6.1"
3159+
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.1.tgz#cc3bce21c09a477b1e987b76ce9663925d86ae44"
3160+
integrity sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A==
31613161

31623162
process-on-spawn@^1.0.0:
31633163
version "1.1.0"

0 commit comments

Comments
 (0)