@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.
Files changed (865) hide show
  1. package/CHANGELOG.md +712 -0
  2. package/CONTRIBUTING.md +8 -0
  3. package/DCO +37 -0
  4. package/Dockerfile +11 -0
  5. package/LICENSE +21 -0
  6. package/README.md +475 -0
  7. package/bin/yaml-language-server +27 -0
  8. package/docs/scalaruri-custom-tags.md +269 -0
  9. package/l10n/bundle.l10n.de.json +62 -0
  10. package/l10n/bundle.l10n.fr.json +62 -0
  11. package/l10n/bundle.l10n.ja.json +62 -0
  12. package/l10n/bundle.l10n.json +61 -0
  13. package/l10n/bundle.l10n.ko.json +62 -0
  14. package/l10n/bundle.l10n.zh-cn.json +62 -0
  15. package/l10n/bundle.l10n.zh-tw.json +62 -0
  16. package/lib/esm/commands.d.ts +3 -0
  17. package/lib/esm/commands.js +9 -0
  18. package/lib/esm/commands.js.map +1 -0
  19. package/lib/esm/index.d.ts +3 -0
  20. package/lib/esm/index.js +4 -0
  21. package/lib/esm/index.js.map +1 -0
  22. package/lib/esm/languageserver/commandExecutor.d.ts +10 -0
  23. package/lib/esm/languageserver/commandExecutor.js +21 -0
  24. package/lib/esm/languageserver/commandExecutor.js.map +1 -0
  25. package/lib/esm/languageserver/handlers/languageHandlers.d.ts +61 -0
  26. package/lib/esm/languageserver/handlers/languageHandlers.js +236 -0
  27. package/lib/esm/languageserver/handlers/languageHandlers.js.map +1 -0
  28. package/lib/esm/languageserver/handlers/notificationHandlers.d.ts +29 -0
  29. package/lib/esm/languageserver/handlers/notificationHandlers.js +46 -0
  30. package/lib/esm/languageserver/handlers/notificationHandlers.js.map +1 -0
  31. package/lib/esm/languageserver/handlers/requestHandlers.d.ts +9 -0
  32. package/lib/esm/languageserver/handlers/requestHandlers.js +23 -0
  33. package/lib/esm/languageserver/handlers/requestHandlers.js.map +1 -0
  34. package/lib/esm/languageserver/handlers/schemaSelectionHandlers.d.ts +13 -0
  35. package/lib/esm/languageserver/handlers/schemaSelectionHandlers.js +72 -0
  36. package/lib/esm/languageserver/handlers/schemaSelectionHandlers.js.map +1 -0
  37. package/lib/esm/languageserver/handlers/settingsHandlers.d.ts +42 -0
  38. package/lib/esm/languageserver/handlers/settingsHandlers.js +316 -0
  39. package/lib/esm/languageserver/handlers/settingsHandlers.js.map +1 -0
  40. package/lib/esm/languageserver/handlers/validationHandlers.d.ts +15 -0
  41. package/lib/esm/languageserver/handlers/validationHandlers.js +108 -0
  42. package/lib/esm/languageserver/handlers/validationHandlers.js.map +1 -0
  43. package/lib/esm/languageserver/handlers/workspaceHandlers.d.ts +9 -0
  44. package/lib/esm/languageserver/handlers/workspaceHandlers.js +17 -0
  45. package/lib/esm/languageserver/handlers/workspaceHandlers.js.map +1 -0
  46. package/lib/esm/languageserver/telemetry.d.ts +9 -0
  47. package/lib/esm/languageserver/telemetry.js +20 -0
  48. package/lib/esm/languageserver/telemetry.js.map +1 -0
  49. package/lib/esm/languageservice/jsonASTTypes.d.ts +49 -0
  50. package/lib/esm/languageservice/jsonASTTypes.js +6 -0
  51. package/lib/esm/languageservice/jsonASTTypes.js.map +1 -0
  52. package/lib/esm/languageservice/jsonSchema.d.ts +103 -0
  53. package/lib/esm/languageservice/jsonSchema.js +12 -0
  54. package/lib/esm/languageservice/jsonSchema.js.map +1 -0
  55. package/lib/esm/languageservice/parser/ast-converter.d.ts +11 -0
  56. package/lib/esm/languageservice/parser/ast-converter.js +176 -0
  57. package/lib/esm/languageservice/parser/ast-converter.js.map +1 -0
  58. package/lib/esm/languageservice/parser/astNodeUtils.d.ts +4 -0
  59. package/lib/esm/languageservice/parser/astNodeUtils.js +48 -0
  60. package/lib/esm/languageservice/parser/astNodeUtils.js.map +1 -0
  61. package/lib/esm/languageservice/parser/custom-tag-provider.d.ts +7 -0
  62. package/lib/esm/languageservice/parser/custom-tag-provider.js +58 -0
  63. package/lib/esm/languageservice/parser/custom-tag-provider.js.map +1 -0
  64. package/lib/esm/languageservice/parser/isKubernetes.d.ts +4 -0
  65. package/lib/esm/languageservice/parser/isKubernetes.js +17 -0
  66. package/lib/esm/languageservice/parser/isKubernetes.js.map +1 -0
  67. package/lib/esm/languageservice/parser/jsonDocument.d.ts +83 -0
  68. package/lib/esm/languageservice/parser/jsonDocument.js +171 -0
  69. package/lib/esm/languageservice/parser/jsonDocument.js.map +1 -0
  70. package/lib/esm/languageservice/parser/scalar-type.d.ts +8 -0
  71. package/lib/esm/languageservice/parser/scalar-type.js +17 -0
  72. package/lib/esm/languageservice/parser/scalar-type.js.map +1 -0
  73. package/lib/esm/languageservice/parser/schemaValidation/baseValidator.d.ts +124 -0
  74. package/lib/esm/languageservice/parser/schemaValidation/baseValidator.js +1254 -0
  75. package/lib/esm/languageservice/parser/schemaValidation/baseValidator.js.map +1 -0
  76. package/lib/esm/languageservice/parser/schemaValidation/draft04Validator.d.ts +17 -0
  77. package/lib/esm/languageservice/parser/schemaValidation/draft04Validator.js +30 -0
  78. package/lib/esm/languageservice/parser/schemaValidation/draft04Validator.js.map +1 -0
  79. package/lib/esm/languageservice/parser/schemaValidation/draft07Validator.d.ts +15 -0
  80. package/lib/esm/languageservice/parser/schemaValidation/draft07Validator.js +28 -0
  81. package/lib/esm/languageservice/parser/schemaValidation/draft07Validator.js.map +1 -0
  82. package/lib/esm/languageservice/parser/schemaValidation/draft2019Validator.d.ts +28 -0
  83. package/lib/esm/languageservice/parser/schemaValidation/draft2019Validator.js +224 -0
  84. package/lib/esm/languageservice/parser/schemaValidation/draft2019Validator.js.map +1 -0
  85. package/lib/esm/languageservice/parser/schemaValidation/draft2020Validator.d.ts +17 -0
  86. package/lib/esm/languageservice/parser/schemaValidation/draft2020Validator.js +126 -0
  87. package/lib/esm/languageservice/parser/schemaValidation/draft2020Validator.js.map +1 -0
  88. package/lib/esm/languageservice/parser/schemaValidation/validatorFactory.d.ts +3 -0
  89. package/lib/esm/languageservice/parser/schemaValidation/validatorFactory.js +24 -0
  90. package/lib/esm/languageservice/parser/schemaValidation/validatorFactory.js.map +1 -0
  91. package/lib/esm/languageservice/parser/yaml-documents.d.ts +71 -0
  92. package/lib/esm/languageservice/parser/yaml-documents.js +258 -0
  93. package/lib/esm/languageservice/parser/yaml-documents.js.map +1 -0
  94. package/lib/esm/languageservice/parser/yamlParser07.d.ts +15 -0
  95. package/lib/esm/languageservice/parser/yamlParser07.js +50 -0
  96. package/lib/esm/languageservice/parser/yamlParser07.js.map +1 -0
  97. package/lib/esm/languageservice/services/crdUtil.d.ts +23 -0
  98. package/lib/esm/languageservice/services/crdUtil.js +74 -0
  99. package/lib/esm/languageservice/services/crdUtil.js.map +1 -0
  100. package/lib/esm/languageservice/services/documentSymbols.d.ts +12 -0
  101. package/lib/esm/languageservice/services/documentSymbols.js +67 -0
  102. package/lib/esm/languageservice/services/documentSymbols.js.map +1 -0
  103. package/lib/esm/languageservice/services/modelineUtil.d.ts +9 -0
  104. package/lib/esm/languageservice/services/modelineUtil.js +29 -0
  105. package/lib/esm/languageservice/services/modelineUtil.js.map +1 -0
  106. package/lib/esm/languageservice/services/schemaRequestHandler.d.ts +12 -0
  107. package/lib/esm/languageservice/services/schemaRequestHandler.js +84 -0
  108. package/lib/esm/languageservice/services/schemaRequestHandler.js.map +1 -0
  109. package/lib/esm/languageservice/services/validation/map-key-order.d.ts +7 -0
  110. package/lib/esm/languageservice/services/validation/map-key-order.js +35 -0
  111. package/lib/esm/languageservice/services/validation/map-key-order.js.map +1 -0
  112. package/lib/esm/languageservice/services/validation/types.d.ts +6 -0
  113. package/lib/esm/languageservice/services/validation/types.js +6 -0
  114. package/lib/esm/languageservice/services/validation/types.js.map +1 -0
  115. package/lib/esm/languageservice/services/validation/unused-anchors.d.ts +8 -0
  116. package/lib/esm/languageservice/services/validation/unused-anchors.js +91 -0
  117. package/lib/esm/languageservice/services/validation/unused-anchors.js.map +1 -0
  118. package/lib/esm/languageservice/services/validation/yaml-style.d.ts +12 -0
  119. package/lib/esm/languageservice/services/validation/yaml-style.js +28 -0
  120. package/lib/esm/languageservice/services/validation/yaml-style.js.map +1 -0
  121. package/lib/esm/languageservice/services/yamlCodeActions.d.ts +25 -0
  122. package/lib/esm/languageservice/services/yamlCodeActions.js +342 -0
  123. package/lib/esm/languageservice/services/yamlCodeActions.js.map +1 -0
  124. package/lib/esm/languageservice/services/yamlCodeLens.d.ts +11 -0
  125. package/lib/esm/languageservice/services/yamlCodeLens.js +46 -0
  126. package/lib/esm/languageservice/services/yamlCodeLens.js.map +1 -0
  127. package/lib/esm/languageservice/services/yamlCommands.d.ts +3 -0
  128. package/lib/esm/languageservice/services/yamlCommands.js +46 -0
  129. package/lib/esm/languageservice/services/yamlCommands.js.map +1 -0
  130. package/lib/esm/languageservice/services/yamlCompletion.d.ts +77 -0
  131. package/lib/esm/languageservice/services/yamlCompletion.js +1501 -0
  132. package/lib/esm/languageservice/services/yamlCompletion.js.map +1 -0
  133. package/lib/esm/languageservice/services/yamlDefinition.d.ts +9 -0
  134. package/lib/esm/languageservice/services/yamlDefinition.js +37 -0
  135. package/lib/esm/languageservice/services/yamlDefinition.js.map +1 -0
  136. package/lib/esm/languageservice/services/yamlFolding.d.ts +4 -0
  137. package/lib/esm/languageservice/services/yamlFolding.js +62 -0
  138. package/lib/esm/languageservice/services/yamlFolding.js.map +1 -0
  139. package/lib/esm/languageservice/services/yamlFormatter.d.ts +8 -0
  140. package/lib/esm/languageservice/services/yamlFormatter.js +46 -0
  141. package/lib/esm/languageservice/services/yamlFormatter.js.map +1 -0
  142. package/lib/esm/languageservice/services/yamlHover.d.ts +47 -0
  143. package/lib/esm/languageservice/services/yamlHover.js +366 -0
  144. package/lib/esm/languageservice/services/yamlHover.js.map +1 -0
  145. package/lib/esm/languageservice/services/yamlLinks.d.ts +8 -0
  146. package/lib/esm/languageservice/services/yamlLinks.js +27 -0
  147. package/lib/esm/languageservice/services/yamlLinks.js.map +1 -0
  148. package/lib/esm/languageservice/services/yamlOnTypeFormatting.d.ts +4 -0
  149. package/lib/esm/languageservice/services/yamlOnTypeFormatting.js +43 -0
  150. package/lib/esm/languageservice/services/yamlOnTypeFormatting.js.map +1 -0
  151. package/lib/esm/languageservice/services/yamlRename.d.ts +18 -0
  152. package/lib/esm/languageservice/services/yamlRename.js +184 -0
  153. package/lib/esm/languageservice/services/yamlRename.js.map +1 -0
  154. package/lib/esm/languageservice/services/yamlSchemaService.d.ts +99 -0
  155. package/lib/esm/languageservice/services/yamlSchemaService.js +1110 -0
  156. package/lib/esm/languageservice/services/yamlSchemaService.js.map +1 -0
  157. package/lib/esm/languageservice/services/yamlSelectionRanges.d.ts +3 -0
  158. package/lib/esm/languageservice/services/yamlSelectionRanges.js +130 -0
  159. package/lib/esm/languageservice/services/yamlSelectionRanges.js.map +1 -0
  160. package/lib/esm/languageservice/services/yamlValidation.d.ts +26 -0
  161. package/lib/esm/languageservice/services/yamlValidation.js +135 -0
  162. package/lib/esm/languageservice/services/yamlValidation.js.map +1 -0
  163. package/lib/esm/languageservice/telemetry.d.ts +16 -0
  164. package/lib/esm/languageservice/telemetry.js +6 -0
  165. package/lib/esm/languageservice/telemetry.js.map +1 -0
  166. package/lib/esm/languageservice/utils/arrUtils.d.ts +6 -0
  167. package/lib/esm/languageservice/utils/arrUtils.js +81 -0
  168. package/lib/esm/languageservice/utils/arrUtils.js.map +1 -0
  169. package/lib/esm/languageservice/utils/block-string-rewriter.d.ts +8 -0
  170. package/lib/esm/languageservice/utils/block-string-rewriter.js +215 -0
  171. package/lib/esm/languageservice/utils/block-string-rewriter.js.map +1 -0
  172. package/lib/esm/languageservice/utils/charCode.d.ts +415 -0
  173. package/lib/esm/languageservice/utils/charCode.js +6 -0
  174. package/lib/esm/languageservice/utils/charCode.js.map +1 -0
  175. package/lib/esm/languageservice/utils/diagnostic-filter.d.ts +50 -0
  176. package/lib/esm/languageservice/utils/diagnostic-filter.js +82 -0
  177. package/lib/esm/languageservice/utils/diagnostic-filter.js.map +1 -0
  178. package/lib/esm/languageservice/utils/documentPositionCalculator.d.ts +5 -0
  179. package/lib/esm/languageservice/utils/documentPositionCalculator.js +56 -0
  180. package/lib/esm/languageservice/utils/documentPositionCalculator.js.map +1 -0
  181. package/lib/esm/languageservice/utils/filePatternAssociation.d.ts +8 -0
  182. package/lib/esm/languageservice/utils/filePatternAssociation.js +23 -0
  183. package/lib/esm/languageservice/utils/filePatternAssociation.js.map +1 -0
  184. package/lib/esm/languageservice/utils/flow-style-rewriter.d.ts +6 -0
  185. package/lib/esm/languageservice/utils/flow-style-rewriter.js +53 -0
  186. package/lib/esm/languageservice/utils/flow-style-rewriter.js.map +1 -0
  187. package/lib/esm/languageservice/utils/indentationGuesser.d.ts +15 -0
  188. package/lib/esm/languageservice/utils/indentationGuesser.js +176 -0
  189. package/lib/esm/languageservice/utils/indentationGuesser.js.map +1 -0
  190. package/lib/esm/languageservice/utils/json.d.ts +11 -0
  191. package/lib/esm/languageservice/utils/json.js +79 -0
  192. package/lib/esm/languageservice/utils/json.js.map +1 -0
  193. package/lib/esm/languageservice/utils/math.d.ts +1 -0
  194. package/lib/esm/languageservice/utils/math.js +9 -0
  195. package/lib/esm/languageservice/utils/math.js.map +1 -0
  196. package/lib/esm/languageservice/utils/objects.d.ts +16 -0
  197. package/lib/esm/languageservice/utils/objects.js +92 -0
  198. package/lib/esm/languageservice/utils/objects.js.map +1 -0
  199. package/lib/esm/languageservice/utils/parseUtils.d.ts +17 -0
  200. package/lib/esm/languageservice/utils/parseUtils.js +2 -0
  201. package/lib/esm/languageservice/utils/parseUtils.js.map +1 -0
  202. package/lib/esm/languageservice/utils/paths.d.ts +5 -0
  203. package/lib/esm/languageservice/utils/paths.js +42 -0
  204. package/lib/esm/languageservice/utils/paths.js.map +1 -0
  205. package/lib/esm/languageservice/utils/schemaUrls.d.ts +14 -0
  206. package/lib/esm/languageservice/utils/schemaUrls.js +59 -0
  207. package/lib/esm/languageservice/utils/schemaUrls.js.map +1 -0
  208. package/lib/esm/languageservice/utils/schemaUtils.d.ts +19 -0
  209. package/lib/esm/languageservice/utils/schemaUtils.js +62 -0
  210. package/lib/esm/languageservice/utils/schemaUtils.js.map +1 -0
  211. package/lib/esm/languageservice/utils/strings.d.ts +10 -0
  212. package/lib/esm/languageservice/utils/strings.js +79 -0
  213. package/lib/esm/languageservice/utils/strings.js.map +1 -0
  214. package/lib/esm/languageservice/utils/textBuffer.d.ts +12 -0
  215. package/lib/esm/languageservice/utils/textBuffer.js +45 -0
  216. package/lib/esm/languageservice/utils/textBuffer.js.map +1 -0
  217. package/lib/esm/languageservice/utils/yamlAstUtils.d.ts +13 -0
  218. package/lib/esm/languageservice/utils/yamlAstUtils.js +108 -0
  219. package/lib/esm/languageservice/utils/yamlAstUtils.js.map +1 -0
  220. package/lib/esm/languageservice/utils/yamlScalar.d.ts +1 -0
  221. package/lib/esm/languageservice/utils/yamlScalar.js +69 -0
  222. package/lib/esm/languageservice/utils/yamlScalar.js.map +1 -0
  223. package/lib/esm/languageservice/yamlLanguageService.d.ts +135 -0
  224. package/lib/esm/languageservice/yamlLanguageService.js +101 -0
  225. package/lib/esm/languageservice/yamlLanguageService.js.map +1 -0
  226. package/lib/esm/languageservice/yamlTypes.d.ts +18 -0
  227. package/lib/esm/languageservice/yamlTypes.js +6 -0
  228. package/lib/esm/languageservice/yamlTypes.js.map +1 -0
  229. package/lib/esm/nodeTranslationSetup.d.ts +9 -0
  230. package/lib/esm/nodeTranslationSetup.js +34 -0
  231. package/lib/esm/nodeTranslationSetup.js.map +1 -0
  232. package/lib/esm/requestTypes.d.ts +63 -0
  233. package/lib/esm/requestTypes.js +46 -0
  234. package/lib/esm/requestTypes.js.map +1 -0
  235. package/lib/esm/server.d.ts +1 -0
  236. package/lib/esm/server.js +55 -0
  237. package/lib/esm/server.js.map +1 -0
  238. package/lib/esm/webworker/yamlServerMain.d.ts +1 -0
  239. package/lib/esm/webworker/yamlServerMain.js +40 -0
  240. package/lib/esm/webworker/yamlServerMain.js.map +1 -0
  241. package/lib/esm/yamlServerInit.d.ts +23 -0
  242. package/lib/esm/yamlServerInit.js +123 -0
  243. package/lib/esm/yamlServerInit.js.map +1 -0
  244. package/lib/esm/yamlSettings.d.ts +112 -0
  245. package/lib/esm/yamlSettings.js +69 -0
  246. package/lib/esm/yamlSettings.js.map +1 -0
  247. package/lib/umd/commands.d.ts +3 -0
  248. package/lib/umd/commands.js +22 -0
  249. package/lib/umd/commands.js.map +1 -0
  250. package/lib/umd/index.d.ts +3 -0
  251. package/lib/umd/index.js +32 -0
  252. package/lib/umd/index.js.map +1 -0
  253. package/lib/umd/languageserver/commandExecutor.d.ts +10 -0
  254. package/lib/umd/languageserver/commandExecutor.js +35 -0
  255. package/lib/umd/languageserver/commandExecutor.js.map +1 -0
  256. package/lib/umd/languageserver/handlers/languageHandlers.d.ts +61 -0
  257. package/lib/umd/languageserver/handlers/languageHandlers.js +250 -0
  258. package/lib/umd/languageserver/handlers/languageHandlers.js.map +1 -0
  259. package/lib/umd/languageserver/handlers/notificationHandlers.d.ts +29 -0
  260. package/lib/umd/languageserver/handlers/notificationHandlers.js +60 -0
  261. package/lib/umd/languageserver/handlers/notificationHandlers.js.map +1 -0
  262. package/lib/umd/languageserver/handlers/requestHandlers.d.ts +9 -0
  263. package/lib/umd/languageserver/handlers/requestHandlers.js +37 -0
  264. package/lib/umd/languageserver/handlers/requestHandlers.js.map +1 -0
  265. package/lib/umd/languageserver/handlers/schemaSelectionHandlers.d.ts +13 -0
  266. package/lib/umd/languageserver/handlers/schemaSelectionHandlers.js +86 -0
  267. package/lib/umd/languageserver/handlers/schemaSelectionHandlers.js.map +1 -0
  268. package/lib/umd/languageserver/handlers/settingsHandlers.d.ts +42 -0
  269. package/lib/umd/languageserver/handlers/settingsHandlers.js +330 -0
  270. package/lib/umd/languageserver/handlers/settingsHandlers.js.map +1 -0
  271. package/lib/umd/languageserver/handlers/validationHandlers.d.ts +15 -0
  272. package/lib/umd/languageserver/handlers/validationHandlers.js +122 -0
  273. package/lib/umd/languageserver/handlers/validationHandlers.js.map +1 -0
  274. package/lib/umd/languageserver/handlers/workspaceHandlers.d.ts +9 -0
  275. package/lib/umd/languageserver/handlers/workspaceHandlers.js +31 -0
  276. package/lib/umd/languageserver/handlers/workspaceHandlers.js.map +1 -0
  277. package/lib/umd/languageserver/telemetry.d.ts +9 -0
  278. package/lib/umd/languageserver/telemetry.js +34 -0
  279. package/lib/umd/languageserver/telemetry.js.map +1 -0
  280. package/lib/umd/languageservice/jsonASTTypes.d.ts +49 -0
  281. package/lib/umd/languageservice/jsonASTTypes.js +17 -0
  282. package/lib/umd/languageservice/jsonASTTypes.js.map +1 -0
  283. package/lib/umd/languageservice/jsonSchema.d.ts +103 -0
  284. package/lib/umd/languageservice/jsonSchema.js +25 -0
  285. package/lib/umd/languageservice/jsonSchema.js.map +1 -0
  286. package/lib/umd/languageservice/parser/ast-converter.d.ts +11 -0
  287. package/lib/umd/languageservice/parser/ast-converter.js +191 -0
  288. package/lib/umd/languageservice/parser/ast-converter.js.map +1 -0
  289. package/lib/umd/languageservice/parser/astNodeUtils.d.ts +4 -0
  290. package/lib/umd/languageservice/parser/astNodeUtils.js +64 -0
  291. package/lib/umd/languageservice/parser/astNodeUtils.js.map +1 -0
  292. package/lib/umd/languageservice/parser/custom-tag-provider.d.ts +7 -0
  293. package/lib/umd/languageservice/parser/custom-tag-provider.js +72 -0
  294. package/lib/umd/languageservice/parser/custom-tag-provider.js.map +1 -0
  295. package/lib/umd/languageservice/parser/isKubernetes.d.ts +4 -0
  296. package/lib/umd/languageservice/parser/isKubernetes.js +32 -0
  297. package/lib/umd/languageservice/parser/isKubernetes.js.map +1 -0
  298. package/lib/umd/languageservice/parser/jsonDocument.d.ts +83 -0
  299. package/lib/umd/languageservice/parser/jsonDocument.js +193 -0
  300. package/lib/umd/languageservice/parser/jsonDocument.js.map +1 -0
  301. package/lib/umd/languageservice/parser/scalar-type.d.ts +8 -0
  302. package/lib/umd/languageservice/parser/scalar-type.js +31 -0
  303. package/lib/umd/languageservice/parser/scalar-type.js.map +1 -0
  304. package/lib/umd/languageservice/parser/schemaValidation/baseValidator.d.ts +124 -0
  305. package/lib/umd/languageservice/parser/schemaValidation/baseValidator.js +1270 -0
  306. package/lib/umd/languageservice/parser/schemaValidation/baseValidator.js.map +1 -0
  307. package/lib/umd/languageservice/parser/schemaValidation/draft04Validator.d.ts +17 -0
  308. package/lib/umd/languageservice/parser/schemaValidation/draft04Validator.js +44 -0
  309. package/lib/umd/languageservice/parser/schemaValidation/draft04Validator.js.map +1 -0
  310. package/lib/umd/languageservice/parser/schemaValidation/draft07Validator.d.ts +15 -0
  311. package/lib/umd/languageservice/parser/schemaValidation/draft07Validator.js +42 -0
  312. package/lib/umd/languageservice/parser/schemaValidation/draft07Validator.js.map +1 -0
  313. package/lib/umd/languageservice/parser/schemaValidation/draft2019Validator.d.ts +28 -0
  314. package/lib/umd/languageservice/parser/schemaValidation/draft2019Validator.js +238 -0
  315. package/lib/umd/languageservice/parser/schemaValidation/draft2019Validator.js.map +1 -0
  316. package/lib/umd/languageservice/parser/schemaValidation/draft2020Validator.d.ts +17 -0
  317. package/lib/umd/languageservice/parser/schemaValidation/draft2020Validator.js +140 -0
  318. package/lib/umd/languageservice/parser/schemaValidation/draft2020Validator.js.map +1 -0
  319. package/lib/umd/languageservice/parser/schemaValidation/validatorFactory.d.ts +3 -0
  320. package/lib/umd/languageservice/parser/schemaValidation/validatorFactory.js +38 -0
  321. package/lib/umd/languageservice/parser/schemaValidation/validatorFactory.js.map +1 -0
  322. package/lib/umd/languageservice/parser/yaml-documents.d.ts +71 -0
  323. package/lib/umd/languageservice/parser/yaml-documents.js +274 -0
  324. package/lib/umd/languageservice/parser/yaml-documents.js.map +1 -0
  325. package/lib/umd/languageservice/parser/yamlParser07.d.ts +15 -0
  326. package/lib/umd/languageservice/parser/yamlParser07.js +65 -0
  327. package/lib/umd/languageservice/parser/yamlParser07.js.map +1 -0
  328. package/lib/umd/languageservice/services/crdUtil.d.ts +23 -0
  329. package/lib/umd/languageservice/services/crdUtil.js +89 -0
  330. package/lib/umd/languageservice/services/crdUtil.js.map +1 -0
  331. package/lib/umd/languageservice/services/documentSymbols.d.ts +12 -0
  332. package/lib/umd/languageservice/services/documentSymbols.js +81 -0
  333. package/lib/umd/languageservice/services/documentSymbols.js.map +1 -0
  334. package/lib/umd/languageservice/services/modelineUtil.d.ts +9 -0
  335. package/lib/umd/languageservice/services/modelineUtil.js +44 -0
  336. package/lib/umd/languageservice/services/modelineUtil.js.map +1 -0
  337. package/lib/umd/languageservice/services/schemaRequestHandler.d.ts +12 -0
  338. package/lib/umd/languageservice/services/schemaRequestHandler.js +98 -0
  339. package/lib/umd/languageservice/services/schemaRequestHandler.js.map +1 -0
  340. package/lib/umd/languageservice/services/validation/map-key-order.d.ts +7 -0
  341. package/lib/umd/languageservice/services/validation/map-key-order.js +49 -0
  342. package/lib/umd/languageservice/services/validation/map-key-order.js.map +1 -0
  343. package/lib/umd/languageservice/services/validation/types.d.ts +6 -0
  344. package/lib/umd/languageservice/services/validation/types.js +17 -0
  345. package/lib/umd/languageservice/services/validation/types.js.map +1 -0
  346. package/lib/umd/languageservice/services/validation/unused-anchors.d.ts +8 -0
  347. package/lib/umd/languageservice/services/validation/unused-anchors.js +105 -0
  348. package/lib/umd/languageservice/services/validation/unused-anchors.js.map +1 -0
  349. package/lib/umd/languageservice/services/validation/yaml-style.d.ts +12 -0
  350. package/lib/umd/languageservice/services/validation/yaml-style.js +42 -0
  351. package/lib/umd/languageservice/services/validation/yaml-style.js.map +1 -0
  352. package/lib/umd/languageservice/services/yamlCodeActions.d.ts +25 -0
  353. package/lib/umd/languageservice/services/yamlCodeActions.js +356 -0
  354. package/lib/umd/languageservice/services/yamlCodeActions.js.map +1 -0
  355. package/lib/umd/languageservice/services/yamlCodeLens.d.ts +11 -0
  356. package/lib/umd/languageservice/services/yamlCodeLens.js +60 -0
  357. package/lib/umd/languageservice/services/yamlCodeLens.js.map +1 -0
  358. package/lib/umd/languageservice/services/yamlCommands.d.ts +3 -0
  359. package/lib/umd/languageservice/services/yamlCommands.js +60 -0
  360. package/lib/umd/languageservice/services/yamlCommands.js.map +1 -0
  361. package/lib/umd/languageservice/services/yamlCompletion.d.ts +77 -0
  362. package/lib/umd/languageservice/services/yamlCompletion.js +1515 -0
  363. package/lib/umd/languageservice/services/yamlCompletion.js.map +1 -0
  364. package/lib/umd/languageservice/services/yamlDefinition.d.ts +9 -0
  365. package/lib/umd/languageservice/services/yamlDefinition.js +51 -0
  366. package/lib/umd/languageservice/services/yamlDefinition.js.map +1 -0
  367. package/lib/umd/languageservice/services/yamlFolding.d.ts +4 -0
  368. package/lib/umd/languageservice/services/yamlFolding.js +76 -0
  369. package/lib/umd/languageservice/services/yamlFolding.js.map +1 -0
  370. package/lib/umd/languageservice/services/yamlFormatter.d.ts +8 -0
  371. package/lib/umd/languageservice/services/yamlFormatter.js +60 -0
  372. package/lib/umd/languageservice/services/yamlFormatter.js.map +1 -0
  373. package/lib/umd/languageservice/services/yamlHover.d.ts +47 -0
  374. package/lib/umd/languageservice/services/yamlHover.js +380 -0
  375. package/lib/umd/languageservice/services/yamlHover.js.map +1 -0
  376. package/lib/umd/languageservice/services/yamlLinks.d.ts +8 -0
  377. package/lib/umd/languageservice/services/yamlLinks.js +41 -0
  378. package/lib/umd/languageservice/services/yamlLinks.js.map +1 -0
  379. package/lib/umd/languageservice/services/yamlOnTypeFormatting.d.ts +4 -0
  380. package/lib/umd/languageservice/services/yamlOnTypeFormatting.js +57 -0
  381. package/lib/umd/languageservice/services/yamlOnTypeFormatting.js.map +1 -0
  382. package/lib/umd/languageservice/services/yamlRename.d.ts +18 -0
  383. package/lib/umd/languageservice/services/yamlRename.js +198 -0
  384. package/lib/umd/languageservice/services/yamlRename.js.map +1 -0
  385. package/lib/umd/languageservice/services/yamlSchemaService.d.ts +99 -0
  386. package/lib/umd/languageservice/services/yamlSchemaService.js +1124 -0
  387. package/lib/umd/languageservice/services/yamlSchemaService.js.map +1 -0
  388. package/lib/umd/languageservice/services/yamlSelectionRanges.d.ts +3 -0
  389. package/lib/umd/languageservice/services/yamlSelectionRanges.js +144 -0
  390. package/lib/umd/languageservice/services/yamlSelectionRanges.js.map +1 -0
  391. package/lib/umd/languageservice/services/yamlValidation.d.ts +26 -0
  392. package/lib/umd/languageservice/services/yamlValidation.js +150 -0
  393. package/lib/umd/languageservice/services/yamlValidation.js.map +1 -0
  394. package/lib/umd/languageservice/telemetry.d.ts +16 -0
  395. package/lib/umd/languageservice/telemetry.js +17 -0
  396. package/lib/umd/languageservice/telemetry.js.map +1 -0
  397. package/lib/umd/languageservice/utils/arrUtils.d.ts +6 -0
  398. package/lib/umd/languageservice/utils/arrUtils.js +99 -0
  399. package/lib/umd/languageservice/utils/arrUtils.js.map +1 -0
  400. package/lib/umd/languageservice/utils/block-string-rewriter.d.ts +8 -0
  401. package/lib/umd/languageservice/utils/block-string-rewriter.js +229 -0
  402. package/lib/umd/languageservice/utils/block-string-rewriter.js.map +1 -0
  403. package/lib/umd/languageservice/utils/charCode.d.ts +415 -0
  404. package/lib/umd/languageservice/utils/charCode.js +17 -0
  405. package/lib/umd/languageservice/utils/charCode.js.map +1 -0
  406. package/lib/umd/languageservice/utils/diagnostic-filter.d.ts +50 -0
  407. package/lib/umd/languageservice/utils/diagnostic-filter.js +98 -0
  408. package/lib/umd/languageservice/utils/diagnostic-filter.js.map +1 -0
  409. package/lib/umd/languageservice/utils/documentPositionCalculator.d.ts +5 -0
  410. package/lib/umd/languageservice/utils/documentPositionCalculator.js +73 -0
  411. package/lib/umd/languageservice/utils/documentPositionCalculator.js.map +1 -0
  412. package/lib/umd/languageservice/utils/filePatternAssociation.d.ts +8 -0
  413. package/lib/umd/languageservice/utils/filePatternAssociation.js +37 -0
  414. package/lib/umd/languageservice/utils/filePatternAssociation.js.map +1 -0
  415. package/lib/umd/languageservice/utils/flow-style-rewriter.d.ts +6 -0
  416. package/lib/umd/languageservice/utils/flow-style-rewriter.js +67 -0
  417. package/lib/umd/languageservice/utils/flow-style-rewriter.js.map +1 -0
  418. package/lib/umd/languageservice/utils/indentationGuesser.d.ts +15 -0
  419. package/lib/umd/languageservice/utils/indentationGuesser.js +190 -0
  420. package/lib/umd/languageservice/utils/indentationGuesser.js.map +1 -0
  421. package/lib/umd/languageservice/utils/json.d.ts +11 -0
  422. package/lib/umd/languageservice/utils/json.js +93 -0
  423. package/lib/umd/languageservice/utils/json.js.map +1 -0
  424. package/lib/umd/languageservice/utils/math.d.ts +1 -0
  425. package/lib/umd/languageservice/utils/math.js +23 -0
  426. package/lib/umd/languageservice/utils/math.js.map +1 -0
  427. package/lib/umd/languageservice/utils/objects.d.ts +16 -0
  428. package/lib/umd/languageservice/utils/objects.js +112 -0
  429. package/lib/umd/languageservice/utils/objects.js.map +1 -0
  430. package/lib/umd/languageservice/utils/parseUtils.d.ts +17 -0
  431. package/lib/umd/languageservice/utils/parseUtils.js +15 -0
  432. package/lib/umd/languageservice/utils/parseUtils.js.map +1 -0
  433. package/lib/umd/languageservice/utils/paths.d.ts +5 -0
  434. package/lib/umd/languageservice/utils/paths.js +58 -0
  435. package/lib/umd/languageservice/utils/paths.js.map +1 -0
  436. package/lib/umd/languageservice/utils/schemaUrls.d.ts +14 -0
  437. package/lib/umd/languageservice/utils/schemaUrls.js +74 -0
  438. package/lib/umd/languageservice/utils/schemaUrls.js.map +1 -0
  439. package/lib/umd/languageservice/utils/schemaUtils.d.ts +19 -0
  440. package/lib/umd/languageservice/utils/schemaUtils.js +80 -0
  441. package/lib/umd/languageservice/utils/schemaUtils.js.map +1 -0
  442. package/lib/umd/languageservice/utils/strings.d.ts +10 -0
  443. package/lib/umd/languageservice/utils/strings.js +99 -0
  444. package/lib/umd/languageservice/utils/strings.js.map +1 -0
  445. package/lib/umd/languageservice/utils/textBuffer.d.ts +12 -0
  446. package/lib/umd/languageservice/utils/textBuffer.js +59 -0
  447. package/lib/umd/languageservice/utils/textBuffer.js.map +1 -0
  448. package/lib/umd/languageservice/utils/yamlAstUtils.d.ts +13 -0
  449. package/lib/umd/languageservice/utils/yamlAstUtils.js +126 -0
  450. package/lib/umd/languageservice/utils/yamlAstUtils.js.map +1 -0
  451. package/lib/umd/languageservice/utils/yamlScalar.d.ts +1 -0
  452. package/lib/umd/languageservice/utils/yamlScalar.js +83 -0
  453. package/lib/umd/languageservice/utils/yamlScalar.js.map +1 -0
  454. package/lib/umd/languageservice/yamlLanguageService.d.ts +135 -0
  455. package/lib/umd/languageservice/yamlLanguageService.js +115 -0
  456. package/lib/umd/languageservice/yamlLanguageService.js.map +1 -0
  457. package/lib/umd/languageservice/yamlTypes.d.ts +18 -0
  458. package/lib/umd/languageservice/yamlTypes.js +17 -0
  459. package/lib/umd/languageservice/yamlTypes.js.map +1 -0
  460. package/lib/umd/nodeTranslationSetup.d.ts +9 -0
  461. package/lib/umd/nodeTranslationSetup.js +48 -0
  462. package/lib/umd/nodeTranslationSetup.js.map +1 -0
  463. package/lib/umd/requestTypes.d.ts +63 -0
  464. package/lib/umd/requestTypes.js +59 -0
  465. package/lib/umd/requestTypes.js.map +1 -0
  466. package/lib/umd/server.d.ts +1 -0
  467. package/lib/umd/server.js +67 -0
  468. package/lib/umd/server.js.map +1 -0
  469. package/lib/umd/webworker/yamlServerMain.d.ts +1 -0
  470. package/lib/umd/webworker/yamlServerMain.js +52 -0
  471. package/lib/umd/webworker/yamlServerMain.js.map +1 -0
  472. package/lib/umd/yamlServerInit.d.ts +23 -0
  473. package/lib/umd/yamlServerInit.js +137 -0
  474. package/lib/umd/yamlServerInit.js.map +1 -0
  475. package/lib/umd/yamlSettings.d.ts +112 -0
  476. package/lib/umd/yamlSettings.js +84 -0
  477. package/lib/umd/yamlSettings.js.map +1 -0
  478. package/out/server/src/commands.d.ts +3 -0
  479. package/out/server/src/commands.js +12 -0
  480. package/out/server/src/commands.js.map +1 -0
  481. package/out/server/src/index.d.ts +3 -0
  482. package/out/server/src/index.js +22 -0
  483. package/out/server/src/index.js.map +1 -0
  484. package/out/server/src/languageserver/commandExecutor.d.ts +10 -0
  485. package/out/server/src/languageserver/commandExecutor.js +25 -0
  486. package/out/server/src/languageserver/commandExecutor.js.map +1 -0
  487. package/out/server/src/languageserver/handlers/languageHandlers.d.ts +61 -0
  488. package/out/server/src/languageserver/handlers/languageHandlers.js +240 -0
  489. package/out/server/src/languageserver/handlers/languageHandlers.js.map +1 -0
  490. package/out/server/src/languageserver/handlers/notificationHandlers.d.ts +29 -0
  491. package/out/server/src/languageserver/handlers/notificationHandlers.js +50 -0
  492. package/out/server/src/languageserver/handlers/notificationHandlers.js.map +1 -0
  493. package/out/server/src/languageserver/handlers/requestHandlers.d.ts +9 -0
  494. package/out/server/src/languageserver/handlers/requestHandlers.js +27 -0
  495. package/out/server/src/languageserver/handlers/requestHandlers.js.map +1 -0
  496. package/out/server/src/languageserver/handlers/schemaSelectionHandlers.d.ts +13 -0
  497. package/out/server/src/languageserver/handlers/schemaSelectionHandlers.js +76 -0
  498. package/out/server/src/languageserver/handlers/schemaSelectionHandlers.js.map +1 -0
  499. package/out/server/src/languageserver/handlers/settingsHandlers.d.ts +42 -0
  500. package/out/server/src/languageserver/handlers/settingsHandlers.js +320 -0
  501. package/out/server/src/languageserver/handlers/settingsHandlers.js.map +1 -0
  502. package/out/server/src/languageserver/handlers/validationHandlers.d.ts +15 -0
  503. package/out/server/src/languageserver/handlers/validationHandlers.js +112 -0
  504. package/out/server/src/languageserver/handlers/validationHandlers.js.map +1 -0
  505. package/out/server/src/languageserver/handlers/workspaceHandlers.d.ts +9 -0
  506. package/out/server/src/languageserver/handlers/workspaceHandlers.js +21 -0
  507. package/out/server/src/languageserver/handlers/workspaceHandlers.js.map +1 -0
  508. package/out/server/src/languageserver/telemetry.d.ts +9 -0
  509. package/out/server/src/languageserver/telemetry.js +24 -0
  510. package/out/server/src/languageserver/telemetry.js.map +1 -0
  511. package/out/server/src/languageservice/jsonASTTypes.d.ts +49 -0
  512. package/out/server/src/languageservice/jsonASTTypes.js +7 -0
  513. package/out/server/src/languageservice/jsonASTTypes.js.map +1 -0
  514. package/out/server/src/languageservice/jsonSchema.d.ts +103 -0
  515. package/out/server/src/languageservice/jsonSchema.js +15 -0
  516. package/out/server/src/languageservice/jsonSchema.js.map +1 -0
  517. package/out/server/src/languageservice/parser/ast-converter.d.ts +11 -0
  518. package/out/server/src/languageservice/parser/ast-converter.js +181 -0
  519. package/out/server/src/languageservice/parser/ast-converter.js.map +1 -0
  520. package/out/server/src/languageservice/parser/astNodeUtils.d.ts +4 -0
  521. package/out/server/src/languageservice/parser/astNodeUtils.js +54 -0
  522. package/out/server/src/languageservice/parser/astNodeUtils.js.map +1 -0
  523. package/out/server/src/languageservice/parser/custom-tag-provider.d.ts +7 -0
  524. package/out/server/src/languageservice/parser/custom-tag-provider.js +62 -0
  525. package/out/server/src/languageservice/parser/custom-tag-provider.js.map +1 -0
  526. package/out/server/src/languageservice/parser/isKubernetes.d.ts +4 -0
  527. package/out/server/src/languageservice/parser/isKubernetes.js +22 -0
  528. package/out/server/src/languageservice/parser/isKubernetes.js.map +1 -0
  529. package/out/server/src/languageservice/parser/jsonDocument.d.ts +83 -0
  530. package/out/server/src/languageservice/parser/jsonDocument.js +183 -0
  531. package/out/server/src/languageservice/parser/jsonDocument.js.map +1 -0
  532. package/out/server/src/languageservice/parser/scalar-type.d.ts +8 -0
  533. package/out/server/src/languageservice/parser/scalar-type.js +21 -0
  534. package/out/server/src/languageservice/parser/scalar-type.js.map +1 -0
  535. package/out/server/src/languageservice/parser/schemaValidation/baseValidator.d.ts +124 -0
  536. package/out/server/src/languageservice/parser/schemaValidation/baseValidator.js +1260 -0
  537. package/out/server/src/languageservice/parser/schemaValidation/baseValidator.js.map +1 -0
  538. package/out/server/src/languageservice/parser/schemaValidation/draft04Validator.d.ts +17 -0
  539. package/out/server/src/languageservice/parser/schemaValidation/draft04Validator.js +34 -0
  540. package/out/server/src/languageservice/parser/schemaValidation/draft04Validator.js.map +1 -0
  541. package/out/server/src/languageservice/parser/schemaValidation/draft07Validator.d.ts +15 -0
  542. package/out/server/src/languageservice/parser/schemaValidation/draft07Validator.js +32 -0
  543. package/out/server/src/languageservice/parser/schemaValidation/draft07Validator.js.map +1 -0
  544. package/out/server/src/languageservice/parser/schemaValidation/draft2019Validator.d.ts +28 -0
  545. package/out/server/src/languageservice/parser/schemaValidation/draft2019Validator.js +228 -0
  546. package/out/server/src/languageservice/parser/schemaValidation/draft2019Validator.js.map +1 -0
  547. package/out/server/src/languageservice/parser/schemaValidation/draft2020Validator.d.ts +17 -0
  548. package/out/server/src/languageservice/parser/schemaValidation/draft2020Validator.js +130 -0
  549. package/out/server/src/languageservice/parser/schemaValidation/draft2020Validator.js.map +1 -0
  550. package/out/server/src/languageservice/parser/schemaValidation/validatorFactory.d.ts +3 -0
  551. package/out/server/src/languageservice/parser/schemaValidation/validatorFactory.js +28 -0
  552. package/out/server/src/languageservice/parser/schemaValidation/validatorFactory.js.map +1 -0
  553. package/out/server/src/languageservice/parser/yaml-documents.d.ts +71 -0
  554. package/out/server/src/languageservice/parser/yaml-documents.js +264 -0
  555. package/out/server/src/languageservice/parser/yaml-documents.js.map +1 -0
  556. package/out/server/src/languageservice/parser/yamlParser07.d.ts +15 -0
  557. package/out/server/src/languageservice/parser/yamlParser07.js +55 -0
  558. package/out/server/src/languageservice/parser/yamlParser07.js.map +1 -0
  559. package/out/server/src/languageservice/services/crdUtil.d.ts +23 -0
  560. package/out/server/src/languageservice/services/crdUtil.js +79 -0
  561. package/out/server/src/languageservice/services/crdUtil.js.map +1 -0
  562. package/out/server/src/languageservice/services/documentSymbols.d.ts +12 -0
  563. package/out/server/src/languageservice/services/documentSymbols.js +71 -0
  564. package/out/server/src/languageservice/services/documentSymbols.js.map +1 -0
  565. package/out/server/src/languageservice/services/modelineUtil.d.ts +9 -0
  566. package/out/server/src/languageservice/services/modelineUtil.js +34 -0
  567. package/out/server/src/languageservice/services/modelineUtil.js.map +1 -0
  568. package/out/server/src/languageservice/services/schemaRequestHandler.d.ts +12 -0
  569. package/out/server/src/languageservice/services/schemaRequestHandler.js +88 -0
  570. package/out/server/src/languageservice/services/schemaRequestHandler.js.map +1 -0
  571. package/out/server/src/languageservice/services/validation/map-key-order.d.ts +7 -0
  572. package/out/server/src/languageservice/services/validation/map-key-order.js +39 -0
  573. package/out/server/src/languageservice/services/validation/map-key-order.js.map +1 -0
  574. package/out/server/src/languageservice/services/validation/types.d.ts +6 -0
  575. package/out/server/src/languageservice/services/validation/types.js +7 -0
  576. package/out/server/src/languageservice/services/validation/types.js.map +1 -0
  577. package/out/server/src/languageservice/services/validation/unused-anchors.d.ts +8 -0
  578. package/out/server/src/languageservice/services/validation/unused-anchors.js +95 -0
  579. package/out/server/src/languageservice/services/validation/unused-anchors.js.map +1 -0
  580. package/out/server/src/languageservice/services/validation/yaml-style.d.ts +12 -0
  581. package/out/server/src/languageservice/services/validation/yaml-style.js +32 -0
  582. package/out/server/src/languageservice/services/validation/yaml-style.js.map +1 -0
  583. package/out/server/src/languageservice/services/yamlCodeActions.d.ts +25 -0
  584. package/out/server/src/languageservice/services/yamlCodeActions.js +346 -0
  585. package/out/server/src/languageservice/services/yamlCodeActions.js.map +1 -0
  586. package/out/server/src/languageservice/services/yamlCodeLens.d.ts +11 -0
  587. package/out/server/src/languageservice/services/yamlCodeLens.js +50 -0
  588. package/out/server/src/languageservice/services/yamlCodeLens.js.map +1 -0
  589. package/out/server/src/languageservice/services/yamlCommands.d.ts +3 -0
  590. package/out/server/src/languageservice/services/yamlCommands.js +50 -0
  591. package/out/server/src/languageservice/services/yamlCommands.js.map +1 -0
  592. package/out/server/src/languageservice/services/yamlCompletion.d.ts +77 -0
  593. package/out/server/src/languageservice/services/yamlCompletion.js +1505 -0
  594. package/out/server/src/languageservice/services/yamlCompletion.js.map +1 -0
  595. package/out/server/src/languageservice/services/yamlDefinition.d.ts +9 -0
  596. package/out/server/src/languageservice/services/yamlDefinition.js +41 -0
  597. package/out/server/src/languageservice/services/yamlDefinition.js.map +1 -0
  598. package/out/server/src/languageservice/services/yamlFolding.d.ts +4 -0
  599. package/out/server/src/languageservice/services/yamlFolding.js +66 -0
  600. package/out/server/src/languageservice/services/yamlFolding.js.map +1 -0
  601. package/out/server/src/languageservice/services/yamlFormatter.d.ts +8 -0
  602. package/out/server/src/languageservice/services/yamlFormatter.js +50 -0
  603. package/out/server/src/languageservice/services/yamlFormatter.js.map +1 -0
  604. package/out/server/src/languageservice/services/yamlHover.d.ts +47 -0
  605. package/out/server/src/languageservice/services/yamlHover.js +370 -0
  606. package/out/server/src/languageservice/services/yamlHover.js.map +1 -0
  607. package/out/server/src/languageservice/services/yamlLinks.d.ts +8 -0
  608. package/out/server/src/languageservice/services/yamlLinks.js +31 -0
  609. package/out/server/src/languageservice/services/yamlLinks.js.map +1 -0
  610. package/out/server/src/languageservice/services/yamlOnTypeFormatting.d.ts +4 -0
  611. package/out/server/src/languageservice/services/yamlOnTypeFormatting.js +47 -0
  612. package/out/server/src/languageservice/services/yamlOnTypeFormatting.js.map +1 -0
  613. package/out/server/src/languageservice/services/yamlRename.d.ts +18 -0
  614. package/out/server/src/languageservice/services/yamlRename.js +188 -0
  615. package/out/server/src/languageservice/services/yamlRename.js.map +1 -0
  616. package/out/server/src/languageservice/services/yamlSchemaService.d.ts +99 -0
  617. package/out/server/src/languageservice/services/yamlSchemaService.js +1114 -0
  618. package/out/server/src/languageservice/services/yamlSchemaService.js.map +1 -0
  619. package/out/server/src/languageservice/services/yamlSelectionRanges.d.ts +3 -0
  620. package/out/server/src/languageservice/services/yamlSelectionRanges.js +134 -0
  621. package/out/server/src/languageservice/services/yamlSelectionRanges.js.map +1 -0
  622. package/out/server/src/languageservice/services/yamlValidation.d.ts +26 -0
  623. package/out/server/src/languageservice/services/yamlValidation.js +140 -0
  624. package/out/server/src/languageservice/services/yamlValidation.js.map +1 -0
  625. package/out/server/src/languageservice/telemetry.d.ts +16 -0
  626. package/out/server/src/languageservice/telemetry.js +7 -0
  627. package/out/server/src/languageservice/telemetry.js.map +1 -0
  628. package/out/server/src/languageservice/utils/arrUtils.d.ts +6 -0
  629. package/out/server/src/languageservice/utils/arrUtils.js +89 -0
  630. package/out/server/src/languageservice/utils/arrUtils.js.map +1 -0
  631. package/out/server/src/languageservice/utils/block-string-rewriter.d.ts +8 -0
  632. package/out/server/src/languageservice/utils/block-string-rewriter.js +219 -0
  633. package/out/server/src/languageservice/utils/block-string-rewriter.js.map +1 -0
  634. package/out/server/src/languageservice/utils/charCode.d.ts +415 -0
  635. package/out/server/src/languageservice/utils/charCode.js +7 -0
  636. package/out/server/src/languageservice/utils/charCode.js.map +1 -0
  637. package/out/server/src/languageservice/utils/diagnostic-filter.d.ts +50 -0
  638. package/out/server/src/languageservice/utils/diagnostic-filter.js +88 -0
  639. package/out/server/src/languageservice/utils/diagnostic-filter.js.map +1 -0
  640. package/out/server/src/languageservice/utils/documentPositionCalculator.d.ts +5 -0
  641. package/out/server/src/languageservice/utils/documentPositionCalculator.js +63 -0
  642. package/out/server/src/languageservice/utils/documentPositionCalculator.js.map +1 -0
  643. package/out/server/src/languageservice/utils/filePatternAssociation.d.ts +8 -0
  644. package/out/server/src/languageservice/utils/filePatternAssociation.js +27 -0
  645. package/out/server/src/languageservice/utils/filePatternAssociation.js.map +1 -0
  646. package/out/server/src/languageservice/utils/flow-style-rewriter.d.ts +6 -0
  647. package/out/server/src/languageservice/utils/flow-style-rewriter.js +57 -0
  648. package/out/server/src/languageservice/utils/flow-style-rewriter.js.map +1 -0
  649. package/out/server/src/languageservice/utils/indentationGuesser.d.ts +15 -0
  650. package/out/server/src/languageservice/utils/indentationGuesser.js +180 -0
  651. package/out/server/src/languageservice/utils/indentationGuesser.js.map +1 -0
  652. package/out/server/src/languageservice/utils/json.d.ts +11 -0
  653. package/out/server/src/languageservice/utils/json.js +83 -0
  654. package/out/server/src/languageservice/utils/json.js.map +1 -0
  655. package/out/server/src/languageservice/utils/math.d.ts +1 -0
  656. package/out/server/src/languageservice/utils/math.js +13 -0
  657. package/out/server/src/languageservice/utils/math.js.map +1 -0
  658. package/out/server/src/languageservice/utils/objects.d.ts +16 -0
  659. package/out/server/src/languageservice/utils/objects.js +102 -0
  660. package/out/server/src/languageservice/utils/objects.js.map +1 -0
  661. package/out/server/src/languageservice/utils/parseUtils.d.ts +17 -0
  662. package/out/server/src/languageservice/utils/parseUtils.js +5 -0
  663. package/out/server/src/languageservice/utils/parseUtils.js.map +1 -0
  664. package/out/server/src/languageservice/utils/paths.d.ts +5 -0
  665. package/out/server/src/languageservice/utils/paths.js +48 -0
  666. package/out/server/src/languageservice/utils/paths.js.map +1 -0
  667. package/out/server/src/languageservice/utils/schemaUrls.d.ts +14 -0
  668. package/out/server/src/languageservice/utils/schemaUrls.js +64 -0
  669. package/out/server/src/languageservice/utils/schemaUrls.js.map +1 -0
  670. package/out/server/src/languageservice/utils/schemaUtils.d.ts +19 -0
  671. package/out/server/src/languageservice/utils/schemaUtils.js +70 -0
  672. package/out/server/src/languageservice/utils/schemaUtils.js.map +1 -0
  673. package/out/server/src/languageservice/utils/strings.d.ts +10 -0
  674. package/out/server/src/languageservice/utils/strings.js +89 -0
  675. package/out/server/src/languageservice/utils/strings.js.map +1 -0
  676. package/out/server/src/languageservice/utils/textBuffer.d.ts +12 -0
  677. package/out/server/src/languageservice/utils/textBuffer.js +49 -0
  678. package/out/server/src/languageservice/utils/textBuffer.js.map +1 -0
  679. package/out/server/src/languageservice/utils/yamlAstUtils.d.ts +13 -0
  680. package/out/server/src/languageservice/utils/yamlAstUtils.js +116 -0
  681. package/out/server/src/languageservice/utils/yamlAstUtils.js.map +1 -0
  682. package/out/server/src/languageservice/utils/yamlScalar.d.ts +1 -0
  683. package/out/server/src/languageservice/utils/yamlScalar.js +73 -0
  684. package/out/server/src/languageservice/utils/yamlScalar.js.map +1 -0
  685. package/out/server/src/languageservice/yamlLanguageService.d.ts +135 -0
  686. package/out/server/src/languageservice/yamlLanguageService.js +105 -0
  687. package/out/server/src/languageservice/yamlLanguageService.js.map +1 -0
  688. package/out/server/src/languageservice/yamlTypes.d.ts +18 -0
  689. package/out/server/src/languageservice/yamlTypes.js +7 -0
  690. package/out/server/src/languageservice/yamlTypes.js.map +1 -0
  691. package/out/server/src/nodeTranslationSetup.d.ts +9 -0
  692. package/out/server/src/nodeTranslationSetup.js +38 -0
  693. package/out/server/src/nodeTranslationSetup.js.map +1 -0
  694. package/out/server/src/requestTypes.d.ts +63 -0
  695. package/out/server/src/requestTypes.js +49 -0
  696. package/out/server/src/requestTypes.js.map +1 -0
  697. package/out/server/src/server.d.ts +1 -0
  698. package/out/server/src/server.js +57 -0
  699. package/out/server/src/server.js.map +1 -0
  700. package/out/server/src/webworker/yamlServerMain.d.ts +1 -0
  701. package/out/server/src/webworker/yamlServerMain.js +42 -0
  702. package/out/server/src/webworker/yamlServerMain.js.map +1 -0
  703. package/out/server/src/yamlServerInit.d.ts +23 -0
  704. package/out/server/src/yamlServerInit.js +127 -0
  705. package/out/server/src/yamlServerInit.js.map +1 -0
  706. package/out/server/src/yamlSettings.d.ts +112 -0
  707. package/out/server/src/yamlSettings.js +74 -0
  708. package/out/server/src/yamlSettings.js.map +1 -0
  709. package/out/server/test/arrUtils.test.d.ts +1 -0
  710. package/out/server/test/arrUtils.test.js +60 -0
  711. package/out/server/test/arrUtils.test.js.map +1 -0
  712. package/out/server/test/astUtils.test.d.ts +1 -0
  713. package/out/server/test/astUtils.test.js +79 -0
  714. package/out/server/test/astUtils.test.js.map +1 -0
  715. package/out/server/test/autoCompletion.test.d.ts +1 -0
  716. package/out/server/test/autoCompletion.test.js +2832 -0
  717. package/out/server/test/autoCompletion.test.js.map +1 -0
  718. package/out/server/test/autoCompletionFix.test.d.ts +1 -0
  719. package/out/server/test/autoCompletionFix.test.js +1591 -0
  720. package/out/server/test/autoCompletionFix.test.js.map +1 -0
  721. package/out/server/test/bundlel10n.test.d.ts +1 -0
  722. package/out/server/test/bundlel10n.test.js +73 -0
  723. package/out/server/test/bundlel10n.test.js.map +1 -0
  724. package/out/server/test/code-action-schema.test.d.ts +1 -0
  725. package/out/server/test/code-action-schema.test.js +89 -0
  726. package/out/server/test/code-action-schema.test.js.map +1 -0
  727. package/out/server/test/customTags.test.d.ts +1 -0
  728. package/out/server/test/customTags.test.js +88 -0
  729. package/out/server/test/customTags.test.js.map +1 -0
  730. package/out/server/test/defaultSnippets.test.d.ts +1 -0
  731. package/out/server/test/defaultSnippets.test.js +384 -0
  732. package/out/server/test/defaultSnippets.test.js.map +1 -0
  733. package/out/server/test/diagnostic-filter.test.d.ts +1 -0
  734. package/out/server/test/diagnostic-filter.test.js +161 -0
  735. package/out/server/test/diagnostic-filter.test.js.map +1 -0
  736. package/out/server/test/documentPositionCalculator.test.d.ts +1 -0
  737. package/out/server/test/documentPositionCalculator.test.js +69 -0
  738. package/out/server/test/documentPositionCalculator.test.js.map +1 -0
  739. package/out/server/test/documentSymbols.test.d.ts +1 -0
  740. package/out/server/test/documentSymbols.test.js +267 -0
  741. package/out/server/test/documentSymbols.test.js.map +1 -0
  742. package/out/server/test/findLinks.test.d.ts +1 -0
  743. package/out/server/test/findLinks.test.js +58 -0
  744. package/out/server/test/findLinks.test.js.map +1 -0
  745. package/out/server/test/flow-style-rewriter.test.d.ts +1 -0
  746. package/out/server/test/flow-style-rewriter.test.js +79 -0
  747. package/out/server/test/flow-style-rewriter.test.js.map +1 -0
  748. package/out/server/test/formatter.test.d.ts +1 -0
  749. package/out/server/test/formatter.test.js +170 -0
  750. package/out/server/test/formatter.test.js.map +1 -0
  751. package/out/server/test/hover.test.d.ts +1 -0
  752. package/out/server/test/hover.test.js +1056 -0
  753. package/out/server/test/hover.test.js.map +1 -0
  754. package/out/server/test/integration.test.d.ts +1 -0
  755. package/out/server/test/integration.test.js +293 -0
  756. package/out/server/test/integration.test.js.map +1 -0
  757. package/out/server/test/invalid-metaschema.test.d.ts +1 -0
  758. package/out/server/test/invalid-metaschema.test.js +43 -0
  759. package/out/server/test/invalid-metaschema.test.js.map +1 -0
  760. package/out/server/test/jsonParser.test.d.ts +1 -0
  761. package/out/server/test/jsonParser.test.js +1682 -0
  762. package/out/server/test/jsonParser.test.js.map +1 -0
  763. package/out/server/test/multipleDocuments.test.d.ts +1 -0
  764. package/out/server/test/multipleDocuments.test.js +117 -0
  765. package/out/server/test/multipleDocuments.test.js.map +1 -0
  766. package/out/server/test/objects.test.d.ts +1 -0
  767. package/out/server/test/objects.test.js +110 -0
  768. package/out/server/test/objects.test.js.map +1 -0
  769. package/out/server/test/paths.test.d.ts +1 -0
  770. package/out/server/test/paths.test.js +223 -0
  771. package/out/server/test/paths.test.js.map +1 -0
  772. package/out/server/test/scalaruri.test.d.ts +1 -0
  773. package/out/server/test/scalaruri.test.js +363 -0
  774. package/out/server/test/scalaruri.test.js.map +1 -0
  775. package/out/server/test/schema.test.d.ts +1 -0
  776. package/out/server/test/schema.test.js +952 -0
  777. package/out/server/test/schema.test.js.map +1 -0
  778. package/out/server/test/schema2019Validation.test.d.ts +1 -0
  779. package/out/server/test/schema2019Validation.test.js +3630 -0
  780. package/out/server/test/schema2019Validation.test.js.map +1 -0
  781. package/out/server/test/schema2020Validation.test.d.ts +1 -0
  782. package/out/server/test/schema2020Validation.test.js +2037 -0
  783. package/out/server/test/schema2020Validation.test.js.map +1 -0
  784. package/out/server/test/schemaRequestHandler.test.d.ts +1 -0
  785. package/out/server/test/schemaRequestHandler.test.js +48 -0
  786. package/out/server/test/schemaRequestHandler.test.js.map +1 -0
  787. package/out/server/test/schemaSelectionHandlers.test.d.ts +1 -0
  788. package/out/server/test/schemaSelectionHandlers.test.js +99 -0
  789. package/out/server/test/schemaSelectionHandlers.test.js.map +1 -0
  790. package/out/server/test/schemaValidation.test.d.ts +1 -0
  791. package/out/server/test/schemaValidation.test.js +2269 -0
  792. package/out/server/test/schemaValidation.test.js.map +1 -0
  793. package/out/server/test/settingsHandlers.test.d.ts +1 -0
  794. package/out/server/test/settingsHandlers.test.js +299 -0
  795. package/out/server/test/settingsHandlers.test.js.map +1 -0
  796. package/out/server/test/strings.test.d.ts +1 -0
  797. package/out/server/test/strings.test.js +92 -0
  798. package/out/server/test/strings.test.js.map +1 -0
  799. package/out/server/test/telemetry.test.d.ts +1 -0
  800. package/out/server/test/telemetry.test.js +36 -0
  801. package/out/server/test/telemetry.test.js.map +1 -0
  802. package/out/server/test/textBuffer.test.d.ts +1 -0
  803. package/out/server/test/textBuffer.test.js +41 -0
  804. package/out/server/test/textBuffer.test.js.map +1 -0
  805. package/out/server/test/utils/errorMessages.d.ts +27 -0
  806. package/out/server/test/utils/errorMessages.js +38 -0
  807. package/out/server/test/utils/errorMessages.js.map +1 -0
  808. package/out/server/test/utils/serviceSetup.d.ts +17 -0
  809. package/out/server/test/utils/serviceSetup.js +74 -0
  810. package/out/server/test/utils/serviceSetup.js.map +1 -0
  811. package/out/server/test/utils/testHelper.d.ts +78 -0
  812. package/out/server/test/utils/testHelper.js +202 -0
  813. package/out/server/test/utils/testHelper.js.map +1 -0
  814. package/out/server/test/utils/testsTypes.d.ts +29 -0
  815. package/out/server/test/utils/testsTypes.js +61 -0
  816. package/out/server/test/utils/testsTypes.js.map +1 -0
  817. package/out/server/test/utils/verifyError.d.ts +8 -0
  818. package/out/server/test/utils/verifyError.js +82 -0
  819. package/out/server/test/utils/verifyError.js.map +1 -0
  820. package/out/server/test/yaml-documents.test.d.ts +1 -0
  821. package/out/server/test/yaml-documents.test.js +198 -0
  822. package/out/server/test/yaml-documents.test.js.map +1 -0
  823. package/out/server/test/yamlCodeActions.test.d.ts +1 -0
  824. package/out/server/test/yamlCodeActions.test.js +864 -0
  825. package/out/server/test/yamlCodeActions.test.js.map +1 -0
  826. package/out/server/test/yamlCodeLens.test.d.ts +1 -0
  827. package/out/server/test/yamlCodeLens.test.js +165 -0
  828. package/out/server/test/yamlCodeLens.test.js.map +1 -0
  829. package/out/server/test/yamlCommands.test.d.ts +1 -0
  830. package/out/server/test/yamlCommands.test.js +89 -0
  831. package/out/server/test/yamlCommands.test.js.map +1 -0
  832. package/out/server/test/yamlDefinition.test.d.ts +1 -0
  833. package/out/server/test/yamlDefinition.test.js +30 -0
  834. package/out/server/test/yamlDefinition.test.js.map +1 -0
  835. package/out/server/test/yamlFolding.test.d.ts +1 -0
  836. package/out/server/test/yamlFolding.test.js +142 -0
  837. package/out/server/test/yamlFolding.test.js.map +1 -0
  838. package/out/server/test/yamlLanguageService.test.d.ts +1 -0
  839. package/out/server/test/yamlLanguageService.test.js +90 -0
  840. package/out/server/test/yamlLanguageService.test.js.map +1 -0
  841. package/out/server/test/yamlOnTypeFormatting.test.d.ts +1 -0
  842. package/out/server/test/yamlOnTypeFormatting.test.js +69 -0
  843. package/out/server/test/yamlOnTypeFormatting.test.js.map +1 -0
  844. package/out/server/test/yamlParser.test.d.ts +1 -0
  845. package/out/server/test/yamlParser.test.js +242 -0
  846. package/out/server/test/yamlParser.test.js.map +1 -0
  847. package/out/server/test/yamlRename.test.d.ts +1 -0
  848. package/out/server/test/yamlRename.test.js +106 -0
  849. package/out/server/test/yamlRename.test.js.map +1 -0
  850. package/out/server/test/yamlSchema.test.d.ts +1 -0
  851. package/out/server/test/yamlSchema.test.js +62 -0
  852. package/out/server/test/yamlSchema.test.js.map +1 -0
  853. package/out/server/test/yamlSchemaService.test.d.ts +1 -0
  854. package/out/server/test/yamlSchemaService.test.js +403 -0
  855. package/out/server/test/yamlSchemaService.test.js.map +1 -0
  856. package/out/server/test/yamlSelectionRanges.test.d.ts +1 -0
  857. package/out/server/test/yamlSelectionRanges.test.js +248 -0
  858. package/out/server/test/yamlSelectionRanges.test.js.map +1 -0
  859. package/out/server/test/yamlValidation.test.d.ts +1 -0
  860. package/out/server/test/yamlValidation.test.js +303 -0
  861. package/out/server/test/yamlValidation.test.js.map +1 -0
  862. package/package.json +106 -0
  863. package/scripts/check-dependencies.js +21 -0
  864. package/tsconfig.esm.json +15 -0
  865. package/tsconfig.umd.json +14 -0
@@ -0,0 +1,2269 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /*---------------------------------------------------------------------------------------------
4
+ * Copyright (c) Red Hat. All rights reserved.
5
+ * Licensed under the MIT License. See License.txt in the project root for license information.
6
+ *--------------------------------------------------------------------------------------------*/
7
+ const testHelper_1 = require("./utils/testHelper");
8
+ const verifyError_1 = require("./utils/verifyError");
9
+ const serviceSetup_1 = require("./utils/serviceSetup");
10
+ const errorMessages_1 = require("./utils/errorMessages");
11
+ const assert = require("assert");
12
+ const path = require("path");
13
+ const vscode_languageserver_types_1 = require("vscode-languageserver-types");
14
+ const chai_1 = require("chai");
15
+ const yamlSettings_1 = require("../src/yamlSettings");
16
+ const schemaUrls_1 = require("../src/languageservice/utils/schemaUrls");
17
+ const vscode_json_languageservice_1 = require("vscode-json-languageservice");
18
+ describe('Validation Tests', () => {
19
+ let languageSettingsSetup;
20
+ let validationHandler;
21
+ let languageService;
22
+ let yamlSettings;
23
+ let telemetry;
24
+ let schemaProvider;
25
+ before(() => {
26
+ languageSettingsSetup = new serviceSetup_1.ServiceSetup()
27
+ .withValidate()
28
+ .withCompletion()
29
+ .withCustomTags(['!Test', '!Ref sequence'])
30
+ .withSchemaFileMatch({ uri: schemaUrls_1.KUBERNETES_SCHEMA_URL, fileMatch: ['.drone.yml'] })
31
+ .withSchemaFileMatch({ uri: 'https://json.schemastore.org/drone', fileMatch: ['.drone.yml'] })
32
+ .withSchemaFileMatch({ uri: schemaUrls_1.KUBERNETES_SCHEMA_URL, fileMatch: ['test.yml'] })
33
+ .withSchemaFileMatch({
34
+ uri: 'https://raw.githubusercontent.com/composer/composer/master/res/composer-schema.json',
35
+ fileMatch: ['test.yml'],
36
+ });
37
+ const { languageService: langService, validationHandler: valHandler, yamlSettings: settings, telemetry: testTelemetry, schemaProvider: testSchemaProvider, } = (0, testHelper_1.setupLanguageService)(languageSettingsSetup.languageSettings);
38
+ languageService = langService;
39
+ validationHandler = valHandler;
40
+ yamlSettings = settings;
41
+ telemetry = testTelemetry;
42
+ schemaProvider = testSchemaProvider;
43
+ });
44
+ function parseSetup(content, customSchemaID) {
45
+ const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)(content, customSchemaID);
46
+ yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
47
+ yamlSettings.documents.set(testTextDocument);
48
+ return validationHandler.validateTextDocument(testTextDocument);
49
+ }
50
+ afterEach(() => {
51
+ schemaProvider.deleteSchema(testHelper_1.SCHEMA_ID);
52
+ });
53
+ describe('Boolean tests', () => {
54
+ it('Boolean true test', (done) => {
55
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
56
+ type: 'object',
57
+ properties: {
58
+ analytics: {
59
+ type: 'boolean',
60
+ },
61
+ },
62
+ });
63
+ const content = 'analytics: true';
64
+ const validator = parseSetup(content);
65
+ validator
66
+ .then(function (result) {
67
+ assert.equal(result.length, 0);
68
+ })
69
+ .then(done, done);
70
+ });
71
+ it('Basic false test', (done) => {
72
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
73
+ type: 'object',
74
+ properties: {
75
+ analytics: {
76
+ type: 'boolean',
77
+ },
78
+ },
79
+ });
80
+ const content = 'analytics: false';
81
+ const validator = parseSetup(content);
82
+ validator
83
+ .then(function (result) {
84
+ assert.equal(result.length, 0);
85
+ })
86
+ .then(done, done);
87
+ });
88
+ it('Test that boolean value without quotations is valid', (done) => {
89
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
90
+ type: 'object',
91
+ properties: {
92
+ analytics: {
93
+ type: 'boolean',
94
+ },
95
+ },
96
+ });
97
+ const content = '%YAML 1.1\n---\nanalytics: no';
98
+ const validator = parseSetup(content);
99
+ validator
100
+ .then(function (result) {
101
+ assert.equal(result.length, 0);
102
+ })
103
+ .then(done, done);
104
+ });
105
+ it('Test that boolean value in quotations is interpreted as string not boolean', (done) => {
106
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
107
+ type: 'object',
108
+ properties: {
109
+ analytics: {
110
+ type: 'boolean',
111
+ },
112
+ },
113
+ });
114
+ const content = 'analytics: "no"';
115
+ const validator = parseSetup(content);
116
+ validator
117
+ .then(function (result) {
118
+ assert.strictEqual(result.length, 1);
119
+ assert.deepStrictEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(errorMessages_1.BooleanTypeError, 0, 11, 0, 15, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
120
+ })
121
+ .then(done, done);
122
+ });
123
+ it('Error on incorrect value type (boolean)', (done) => {
124
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
125
+ type: 'object',
126
+ properties: {
127
+ cwd: {
128
+ type: 'string',
129
+ },
130
+ },
131
+ });
132
+ const content = 'cwd: False';
133
+ const validator = parseSetup(content);
134
+ validator
135
+ .then(function (result) {
136
+ assert.equal(result.length, 1);
137
+ assert.deepEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(errorMessages_1.StringTypeError, 0, 5, 0, 10, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
138
+ })
139
+ .then(done, done);
140
+ });
141
+ it('Test that boolean value can be used in enum', (done) => {
142
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
143
+ type: 'object',
144
+ properties: {
145
+ analytics: {
146
+ enum: [true, false],
147
+ },
148
+ },
149
+ });
150
+ const content = 'analytics: true';
151
+ const validator = parseSetup(content);
152
+ validator
153
+ .then(function (result) {
154
+ assert.deepStrictEqual(result, []);
155
+ })
156
+ .then(done, done);
157
+ });
158
+ it('Test that boolean value can be used in const', (done) => {
159
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
160
+ type: 'object',
161
+ properties: {
162
+ analytics: {
163
+ const: true,
164
+ },
165
+ },
166
+ });
167
+ const content = 'analytics: true';
168
+ const validator = parseSetup(content);
169
+ validator
170
+ .then(function (result) {
171
+ assert.deepStrictEqual(result, []);
172
+ })
173
+ .then(done, done);
174
+ });
175
+ it('Test that YAML 1.1 boolean "True" can be used in enum', async () => {
176
+ // This test requires YAML 1.1 mode where "True" is parsed as a boolean
177
+ languageService.configure(languageSettingsSetup.withYamlVersion('1.1').languageSettings);
178
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
179
+ type: 'object',
180
+ properties: {
181
+ enabled: {
182
+ enum: [true, false],
183
+ },
184
+ },
185
+ });
186
+ const content = 'enabled: True';
187
+ const result = await parseSetup(content);
188
+ assert.deepStrictEqual(result, []);
189
+ // Reset to default YAML version
190
+ languageService.configure(languageSettingsSetup.withYamlVersion('1.2').languageSettings);
191
+ });
192
+ it('Test that YAML 1.1 boolean "False" can be used in enum', async () => {
193
+ languageService.configure(languageSettingsSetup.withYamlVersion('1.1').languageSettings);
194
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
195
+ type: 'object',
196
+ properties: {
197
+ enabled: {
198
+ enum: [true, false],
199
+ },
200
+ },
201
+ });
202
+ const content = 'enabled: False';
203
+ const result = await parseSetup(content);
204
+ assert.deepStrictEqual(result, []);
205
+ languageService.configure(languageSettingsSetup.withYamlVersion('1.2').languageSettings);
206
+ });
207
+ it('Test that YAML 1.1 boolean "yes" can be used with const', async () => {
208
+ languageService.configure(languageSettingsSetup.withYamlVersion('1.1').languageSettings);
209
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
210
+ type: 'object',
211
+ properties: {
212
+ confirmed: {
213
+ const: true,
214
+ },
215
+ },
216
+ });
217
+ const content = 'confirmed: yes';
218
+ const result = await parseSetup(content);
219
+ assert.deepStrictEqual(result, []);
220
+ languageService.configure(languageSettingsSetup.withYamlVersion('1.2').languageSettings);
221
+ });
222
+ it('Test that YAML 1.1 boolean "no" can be used with const', async () => {
223
+ languageService.configure(languageSettingsSetup.withYamlVersion('1.1').languageSettings);
224
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
225
+ type: 'object',
226
+ properties: {
227
+ disabled: {
228
+ const: false,
229
+ },
230
+ },
231
+ });
232
+ const content = 'disabled: no';
233
+ const result = await parseSetup(content);
234
+ assert.deepStrictEqual(result, []);
235
+ languageService.configure(languageSettingsSetup.withYamlVersion('1.2').languageSettings);
236
+ });
237
+ });
238
+ describe('String tests', () => {
239
+ it('Test that boolean inside of quotations is of type string', (done) => {
240
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
241
+ type: 'object',
242
+ properties: {
243
+ analytics: {
244
+ type: 'string',
245
+ },
246
+ },
247
+ });
248
+ const content = 'analytics: "no"';
249
+ const validator = parseSetup(content);
250
+ validator
251
+ .then(function (result) {
252
+ assert.equal(result.length, 0);
253
+ })
254
+ .then(done, done);
255
+ });
256
+ it('Type string validates under children', (done) => {
257
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
258
+ type: 'object',
259
+ properties: {
260
+ scripts: {
261
+ type: 'object',
262
+ properties: {
263
+ register: {
264
+ type: 'string',
265
+ },
266
+ },
267
+ },
268
+ },
269
+ });
270
+ const content = 'registry:\n register: file://test_url';
271
+ const validator = parseSetup(content);
272
+ validator
273
+ .then(function (result) {
274
+ assert.equal(result.length, 0);
275
+ })
276
+ .then(done, done);
277
+ });
278
+ it('Type String does not error on valid node', (done) => {
279
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
280
+ type: 'object',
281
+ properties: {
282
+ cwd: {
283
+ type: 'string',
284
+ },
285
+ },
286
+ });
287
+ const content = 'cwd: this';
288
+ const validator = parseSetup(content);
289
+ validator
290
+ .then(function (result) {
291
+ assert.equal(result.length, 0);
292
+ })
293
+ .then(done, done);
294
+ });
295
+ it('Error on incorrect value type (string)', (done) => {
296
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
297
+ type: 'object',
298
+ properties: {
299
+ analytics: {
300
+ type: 'boolean',
301
+ },
302
+ },
303
+ });
304
+ const content = 'analytics: hello';
305
+ const validator = parseSetup(content);
306
+ validator
307
+ .then(function (result) {
308
+ assert.equal(result.length, 1);
309
+ assert.deepEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(errorMessages_1.BooleanTypeError, 0, 11, 0, 16, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
310
+ })
311
+ .then(done, done);
312
+ });
313
+ it('Test that boolean is invalid when no strings present and schema wants string', (done) => {
314
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
315
+ type: 'object',
316
+ properties: {
317
+ cwd: {
318
+ type: 'string',
319
+ },
320
+ },
321
+ });
322
+ const content = '%YAML 1.1\n---\ncwd: no';
323
+ const validator = parseSetup(content);
324
+ validator
325
+ .then(function (result) {
326
+ assert.equal(result.length, 1);
327
+ assert.deepEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(errorMessages_1.StringTypeError, 2, 5, 2, 7, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
328
+ })
329
+ .then(done, done);
330
+ });
331
+ });
332
+ describe('Pattern tests', () => {
333
+ it('Test a valid Unicode pattern', (done) => {
334
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
335
+ type: 'object',
336
+ properties: {
337
+ prop: {
338
+ type: 'string',
339
+ pattern: '^tes\\p{Letter}$',
340
+ },
341
+ },
342
+ });
343
+ parseSetup('prop: "tesT"')
344
+ .then(function (result) {
345
+ assert.equal(result.length, 0);
346
+ })
347
+ .then(done, done);
348
+ });
349
+ it('Test an invalid Unicode pattern', (done) => {
350
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
351
+ type: 'object',
352
+ properties: {
353
+ prop: {
354
+ type: 'string',
355
+ pattern: '^tes\\p{Letter}$',
356
+ },
357
+ },
358
+ });
359
+ parseSetup('prop: "tes "')
360
+ .then(function (result) {
361
+ assert.equal(result.length, 1);
362
+ assert.ok(result[0].message.startsWith('String does not match the pattern'));
363
+ assert.deepEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(result[0].message, 0, 6, 0, 12, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
364
+ })
365
+ .then(done, done);
366
+ });
367
+ it('Test a valid Unicode patternProperty', (done) => {
368
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
369
+ type: 'object',
370
+ patternProperties: {
371
+ '^tes\\p{Letter}$': true,
372
+ },
373
+ additionalProperties: false,
374
+ });
375
+ parseSetup('tesT: true')
376
+ .then(function (result) {
377
+ assert.equal(result.length, 0);
378
+ })
379
+ .then(done, done);
380
+ });
381
+ it('Test an invalid Unicode patternProperty', (done) => {
382
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
383
+ type: 'object',
384
+ patternProperties: {
385
+ '^tes\\p{Letter}$': true,
386
+ },
387
+ additionalProperties: false,
388
+ });
389
+ parseSetup('tes9: true')
390
+ .then(function (result) {
391
+ assert.equal(result.length, 1);
392
+ assert.deepEqual(result[0], (0, verifyError_1.createDiagnosticWithData)('Property tes9 is not allowed.', 0, 0, 0, 4, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`, vscode_json_languageservice_1.ErrorCode.PropertyExpected));
393
+ })
394
+ .then(done, done);
395
+ });
396
+ });
397
+ describe('Number tests', () => {
398
+ it('Type Number does not error on valid node', (done) => {
399
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
400
+ type: 'object',
401
+ properties: {
402
+ timeout: {
403
+ type: 'number',
404
+ },
405
+ },
406
+ });
407
+ const content = 'timeout: 60000';
408
+ const validator = parseSetup(content);
409
+ validator
410
+ .then(function (result) {
411
+ assert.equal(result.length, 0);
412
+ })
413
+ .then(done, done);
414
+ });
415
+ it('Error on incorrect value type (number)', (done) => {
416
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
417
+ type: 'object',
418
+ properties: {
419
+ cwd: {
420
+ type: 'string',
421
+ },
422
+ },
423
+ });
424
+ const content = 'cwd: 100000';
425
+ const validator = parseSetup(content);
426
+ validator
427
+ .then(function (result) {
428
+ assert.equal(result.length, 1);
429
+ assert.deepEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(errorMessages_1.StringTypeError, 0, 5, 0, 11, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
430
+ })
431
+ .then(done, done);
432
+ });
433
+ });
434
+ describe('Null tests', () => {
435
+ it('Basic test on nodes with null', (done) => {
436
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
437
+ type: 'object',
438
+ additionalProperties: false,
439
+ properties: {
440
+ columns: {
441
+ type: 'object',
442
+ patternProperties: {
443
+ '^[a-zA-Z]+$': {
444
+ type: 'object',
445
+ properties: {
446
+ int: {
447
+ type: 'null',
448
+ },
449
+ long: {
450
+ type: 'null',
451
+ },
452
+ id: {
453
+ type: 'null',
454
+ },
455
+ unique: {
456
+ type: 'null',
457
+ },
458
+ },
459
+ oneOf: [
460
+ {
461
+ required: ['int'],
462
+ },
463
+ {
464
+ required: ['long'],
465
+ },
466
+ ],
467
+ },
468
+ },
469
+ },
470
+ },
471
+ });
472
+ const content = 'columns:\n ColumnA: { int, id }\n ColumnB: { long, unique }\n ColumnC: { long, unique }';
473
+ const validator = parseSetup(content);
474
+ validator
475
+ .then(function (result) {
476
+ assert.equal(result.length, 0);
477
+ })
478
+ .then(done, done);
479
+ });
480
+ });
481
+ describe('Object tests', () => {
482
+ it('Basic test on nodes with children', (done) => {
483
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
484
+ type: 'object',
485
+ properties: {
486
+ scripts: {
487
+ type: 'object',
488
+ properties: {
489
+ preinstall: {
490
+ type: 'string',
491
+ },
492
+ postinstall: {
493
+ type: 'string',
494
+ },
495
+ },
496
+ },
497
+ },
498
+ });
499
+ const content = 'scripts:\n preinstall: test1\n postinstall: test2';
500
+ const validator = parseSetup(content);
501
+ validator
502
+ .then(function (result) {
503
+ assert.equal(result.length, 0);
504
+ })
505
+ .then(done, done);
506
+ });
507
+ it('Test with multiple nodes with children', (done) => {
508
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
509
+ type: 'object',
510
+ properties: {
511
+ analytics: {
512
+ type: 'boolean',
513
+ },
514
+ cwd: {
515
+ type: 'string',
516
+ },
517
+ scripts: {
518
+ type: 'object',
519
+ properties: {
520
+ preinstall: {
521
+ type: 'string',
522
+ },
523
+ postinstall: {
524
+ type: 'string',
525
+ },
526
+ },
527
+ },
528
+ },
529
+ });
530
+ const content = 'analytics: true\ncwd: this\nscripts:\n preinstall: test1\n postinstall: test2';
531
+ const validator = parseSetup(content);
532
+ validator
533
+ .then(function (result) {
534
+ assert.equal(result.length, 0);
535
+ })
536
+ .then(done, done);
537
+ });
538
+ it('Type Object does not error on valid node', (done) => {
539
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
540
+ type: 'object',
541
+ properties: {
542
+ registry: {
543
+ type: 'object',
544
+ properties: {
545
+ search: {
546
+ type: 'string',
547
+ },
548
+ },
549
+ },
550
+ },
551
+ });
552
+ const content = 'registry:\n search: file://test_url';
553
+ const validator = parseSetup(content);
554
+ validator
555
+ .then(function (result) {
556
+ assert.equal(result.length, 0);
557
+ })
558
+ .then(done, done);
559
+ });
560
+ it('Error on incorrect value type (object)', (done) => {
561
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
562
+ type: 'object',
563
+ title: 'Object',
564
+ properties: {
565
+ scripts: {
566
+ type: 'object',
567
+ properties: {
568
+ search: {
569
+ type: 'string',
570
+ },
571
+ },
572
+ },
573
+ },
574
+ });
575
+ const content = 'scripts: test';
576
+ const validator = parseSetup(content);
577
+ validator
578
+ .then(function (result) {
579
+ assert.equal(result.length, 1);
580
+ assert.deepEqual(result[0], (0, verifyError_1.createDiagnosticWithData)('Incorrect type. Expected "object(Object)".', 0, 9, 0, 13, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: Object`, `file:///${testHelper_1.SCHEMA_ID}`));
581
+ })
582
+ .then(done, done);
583
+ });
584
+ });
585
+ describe('Array tests', () => {
586
+ it('Type Array does not error on valid node', (done) => {
587
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
588
+ type: 'object',
589
+ properties: {
590
+ resolvers: {
591
+ type: 'array',
592
+ items: {
593
+ type: 'string',
594
+ },
595
+ },
596
+ },
597
+ });
598
+ const content = 'resolvers:\n - test\n - test\n - test';
599
+ const validator = parseSetup(content);
600
+ validator
601
+ .then(function (result) {
602
+ assert.equal(result.length, 0);
603
+ })
604
+ .then(done, done);
605
+ });
606
+ it('Error on incorrect value type (array)', (done) => {
607
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
608
+ type: 'object',
609
+ properties: {
610
+ resolvers: {
611
+ type: 'array',
612
+ },
613
+ },
614
+ });
615
+ const content = 'resolvers: test';
616
+ const validator = parseSetup(content);
617
+ validator
618
+ .then(function (result) {
619
+ assert.equal(result.length, 1);
620
+ assert.deepEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(errorMessages_1.ArrayTypeError, 0, 11, 0, 15, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
621
+ })
622
+ .then(done, done);
623
+ });
624
+ });
625
+ describe('Anchor tests', () => {
626
+ it('Anchor should not error', (done) => {
627
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
628
+ type: 'object',
629
+ properties: {
630
+ default: {
631
+ type: 'object',
632
+ properties: {
633
+ name: {
634
+ type: 'string',
635
+ },
636
+ },
637
+ },
638
+ },
639
+ });
640
+ const content = 'default: &DEFAULT\n name: Anchor\nanchor_test:\n <<: *DEFAULT';
641
+ const validator = parseSetup(content);
642
+ validator
643
+ .then(function (result) {
644
+ assert.equal(result.length, 0);
645
+ })
646
+ .then(done, done);
647
+ });
648
+ it('Anchor with multiple references should not error', (done) => {
649
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
650
+ type: 'object',
651
+ properties: {
652
+ default: {
653
+ type: 'object',
654
+ properties: {
655
+ name: {
656
+ type: 'string',
657
+ },
658
+ },
659
+ },
660
+ },
661
+ });
662
+ const content = 'default: &DEFAULT\n name: Anchor\nanchor_test:\n <<: *DEFAULT\nanchor_test2:\n <<: *DEFAULT';
663
+ const validator = parseSetup(content);
664
+ validator
665
+ .then(function (result) {
666
+ assert.equal(result.length, 0);
667
+ })
668
+ .then(done, done);
669
+ });
670
+ it('Multiple Anchor in array of references should not error', (done) => {
671
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
672
+ type: 'object',
673
+ properties: {
674
+ default: {
675
+ type: 'object',
676
+ properties: {
677
+ name: {
678
+ type: 'string',
679
+ },
680
+ },
681
+ },
682
+ },
683
+ });
684
+ const content = 'default: &DEFAULT\n name: Anchor\ncustomname: &CUSTOMNAME\n custom_name: Anchor\nanchor_test:\n <<: [*DEFAULT, *CUSTOMNAME]';
685
+ const validator = parseSetup(content);
686
+ validator
687
+ .then(function (result) {
688
+ assert.equal(result.length, 0);
689
+ })
690
+ .then(done, done);
691
+ });
692
+ it('Multiple Anchors being referenced in same level at same time for yaml 1.1', async () => {
693
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
694
+ type: 'object',
695
+ properties: {
696
+ customize: {
697
+ type: 'object',
698
+ properties: {
699
+ register: {
700
+ type: 'string',
701
+ },
702
+ },
703
+ },
704
+ },
705
+ });
706
+ const content = '%YAML 1.1\n---\ndefault: &DEFAULT\n name: Anchor\ncustomname: &CUSTOMNAME\n custom_name: Anchor\nanchor_test:\n <<: *DEFAULT\n <<: *CUSTOMNAME\n';
707
+ const result = await parseSetup(content);
708
+ assert.strictEqual(result.length, 0);
709
+ });
710
+ it('Multiple Anchors being referenced in same level at same time for yaml generate error for 1.2', async () => {
711
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
712
+ type: 'object',
713
+ properties: {
714
+ customize: {
715
+ type: 'object',
716
+ properties: {
717
+ register: {
718
+ type: 'string',
719
+ },
720
+ },
721
+ },
722
+ },
723
+ });
724
+ const content = 'default: &DEFAULT\n name: Anchor\ncustomname: &CUSTOMNAME\n custom_name: Anchor\nanchor_test:\n <<: *DEFAULT\n <<: *CUSTOMNAME\n';
725
+ const result = await parseSetup(content);
726
+ assert.strictEqual(result.length, 1);
727
+ assert.deepStrictEqual(result[0], (0, verifyError_1.createExpectedError)('Map keys must be unique', 6, 2, 6, 18, vscode_languageserver_types_1.DiagnosticSeverity.Error));
728
+ });
729
+ it('Nested object anchors should expand properly', async () => {
730
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
731
+ type: 'object',
732
+ additionalProperties: {
733
+ type: 'object',
734
+ additionalProperties: false,
735
+ properties: {
736
+ akey: {
737
+ type: 'string',
738
+ },
739
+ },
740
+ required: ['akey'],
741
+ },
742
+ });
743
+ const content = `
744
+ l1: &l1
745
+ akey: avalue
746
+
747
+ l2: &l2
748
+ <<: *l1
749
+
750
+ l3: &l3
751
+ <<: *l2
752
+
753
+ l4:
754
+ <<: *l3
755
+ `;
756
+ const validator = await parseSetup(content);
757
+ assert.strictEqual(validator.length, 0);
758
+ });
759
+ it('Anchor reference with a validation error in a sub-object emits the error in the right location', (done) => {
760
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
761
+ type: 'object',
762
+ properties: {
763
+ src: {},
764
+ dest: {
765
+ type: 'object',
766
+ properties: {
767
+ outer: {
768
+ type: 'object',
769
+ required: ['otherkey'],
770
+ },
771
+ },
772
+ },
773
+ },
774
+ required: ['src', 'dest'],
775
+ });
776
+ const content = `
777
+ src: &src
778
+ outer:
779
+ akey: avalue
780
+
781
+ dest:
782
+ <<: *src
783
+ `;
784
+ const validator = parseSetup(content);
785
+ validator
786
+ .then(function (result) {
787
+ assert.equal(result.length, 1);
788
+ // The key thing we're checking is *where* the validation error gets reported.
789
+ // "outer" isn't required to contain "otherkey" inside "src", but it is inside
790
+ // "dest". Since "outer" doesn't appear inside "dest" because of the alias, we
791
+ // need to move the error into "src".
792
+ assert.deepEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(errorMessages_1.MissingRequiredPropWarning.replace('{0}', 'otherkey'), 2, 10, 2, 15, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
793
+ })
794
+ .then(done, done);
795
+ });
796
+ it('Array Anchor merge', async () => {
797
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
798
+ type: 'object',
799
+ properties: {
800
+ arr: {
801
+ type: 'array',
802
+ items: {
803
+ type: 'number',
804
+ },
805
+ },
806
+ obj: {
807
+ properties: {
808
+ arr2: {
809
+ type: 'array',
810
+ items: {
811
+ type: 'string',
812
+ },
813
+ },
814
+ },
815
+ },
816
+ },
817
+ });
818
+ const content = `
819
+ arr: &a
820
+ - 1
821
+ - 2
822
+ obj:
823
+ <<: *a
824
+ arr2:
825
+ - << *a
826
+ `;
827
+ const result = await parseSetup(content);
828
+ assert.equal(result.length, 0);
829
+ });
830
+ });
831
+ describe('Custom tag tests', () => {
832
+ it('Custom Tags without type', async () => {
833
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
834
+ type: 'object',
835
+ properties: {
836
+ analytics: {
837
+ type: 'boolean',
838
+ },
839
+ },
840
+ });
841
+ const content = 'analytics: !Test false';
842
+ const result = await parseSetup(content);
843
+ assert.equal(result.length, 1);
844
+ assert.deepStrictEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(errorMessages_1.BooleanTypeError, 0, 17, 0, 22, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
845
+ });
846
+ it('Custom Tags with type', (done) => {
847
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
848
+ type: 'object',
849
+ properties: {
850
+ resolvers: {
851
+ type: 'array',
852
+ items: {
853
+ type: 'string',
854
+ },
855
+ },
856
+ },
857
+ });
858
+ const content = 'resolvers: !Ref\n - test';
859
+ const validator = parseSetup(content);
860
+ validator
861
+ .then(function (result) {
862
+ assert.equal(result.length, 0);
863
+ })
864
+ .then(done, done);
865
+ });
866
+ it('Include with value should not error', (done) => {
867
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
868
+ type: 'object',
869
+ properties: {
870
+ customize: {
871
+ type: 'string',
872
+ },
873
+ },
874
+ });
875
+ const content = 'customize: !include customize.yaml';
876
+ const validator = parseSetup(content);
877
+ validator
878
+ .then(function (result) {
879
+ assert.equal(result.length, 0);
880
+ })
881
+ .then(done, done);
882
+ });
883
+ it('Include without value should error', (done) => {
884
+ const content = 'customize: !include';
885
+ const validator = parseSetup(content);
886
+ validator
887
+ .then(function (result) {
888
+ assert.equal(result.length, 1);
889
+ assert.deepEqual(result[0], (0, verifyError_1.createExpectedError)(errorMessages_1.IncludeWithoutValueError, 0, 11, 0, 19));
890
+ })
891
+ .then(done, done);
892
+ });
893
+ });
894
+ describe('Multiple type tests', function () {
895
+ it('Do not error when there are multiple types in schema and theyre valid', (done) => {
896
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
897
+ type: 'object',
898
+ properties: {
899
+ license: {
900
+ type: ['string', 'boolean'],
901
+ },
902
+ },
903
+ });
904
+ const content = 'license: MIT';
905
+ const validator = parseSetup(content);
906
+ validator
907
+ .then(function (result) {
908
+ assert.equal(result.length, 0);
909
+ })
910
+ .then(done, done);
911
+ });
912
+ });
913
+ describe('Invalid YAML errors', function () {
914
+ it('Error when theres a finished untyped item', (done) => {
915
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
916
+ type: 'object',
917
+ properties: {
918
+ cwd: {
919
+ type: 'string',
920
+ },
921
+ analytics: {
922
+ type: 'boolean',
923
+ },
924
+ },
925
+ });
926
+ const content = 'cwd: hello\nan';
927
+ const validator = parseSetup(content);
928
+ validator
929
+ .then(function (result) {
930
+ assert.equal(result.length, 1);
931
+ assert.deepEqual(result[0], (0, verifyError_1.createExpectedError)(errorMessages_1.BlockMappingEntryError, 1, 0, 1, 2));
932
+ })
933
+ .then(done, done);
934
+ });
935
+ it('Error when theres no value for a node', (done) => {
936
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
937
+ type: 'object',
938
+ properties: {
939
+ cwd: {
940
+ type: 'string',
941
+ },
942
+ },
943
+ });
944
+ const content = 'cwd:';
945
+ const validator = parseSetup(content);
946
+ validator
947
+ .then(function (result) {
948
+ assert.equal(result.length, 1);
949
+ assert.deepEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(errorMessages_1.StringTypeError, 0, 4, 0, 4, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
950
+ })
951
+ .then(done, done);
952
+ });
953
+ });
954
+ describe('Test with no schemas', () => {
955
+ it('Duplicate properties are reported', (done) => {
956
+ const content = 'kind: a\ncwd: b\nkind: c';
957
+ const validator = parseSetup(content);
958
+ validator
959
+ .then(function (result) {
960
+ assert.equal(result.length, 1);
961
+ assert.deepEqual(result[0], (0, verifyError_1.createExpectedError)(errorMessages_1.DuplicateKeyError, 2, 0, 2, 7));
962
+ })
963
+ .then(done, done);
964
+ });
965
+ });
966
+ describe('Test anchors', function () {
967
+ it('Test that anchors with a schema do not report Property << is not allowed', (done) => {
968
+ const schema = {
969
+ type: 'object',
970
+ properties: {
971
+ sample: {
972
+ type: 'object',
973
+ properties: {
974
+ prop1: {
975
+ type: 'string',
976
+ },
977
+ prop2: {
978
+ type: 'string',
979
+ },
980
+ },
981
+ additionalProperties: false,
982
+ },
983
+ },
984
+ $schema: 'http://json-schema.org/draft-07/schema#',
985
+ };
986
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
987
+ const content = 'test: &test\n prop1: hello\nsample:\n <<: *test\n prop2: another_test';
988
+ const validator = parseSetup(content);
989
+ validator
990
+ .then(function (result) {
991
+ assert.equal(result.length, 0);
992
+ })
993
+ .then(done, done);
994
+ });
995
+ });
996
+ describe('Test with custom kubernetes schemas', function () {
997
+ it('Test that properties that match multiple enums get validated properly', (done) => {
998
+ languageService.configure(languageSettingsSetup.withKubernetes().languageSettings);
999
+ yamlSettings.specificValidatorPaths = ['*.yml', '*.yaml'];
1000
+ const schema = {
1001
+ definitions: {
1002
+ ImageStreamImport: {
1003
+ type: 'object',
1004
+ properties: {
1005
+ kind: {
1006
+ type: 'string',
1007
+ enum: ['ImageStreamImport'],
1008
+ },
1009
+ },
1010
+ },
1011
+ ImageStreamLayers: {
1012
+ type: 'object',
1013
+ properties: {
1014
+ kind: {
1015
+ type: 'string',
1016
+ enum: ['ImageStreamLayers'],
1017
+ },
1018
+ },
1019
+ },
1020
+ },
1021
+ oneOf: [
1022
+ {
1023
+ $ref: '#/definitions/ImageStreamImport',
1024
+ },
1025
+ {
1026
+ $ref: '#/definitions/ImageStreamLayers',
1027
+ },
1028
+ ],
1029
+ };
1030
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1031
+ const content = 'kind: ';
1032
+ const validator = parseSetup(content);
1033
+ validator
1034
+ .then(function (result) {
1035
+ assert.equal(result.length, 2);
1036
+ // eslint-disable-next-line
1037
+ assert.equal(result[1].message, `Value is not accepted. Valid values: "ImageStreamImport", "ImageStreamLayers".`);
1038
+ })
1039
+ .then(done, done);
1040
+ });
1041
+ });
1042
+ // https://github.com/redhat-developer/yaml-language-server/issues/118
1043
+ describe('Null literals', () => {
1044
+ ['NULL', 'Null', 'null', '~', ''].forEach((content) => {
1045
+ it(`Test type null is parsed from [${content}]`, (done) => {
1046
+ const schema = {
1047
+ type: 'object',
1048
+ properties: {
1049
+ nulltest: {
1050
+ type: 'null',
1051
+ },
1052
+ },
1053
+ };
1054
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1055
+ const validator = parseSetup('nulltest: ' + content);
1056
+ validator
1057
+ .then(function (result) {
1058
+ assert.equal(result.length, 0);
1059
+ })
1060
+ .then(done, done);
1061
+ });
1062
+ });
1063
+ it('Test type null is working correctly in array', (done) => {
1064
+ const schema = {
1065
+ properties: {
1066
+ values: {
1067
+ type: 'array',
1068
+ items: {
1069
+ type: 'null',
1070
+ },
1071
+ },
1072
+ },
1073
+ required: ['values'],
1074
+ };
1075
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1076
+ const content = 'values: [Null, NULL, null, ~,]';
1077
+ const validator = parseSetup(content);
1078
+ validator
1079
+ .then(function (result) {
1080
+ assert.equal(result.length, 0);
1081
+ })
1082
+ .then(done, done);
1083
+ });
1084
+ });
1085
+ describe('Multi Document schema validation tests', () => {
1086
+ it('Document does not error when --- is present with schema', (done) => {
1087
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1088
+ type: 'object',
1089
+ properties: {
1090
+ cwd: {
1091
+ type: 'string',
1092
+ },
1093
+ },
1094
+ });
1095
+ const content = '---\n# this is a test\ncwd: this';
1096
+ const validator = parseSetup(content);
1097
+ validator
1098
+ .then(function (result) {
1099
+ assert.equal(result.length, 0);
1100
+ })
1101
+ .then(done, done);
1102
+ });
1103
+ it('Multi Document does not error when --- is present with schema', (done) => {
1104
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1105
+ type: 'object',
1106
+ properties: {
1107
+ cwd: {
1108
+ type: 'string',
1109
+ },
1110
+ },
1111
+ });
1112
+ const content = '---\n# this is a test\ncwd: this...\n---\n# second comment\ncwd: hello\n...';
1113
+ const validator = parseSetup(content);
1114
+ validator
1115
+ .then(function (result) {
1116
+ assert.equal(result.length, 0);
1117
+ })
1118
+ .then(done, done);
1119
+ });
1120
+ });
1121
+ describe('Schema with title', () => {
1122
+ it('validator uses schema title instead of url', async () => {
1123
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1124
+ type: 'object',
1125
+ title: 'Schema Super title',
1126
+ properties: {
1127
+ analytics: {
1128
+ type: 'string',
1129
+ },
1130
+ },
1131
+ });
1132
+ const content = 'analytics: 1';
1133
+ const result = await parseSetup(content);
1134
+ (0, chai_1.expect)(result[0]).deep.equal((0, verifyError_1.createDiagnosticWithData)(errorMessages_1.StringTypeError, 0, 11, 0, 12, vscode_languageserver_types_1.DiagnosticSeverity.Error, 'yaml-schema: Schema Super title', 'file:///default_schema_id.yaml'));
1135
+ });
1136
+ });
1137
+ describe('Multiple schema for single file', () => {
1138
+ after(() => {
1139
+ // remove Kubernetes setting not to affect next tests
1140
+ languageService.configure(languageSettingsSetup.withKubernetes(false).languageSettings);
1141
+ yamlSettings.specificValidatorPaths = [];
1142
+ });
1143
+ it('should add proper source to diagnostic', async () => {
1144
+ const content = `
1145
+ abandoned: v1
1146
+ archive:
1147
+ exclude:
1148
+ asd: asd`;
1149
+ languageService.configure(languageSettingsSetup.withKubernetes().languageSettings);
1150
+ yamlSettings.specificValidatorPaths = ['*.yml', '*.yaml'];
1151
+ const result = await parseSetup(content, 'file://~/Desktop/vscode-yaml/test.yml');
1152
+ (0, chai_1.expect)(result[0]).deep.equal((0, verifyError_1.createDiagnosticWithData)(errorMessages_1.ArrayTypeError, 4, 10, 4, 18, vscode_languageserver_types_1.DiagnosticSeverity.Error, 'yaml-schema: Composer Package', 'https://raw.githubusercontent.com/composer/composer/master/res/composer-schema.json'));
1153
+ });
1154
+ it('should add proper source to diagnostic in case of drone', async () => {
1155
+ const content = `
1156
+ apiVersion: v1
1157
+ kind: Deployment
1158
+ `;
1159
+ const result = await parseSetup(content, 'file://~/Desktop/vscode-yaml/.drone.yml');
1160
+ (0, chai_1.expect)(result[5]).deep.equal((0, verifyError_1.createDiagnosticWithData)((0, errorMessages_1.propertyIsNotAllowed)('apiVersion'), 1, 6, 1, 16, vscode_languageserver_types_1.DiagnosticSeverity.Error, 'yaml-schema: Drone CI configuration file', 'https://json.schemastore.org/drone', vscode_json_languageservice_1.ErrorCode.PropertyExpected, {
1161
+ properties: [
1162
+ 'type',
1163
+ 'environment',
1164
+ 'steps',
1165
+ 'volumes',
1166
+ 'services',
1167
+ 'image_pull_secrets',
1168
+ 'node',
1169
+ 'concurrency',
1170
+ 'name',
1171
+ 'platform',
1172
+ 'workspace',
1173
+ 'clone',
1174
+ 'trigger',
1175
+ 'depends_on',
1176
+ ],
1177
+ }));
1178
+ });
1179
+ });
1180
+ describe('Conditional Schema', () => {
1181
+ it('validator use "then" block if "if" valid', async () => {
1182
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1183
+ type: 'object',
1184
+ default: [],
1185
+ properties: {
1186
+ name: {
1187
+ type: 'string',
1188
+ },
1189
+ var: {
1190
+ type: 'string',
1191
+ },
1192
+ },
1193
+ if: {
1194
+ properties: {
1195
+ var: {
1196
+ type: 'string',
1197
+ },
1198
+ },
1199
+ },
1200
+ then: {
1201
+ required: ['pineapple'],
1202
+ },
1203
+ else: {
1204
+ required: ['tomato'],
1205
+ },
1206
+ additionalProperties: true,
1207
+ });
1208
+ const content = `
1209
+ name: aName
1210
+ var: something
1211
+ inputs:`;
1212
+ const result = await parseSetup(content);
1213
+ (0, chai_1.expect)(result[0].message).to.eq('Missing property "pineapple".');
1214
+ });
1215
+ it('should add errorMessage from schema when the property is missing', async () => {
1216
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1217
+ type: 'object',
1218
+ properties: {
1219
+ icon: {
1220
+ type: 'string',
1221
+ },
1222
+ },
1223
+ required: ['title'],
1224
+ errorMessage: 'Custom message',
1225
+ });
1226
+ const content = '';
1227
+ const result = await parseSetup(content);
1228
+ (0, chai_1.expect)(result[0].message).to.eq('Custom message');
1229
+ });
1230
+ it('should add errorMessage from sub-schema when the property is missing', async () => {
1231
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1232
+ type: 'object',
1233
+ properties: {
1234
+ icon: {
1235
+ type: 'string',
1236
+ },
1237
+ title: {
1238
+ type: 'string',
1239
+ },
1240
+ },
1241
+ anyOf: [
1242
+ {
1243
+ required: ['title'],
1244
+ errorMessage: 'At least one of `title` or `icon` must be defined.',
1245
+ },
1246
+ {
1247
+ required: ['icon'],
1248
+ },
1249
+ ],
1250
+ });
1251
+ const content = '';
1252
+ const result = await parseSetup(content);
1253
+ (0, chai_1.expect)(result[0].message).to.eq('At least one of `title` or `icon` must be defined.');
1254
+ });
1255
+ describe('filePatternAssociation', () => {
1256
+ const schema = {
1257
+ type: 'object',
1258
+ properties: {
1259
+ name: {
1260
+ type: 'string',
1261
+ },
1262
+ },
1263
+ if: {
1264
+ filePatternAssociation: testHelper_1.SCHEMA_ID,
1265
+ },
1266
+ then: {
1267
+ required: ['pineapple'],
1268
+ },
1269
+ else: {
1270
+ required: ['tomato'],
1271
+ },
1272
+ };
1273
+ it('validator use "then" block if "if" match filePatternAssociation', async () => {
1274
+ schema.if.filePatternAssociation = testHelper_1.SCHEMA_ID;
1275
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1276
+ const content = 'name: aName';
1277
+ const result = await parseSetup(content);
1278
+ (0, chai_1.expect)(result.map((r) => r.message)).to.deep.eq(['Missing property "pineapple".']);
1279
+ });
1280
+ it('validator use "then" block if "if" match filePatternAssociation - regexp', async () => {
1281
+ schema.if.filePatternAssociation = '*.yaml'; // SCHEMA_ID: "default_schema_id.yaml"
1282
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1283
+ const content = 'name: aName';
1284
+ const result = await parseSetup(content);
1285
+ (0, chai_1.expect)(result.map((r) => r.message)).to.deep.eq(['Missing property "pineapple".']);
1286
+ });
1287
+ it('validator use "else" block if "if" not match filePatternAssociation', async () => {
1288
+ schema.if.filePatternAssociation = 'wrong';
1289
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1290
+ const content = 'name: aName';
1291
+ const result = await parseSetup(content);
1292
+ (0, chai_1.expect)(result.map((r) => r.message)).to.deep.eq(['Missing property "tomato".']);
1293
+ });
1294
+ });
1295
+ });
1296
+ describe('Schema with uri-reference', () => {
1297
+ it('should validate multiple uri-references', async () => {
1298
+ const schemaWithURIReference = {
1299
+ type: 'object',
1300
+ properties: {
1301
+ one: {
1302
+ type: 'string',
1303
+ format: 'uri-reference',
1304
+ },
1305
+ },
1306
+ };
1307
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schemaWithURIReference);
1308
+ let content = `
1309
+ one: '//foo/bar'
1310
+ `;
1311
+ let result = await parseSetup(content);
1312
+ (0, chai_1.expect)(result.length).to.eq(0);
1313
+ content = `
1314
+ one: '#/components/schemas/service'
1315
+ `;
1316
+ result = await parseSetup(content);
1317
+ (0, chai_1.expect)(result.length).to.eq(0);
1318
+ content = `
1319
+ one: 'some/relative/path/foo.schema.yaml'
1320
+ `;
1321
+ result = await parseSetup(content);
1322
+ (0, chai_1.expect)(result.length).to.eq(0);
1323
+ content = `
1324
+ one: 'http://foo/bar'
1325
+ `;
1326
+ result = await parseSetup(content);
1327
+ (0, chai_1.expect)(result.length).to.eq(0);
1328
+ });
1329
+ it('should not validate empty uri-reference', async () => {
1330
+ const schemaWithURIReference = {
1331
+ type: 'object',
1332
+ properties: {
1333
+ one: {
1334
+ type: 'string',
1335
+ format: 'uri-reference',
1336
+ },
1337
+ },
1338
+ };
1339
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schemaWithURIReference);
1340
+ const content = `
1341
+ one: ''
1342
+ `;
1343
+ const result = await parseSetup(content);
1344
+ (0, chai_1.expect)(result.length).to.eq(1);
1345
+ (0, chai_1.expect)(result[0].message).to.eq('String is not a URI: URI expected.');
1346
+ });
1347
+ });
1348
+ describe('Multiple similar schemas validation', () => {
1349
+ const sharedSchemaId = 'sharedSchema.json';
1350
+ before(() => {
1351
+ // remove Kubernetes setting set by previous test
1352
+ languageService.configure(languageSettingsSetup.withKubernetes(false).languageSettings);
1353
+ yamlSettings.specificValidatorPaths = [];
1354
+ });
1355
+ afterEach(() => {
1356
+ schemaProvider.deleteSchema(testHelper_1.SCHEMA_ID);
1357
+ schemaProvider.deleteSchema(sharedSchemaId);
1358
+ });
1359
+ it('should distinguish types in error "Incorrect type (Expected "type1 | type2 | type3")"', async () => {
1360
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
1361
+ const schema = require(path.join(__dirname, './fixtures/testMultipleSimilarSchema.json'));
1362
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, 'file:///sharedSchema.json', schema.sharedSchema);
1363
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema.schema);
1364
+ const content = 'test_anyOf_objects:\n ';
1365
+ const result = await parseSetup(content);
1366
+ assert.strictEqual(result.length, 1);
1367
+ assert.strictEqual(result[0].message, 'Incorrect type. Expected "type1 | type2 | type3".');
1368
+ assert.strictEqual(result[0].source, 'yaml-schema: file:///sharedSchema.json | file:///default_schema_id.yaml');
1369
+ assert.deepStrictEqual(result[0].data.schemaUri, [
1370
+ 'file:///sharedSchema.json',
1371
+ 'file:///default_schema_id.yaml',
1372
+ ]);
1373
+ });
1374
+ it('should combine types in "Incorrect type error"', async () => {
1375
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
1376
+ const schema = require(path.join(__dirname, './fixtures/testMultipleSimilarSchema.json'));
1377
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, 'file:///sharedSchema.json', schema.sharedSchema);
1378
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema.schema);
1379
+ const content = 'test_anyOf_objects:\n propA:';
1380
+ const result = await parseSetup(content);
1381
+ assert.strictEqual(result.length, 3);
1382
+ assert.strictEqual(result[2].message, 'Incorrect type. Expected "string".');
1383
+ assert.strictEqual(result[2].source, 'yaml-schema: file:///sharedSchema.json | file:///default_schema_id.yaml');
1384
+ });
1385
+ it('should combine const value', async () => {
1386
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
1387
+ const schema = require(path.join(__dirname, './fixtures/testMultipleSimilarSchema.json'));
1388
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, 'file:///sharedSchema.json', schema.sharedSchema);
1389
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema.schema);
1390
+ const content = 'test_anyOf_objects:\n constA:';
1391
+ const result = await parseSetup(content);
1392
+ assert.strictEqual(result.length, 4);
1393
+ assert.strictEqual(result[3].message, 'Value must be "constForType1" | "constForType3".');
1394
+ assert.strictEqual(result[3].source, 'yaml-schema: file:///sharedSchema.json | file:///default_schema_id.yaml');
1395
+ });
1396
+ it('should distinguish types in error: "Missing property from multiple schemas"', async () => {
1397
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
1398
+ const schema = require(path.join(__dirname, './fixtures/testMultipleSimilarSchema.json'));
1399
+ schemaProvider.addSchemaWithUri(sharedSchemaId, 'file:///sharedSchema.json', schema.sharedSchema);
1400
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema.schema);
1401
+ const content = 'test_anyOf_objects:\n someProp:';
1402
+ const result = await parseSetup(content);
1403
+ assert.strictEqual(result.length, 3);
1404
+ assert.strictEqual(result[0].message, 'Missing property "objA".');
1405
+ assert.strictEqual(result[0].source, 'yaml-schema: file:///sharedSchema.json | file:///default_schema_id.yaml');
1406
+ assert.deepStrictEqual(result[0].data.schemaUri, [
1407
+ 'file:///sharedSchema.json',
1408
+ 'file:///default_schema_id.yaml',
1409
+ ]);
1410
+ assert.strictEqual(result[1].message, 'Missing property "propA".');
1411
+ assert.strictEqual(result[1].source, 'yaml-schema: file:///sharedSchema.json | file:///default_schema_id.yaml');
1412
+ assert.deepStrictEqual(result[1].data.schemaUri, [
1413
+ 'file:///sharedSchema.json',
1414
+ 'file:///default_schema_id.yaml',
1415
+ ]);
1416
+ assert.strictEqual(result[2].message, 'Missing property "constA".');
1417
+ assert.strictEqual(result[2].source, 'yaml-schema: file:///sharedSchema.json | file:///default_schema_id.yaml');
1418
+ assert.deepStrictEqual(result[2].data.schemaUri, [
1419
+ 'file:///sharedSchema.json',
1420
+ 'file:///default_schema_id.yaml',
1421
+ ]);
1422
+ });
1423
+ });
1424
+ describe('Empty document validation', () => {
1425
+ it('should provide validation for empty document', async () => {
1426
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1427
+ type: 'object',
1428
+ properties: {
1429
+ scripts: {
1430
+ type: 'string',
1431
+ },
1432
+ },
1433
+ required: ['scripts'],
1434
+ });
1435
+ const content = '';
1436
+ const result = await parseSetup(content);
1437
+ assert.strictEqual(result.length, 1);
1438
+ assert.deepStrictEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(errorMessages_1.MissingRequiredPropWarning.replace('{0}', 'scripts'), 0, 0, 0, 0, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
1439
+ });
1440
+ it('should provide validation for document which contains only whitespaces', async () => {
1441
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1442
+ type: 'object',
1443
+ properties: {
1444
+ scripts: {
1445
+ type: 'string',
1446
+ },
1447
+ },
1448
+ required: ['scripts'],
1449
+ });
1450
+ const content = ' \n \n';
1451
+ const result = await parseSetup(content);
1452
+ assert.deepStrictEqual(result[0], (0, verifyError_1.createDiagnosticWithData)(errorMessages_1.MissingRequiredPropWarning.replace('{0}', 'scripts'), 0, 0, 0, 1, vscode_languageserver_types_1.DiagnosticSeverity.Error, `yaml-schema: file:///${testHelper_1.SCHEMA_ID}`, `file:///${testHelper_1.SCHEMA_ID}`));
1453
+ });
1454
+ });
1455
+ describe('Additional properties validation', () => {
1456
+ it('should allow additional props on object by default', async () => {
1457
+ const schema = {
1458
+ type: 'object',
1459
+ properties: {
1460
+ prop1: {
1461
+ type: 'string',
1462
+ },
1463
+ },
1464
+ };
1465
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1466
+ const content = `prop2: you could be there 'prop2'`;
1467
+ const result = await parseSetup(content);
1468
+ (0, chai_1.expect)(result.length).to.eq(0);
1469
+ });
1470
+ describe('Additional properties validation with enabled disableAdditionalProperties', () => {
1471
+ before(() => {
1472
+ languageSettingsSetup.languageSettings.disableAdditionalProperties = true;
1473
+ languageService.configure(languageSettingsSetup.languageSettings);
1474
+ });
1475
+ after(() => {
1476
+ languageSettingsSetup.languageSettings.disableAdditionalProperties = false;
1477
+ });
1478
+ it('should return additional prop error when there is extra prop', async () => {
1479
+ const schema = {
1480
+ type: 'object',
1481
+ properties: {
1482
+ prop1: {
1483
+ type: 'string',
1484
+ },
1485
+ },
1486
+ };
1487
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1488
+ const content = `prop2: you should not be there 'prop2'`;
1489
+ const result = await parseSetup(content);
1490
+ (0, chai_1.expect)(result.length).to.eq(1);
1491
+ (0, chai_1.expect)(result[0].message).to.eq('Property prop2 is not allowed.');
1492
+ (0, chai_1.expect)(result[0].data?.properties).to.deep.eq(['prop1']);
1493
+ });
1494
+ it('should return additional prop error when there is unknown prop - suggest missing props)', async () => {
1495
+ const schema = {
1496
+ type: 'object',
1497
+ properties: {
1498
+ prop1: {
1499
+ type: 'string',
1500
+ },
1501
+ prop2: {
1502
+ type: 'string',
1503
+ },
1504
+ },
1505
+ };
1506
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1507
+ const content = `prop1: value1\npropX: you should not be there 'propX'`;
1508
+ const result = await parseSetup(content);
1509
+ (0, chai_1.expect)(result.map((r) => ({
1510
+ message: r.message,
1511
+ properties: r.data?.properties,
1512
+ }))).to.deep.eq([
1513
+ {
1514
+ message: 'Property propX is not allowed.',
1515
+ properties: ['prop2'],
1516
+ },
1517
+ ]);
1518
+ });
1519
+ it('should return error with possible props', async () => {
1520
+ const schema = {
1521
+ type: 'object',
1522
+ properties: {
1523
+ // prop0 is missing, should be added as a possible prop
1524
+ prop0: {
1525
+ type: 'string',
1526
+ },
1527
+ // prop1 is already defined in the yaml
1528
+ prop1: {
1529
+ type: 'string',
1530
+ },
1531
+ // prop2 is not suggested
1532
+ prop2: {
1533
+ type: 'string',
1534
+ doNotSuggest: true,
1535
+ },
1536
+ // prop3 is deprecated
1537
+ prop3: {
1538
+ type: 'string',
1539
+ deprecationMessage: 'prop3 is deprecated',
1540
+ },
1541
+ },
1542
+ };
1543
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1544
+ const content = `prop1: value1\npropX: you should not be there 'propX'`;
1545
+ const result = await parseSetup(content);
1546
+ (0, chai_1.expect)(result.map((r) => ({
1547
+ message: r.message,
1548
+ properties: r.data?.properties,
1549
+ }))).to.deep.eq([
1550
+ {
1551
+ message: 'Property propX is not allowed.',
1552
+ properties: ['prop0'],
1553
+ },
1554
+ ]);
1555
+ });
1556
+ it('should allow additional props on object when additionalProp is true on object', async () => {
1557
+ const schema = {
1558
+ type: 'object',
1559
+ properties: {
1560
+ prop1: {
1561
+ type: 'string',
1562
+ },
1563
+ },
1564
+ additionalProperties: true,
1565
+ };
1566
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1567
+ const content = `prop2: you could be there 'prop2'`;
1568
+ const result = await parseSetup(content);
1569
+ (0, chai_1.expect)(result.length).to.eq(0);
1570
+ });
1571
+ });
1572
+ });
1573
+ describe('Bug fixes', () => {
1574
+ describe('Base URI + $id resolution', () => {
1575
+ it('$id URI fragments in Draft-07 (plain-name fragment resolution)"', async () => {
1576
+ const schema = {
1577
+ $schema: 'http://json-schema.org/draft-07/schema#',
1578
+ $id: 'https://example.com/schema/root',
1579
+ type: 'object',
1580
+ properties: {
1581
+ phoneLocal: { $ref: '#Phone' },
1582
+ phoneAbsolute: { $ref: 'https://example.com/schema/root#Phone' },
1583
+ },
1584
+ required: ['phoneLocal', 'phoneAbsolute'],
1585
+ $defs: {
1586
+ phoneDef: {
1587
+ $id: 'https://example.com/schema/root#Phone',
1588
+ type: 'string',
1589
+ pattern: '^[0-9]{3}-[0-9]{3}-[0-9]{4}$',
1590
+ },
1591
+ },
1592
+ };
1593
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1594
+ const invalid = `phoneLocal: "4165551234"\nphoneAbsolute: "4165551234"`;
1595
+ const result = await parseSetup(invalid);
1596
+ (0, chai_1.expect)(result).to.have.length(2);
1597
+ (0, chai_1.expect)(result[0].message).to.include('String does not match the pattern');
1598
+ (0, chai_1.expect)(result[1].message).to.include('String does not match the pattern');
1599
+ });
1600
+ it('should resolve plain-name fragment via subschema $id (fragment form)', async () => {
1601
+ const schema = {
1602
+ $schema: 'http://json-schema.org/draft-07/schema#',
1603
+ definitions: {
1604
+ Name: {
1605
+ $id: '#Thing',
1606
+ type: 'string',
1607
+ minLength: 2,
1608
+ },
1609
+ },
1610
+ $ref: '#Thing',
1611
+ };
1612
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1613
+ const result = await parseSetup('A');
1614
+ (0, chai_1.expect)(result).to.have.length(1);
1615
+ (0, chai_1.expect)(result[0].message).to.include('String is shorter than the minimum length of 2.');
1616
+ });
1617
+ it('root $id updates base URI for resolving relative $ref targets', async () => {
1618
+ const other = {
1619
+ $schema: 'http://json-schema.org/draft-07/schema#',
1620
+ $id: 'http://example.com/other.json',
1621
+ definitions: {
1622
+ X: {
1623
+ $id: '#bar',
1624
+ type: 'string',
1625
+ minLength: 2,
1626
+ },
1627
+ },
1628
+ };
1629
+ const root = {
1630
+ $schema: 'http://json-schema.org/draft-07/schema#',
1631
+ $id: 'http://example.com/root.json',
1632
+ type: 'object',
1633
+ properties: {
1634
+ x: { $ref: 'other.json#bar' },
1635
+ },
1636
+ required: ['x'],
1637
+ };
1638
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, 'http://example.com/other.json', other);
1639
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, 'file:///root.schema.json', root);
1640
+ const yaml = `# yaml-language-server: $schema=file:///root.schema.json
1641
+ x: A
1642
+ `;
1643
+ const result = await parseSetup(yaml, 'file:///root.schema.json');
1644
+ (0, chai_1.expect)(result.some((d) => /Problems loading reference/i.test(d.message))).to.eq(false);
1645
+ (0, chai_1.expect)(result).to.have.length(1);
1646
+ (0, chai_1.expect)(result[0].message).to.include('String is shorter than the minimum length of 2.');
1647
+ });
1648
+ it('subschema $id updates base URI for relative $ref inside that subschema', async () => {
1649
+ const nestedTarget = {
1650
+ $schema: 'http://json-schema.org/draft-07/schema#',
1651
+ type: 'string',
1652
+ minLength: 2,
1653
+ };
1654
+ const root = {
1655
+ $schema: 'http://json-schema.org/draft-07/schema#',
1656
+ $id: 'http://example.com/root.json',
1657
+ type: 'object',
1658
+ properties: {
1659
+ x: {
1660
+ $id: 'http://example.com/other/',
1661
+ $ref: 'sub.json',
1662
+ },
1663
+ },
1664
+ required: ['x'],
1665
+ };
1666
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, 'http://example.com/other/sub.json', nestedTarget);
1667
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, 'file:///nested-base.schema.json', root);
1668
+ const yaml = `# yaml-language-server: $schema=file:///nested-base.schema.json
1669
+ x: A
1670
+ `;
1671
+ const result = await parseSetup(yaml, 'file:///nested-base.schema.json');
1672
+ (0, chai_1.expect)(result.some((d) => /Problems loading reference/i.test(d.message))).to.eq(false);
1673
+ (0, chai_1.expect)(result).to.have.length(1);
1674
+ (0, chai_1.expect)(result[0].message).to.include('String is shorter than the minimum length of 2.');
1675
+ });
1676
+ it('should resolve embedded resource $id for relative $ref without external load', async () => {
1677
+ const root = {
1678
+ $schema: 'http://json-schema.org/draft-07/schema#',
1679
+ type: 'object',
1680
+ properties: {
1681
+ x: { $ref: 'other.json#bar' },
1682
+ },
1683
+ required: ['x'],
1684
+ definitions: {
1685
+ B: {
1686
+ $id: 'other.json',
1687
+ definitions: {
1688
+ X: {
1689
+ $id: '#bar',
1690
+ type: 'string',
1691
+ minLength: 2,
1692
+ },
1693
+ },
1694
+ },
1695
+ },
1696
+ };
1697
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, 'file:///embedded-resource.schema.json', root);
1698
+ const yaml = `# yaml-language-server: $schema=file:///embedded-resource.schema.json
1699
+ x: A
1700
+ `;
1701
+ const result = await parseSetup(yaml, 'file:///embedded-resource.schema.json');
1702
+ (0, chai_1.expect)(result.some((d) => /Problems loading reference/i.test(d.message))).to.eq(false);
1703
+ (0, chai_1.expect)(result).to.have.length(1);
1704
+ (0, chai_1.expect)(result[0].message).to.include('String is shorter than the minimum length of 2.');
1705
+ });
1706
+ it('root $id can switch base scheme/host for resolution', async () => {
1707
+ const remotePackageSchema = {
1708
+ $schema: 'http://json-schema.org/draft-07/schema#',
1709
+ type: 'object',
1710
+ };
1711
+ const baseOk = {
1712
+ $schema: 'http://json-schema.org/draft-07/schema#',
1713
+ $id: 'https://www.schemastore.org/',
1714
+ type: 'object',
1715
+ properties: {
1716
+ pkg: { $ref: 'package.json' },
1717
+ },
1718
+ required: ['pkg'],
1719
+ };
1720
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, 'https://www.schemastore.org/package.json', remotePackageSchema);
1721
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, 'file:///baseuri-ok.schema.json', baseOk);
1722
+ const yaml = `# yaml-language-server: $schema=file:///baseuri-ok.schema.json
1723
+ pkg: 123
1724
+ `;
1725
+ const result = await parseSetup(yaml, 'file:///baseuri-ok.schema.json');
1726
+ (0, chai_1.expect)(result.some((d) => /Problems loading reference/i.test(d.message))).to.eq(false);
1727
+ (0, chai_1.expect)(result[0].message).to.include('Incorrect type.');
1728
+ });
1729
+ it('without root $id, relative $ref resolves against the retrieval URI and can fail', async () => {
1730
+ const baseFail = {
1731
+ $schema: 'http://json-schema.org/draft-07/schema#',
1732
+ type: 'object',
1733
+ properties: {
1734
+ pkg: { $ref: 'package.json' },
1735
+ },
1736
+ required: ['pkg'],
1737
+ };
1738
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, 'file:///baseuri-fail.schema.json', baseFail);
1739
+ const yaml = `# yaml-language-server: $schema=file:///baseuri-fail.schema.json
1740
+ pkg: 123
1741
+ `;
1742
+ const result = await parseSetup(yaml, 'file:///baseuri-fail.schema.json');
1743
+ (0, chai_1.expect)(result).to.not.be.empty;
1744
+ (0, chai_1.expect)(result.some((d) => /Problems loading reference/i.test(d.message) && /No content/i.test(d.message))).to.eq(true);
1745
+ });
1746
+ });
1747
+ it('Resolving $refs: should ignore sibling keywords next to $ref', async () => {
1748
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1749
+ $schema: 'http://json-schema.org/draft-07/schema#',
1750
+ type: 'object',
1751
+ properties: {
1752
+ value: {
1753
+ $ref: '#/definitions/A',
1754
+ type: 'number',
1755
+ },
1756
+ },
1757
+ definitions: {
1758
+ A: { type: 'string' },
1759
+ },
1760
+ });
1761
+ (0, chai_1.expect)(await parseSetup(`value: hello`)).to.be.empty;
1762
+ const bad = await parseSetup(`value: 1`);
1763
+ (0, chai_1.expect)(bad[0].message).to.include('Incorrect type. Expected');
1764
+ (0, chai_1.expect)(bad[0].message).to.include('string');
1765
+ });
1766
+ it('schema should validate additionalProp oneOf', async () => {
1767
+ const schema = {
1768
+ properties: {
1769
+ env: {
1770
+ $ref: 'https://json.schemastore.org/github-workflow.json#/definitions/env',
1771
+ },
1772
+ },
1773
+ };
1774
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1775
+ const content = `env: \${{ matrix.env1 }`;
1776
+ const result = await parseSetup(content);
1777
+ (0, chai_1.expect)(result).to.be.not.empty;
1778
+ (0, chai_1.expect)(telemetry.messages).to.be.empty;
1779
+ (0, chai_1.expect)(result.length).to.eq(1);
1780
+ assert.deepStrictEqual(result[0].message, 'String does not match the pattern of "^.*\\$\\{\\{(.|[\r\n])*\\}\\}.*$".');
1781
+ });
1782
+ it('schema should validate ipv4 format - Negative Case', async () => {
1783
+ const schema = {
1784
+ type: 'array',
1785
+ items: {
1786
+ type: 'string',
1787
+ format: 'ipv4',
1788
+ },
1789
+ };
1790
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1791
+ const content = `- 10.15.12.500`;
1792
+ const result = await parseSetup(content);
1793
+ (0, chai_1.expect)(result).to.be.not.empty;
1794
+ (0, chai_1.expect)(telemetry.messages).to.be.empty;
1795
+ (0, chai_1.expect)(result.length).to.eq(1);
1796
+ assert.deepStrictEqual(result[0].message, 'String does not match IPv4 format.');
1797
+ });
1798
+ it('schema should validate ipv4 format - Positive Case', async () => {
1799
+ const schema = {
1800
+ type: 'array',
1801
+ items: {
1802
+ type: 'string',
1803
+ format: 'ipv4',
1804
+ },
1805
+ };
1806
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1807
+ const content = `- 255.255.255.255`;
1808
+ const result = await parseSetup(content);
1809
+ (0, chai_1.expect)(result).to.be.empty;
1810
+ (0, chai_1.expect)(telemetry.messages).to.be.empty;
1811
+ });
1812
+ it('schema should validate ipv6 format - Negative Case', async () => {
1813
+ const schema = {
1814
+ type: 'array',
1815
+ items: {
1816
+ type: 'string',
1817
+ format: 'ipv6',
1818
+ },
1819
+ };
1820
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1821
+ const content = `- 10.15.12.500`;
1822
+ const result = await parseSetup(content);
1823
+ (0, chai_1.expect)(result).to.be.not.empty;
1824
+ (0, chai_1.expect)(telemetry.messages).to.be.empty;
1825
+ (0, chai_1.expect)(result.length).to.eq(1);
1826
+ assert.deepStrictEqual(result[0].message, 'String does not match IPv6 format.');
1827
+ });
1828
+ it('schema should validate ipv6 format - Positive Case', async () => {
1829
+ const schema = {
1830
+ type: 'array',
1831
+ items: {
1832
+ type: 'string',
1833
+ format: 'ipv6',
1834
+ },
1835
+ };
1836
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1837
+ const content = `- 2001:0db8:85a3:0000:0000:8a2e:0370:7334\n- 2001:0db8:85a3:0000:0000:8a2e:0370:7334\n- FEDC:BA98:7654:3210:FEDC:BA98:7654:3210\n- 1080::8:800:200C:417A\n- FF01::101\n- ::1`;
1838
+ const result = await parseSetup(content);
1839
+ (0, chai_1.expect)(result).to.be.empty;
1840
+ (0, chai_1.expect)(telemetry.messages).to.be.empty;
1841
+ });
1842
+ it('should handle bad schema refs', async () => {
1843
+ const schema = {
1844
+ type: 'object',
1845
+ properties: {
1846
+ bar: {
1847
+ oneOf: ['array', 'boolean'],
1848
+ },
1849
+ },
1850
+ additionalProperties: true,
1851
+ };
1852
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1853
+ const content = `bar: ddd`;
1854
+ const result = await parseSetup(content);
1855
+ (0, chai_1.expect)(result.length).to.eq(1);
1856
+ (0, chai_1.expect)(telemetry.messages).to.be.empty;
1857
+ });
1858
+ it('should not use same AST for completion and validation', async () => {
1859
+ const schema = {
1860
+ type: 'object',
1861
+ properties: {
1862
+ container: {
1863
+ type: 'object',
1864
+ properties: {
1865
+ image: {
1866
+ type: 'string',
1867
+ },
1868
+ command: {
1869
+ type: 'array',
1870
+ items: {
1871
+ type: 'string',
1872
+ },
1873
+ },
1874
+ },
1875
+ },
1876
+ },
1877
+ };
1878
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1879
+ const content = `container:
1880
+ image: alpine
1881
+ command:
1882
+ - aaa
1883
+ - bbb
1884
+ - dddddd
1885
+ - ccc`;
1886
+ const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)(content);
1887
+ yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
1888
+ yamlSettings.documents.set(testTextDocument);
1889
+ await languageService.doComplete(testTextDocument, vscode_languageserver_types_1.Position.create(6, 8), false);
1890
+ const result = await validationHandler.validateTextDocument(testTextDocument);
1891
+ (0, chai_1.expect)(result).to.be.empty;
1892
+ });
1893
+ });
1894
+ describe('Enum tests', () => {
1895
+ afterEach(() => {
1896
+ schemaProvider.deleteSchema(testHelper_1.SCHEMA_ID);
1897
+ });
1898
+ it('Enum Validation with invalid enum value', async () => {
1899
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1900
+ type: 'object',
1901
+ properties: {
1902
+ first: {
1903
+ type: 'string',
1904
+ enum: ['a', 'b'],
1905
+ },
1906
+ second: {
1907
+ type: 'number',
1908
+ enum: [1, 2],
1909
+ },
1910
+ },
1911
+ });
1912
+ const content = 'first: c\nsecond: 3';
1913
+ const result = await parseSetup(content);
1914
+ (0, chai_1.expect)(result.length).to.eq(2);
1915
+ (0, chai_1.expect)(telemetry.messages).to.be.empty;
1916
+ });
1917
+ it('Enum Validation with invalid type', async () => {
1918
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1919
+ type: 'object',
1920
+ properties: {
1921
+ first: {
1922
+ type: 'string',
1923
+ enum: ['a', 'b'],
1924
+ },
1925
+ second: {
1926
+ type: 'number',
1927
+ enum: [1, 2],
1928
+ },
1929
+ },
1930
+ });
1931
+ const content = 'first: c\nsecond: a';
1932
+ const result = await parseSetup(content);
1933
+ (0, chai_1.expect)(result.length).to.eq(3);
1934
+ (0, chai_1.expect)(telemetry.messages).to.be.empty;
1935
+ });
1936
+ it('Enum Validation with invalid data', async () => {
1937
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1938
+ definitions: {
1939
+ rule: {
1940
+ description: 'A rule',
1941
+ type: 'object',
1942
+ properties: {
1943
+ kind: {
1944
+ description: 'The kind of rule',
1945
+ type: 'string',
1946
+ enum: ['tested'],
1947
+ },
1948
+ },
1949
+ required: ['kind'],
1950
+ additionalProperties: false,
1951
+ },
1952
+ },
1953
+ properties: {
1954
+ rules: {
1955
+ description: 'Rule list',
1956
+ type: 'array',
1957
+ items: {
1958
+ $ref: '#/definitions/rule',
1959
+ },
1960
+ minProperties: 1,
1961
+ additionalProperties: false,
1962
+ },
1963
+ },
1964
+ });
1965
+ const content = 'rules:\n - kind: test';
1966
+ const result = await parseSetup(content);
1967
+ (0, chai_1.expect)(result.length).to.eq(1);
1968
+ (0, chai_1.expect)(result[0].message).to.eq('Value is not accepted. Valid values: "tested".');
1969
+ });
1970
+ it('value matches more than one schema in oneOf - but among one is format matches', async () => {
1971
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1972
+ type: 'object',
1973
+ properties: {
1974
+ repository: {
1975
+ oneOf: [
1976
+ {
1977
+ type: 'string',
1978
+ format: 'uri',
1979
+ },
1980
+ {
1981
+ type: 'string',
1982
+ pattern: '^@',
1983
+ },
1984
+ ],
1985
+ },
1986
+ },
1987
+ });
1988
+ const content = `repository: '@bittrr'`;
1989
+ const result = await parseSetup(content);
1990
+ (0, chai_1.expect)(result.length).to.eq(0);
1991
+ (0, chai_1.expect)(telemetry.messages).to.be.empty;
1992
+ });
1993
+ it('value matches more than one schema in oneOf', async () => {
1994
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1995
+ type: 'object',
1996
+ properties: {
1997
+ foo: {},
1998
+ bar: {},
1999
+ },
2000
+ oneOf: [
2001
+ {
2002
+ required: ['foo'],
2003
+ },
2004
+ {
2005
+ required: ['bar'],
2006
+ },
2007
+ ],
2008
+ });
2009
+ const content = `foo: bar\nbar: baz`;
2010
+ const result = await parseSetup(content);
2011
+ (0, chai_1.expect)(result.length).to.eq(1);
2012
+ (0, chai_1.expect)(result[0].message).to.eq('Matches multiple schemas when only one must validate.');
2013
+ (0, chai_1.expect)(telemetry.messages).to.be.empty;
2014
+ });
2015
+ });
2016
+ describe('Schema meta-validation', () => {
2017
+ it('should handle not valid schema object', async () => {
2018
+ const schema = 'Foo';
2019
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2020
+ const content = `foo: bar`;
2021
+ const result = await parseSetup(content);
2022
+ (0, chai_1.expect)(result).to.have.length(1);
2023
+ (0, chai_1.expect)(result[0].message).to.include('default_schema_id.yaml');
2024
+ (0, chai_1.expect)(result[0].message).to.include('is not valid:');
2025
+ (0, chai_1.expect)(result[0].message).to.include('expected a JSON Schema object or boolean, got');
2026
+ (0, chai_1.expect)(result[0].message).to.include('string');
2027
+ (0, chai_1.expect)(telemetry.messages).to.be.empty;
2028
+ });
2029
+ const content = '6';
2030
+ it('draft-04: exclusiveMinimum must be boolean', async () => {
2031
+ const schema = {
2032
+ $schema: 'http://json-schema.org/draft-04/schema#',
2033
+ type: 'number',
2034
+ minimum: 5,
2035
+ exclusiveMinimum: 5,
2036
+ };
2037
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2038
+ const result = await parseSetup(content);
2039
+ (0, chai_1.expect)(result).to.have.length(1);
2040
+ (0, chai_1.expect)(result[0].message).to.include('default_schema_id.yaml');
2041
+ (0, chai_1.expect)(result[0].message).to.include('is not valid:');
2042
+ (0, chai_1.expect)(result[0].message).to.include('exclusiveMinimum');
2043
+ });
2044
+ it('draft-07: exclusiveMinimum must be number', async () => {
2045
+ const schema = {
2046
+ $schema: 'http://json-schema.org/draft-07/schema#',
2047
+ type: 'number',
2048
+ minimum: 5,
2049
+ exclusiveMinimum: true,
2050
+ };
2051
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2052
+ const result = await parseSetup(content);
2053
+ (0, chai_1.expect)(result).to.have.length(1);
2054
+ (0, chai_1.expect)(result[0].message).to.include('default_schema_id.yaml');
2055
+ (0, chai_1.expect)(result[0].message).to.include('is not valid:');
2056
+ (0, chai_1.expect)(result[0].message).to.include('exclusiveMinimum');
2057
+ });
2058
+ it('draft-2019-09: should handle invalid type in $defs', async () => {
2059
+ const schema = {
2060
+ $schema: 'https://json-schema.org/draft/2019-09/schema',
2061
+ $defs: {
2062
+ foo: {
2063
+ type: 'object',
2064
+ properties: {
2065
+ bar: {
2066
+ type: ['foo', 'bar'],
2067
+ },
2068
+ },
2069
+ },
2070
+ },
2071
+ };
2072
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2073
+ const result = await parseSetup(content);
2074
+ (0, chai_1.expect)(result).to.have.length(1);
2075
+ (0, chai_1.expect)(result[0].message).to.include('default_schema_id.yaml');
2076
+ (0, chai_1.expect)(result[0].message).to.include('is not valid:');
2077
+ (0, chai_1.expect)(result[0].message).to.include('$defs');
2078
+ });
2079
+ it('draft-2020-12: prefixItems must be an array', async () => {
2080
+ const schema = {
2081
+ $schema: 'https://json-schema.org/draft/2020-12/schema',
2082
+ type: 'number',
2083
+ prefixItems: 'foo',
2084
+ };
2085
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2086
+ const result = await parseSetup(content);
2087
+ (0, chai_1.expect)(result).to.have.length(1);
2088
+ (0, chai_1.expect)(result[0].message).to.include('default_schema_id.yaml');
2089
+ (0, chai_1.expect)(result[0].message).to.include('is not valid:');
2090
+ (0, chai_1.expect)(result[0].message).to.include('prefixItems');
2091
+ });
2092
+ });
2093
+ it('Nested AnyOf const should correctly evaluate and merge problems', async () => {
2094
+ // note that 'missing form property' is necessary to trigger the bug (there has to be some problem in both subSchemas)
2095
+ // order of the object in `anyOf` is also important
2096
+ const schema = {
2097
+ type: 'object',
2098
+ properties: {
2099
+ options: {
2100
+ anyOf: [
2101
+ {
2102
+ type: 'object',
2103
+ properties: {
2104
+ form: {
2105
+ type: 'string',
2106
+ },
2107
+ provider: {
2108
+ type: 'string',
2109
+ const: 'test1',
2110
+ },
2111
+ },
2112
+ required: ['form', 'provider'],
2113
+ },
2114
+ {
2115
+ type: 'object',
2116
+ properties: {
2117
+ form: {
2118
+ type: 'string',
2119
+ },
2120
+ provider: {
2121
+ anyOf: [
2122
+ {
2123
+ type: 'string',
2124
+ const: 'testX',
2125
+ },
2126
+ ],
2127
+ },
2128
+ },
2129
+ required: ['form', 'provider'],
2130
+ },
2131
+ ],
2132
+ },
2133
+ },
2134
+ };
2135
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2136
+ const content = `options:\n provider: testX`;
2137
+ const result = await parseSetup(content);
2138
+ assert.deepEqual(result.map((e) => e.message), ['Missing property "form".'] // not inclide provider error
2139
+ );
2140
+ });
2141
+ it('URL-encoded characters in $ref', async () => {
2142
+ // note that 'missing form property' is necessary to trigger the bug (there has to be some problem in both subSchemas)
2143
+ // order of the object in `anyOf` is also important
2144
+ const schema = {
2145
+ type: 'object',
2146
+ properties: {
2147
+ myProperty: {
2148
+ $ref: '#/definitions/Interface%3Ctype%3E',
2149
+ },
2150
+ },
2151
+ definitions: {
2152
+ 'Interface<type>': {
2153
+ type: 'object',
2154
+ properties: {
2155
+ foo: {
2156
+ type: 'string',
2157
+ },
2158
+ },
2159
+ },
2160
+ },
2161
+ };
2162
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2163
+ const content = `myProperty:\n foo: bar`;
2164
+ const result = await parseSetup(content);
2165
+ assert.equal(result.length, 0);
2166
+ });
2167
+ it('value should match as per schema const on boolean', async () => {
2168
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2169
+ type: 'object',
2170
+ properties: {
2171
+ prop: {
2172
+ const: true,
2173
+ type: 'boolean',
2174
+ },
2175
+ },
2176
+ });
2177
+ let content = `prop: false`;
2178
+ let result = await parseSetup(content);
2179
+ (0, chai_1.expect)(result.length).to.eq(1);
2180
+ (0, chai_1.expect)(result[0].message).to.eq('Value must be true.');
2181
+ content = `prop: true`;
2182
+ result = await parseSetup(content);
2183
+ (0, chai_1.expect)(result.length).to.eq(0);
2184
+ });
2185
+ it('draft-04 schema', async () => {
2186
+ const schema = {
2187
+ $schema: 'http://json-schema.org/draft-04/schema#',
2188
+ type: 'object',
2189
+ properties: {
2190
+ myProperty: {
2191
+ $ref: '#/definitions/Interface%3Ctype%3E',
2192
+ },
2193
+ },
2194
+ definitions: {
2195
+ 'Interface<type>': {
2196
+ type: 'object',
2197
+ properties: {
2198
+ foo: {
2199
+ type: 'string',
2200
+ },
2201
+ multipleOf: {
2202
+ type: 'number',
2203
+ minimum: 0,
2204
+ exclusiveMinimum: true,
2205
+ },
2206
+ },
2207
+ },
2208
+ },
2209
+ };
2210
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2211
+ const content = `myProperty:\n foo: bar\n multipleOf: 1`;
2212
+ const result = await parseSetup(content);
2213
+ assert.equal(result.length, 0);
2214
+ });
2215
+ it('draft-04 schema with https in metaschema URI', async () => {
2216
+ const schema = {
2217
+ $schema: 'https://json-schema.org/draft-04/schema#',
2218
+ type: 'object',
2219
+ properties: {
2220
+ myProperty: {
2221
+ $ref: '#/definitions/Interface%3Ctype%3E',
2222
+ },
2223
+ },
2224
+ definitions: {
2225
+ 'Interface<type>': {
2226
+ type: 'object',
2227
+ properties: {
2228
+ foo: {
2229
+ type: 'string',
2230
+ },
2231
+ multipleOf: {
2232
+ type: 'number',
2233
+ minimum: 0,
2234
+ exclusiveMinimum: true,
2235
+ },
2236
+ },
2237
+ },
2238
+ },
2239
+ };
2240
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2241
+ const content = `myProperty:\n foo: bar\n multipleOf: 1`;
2242
+ const result = await parseSetup(content);
2243
+ assert.equal(result.length, 0);
2244
+ });
2245
+ it('resolves relative $ref using local sibling schema path before remote $id ref', async () => {
2246
+ const primaryUri = 'file:///schemas/primary.json';
2247
+ const secondaryUri = 'file:///schemas/secondary.json';
2248
+ const primarySchema = {
2249
+ $id: 'https://example.com/schemas/primary.json',
2250
+ type: 'object',
2251
+ properties: {
2252
+ mode: { $ref: 'secondary.json' },
2253
+ },
2254
+ required: ['mode'],
2255
+ };
2256
+ const secondarySchema = {
2257
+ $id: 'https://example.com/schemas/secondary.json',
2258
+ type: 'string',
2259
+ enum: ['dev', 'prod'],
2260
+ };
2261
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, primaryUri, primarySchema);
2262
+ schemaProvider.addSchemaWithUri(testHelper_1.SCHEMA_ID, secondaryUri, secondarySchema);
2263
+ const content = `# yaml-language-server: $schema=${primaryUri}\nmode: stage`;
2264
+ const result = await parseSetup(content);
2265
+ (0, chai_1.expect)(result).to.have.length(1);
2266
+ (0, chai_1.expect)(result[0].message).to.include('Value is not accepted. Valid values');
2267
+ });
2268
+ });
2269
+ //# sourceMappingURL=schemaValidation.test.js.map