@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,2832 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Red Hat. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ /* eslint-disable @typescript-eslint/no-var-requires */
8
+ const testHelper_1 = require("./utils/testHelper");
9
+ const assert = require("assert");
10
+ const path = require("path");
11
+ const verifyError_1 = require("./utils/verifyError");
12
+ const serviceSetup_1 = require("./utils/serviceSetup");
13
+ const vscode_languageserver_types_1 = require("vscode-languageserver-types");
14
+ const chai_1 = require("chai");
15
+ const yamlSettings_1 = require("../src/yamlSettings");
16
+ describe('Auto Completion Tests', () => {
17
+ let languageSettingsSetup;
18
+ let languageService;
19
+ let languageHandler;
20
+ let yamlSettings;
21
+ let schemaProvider;
22
+ before(() => {
23
+ languageSettingsSetup = new serviceSetup_1.ServiceSetup().withCompletion().withSchemaFileMatch({
24
+ uri: 'http://google.com',
25
+ fileMatch: ['bad-schema.yaml'],
26
+ });
27
+ const { languageService: langService, languageHandler: langHandler, yamlSettings: settings, schemaProvider: testSchemaProvider, } = (0, testHelper_1.setupLanguageService)(languageSettingsSetup.languageSettings);
28
+ languageService = langService;
29
+ languageHandler = langHandler;
30
+ yamlSettings = settings;
31
+ schemaProvider = testSchemaProvider;
32
+ });
33
+ /**
34
+ * Generates a completion list for the given document and caret (cursor) position.
35
+ * @param content The content of the document.
36
+ * @param position The position of the caret in the document.
37
+ * Alternatively, `position` can be omitted if the caret is located in the content using `|` bookends.
38
+ * For example, `content = 'ab|c|d'` places the caret over the `'c'`, at `position = 2`
39
+ * @returns A list of valid completions.
40
+ */
41
+ function parseSetup(content, position) {
42
+ if (typeof position === 'undefined') {
43
+ ({ content, position } = (0, testHelper_1.caretPosition)(content));
44
+ }
45
+ const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)(content);
46
+ yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
47
+ yamlSettings.documents.set(testTextDocument);
48
+ return languageHandler.completionHandler({
49
+ position: testTextDocument.positionAt(position),
50
+ textDocument: testTextDocument,
51
+ });
52
+ }
53
+ afterEach(() => {
54
+ schemaProvider.deleteSchema(testHelper_1.SCHEMA_ID);
55
+ languageService.configure(languageSettingsSetup.languageSettings);
56
+ });
57
+ describe('YAML Completion Tests', function () {
58
+ describe('JSON Schema Tests', function () {
59
+ it('Autocomplete on root without word', (done) => {
60
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
61
+ type: 'object',
62
+ properties: {
63
+ name: {
64
+ type: 'string',
65
+ },
66
+ },
67
+ });
68
+ const content = '';
69
+ const completion = parseSetup(content, 0);
70
+ completion
71
+ .then(function (result) {
72
+ assert.equal(result.items.length, 1);
73
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('name', 'name: ', 0, 0, 0, 0, 10, 2, {
74
+ documentation: '',
75
+ }));
76
+ })
77
+ .then(done, done);
78
+ });
79
+ it('Autocomplete on root with partial word', (done) => {
80
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
81
+ type: 'object',
82
+ properties: {
83
+ name: {
84
+ type: 'string',
85
+ },
86
+ },
87
+ });
88
+ const content = 'na'; // len: 2
89
+ const completion = parseSetup(content, 2);
90
+ completion
91
+ .then(function (result) {
92
+ assert.equal(result.items.length, 1);
93
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('name', 'name: ', 0, 0, 0, 2, 10, 2, {
94
+ documentation: '',
95
+ }));
96
+ })
97
+ .then(done, done);
98
+ });
99
+ it('Autocomplete on default value (without :)', (done) => {
100
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
101
+ type: 'object',
102
+ properties: {
103
+ name: {
104
+ type: 'string',
105
+ default: 'yaml',
106
+ },
107
+ },
108
+ });
109
+ const content = 'name'; // len: 4
110
+ const completion = parseSetup(content, 10);
111
+ completion
112
+ .then(function (result) {
113
+ assert.equal(result.items.length, 1);
114
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('name', 'name: ${1:yaml}', 0, 0, 0, 4, 10, 2, {
115
+ documentation: '',
116
+ }));
117
+ })
118
+ .then(done, done);
119
+ });
120
+ it('Autocomplete on default value (without value content)', (done) => {
121
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
122
+ type: 'object',
123
+ properties: {
124
+ name: {
125
+ type: 'string',
126
+ default: 'yaml',
127
+ },
128
+ },
129
+ });
130
+ const content = 'name: '; // len: 6
131
+ const completion = parseSetup(content, 12);
132
+ completion
133
+ .then(function (result) {
134
+ assert.equal(result.items.length, 1);
135
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('yaml', 'yaml', 0, 6, 0, 6, 12, 2, {
136
+ detail: 'Default value',
137
+ }));
138
+ })
139
+ .then(done, done);
140
+ });
141
+ it('Autocomplete on default value with \\"', async () => {
142
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
143
+ type: 'object',
144
+ properties: {
145
+ name: {
146
+ type: 'string',
147
+ default: '"yaml"',
148
+ },
149
+ },
150
+ });
151
+ const content = 'name: '; // len: 6
152
+ const completion = await parseSetup(content, 6);
153
+ assert.strictEqual(completion.items.length, 1);
154
+ assert.deepStrictEqual(completion.items[0], (0, verifyError_1.createExpectedCompletion)('"yaml"', '"yaml"', 0, 6, 0, 6, 12, 2, {
155
+ detail: 'Default value',
156
+ }));
157
+ });
158
+ it('Autocomplete name and value with \\"', async () => {
159
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
160
+ type: 'object',
161
+ properties: {
162
+ name: {
163
+ type: 'string',
164
+ default: '"yaml"',
165
+ },
166
+ },
167
+ });
168
+ const content = 'nam|e|'; // len: 4, pos: 3
169
+ const completion = await parseSetup(content);
170
+ assert.strictEqual(completion.items.length, 1);
171
+ assert.deepStrictEqual(completion.items[0], (0, verifyError_1.createExpectedCompletion)('name', 'name: ${1:"yaml"}', 0, 0, 0, 4, 10, 2, {
172
+ documentation: '',
173
+ }));
174
+ });
175
+ it('Autocomplete on default value (with value content)', (done) => {
176
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
177
+ type: 'object',
178
+ properties: {
179
+ name: {
180
+ type: 'string',
181
+ default: 'yaml',
182
+ },
183
+ },
184
+ });
185
+ const content = 'name: ya'; // len: 8
186
+ const completion = parseSetup(content, 15);
187
+ completion
188
+ .then(function (result) {
189
+ assert.equal(result.items.length, 1);
190
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('yaml', 'yaml', 0, 6, 0, 8, 12, 2, {
191
+ detail: 'Default value',
192
+ }));
193
+ })
194
+ .then(done, done);
195
+ });
196
+ it('Autocomplete on default value (with value content contains dash)', (done) => {
197
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
198
+ type: 'object',
199
+ properties: {
200
+ name: {
201
+ type: 'string',
202
+ default: 'yaml-language',
203
+ },
204
+ },
205
+ });
206
+ const content = 'name: yaml-';
207
+ const completion = parseSetup(content, content.length);
208
+ completion
209
+ .then(function (result) {
210
+ assert.equal(result.items.length, 1);
211
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('yaml-language', 'yaml-language', 0, 6, 0, 11, 12, 2, {
212
+ detail: 'Default value',
213
+ }));
214
+ })
215
+ .then(done, done);
216
+ });
217
+ it('Autocomplete on boolean value (without value content)', (done) => {
218
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
219
+ type: 'object',
220
+ properties: {
221
+ yaml: {
222
+ type: 'boolean',
223
+ },
224
+ },
225
+ });
226
+ const content = 'yaml: '; // len: 6
227
+ const completion = parseSetup(content, 11);
228
+ completion
229
+ .then(function (result) {
230
+ assert.equal(result.items.length, 2);
231
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('true', 'true', 0, 6, 0, 6, 12, 2, {
232
+ documentation: '',
233
+ }));
234
+ assert.deepEqual(result.items[1], (0, verifyError_1.createExpectedCompletion)('false', 'false', 0, 6, 0, 6, 12, 2, {
235
+ documentation: '',
236
+ }));
237
+ })
238
+ .then(done, done);
239
+ });
240
+ it('Autocomplete on boolean value with key of `null`', () => {
241
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
242
+ type: 'object',
243
+ properties: {
244
+ validation: {
245
+ type: 'object',
246
+ additionalProperties: false,
247
+ properties: {
248
+ null: {
249
+ type: 'boolean',
250
+ default: false,
251
+ },
252
+ },
253
+ },
254
+ },
255
+ });
256
+ const content = ''; // len: 0
257
+ const completion = parseSetup(content, 0);
258
+ completion.then(function (result) {
259
+ (0, chai_1.expect)(result.items.length).equal(1);
260
+ (0, chai_1.expect)(result.items[0].insertText).equal('validation:\n \\"null\\": ${1:false}');
261
+ });
262
+ });
263
+ it('Autocomplete on boolean value (with value content)', (done) => {
264
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
265
+ type: 'object',
266
+ properties: {
267
+ yaml: {
268
+ type: 'boolean',
269
+ },
270
+ },
271
+ });
272
+ const content = 'yaml: fal'; // len: 9
273
+ const completion = parseSetup(content, 11);
274
+ completion
275
+ .then(function (result) {
276
+ assert.equal(result.items.length, 2);
277
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('true', 'true', 0, 6, 0, 9, 12, 2, {
278
+ documentation: '',
279
+ }));
280
+ assert.deepEqual(result.items[1], (0, verifyError_1.createExpectedCompletion)('false', 'false', 0, 6, 0, 9, 12, 2, {
281
+ documentation: '',
282
+ }));
283
+ })
284
+ .then(done, done);
285
+ });
286
+ it('Autocomplete on number value (without value content)', (done) => {
287
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
288
+ type: 'object',
289
+ properties: {
290
+ timeout: {
291
+ type: 'number',
292
+ default: 60000,
293
+ },
294
+ },
295
+ });
296
+ const content = 'timeout: '; // len: 9
297
+ const completion = parseSetup(content, 9);
298
+ completion
299
+ .then(function (result) {
300
+ assert.equal(result.items.length, 1);
301
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('60000', '60000', 0, 9, 0, 9, 12, 2, {
302
+ detail: 'Default value',
303
+ }));
304
+ })
305
+ .then(done, done);
306
+ });
307
+ it('Autocomplete on number value (with value content)', (done) => {
308
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
309
+ type: 'object',
310
+ properties: {
311
+ timeout: {
312
+ type: 'number',
313
+ default: 60000,
314
+ },
315
+ },
316
+ });
317
+ const content = 'timeout: 6'; // len: 10
318
+ const completion = parseSetup(content, 10);
319
+ completion
320
+ .then(function (result) {
321
+ assert.equal(result.items.length, 1);
322
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('60000', '60000', 0, 9, 0, 10, 12, 2, {
323
+ detail: 'Default value',
324
+ }));
325
+ })
326
+ .then(done, done);
327
+ });
328
+ it('Autocomplete key in middle of file', (done) => {
329
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
330
+ type: 'object',
331
+ properties: {
332
+ scripts: {
333
+ type: 'object',
334
+ properties: {
335
+ sample: {
336
+ type: 'string',
337
+ enum: ['test'],
338
+ },
339
+ },
340
+ },
341
+ },
342
+ });
343
+ const content = 'scripts:\n |s|ample'; // len: 17, pos: 11
344
+ const completion = parseSetup(content);
345
+ completion
346
+ .then(function (result) {
347
+ assert.equal(result.items.length, 1);
348
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('sample', 'sample: ${1:test}', 1, 2, 1, 8, 10, 2, {
349
+ documentation: '',
350
+ }));
351
+ })
352
+ .then(done, done);
353
+ });
354
+ it('Autocomplete key with default value in middle of file', (done) => {
355
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
356
+ type: 'object',
357
+ properties: {
358
+ scripts: {
359
+ type: 'object',
360
+ properties: {
361
+ sample: {
362
+ type: 'string',
363
+ default: 'test',
364
+ },
365
+ },
366
+ },
367
+ },
368
+ });
369
+ const content = 'scripts:\n |s|am'; // len: 14, pos: 11
370
+ const completion = parseSetup(content);
371
+ completion
372
+ .then(function (result) {
373
+ assert.equal(result.items.length, 1);
374
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('sample', 'sample: ${1:test}', 1, 2, 1, 5, 10, 2, {
375
+ documentation: '',
376
+ }));
377
+ })
378
+ .then(done, done);
379
+ });
380
+ it('Autocomplete without default value - not required', async () => {
381
+ const languageSettingsSetup = new serviceSetup_1.ServiceSetup().withCompletion();
382
+ languageSettingsSetup.languageSettings.disableDefaultProperties = true;
383
+ languageService.configure(languageSettingsSetup.languageSettings);
384
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
385
+ type: 'object',
386
+ properties: {
387
+ scripts: {
388
+ type: 'object',
389
+ properties: {
390
+ sample: {
391
+ type: 'string',
392
+ default: 'test',
393
+ },
394
+ objectSample: {
395
+ type: 'object',
396
+ },
397
+ },
398
+ },
399
+ },
400
+ });
401
+ const content = '';
402
+ const result = await parseSetup(content, 0);
403
+ (0, chai_1.expect)(result.items.length).to.be.equal(1);
404
+ (0, chai_1.expect)(result.items[0]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('scripts', 'scripts:\n ', 0, 0, 0, 0, 10, 2, {
405
+ documentation: '',
406
+ }));
407
+ });
408
+ it('Autocomplete without default value - required', async () => {
409
+ const languageSettingsSetup = new serviceSetup_1.ServiceSetup().withCompletion();
410
+ languageSettingsSetup.languageSettings.disableDefaultProperties = true;
411
+ languageService.configure(languageSettingsSetup.languageSettings);
412
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
413
+ type: 'object',
414
+ properties: {
415
+ scripts: {
416
+ type: 'object',
417
+ properties: {
418
+ sample: {
419
+ type: 'string',
420
+ default: 'test',
421
+ },
422
+ objectSample: {
423
+ type: 'object',
424
+ },
425
+ },
426
+ required: ['sample', 'objectSample'],
427
+ },
428
+ },
429
+ });
430
+ const content = '';
431
+ const result = await parseSetup(content, 0);
432
+ (0, chai_1.expect)(result.items.length).to.be.equal(1);
433
+ (0, chai_1.expect)(result.items[0]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('scripts', 'scripts:\n sample: ${1:test}\n objectSample:\n $2', 0, 0, 0, 0, 10, 2, {
434
+ documentation: '',
435
+ }));
436
+ });
437
+ it('Autocomplete second key in middle of file', (done) => {
438
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
439
+ type: 'object',
440
+ properties: {
441
+ scripts: {
442
+ type: 'object',
443
+ properties: {
444
+ sample: {
445
+ type: 'string',
446
+ enum: ['test'],
447
+ },
448
+ myOtherSample: {
449
+ type: 'string',
450
+ enum: ['test'],
451
+ },
452
+ },
453
+ },
454
+ },
455
+ });
456
+ const content = 'scripts:\n sample: test\n myOth|e|r'; // len: 33, pos: 31
457
+ const completion = parseSetup(content);
458
+ completion
459
+ .then(function (result) {
460
+ assert.equal(result.items.length, 1);
461
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('myOtherSample', 'myOtherSample: ${1:test}', 2, 2, 2, 9, 10, 2, {
462
+ documentation: '',
463
+ }));
464
+ })
465
+ .then(done, done);
466
+ });
467
+ it('Autocomplete does not happen right after key object', (done) => {
468
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
469
+ type: 'object',
470
+ properties: {
471
+ timeout: {
472
+ type: 'number',
473
+ default: 60000,
474
+ },
475
+ },
476
+ });
477
+ const content = 'timeout:'; // len: 8
478
+ const completion = parseSetup(content, 9);
479
+ completion
480
+ .then(function (result) {
481
+ assert.equal(result.items.length, 0);
482
+ })
483
+ .then(done, done);
484
+ });
485
+ it('Autocomplete does not happen right after : under an object', (done) => {
486
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
487
+ type: 'object',
488
+ properties: {
489
+ scripts: {
490
+ type: 'object',
491
+ properties: {
492
+ sample: {
493
+ type: 'string',
494
+ enum: ['test'],
495
+ },
496
+ myOtherSample: {
497
+ type: 'string',
498
+ enum: ['test'],
499
+ },
500
+ },
501
+ },
502
+ },
503
+ });
504
+ const content = 'scripts:\n sample:'; // len: 18
505
+ const completion = parseSetup(content, 21);
506
+ completion
507
+ .then(function (result) {
508
+ assert.equal(result.items.length, 0);
509
+ })
510
+ .then(done, done);
511
+ });
512
+ it('Autocomplete with defaultSnippet markdown', (done) => {
513
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
514
+ type: 'object',
515
+ properties: {
516
+ scripts: {
517
+ type: 'object',
518
+ properties: {},
519
+ defaultSnippets: [
520
+ {
521
+ label: 'myOtherSample snippet',
522
+ body: { myOtherSample: {} },
523
+ markdownDescription: 'snippet\n```yaml\nmyOtherSample:\n```\n',
524
+ },
525
+ ],
526
+ },
527
+ },
528
+ });
529
+ const content = 'scripts: ';
530
+ const completion = parseSetup(content, content.length);
531
+ completion
532
+ .then(function (result) {
533
+ assert.equal(result.items.length, 1);
534
+ assert.equal(result.items[0].insertText, '\n myOtherSample:');
535
+ assert.equal(result.items[0].documentation.value, 'snippet\n```yaml\nmyOtherSample:\n```\n');
536
+ })
537
+ .then(done, done);
538
+ });
539
+ it('Autocomplete on multi yaml documents in a single file on root', (done) => {
540
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
541
+ type: 'object',
542
+ properties: {
543
+ timeout: {
544
+ type: 'number',
545
+ default: 60000,
546
+ },
547
+ },
548
+ });
549
+ const content = '---\ntimeout: 10\n...\n---\n...'; // len: 27
550
+ const completion = parseSetup(content, 28);
551
+ completion
552
+ .then(function (result) {
553
+ assert.equal(result.items.length, 1);
554
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('timeout', 'timeout: ${1:60000}', 4, 0, 4, 3, 10, 2, {
555
+ documentation: '',
556
+ }));
557
+ })
558
+ .then(done, done);
559
+ });
560
+ it('Autocomplete on multi yaml documents in a single file on scalar', (done) => {
561
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
562
+ type: 'object',
563
+ properties: {
564
+ timeout: {
565
+ type: 'number',
566
+ default: 60000,
567
+ },
568
+ },
569
+ });
570
+ const content = '---\ntimeout: 10\n...\n---\nti|m|e \n...'; // len: 33, pos: 26
571
+ const completion = parseSetup(content);
572
+ completion
573
+ .then(function (result) {
574
+ assert.equal(result.items.length, 1);
575
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('timeout', 'timeout: ${1:60000}', 4, 0, 4, 4, 10, 2, {
576
+ documentation: '',
577
+ }));
578
+ })
579
+ .then(done, done);
580
+ });
581
+ it('Autocompletion has no results on value when they are not available', (done) => {
582
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
583
+ type: 'object',
584
+ properties: {
585
+ time: {
586
+ type: 'string',
587
+ },
588
+ },
589
+ });
590
+ const content = 'time: '; // len: 6
591
+ const completion = parseSetup(content, 6);
592
+ completion
593
+ .then(function (result) {
594
+ assert.equal(result.items.length, 0);
595
+ })
596
+ .then(done, done);
597
+ });
598
+ it('Test that properties that have multiple types get auto completed properly', (done) => {
599
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
600
+ type: 'object',
601
+ properties: {
602
+ scripts: {
603
+ type: ['string', 'boolean'],
604
+ enum: ['test', false, true],
605
+ },
606
+ },
607
+ });
608
+ const content = 'scripts: '; // len: 9
609
+ const completion = parseSetup(content, 9);
610
+ completion
611
+ .then(function (result) {
612
+ assert.equal(result.items.length, 3);
613
+ assert.equal(result.items[0].label, 'test');
614
+ assert.equal(result.items[1].label, 'false');
615
+ assert.equal(result.items[2].label, 'true');
616
+ })
617
+ .then(done, done);
618
+ });
619
+ it('Test that properties that have multiple enums get auto completed properly', (done) => {
620
+ const schema = {
621
+ definitions: {
622
+ ImageBuild: {
623
+ type: 'object',
624
+ properties: {
625
+ kind: {
626
+ type: 'string',
627
+ enum: ['ImageBuild', 'ImageBuilder'],
628
+ },
629
+ },
630
+ },
631
+ ImageStream: {
632
+ type: 'object',
633
+ properties: {
634
+ kind: {
635
+ type: 'string',
636
+ enum: ['ImageStream', 'ImageStreamBuilder'],
637
+ },
638
+ },
639
+ },
640
+ },
641
+ oneOf: [
642
+ {
643
+ $ref: '#/definitions/ImageBuild',
644
+ },
645
+ {
646
+ $ref: '#/definitions/ImageStream',
647
+ },
648
+ ],
649
+ };
650
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
651
+ const content = 'kind: '; // len: 6
652
+ const validator = parseSetup(content, 6);
653
+ validator
654
+ .then(function (result) {
655
+ assert.equal(result.items.length, 4);
656
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('ImageBuild', 'ImageBuild', 0, 6, 0, 6, 12, 2, {
657
+ documentation: undefined,
658
+ }));
659
+ assert.deepEqual(result.items[1], (0, verifyError_1.createExpectedCompletion)('ImageBuilder', 'ImageBuilder', 0, 6, 0, 6, 12, 2, {
660
+ documentation: undefined,
661
+ }));
662
+ assert.deepEqual(result.items[2], (0, verifyError_1.createExpectedCompletion)('ImageStream', 'ImageStream', 0, 6, 0, 6, 12, 2, {
663
+ documentation: undefined,
664
+ }));
665
+ assert.deepEqual(result.items[3], (0, verifyError_1.createExpectedCompletion)('ImageStreamBuilder', 'ImageStreamBuilder', 0, 6, 0, 6, 12, 2, {
666
+ documentation: undefined,
667
+ }));
668
+ })
669
+ .then(done, done);
670
+ });
671
+ it('Insert required attributes at correct level', (done) => {
672
+ const schema = require(path.join(__dirname, './fixtures/testRequiredProperties.json'));
673
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
674
+ const content = '- top:\n prop1: demo\n- ';
675
+ const completion = parseSetup(content, content.length);
676
+ completion
677
+ .then(function (result) {
678
+ assert.equal(result.items.length, 1);
679
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('top', 'top:\n prop1: ', 2, 2, 2, 2, 10, 2, {
680
+ documentation: '',
681
+ }));
682
+ })
683
+ .then(done, done);
684
+ });
685
+ it('Insert required attributes at correct level even on first element', (done) => {
686
+ const schema = require(path.join(__dirname, './fixtures/testRequiredProperties.json'));
687
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
688
+ const content = '- ';
689
+ const completion = parseSetup(content, content.length);
690
+ completion
691
+ .then(function (result) {
692
+ assert.equal(result.items.length, 1);
693
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('top', 'top:\n prop1: ', 0, 2, 0, 2, 10, 2, {
694
+ documentation: '',
695
+ }));
696
+ })
697
+ .then(done, done);
698
+ });
699
+ it('Provide the 3 types when none provided', (done) => {
700
+ const schema = require(path.join(__dirname, './fixtures/testArrayMaxProperties.json'));
701
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
702
+ const content = '- ';
703
+ const completion = parseSetup(content, content.length);
704
+ completion
705
+ .then(function (result) {
706
+ assert.equal(result.items.length, 3);
707
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('prop1', 'prop1: ', 0, 2, 0, 2, 10, 2, {
708
+ documentation: '',
709
+ }));
710
+ assert.deepEqual(result.items[1], (0, verifyError_1.createExpectedCompletion)('prop2', 'prop2: ', 0, 2, 0, 2, 10, 2, {
711
+ documentation: '',
712
+ }));
713
+ assert.deepEqual(result.items[2], (0, verifyError_1.createExpectedCompletion)('prop3', 'prop3: ', 0, 2, 0, 2, 10, 2, {
714
+ documentation: '',
715
+ }));
716
+ })
717
+ .then(done, done);
718
+ });
719
+ it('Provide the 2 types when one is provided', (done) => {
720
+ const schema = require(path.join(__dirname, './fixtures/testArrayMaxProperties.json'));
721
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
722
+ const content = '- prop1:\n ';
723
+ const completion = parseSetup(content, content.length);
724
+ completion
725
+ .then(function (result) {
726
+ assert.equal(result.items.length, 2);
727
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('prop2', 'prop2: ', 1, 2, 1, 2, 10, 2, {
728
+ documentation: '',
729
+ }));
730
+ assert.deepEqual(result.items[1], (0, verifyError_1.createExpectedCompletion)('prop3', 'prop3: ', 1, 2, 1, 2, 10, 2, {
731
+ documentation: '',
732
+ }));
733
+ })
734
+ .then(done, done);
735
+ });
736
+ it('Provide the 2 types when one is provided and the second is typed', (done) => {
737
+ const schema = require(path.join(__dirname, './fixtures/testArrayMaxProperties.json'));
738
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
739
+ const content = '- prop1:\n p';
740
+ const completion = parseSetup(content, content.length);
741
+ completion
742
+ .then(function (result) {
743
+ assert.equal(result.items.length, 2);
744
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('prop2', 'prop2: ', 1, 2, 1, 3, 10, 2, {
745
+ documentation: '',
746
+ }));
747
+ assert.deepEqual(result.items[1], (0, verifyError_1.createExpectedCompletion)('prop3', 'prop3: ', 1, 2, 1, 3, 10, 2, {
748
+ documentation: '',
749
+ }));
750
+ })
751
+ .then(done, done);
752
+ });
753
+ it('Provide no completion when maxProperties reached', (done) => {
754
+ const schema = require(path.join(__dirname, './fixtures/testArrayMaxProperties.json'));
755
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
756
+ const content = '- prop1:\n prop2:\n ';
757
+ const completion = parseSetup(content, content.length);
758
+ completion
759
+ .then(function (result) {
760
+ assert.equal(result.items.length, 0);
761
+ })
762
+ .then(done, done);
763
+ });
764
+ it('Autocompletion should escape @', async () => {
765
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
766
+ type: 'object',
767
+ properties: {
768
+ '@type': {
769
+ type: 'string',
770
+ enum: ['foo'],
771
+ },
772
+ },
773
+ });
774
+ const content = '';
775
+ const completion = await parseSetup(content, 0);
776
+ (0, chai_1.expect)(completion.items.length).to.be.equal(1);
777
+ (0, chai_1.expect)(completion.items[0]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('@type', '"@type": ${1:foo}', 0, 0, 0, 0, 10, 2, {
778
+ documentation: '',
779
+ }));
780
+ });
781
+ it('Autocompletion should escape colon when indicating map', async () => {
782
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
783
+ type: 'object',
784
+ properties: {
785
+ 'test: colon': {
786
+ type: 'object',
787
+ properties: {
788
+ none: {
789
+ type: 'boolean',
790
+ enum: [true],
791
+ },
792
+ },
793
+ },
794
+ },
795
+ });
796
+ const content = '';
797
+ const completion = await parseSetup(content, 0);
798
+ (0, chai_1.expect)(completion.items.length).to.be.equal(1);
799
+ (0, chai_1.expect)(completion.items[0]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('test: colon', '"test: colon":\n ', 0, 0, 0, 0, 10, 2, {
800
+ documentation: '',
801
+ }));
802
+ });
803
+ it('Autocompletion should not escape colon when no white-space following', async () => {
804
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
805
+ type: 'object',
806
+ properties: {
807
+ 'test:colon': {
808
+ type: 'object',
809
+ properties: {
810
+ none: {
811
+ type: 'boolean',
812
+ enum: [true],
813
+ },
814
+ },
815
+ },
816
+ },
817
+ });
818
+ const content = '';
819
+ const completion = await parseSetup(content, 0);
820
+ (0, chai_1.expect)(completion.items.length).to.be.equal(1);
821
+ (0, chai_1.expect)(completion.items[0]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('test:colon', 'test:colon:\n ', 0, 0, 0, 0, 10, 2, {
822
+ documentation: '',
823
+ }));
824
+ });
825
+ it('Autocompletion should not escape colon when no key part present', async () => {
826
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
827
+ type: 'object',
828
+ properties: {
829
+ ':colon': {
830
+ type: 'object',
831
+ properties: {
832
+ none: {
833
+ type: 'boolean',
834
+ enum: [true],
835
+ },
836
+ },
837
+ },
838
+ },
839
+ });
840
+ const content = '';
841
+ const completion = await parseSetup(content, 0);
842
+ (0, chai_1.expect)(completion.items.length).to.be.equal(1);
843
+ (0, chai_1.expect)(completion.items[0]).to.deep.equal((0, verifyError_1.createExpectedCompletion)(':colon', ':colon:\n ', 0, 0, 0, 0, 10, 2, {
844
+ documentation: '',
845
+ }));
846
+ });
847
+ describe('Conditional Schema', () => {
848
+ const schema = {
849
+ type: 'object',
850
+ title: 'basket',
851
+ properties: {
852
+ name: { type: 'string' },
853
+ },
854
+ if: {
855
+ filePatternAssociation: testHelper_1.SCHEMA_ID,
856
+ },
857
+ then: {
858
+ properties: {
859
+ pineapple: { type: 'string' },
860
+ },
861
+ required: ['pineapple'],
862
+ },
863
+ else: {
864
+ properties: {
865
+ tomato: { type: 'string' },
866
+ },
867
+ required: ['tomato'],
868
+ },
869
+ };
870
+ it('should suggest "then" block if "if" match filePatternAssociation', async () => {
871
+ schema.if.filePatternAssociation = testHelper_1.SCHEMA_ID;
872
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
873
+ const content = 'name: aName\n ';
874
+ const completion = await parseSetup(content, content.length);
875
+ (0, chai_1.expect)(completion.items.map((i) => i.label)).to.deep.equal(['pineapple', 'basket']);
876
+ });
877
+ });
878
+ });
879
+ describe('Array Specific Tests', function () {
880
+ it('Should insert empty array item', (done) => {
881
+ const schema = require(path.join(__dirname, './fixtures/testStringArray.json'));
882
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
883
+ const content = 'fooBa'; // len: 5
884
+ const completion = parseSetup(content, content.lastIndexOf('Ba') + 2); // pos: 3+2
885
+ completion
886
+ .then(function (result) {
887
+ assert.strictEqual('fooBar:\n - ${1}', result.items[0].insertText);
888
+ })
889
+ .then(done, done);
890
+ });
891
+ it('Array autocomplete without word and extra space', (done) => {
892
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
893
+ type: 'object',
894
+ properties: {
895
+ authors: {
896
+ type: 'array',
897
+ items: {
898
+ type: 'object',
899
+ properties: {
900
+ name: {
901
+ type: 'string',
902
+ },
903
+ },
904
+ },
905
+ },
906
+ },
907
+ });
908
+ const content = 'authors:\n - '; // len: 13
909
+ const completion = parseSetup(content, 14);
910
+ completion
911
+ .then(function (result) {
912
+ assert.equal(result.items.length, 1);
913
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('name', 'name: ', 1, 4, 1, 4, 10, 2, {
914
+ documentation: '',
915
+ }));
916
+ })
917
+ .then(done, done);
918
+ });
919
+ it('Array autocomplete without word and autocompletion beside -', (done) => {
920
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
921
+ type: 'object',
922
+ properties: {
923
+ authors: {
924
+ type: 'array',
925
+ items: {
926
+ type: 'object',
927
+ properties: {
928
+ name: {
929
+ type: 'string',
930
+ },
931
+ },
932
+ },
933
+ },
934
+ },
935
+ });
936
+ const content = 'authors:\n -'; // len: 12
937
+ const completion = parseSetup(content, 13);
938
+ completion
939
+ .then(function (result) {
940
+ assert.equal(result.items.length, 1);
941
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('name', ' name: ', 1, 3, 1, 3, 10, 2, {
942
+ documentation: '',
943
+ }));
944
+ })
945
+ .then(done, done);
946
+ });
947
+ it('Array autocomplete without word on space before array symbol', (done) => {
948
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
949
+ type: 'object',
950
+ properties: {
951
+ authors: {
952
+ type: 'array',
953
+ items: {
954
+ type: 'object',
955
+ properties: {
956
+ name: {
957
+ type: 'string',
958
+ },
959
+ email: {
960
+ type: 'string',
961
+ },
962
+ },
963
+ },
964
+ },
965
+ },
966
+ });
967
+ const content = 'authors:\n - name: test\n '; // len: 26
968
+ const completion = parseSetup(content, 26);
969
+ completion
970
+ .then(function (result) {
971
+ assert.equal(result.items.length, 1);
972
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('- (array item) object', '- ', 2, 2, 2, 2, 9, 2, {
973
+ documentation: { kind: 'markdown', value: 'Create an item of an array type `object`\n ```\n- \n```' },
974
+ }));
975
+ })
976
+ .then(done, done);
977
+ });
978
+ it('Array autocomplete on empty node with array from schema', (done) => {
979
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
980
+ type: 'object',
981
+ properties: {
982
+ authors: {
983
+ type: 'array',
984
+ items: {
985
+ type: 'object',
986
+ properties: {
987
+ name: {
988
+ type: 'string',
989
+ },
990
+ email: {
991
+ type: 'string',
992
+ },
993
+ },
994
+ },
995
+ },
996
+ },
997
+ });
998
+ const content = 'authors:\n'; // len: 9
999
+ const completion = parseSetup(content, 9);
1000
+ completion
1001
+ .then(function (result) {
1002
+ assert.equal(result.items.length, 1);
1003
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('- (array item) object', '- ', 1, 0, 1, 0, 9, 2, {
1004
+ documentation: { kind: 'markdown', value: 'Create an item of an array type `object`\n ```\n- \n```' },
1005
+ }));
1006
+ })
1007
+ .then(done, done);
1008
+ });
1009
+ it('Array autocomplete with letter', (done) => {
1010
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1011
+ type: 'object',
1012
+ properties: {
1013
+ authors: {
1014
+ type: 'array',
1015
+ items: {
1016
+ type: 'object',
1017
+ properties: {
1018
+ name: {
1019
+ type: 'string',
1020
+ },
1021
+ },
1022
+ },
1023
+ },
1024
+ },
1025
+ });
1026
+ const content = 'authors:\n - n'; // len: 14
1027
+ const completion = parseSetup(content, 14);
1028
+ completion
1029
+ .then(function (result) {
1030
+ assert.equal(result.items.length, 1);
1031
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('name', 'name: ', 1, 4, 1, 5, 10, 2, {
1032
+ documentation: '',
1033
+ }));
1034
+ })
1035
+ .then(done, done);
1036
+ });
1037
+ it('Array autocomplete without word (second item)', (done) => {
1038
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1039
+ type: 'object',
1040
+ properties: {
1041
+ authors: {
1042
+ type: 'array',
1043
+ items: {
1044
+ type: 'object',
1045
+ properties: {
1046
+ name: {
1047
+ type: 'string',
1048
+ },
1049
+ email: {
1050
+ type: 'string',
1051
+ },
1052
+ },
1053
+ },
1054
+ },
1055
+ },
1056
+ });
1057
+ const content = 'authors:\n - name: test\n '; // len: 28
1058
+ const completion = parseSetup(content, 32);
1059
+ completion
1060
+ .then(function (result) {
1061
+ assert.equal(result.items.length, 1);
1062
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('email', 'email: ', 2, 4, 2, 4, 10, 2, {
1063
+ documentation: '',
1064
+ }));
1065
+ })
1066
+ .then(done, done);
1067
+ });
1068
+ it('Array autocomplete with letter (second item)', (done) => {
1069
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1070
+ type: 'object',
1071
+ properties: {
1072
+ authors: {
1073
+ type: 'array',
1074
+ items: {
1075
+ type: 'object',
1076
+ properties: {
1077
+ name: {
1078
+ type: 'string',
1079
+ },
1080
+ email: {
1081
+ type: 'string',
1082
+ },
1083
+ },
1084
+ },
1085
+ },
1086
+ },
1087
+ });
1088
+ const content = 'authors:\n - name: test\n | |e'; // len: 29, pos: 27
1089
+ const completion = parseSetup(content);
1090
+ completion
1091
+ .then(function (result) {
1092
+ assert.equal(result.items.length, 1);
1093
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('email', 'email: ', 2, 3, 2, 3, 10, 2, {
1094
+ documentation: '',
1095
+ }));
1096
+ })
1097
+ .then(done, done);
1098
+ });
1099
+ it('Autocompletion after array', (done) => {
1100
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1101
+ type: 'object',
1102
+ properties: {
1103
+ authors: {
1104
+ type: 'array',
1105
+ items: {
1106
+ type: 'object',
1107
+ properties: {
1108
+ name: {
1109
+ type: 'string',
1110
+ },
1111
+ email: {
1112
+ type: 'string',
1113
+ },
1114
+ },
1115
+ },
1116
+ },
1117
+ load: {
1118
+ type: 'boolean',
1119
+ },
1120
+ },
1121
+ });
1122
+ const content = 'authors:\n - name: test\n'; // len: 24
1123
+ const completion = parseSetup(content, 24);
1124
+ completion
1125
+ .then(function (result) {
1126
+ assert.equal(result.items.length, 1);
1127
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('load', 'load: ', 2, 0, 2, 0, 10, 2, {
1128
+ documentation: '',
1129
+ }));
1130
+ })
1131
+ .then(done, done);
1132
+ });
1133
+ it('Autocompletion after array with depth - no indent', (done) => {
1134
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1135
+ type: 'object',
1136
+ properties: {
1137
+ archive: {
1138
+ type: 'object',
1139
+ properties: {
1140
+ exclude: {
1141
+ type: 'array',
1142
+ items: {
1143
+ type: 'object',
1144
+ properties: {
1145
+ name: {
1146
+ type: 'string',
1147
+ default: 'test',
1148
+ },
1149
+ },
1150
+ },
1151
+ },
1152
+ },
1153
+ },
1154
+ include: {
1155
+ type: 'string',
1156
+ default: 'test',
1157
+ },
1158
+ },
1159
+ });
1160
+ const content = 'archive:\n exclude:\n - name: test\n|\n|'; // len: 38, pos: 37
1161
+ const completion = parseSetup(content); //don't test on the last row
1162
+ completion
1163
+ .then(function (result) {
1164
+ assert.equal(result.items.length, 1);
1165
+ const expectedCompletion = (0, verifyError_1.createExpectedCompletion)('include', 'include: ${1:test}', 3, 0, 3, 0, 10, 2, {
1166
+ documentation: '',
1167
+ });
1168
+ assert.deepEqual(result.items[0], expectedCompletion);
1169
+ })
1170
+ .then(done, done);
1171
+ });
1172
+ it('Autocompletion after array with depth - indent', (done) => {
1173
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1174
+ type: 'object',
1175
+ properties: {
1176
+ archive: {
1177
+ type: 'object',
1178
+ properties: {
1179
+ exclude: {
1180
+ type: 'array',
1181
+ items: {
1182
+ type: 'object',
1183
+ properties: {
1184
+ name: {
1185
+ type: 'string',
1186
+ default: 'test',
1187
+ },
1188
+ },
1189
+ },
1190
+ },
1191
+ include: {
1192
+ type: 'string',
1193
+ },
1194
+ },
1195
+ },
1196
+ },
1197
+ });
1198
+ const content = 'archive:\n exclude:\n - nam\n | |'; // len: 35, pos: 34
1199
+ const completion = parseSetup(content);
1200
+ completion
1201
+ .then(function (result) {
1202
+ assert.equal(result.items.length, 1);
1203
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('- (array item) object', '- name: ${1:test}', 3, 4, 3, 5, 9, 2, {
1204
+ documentation: { kind: 'markdown', value: 'Create an item of an array type `object`\n ```\n- name: test\n```' },
1205
+ }));
1206
+ })
1207
+ .then(done, done);
1208
+ });
1209
+ it('Array of enum autocomplete without word on array symbol', (done) => {
1210
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1211
+ type: 'object',
1212
+ properties: {
1213
+ references: {
1214
+ type: 'array',
1215
+ items: {
1216
+ enum: ['Test'],
1217
+ },
1218
+ },
1219
+ },
1220
+ });
1221
+ const content = 'references:\n -'; // len: 15
1222
+ const completion = parseSetup(content, 29);
1223
+ completion
1224
+ .then(function (result) {
1225
+ assert.equal(result.items.length, 1);
1226
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('Test', ' Test', 1, 3, 1, 3, 12, 2, {
1227
+ documentation: undefined,
1228
+ }));
1229
+ })
1230
+ .then(done, done);
1231
+ });
1232
+ it('Array of enum autocomplete without word', (done) => {
1233
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1234
+ type: 'object',
1235
+ properties: {
1236
+ references: {
1237
+ type: 'array',
1238
+ items: {
1239
+ enum: ['Test'],
1240
+ },
1241
+ },
1242
+ },
1243
+ });
1244
+ const content = 'references:\n - '; // len: 16
1245
+ const completion = parseSetup(content, 30);
1246
+ completion
1247
+ .then(function (result) {
1248
+ assert.equal(result.items.length, 1);
1249
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('Test', 'Test', 1, 4, 1, 4, 12, 2, {
1250
+ documentation: undefined,
1251
+ }));
1252
+ })
1253
+ .then(done, done);
1254
+ });
1255
+ it('Array of enum autocomplete with letter', (done) => {
1256
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1257
+ type: 'object',
1258
+ properties: {
1259
+ references: {
1260
+ type: 'array',
1261
+ items: {
1262
+ enum: ['Test'],
1263
+ },
1264
+ },
1265
+ },
1266
+ });
1267
+ const content = 'references:\n - T'; // len: 17
1268
+ const completion = parseSetup(content, 31);
1269
+ completion
1270
+ .then(function (result) {
1271
+ assert.equal(result.items.length, 1);
1272
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('Test', 'Test', 1, 4, 1, 5, 12, 2, {
1273
+ documentation: undefined,
1274
+ }));
1275
+ })
1276
+ .then(done, done);
1277
+ });
1278
+ it('Array of objects autocomplete with 4 space indentation check', async () => {
1279
+ const languageSettingsSetup = new serviceSetup_1.ServiceSetup().withCompletion().withIndentation(' ');
1280
+ languageService.configure(languageSettingsSetup.languageSettings);
1281
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1282
+ type: 'object',
1283
+ properties: {
1284
+ metadata: {
1285
+ type: 'object',
1286
+ properties: {
1287
+ ownerReferences: {
1288
+ type: 'array',
1289
+ items: {
1290
+ type: 'object',
1291
+ properties: {
1292
+ apiVersion: {
1293
+ type: 'string',
1294
+ },
1295
+ kind: {
1296
+ type: 'string',
1297
+ },
1298
+ name: {
1299
+ type: 'string',
1300
+ },
1301
+ uid: {
1302
+ type: 'string',
1303
+ },
1304
+ },
1305
+ required: ['apiVersion', 'kind', 'name', 'uid'],
1306
+ },
1307
+ },
1308
+ },
1309
+ },
1310
+ },
1311
+ });
1312
+ const content = 'metadata:\n ownerReferences'; // len: 29
1313
+ const completion = await parseSetup(content, 29);
1314
+ (0, chai_1.expect)(completion.items[0]).deep.eq((0, verifyError_1.createExpectedCompletion)('ownerReferences', 'ownerReferences:\n - apiVersion: $1\n kind: $2\n name: $3\n uid: $4', 1, 4, 1, 19, 10, 2, { documentation: '' }));
1315
+ });
1316
+ it('Array of const autocomplete', async () => {
1317
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1318
+ type: 'object',
1319
+ properties: {
1320
+ test: {
1321
+ type: 'array',
1322
+ items: {
1323
+ anyOf: [
1324
+ {
1325
+ const: 'value1',
1326
+ description: 'desc1',
1327
+ },
1328
+ {
1329
+ const: 'value2',
1330
+ description: 'desc2',
1331
+ },
1332
+ ],
1333
+ },
1334
+ },
1335
+ },
1336
+ });
1337
+ const content = 'test:\n - ';
1338
+ const result = await parseSetup(content, content.length);
1339
+ (0, chai_1.expect)(result.items.length).to.be.equal(2);
1340
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('value1', 'value1', 1, 4, 1, 4, vscode_languageserver_types_1.CompletionItemKind.Value, 2, {
1341
+ documentation: 'desc1',
1342
+ }));
1343
+ assert.deepEqual(result.items[1], (0, verifyError_1.createExpectedCompletion)('value2', 'value2', 1, 4, 1, 4, vscode_languageserver_types_1.CompletionItemKind.Value, 2, {
1344
+ documentation: 'desc2',
1345
+ }));
1346
+ });
1347
+ it('Array of objects autocomplete with 2 space indentation check', async () => {
1348
+ const languageSettingsSetup = new serviceSetup_1.ServiceSetup().withCompletion().withIndentation(' ');
1349
+ languageService.configure(languageSettingsSetup.languageSettings);
1350
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1351
+ type: 'object',
1352
+ properties: {
1353
+ metadata: {
1354
+ type: 'object',
1355
+ properties: {
1356
+ ownerReferences: {
1357
+ type: 'array',
1358
+ items: {
1359
+ type: 'object',
1360
+ properties: {
1361
+ apiVersion: {
1362
+ type: 'string',
1363
+ },
1364
+ kind: {
1365
+ type: 'string',
1366
+ },
1367
+ name: {
1368
+ type: 'string',
1369
+ },
1370
+ uid: {
1371
+ type: 'string',
1372
+ },
1373
+ },
1374
+ required: ['apiVersion', 'kind', 'name', 'uid'],
1375
+ },
1376
+ },
1377
+ },
1378
+ },
1379
+ },
1380
+ });
1381
+ const content = 'metadata:\n ownerReferences'; // len: 27
1382
+ const completion = await parseSetup(content, 27);
1383
+ (0, chai_1.expect)(completion.items[0]).deep.eq((0, verifyError_1.createExpectedCompletion)('ownerReferences', 'ownerReferences:\n - apiVersion: $1\n kind: $2\n name: $3\n uid: $4', 1, 2, 1, 17, 10, 2, { documentation: '' }));
1384
+ });
1385
+ it('Array of objects autocomplete with 3 space indentation check', async () => {
1386
+ const languageSettingsSetup = new serviceSetup_1.ServiceSetup().withCompletion().withIndentation(' ');
1387
+ languageService.configure(languageSettingsSetup.languageSettings);
1388
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1389
+ type: 'object',
1390
+ properties: {
1391
+ metadata: {
1392
+ type: 'object',
1393
+ properties: {
1394
+ ownerReferences: {
1395
+ type: 'array',
1396
+ items: {
1397
+ type: 'object',
1398
+ properties: {
1399
+ apiVersion: {
1400
+ type: 'string',
1401
+ },
1402
+ kind: {
1403
+ type: 'string',
1404
+ },
1405
+ name: {
1406
+ type: 'string',
1407
+ },
1408
+ uid: {
1409
+ type: 'string',
1410
+ },
1411
+ },
1412
+ required: ['apiVersion', 'kind', 'name', 'uid'],
1413
+ },
1414
+ },
1415
+ },
1416
+ },
1417
+ },
1418
+ });
1419
+ const content = 'metadata:\n ownerReference|s|'; // len: 28, pos: 27
1420
+ const completion = await parseSetup(content);
1421
+ (0, chai_1.expect)(completion.items[0]).deep.eq((0, verifyError_1.createExpectedCompletion)('ownerReferences', 'ownerReferences:\n - apiVersion: $1\n kind: $2\n name: $3\n uid: $4', 1, 3, 1, 18, 10, 2, { documentation: '' }));
1422
+ });
1423
+ describe('Map const in the next line', async () => {
1424
+ beforeEach(() => {
1425
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1426
+ type: 'object',
1427
+ properties: {
1428
+ test: {
1429
+ type: 'array',
1430
+ items: {
1431
+ type: 'object',
1432
+ properties: {
1433
+ constProp: {
1434
+ type: 'string',
1435
+ const: 'const1',
1436
+ description: 'test desc',
1437
+ },
1438
+ },
1439
+ },
1440
+ },
1441
+ },
1442
+ });
1443
+ });
1444
+ it('Next line const with :', async () => {
1445
+ const content = 'test:\n - constProp:\n ';
1446
+ const result = await parseSetup(content, content.length);
1447
+ (0, chai_1.expect)(result.items.length).to.be.equal(0);
1448
+ });
1449
+ // For some reason, this gets inserted at the cursor (char 4)
1450
+ // It should be inserted at char 2
1451
+ xit('Next line const no :', async () => {
1452
+ const content = 'test:\n - constProp\n ';
1453
+ const result = await parseSetup(content, content.length);
1454
+ (0, chai_1.expect)(result.items.length).to.be.equal(1);
1455
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('- (array item) object', '- ', 2, 2, 2, 2, vscode_languageserver_types_1.CompletionItemKind.Module, vscode_languageserver_types_1.InsertTextFormat.Snippet));
1456
+ });
1457
+ it('Next line const with |-', async () => {
1458
+ const content = 'test:\n - constProp: |-\n ';
1459
+ const result = await parseSetup(content, content.length);
1460
+ (0, chai_1.expect)(result.items.length).to.be.equal(1);
1461
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('const1', 'const1', 2, 6, 2, 6, vscode_languageserver_types_1.CompletionItemKind.Value, vscode_languageserver_types_1.InsertTextFormat.Snippet, {
1462
+ documentation: 'test desc',
1463
+ }));
1464
+ });
1465
+ it('Next line const with : but array level completion', async () => {
1466
+ const content = 'test:\n - constProp:\n ';
1467
+ const result = await parseSetup(content, content.length);
1468
+ (0, chai_1.expect)(result.items.length).to.be.equal(0);
1469
+ });
1470
+ it('Next line const with : & |- but array level completion', async () => {
1471
+ const content = 'test:\n - constProp: |-\n ';
1472
+ const result = await parseSetup(content, content.length);
1473
+ (0, chai_1.expect)(result.items.length).to.be.equal(1);
1474
+ (0, chai_1.expect)(result.items[0]).contain;
1475
+ // TODO: Ideally, this would not be a deep equal, it'd be does real contain expected
1476
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('- (array item) object', '- ', 2, 2, 2, 2, vscode_languageserver_types_1.CompletionItemKind.Module, vscode_languageserver_types_1.InsertTextFormat.Snippet, {
1477
+ documentation: {
1478
+ kind: 'markdown',
1479
+ value: 'Create an item of an array type `object`\n ```\n- \n```',
1480
+ },
1481
+ }));
1482
+ });
1483
+ });
1484
+ });
1485
+ it('Object in array with 4 space indentation check', async () => {
1486
+ const languageSettingsSetup = new serviceSetup_1.ServiceSetup().withCompletion().withIndentation(' ');
1487
+ languageService.configure(languageSettingsSetup.languageSettings);
1488
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1489
+ type: 'object',
1490
+ properties: {
1491
+ rules: {
1492
+ type: 'array',
1493
+ items: {
1494
+ title: 'rules item',
1495
+ type: 'object',
1496
+ properties: {
1497
+ id: {
1498
+ type: 'string',
1499
+ },
1500
+ notes: {
1501
+ type: 'string',
1502
+ },
1503
+ links: {
1504
+ type: 'array',
1505
+ items: {
1506
+ properties: {
1507
+ rel: {
1508
+ type: 'string',
1509
+ },
1510
+ url: {
1511
+ type: 'string',
1512
+ },
1513
+ },
1514
+ },
1515
+ },
1516
+ nomination: {
1517
+ type: 'string',
1518
+ pattern: '[a-z0-9_]+',
1519
+ },
1520
+ weight: {
1521
+ type: 'number',
1522
+ minimum: 1,
1523
+ },
1524
+ criteria: {
1525
+ type: 'array',
1526
+ minItems: 1,
1527
+ items: {
1528
+ type: 'object',
1529
+ properties: {
1530
+ field: {
1531
+ type: 'string',
1532
+ },
1533
+ operator: {
1534
+ type: 'string',
1535
+ },
1536
+ operand: {
1537
+ type: 'string',
1538
+ },
1539
+ },
1540
+ required: ['field', 'operator', 'operand'],
1541
+ additionalProperties: false,
1542
+ },
1543
+ },
1544
+ },
1545
+ required: ['id', 'weight', 'criteria', 'nomination'],
1546
+ },
1547
+ },
1548
+ },
1549
+ });
1550
+ const content = 'rules:\n -|\n|'; // len: 13, pos: 12
1551
+ const completion = await parseSetup(content);
1552
+ (0, chai_1.expect)(completion.items.find((i) => i.label === 'rules item').textEdit.newText).equal(' id: $1\n nomination: $2\n weight: ${3:0}\n criteria:\n - field: $4\n operator: $5\n operand: $6');
1553
+ });
1554
+ });
1555
+ describe('JSON Schema 7 Specific Tests', function () {
1556
+ it('Autocomplete works with examples', (done) => {
1557
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1558
+ type: 'object',
1559
+ properties: {
1560
+ foodItems: {
1561
+ type: 'string',
1562
+ examples: ['Apple', 'Banana'],
1563
+ default: 'Carrot',
1564
+ },
1565
+ },
1566
+ });
1567
+ const content = 'foodItems: '; // len: 11
1568
+ const completion = parseSetup(content, 12);
1569
+ completion
1570
+ .then(function (result) {
1571
+ assert.equal(result.items.length, 3);
1572
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('Carrot', 'Carrot', 0, 11, 0, 11, 12, 2, {
1573
+ detail: 'Default value',
1574
+ }));
1575
+ assert.deepEqual(result.items[1], (0, verifyError_1.createExpectedCompletion)('Apple', 'Apple', 0, 11, 0, 11, 12, 2, {}));
1576
+ assert.deepEqual(result.items[2], (0, verifyError_1.createExpectedCompletion)('Banana', 'Banana', 0, 11, 0, 11, 12, 2, {}));
1577
+ })
1578
+ .then(done, done);
1579
+ });
1580
+ it('Autocomplete works with const', (done) => {
1581
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1582
+ type: 'object',
1583
+ properties: {
1584
+ fruit: {
1585
+ const: 'Apple',
1586
+ },
1587
+ },
1588
+ });
1589
+ const content = 'fruit: Ap|p|'; // len: 10, pos: 9
1590
+ const completion = parseSetup(content);
1591
+ completion
1592
+ .then(function (result) {
1593
+ assert.equal(result.items.length, 1);
1594
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('Apple', 'Apple', 0, 7, 0, 10, 12, 2, {
1595
+ documentation: undefined,
1596
+ }));
1597
+ })
1598
+ .then(done, done);
1599
+ });
1600
+ it('Autocomplete should suggest prop with const value', (done) => {
1601
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1602
+ type: 'object',
1603
+ properties: {
1604
+ fruit: {
1605
+ const: 'Apple',
1606
+ },
1607
+ },
1608
+ });
1609
+ const content = '';
1610
+ const completion = parseSetup(content, 0);
1611
+ completion
1612
+ .then(function (result) {
1613
+ assert.equal(result.items.length, 1);
1614
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('fruit', 'fruit: Apple', 0, 0, 0, 0, 10, 2, {
1615
+ documentation: '',
1616
+ }));
1617
+ })
1618
+ .then(done, done);
1619
+ });
1620
+ it('Should insert quotation value if there is special char', async () => {
1621
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1622
+ type: 'object',
1623
+ properties: {
1624
+ from: {
1625
+ type: 'string',
1626
+ const: '@test',
1627
+ },
1628
+ },
1629
+ });
1630
+ const content = 'from: ';
1631
+ const completion = await parseSetup(content, content.length);
1632
+ (0, chai_1.expect)(completion.items.length).equal(1);
1633
+ (0, chai_1.expect)(completion.items[0]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('"@test"', '"@test"', 0, 6, 0, 6, 12, 2, {
1634
+ documentation: undefined,
1635
+ }));
1636
+ });
1637
+ });
1638
+ describe('Indentation Specific Tests', function () {
1639
+ it('Indent should be considered with position relative to slash', (done) => {
1640
+ const schema = require(path.join(__dirname, './fixtures/testArrayIndent.json'));
1641
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1642
+ const content = 'install:\n - he'; // len: 15
1643
+ const completion = parseSetup(content, content.lastIndexOf('he') + 2); // pos: 13+2
1644
+ completion
1645
+ .then(function (result) {
1646
+ assert.equal(result.items.length, 2);
1647
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('helm', 'helm:\n name: ', 1, 4, 1, 6, 10, 2, {
1648
+ documentation: '',
1649
+ }));
1650
+ })
1651
+ .then(done, done);
1652
+ });
1653
+ it('Large indent should be considered with position relative to slash', (done) => {
1654
+ const schema = require(path.join(__dirname, './fixtures/testArrayIndent.json'));
1655
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1656
+ const content = 'install:\n - he'; // len: 25
1657
+ const completion = parseSetup(content, content.lastIndexOf('he') + 2); // pos: 23+2
1658
+ completion
1659
+ .then(function (result) {
1660
+ assert.equal(result.items.length, 2);
1661
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('helm', 'helm:\n name: ', 1, 14, 1, 16, 10, 2, {
1662
+ documentation: '',
1663
+ }));
1664
+ })
1665
+ .then(done, done);
1666
+ });
1667
+ it('Tab indent should be considered with position relative to slash', (done) => {
1668
+ const schema = require(path.join(__dirname, './fixtures/testArrayIndent.json'));
1669
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
1670
+ const content = 'install:\n -\t he'; // len: 27
1671
+ const completion = parseSetup(content, content.lastIndexOf('he') + 2); // pos: 25+2
1672
+ completion
1673
+ .then(function (result) {
1674
+ assert.equal(result.items.length, 2);
1675
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('helm', 'helm:\n \t name: ', 1, 16, 1, 18, 10, 2, {
1676
+ documentation: '',
1677
+ }));
1678
+ })
1679
+ .then(done, done);
1680
+ });
1681
+ });
1682
+ describe('Yaml schema defined in file', function () {
1683
+ const uri = (0, testHelper_1.toFsPath)(path.join(__dirname, './fixtures/testArrayMaxProperties.json'));
1684
+ it('Provide completion from schema declared in file', (done) => {
1685
+ const content = `# yaml-language-server: $schema=${uri}\n- `;
1686
+ const completion = parseSetup(content, content.length);
1687
+ completion
1688
+ .then(function (result) {
1689
+ assert.equal(result.items.length, 3);
1690
+ })
1691
+ .then(done, done);
1692
+ });
1693
+ it('Provide completion from schema declared in file with $schema: format', (done) => {
1694
+ const content = `# $schema: ${uri}\n- `;
1695
+ const completion = parseSetup(content, content.length);
1696
+ completion
1697
+ .then(function (result) {
1698
+ assert.equal(result.items.length, 3);
1699
+ })
1700
+ .then(done, done);
1701
+ });
1702
+ it('Provide completion from schema declared in file with several attributes', (done) => {
1703
+ const content = `# yaml-language-server: $schema=${uri} anothermodeline=value\n- `;
1704
+ const completion = parseSetup(content, content.length);
1705
+ completion
1706
+ .then(function (result) {
1707
+ assert.equal(result.items.length, 3);
1708
+ })
1709
+ .then(done, done);
1710
+ });
1711
+ it('Provide completion from schema declared in file with several documents', async () => {
1712
+ const documentContent1 = `# yaml-language-server: $schema=${uri} anothermodeline=value\n- `; // 149
1713
+ const content = `${documentContent1}|\n|---\n- `; // len: 156, pos: 149
1714
+ const result = await parseSetup(content);
1715
+ assert.equal(result.items.length, 3, `Expecting 3 items in completion but found ${result.items.length}`);
1716
+ const resultDoc2 = await parseSetup(content, content.length);
1717
+ assert.equal(resultDoc2.items.length, 0, `Expecting no items in completion but found ${resultDoc2.items.length}`);
1718
+ });
1719
+ it('should handle absolute path', async () => {
1720
+ const documentContent = `# yaml-language-server: $schema=${path.join(__dirname, './fixtures/testArrayMaxProperties.json')} anothermodeline=value\n- `; // len: 142
1721
+ const content = `${documentContent}|\n|---\n- `; // len: 149, pos: 142
1722
+ const result = await parseSetup(content);
1723
+ assert.strictEqual(result.items.length, 3, `Expecting 3 items in completion but found ${result.items.length}`);
1724
+ });
1725
+ it('should handle relative path', async () => {
1726
+ const documentContent = `# yaml-language-server: $schema=./fixtures/testArrayMaxProperties.json anothermodeline=value\n- `; // 95
1727
+ const content = `${documentContent}\n---\n- `;
1728
+ const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)(content, path.join(__dirname, 'test.yaml'));
1729
+ yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
1730
+ yamlSettings.documents.set(testTextDocument);
1731
+ const result = await languageHandler.completionHandler({
1732
+ position: testTextDocument.positionAt(documentContent.length),
1733
+ textDocument: testTextDocument,
1734
+ });
1735
+ assert.strictEqual(result.items.length, 3, `Expecting 3 items in completion but found ${result.items.length}`);
1736
+ });
1737
+ const inlineSchemaLabel = 'Inline schema';
1738
+ it('should provide modeline completion on first character with no schema associated and no modeline yet', async () => {
1739
+ const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)('', path.join(__dirname, 'test.yaml'));
1740
+ yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
1741
+ yamlSettings.documents.set(testTextDocument);
1742
+ const result = await languageHandler.completionHandler({
1743
+ position: testTextDocument.positionAt(0),
1744
+ textDocument: testTextDocument,
1745
+ });
1746
+ assert.strictEqual(result.items.length, 1, `Expecting 1 item in completion but found ${result.items.length}`);
1747
+ assert.strictEqual(result.items[0].label, inlineSchemaLabel);
1748
+ });
1749
+ it('should not provide modeline completion on first character when schema is associated', async () => {
1750
+ const specificSchemaId = path.join(__dirname, 'test.yaml');
1751
+ const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)('', specificSchemaId);
1752
+ schemaProvider.addSchema(specificSchemaId, {
1753
+ type: 'object',
1754
+ properties: {
1755
+ name: {
1756
+ type: 'string',
1757
+ },
1758
+ },
1759
+ });
1760
+ yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
1761
+ yamlSettings.documents.set(testTextDocument);
1762
+ const result = await languageHandler.completionHandler({
1763
+ position: testTextDocument.positionAt(0),
1764
+ textDocument: testTextDocument,
1765
+ });
1766
+ assert.strictEqual(result.items.length, 1, `Expecting 1 item in completion but found ${result.items.length}`);
1767
+ assert.notStrictEqual(result.items[0].label, inlineSchemaLabel);
1768
+ });
1769
+ it('should not provide modeline completion on first character when modeline already present', async () => {
1770
+ const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)('# yaml-language-server:', path.join(__dirname, 'test.yaml'));
1771
+ yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
1772
+ yamlSettings.documents.set(testTextDocument);
1773
+ const result = await languageHandler.completionHandler({
1774
+ position: testTextDocument.positionAt(0),
1775
+ textDocument: testTextDocument,
1776
+ });
1777
+ assert.strictEqual(result.items.length, 0, `Expecting 0 item in completion but found ${result.items.length}`);
1778
+ });
1779
+ it('should provide schema id completion in modeline', async () => {
1780
+ const modeline = '# yaml-language-server: $schema=';
1781
+ const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)(modeline, path.join(__dirname, 'test.yaml'));
1782
+ yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
1783
+ yamlSettings.documents.set(testTextDocument);
1784
+ const result = await languageHandler.completionHandler({
1785
+ position: testTextDocument.positionAt(modeline.length),
1786
+ textDocument: testTextDocument,
1787
+ });
1788
+ assert.strictEqual(result.items.length, 1, `Expecting 1 item in completion but found ${result.items.length}`);
1789
+ assert.strictEqual(result.items[0].label, 'http://google.com');
1790
+ });
1791
+ it('should provide schema id completion in modeline for any line', async () => {
1792
+ const modeline = 'foo:\n bar\n# yaml-language-server: $schema=';
1793
+ const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)(modeline, path.join(__dirname, 'test.yaml'));
1794
+ yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
1795
+ yamlSettings.documents.set(testTextDocument);
1796
+ const result = await languageHandler.completionHandler({
1797
+ position: testTextDocument.positionAt(modeline.length),
1798
+ textDocument: testTextDocument,
1799
+ });
1800
+ assert.strictEqual(result.items.length, 1, `Expecting 1 item in completion but found ${result.items.length}`);
1801
+ assert.strictEqual(result.items[0].label, 'http://google.com');
1802
+ });
1803
+ });
1804
+ describe('Configuration based indentation', () => {
1805
+ it('4 space indentation', async () => {
1806
+ const languageSettingsSetup = new serviceSetup_1.ServiceSetup().withCompletion().withIndentation(' ');
1807
+ languageService.configure(languageSettingsSetup.languageSettings);
1808
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1809
+ type: 'object',
1810
+ properties: {
1811
+ scripts: {
1812
+ type: 'object',
1813
+ properties: {
1814
+ sample: {
1815
+ type: 'string',
1816
+ enum: ['test'],
1817
+ },
1818
+ myOtherSample: {
1819
+ type: 'string',
1820
+ enum: ['test'],
1821
+ },
1822
+ },
1823
+ },
1824
+ },
1825
+ });
1826
+ const content = 'scripts:\n sample: test\n myOt|h|er'; // len: 37, pos: 34
1827
+ const completion = await parseSetup(content);
1828
+ assert.strictEqual(completion.items.length, 1);
1829
+ assert.deepStrictEqual(completion.items[0], (0, verifyError_1.createExpectedCompletion)('myOtherSample', 'myOtherSample: ${1:test}', 2, 4, 2, 11, 10, 2, {
1830
+ documentation: '',
1831
+ }));
1832
+ });
1833
+ });
1834
+ describe('Bug fixes', () => {
1835
+ it('Object in array completion indetetion', async () => {
1836
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1837
+ type: 'object',
1838
+ properties: {
1839
+ components: {
1840
+ type: 'array',
1841
+ items: {
1842
+ type: 'object',
1843
+ properties: {
1844
+ id: {
1845
+ type: 'string',
1846
+ },
1847
+ settings: {
1848
+ type: 'object',
1849
+ required: ['data'],
1850
+ properties: {
1851
+ data: {
1852
+ type: 'object',
1853
+ required: ['arrayItems'],
1854
+ properties: {
1855
+ arrayItems: {
1856
+ type: 'array',
1857
+ items: {
1858
+ type: 'object',
1859
+ required: ['id'],
1860
+ properties: {
1861
+ show: {
1862
+ type: 'boolean',
1863
+ default: true,
1864
+ },
1865
+ id: {
1866
+ type: 'string',
1867
+ },
1868
+ },
1869
+ },
1870
+ },
1871
+ },
1872
+ },
1873
+ },
1874
+ },
1875
+ },
1876
+ },
1877
+ },
1878
+ },
1879
+ });
1880
+ const content = 'components:\n - id: jsakdh\n setti'; // len: 36
1881
+ const completion = await parseSetup(content, 36);
1882
+ (0, chai_1.expect)(completion.items).lengthOf(1);
1883
+ (0, chai_1.expect)(completion.items[0].textEdit.newText).to.equal('settings:\n data:\n arrayItems:\n - show: ${1:true}\n id: $2');
1884
+ });
1885
+ it('Object completion', (done) => {
1886
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1887
+ type: 'object',
1888
+ properties: {
1889
+ env: {
1890
+ type: 'object',
1891
+ default: {
1892
+ KEY: 'VALUE',
1893
+ },
1894
+ },
1895
+ },
1896
+ });
1897
+ const content = 'env: '; // len: 5
1898
+ const completion = parseSetup(content, 5);
1899
+ completion
1900
+ .then(function (result) {
1901
+ assert.equal(result.items.length, 1);
1902
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('Default value', '\n ${1:KEY}: ${2:VALUE}\n', 0, 5, 0, 5, 9, 2, {
1903
+ detail: 'Default value',
1904
+ }));
1905
+ })
1906
+ .then(done, done);
1907
+ });
1908
+ it('Complex default object completion', (done) => {
1909
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1910
+ type: 'object',
1911
+ properties: {
1912
+ env: {
1913
+ type: 'object',
1914
+ default: {
1915
+ KEY: 'VALUE',
1916
+ KEY2: {
1917
+ TEST: 'TEST2',
1918
+ },
1919
+ KEY3: ['Test', 'Test2'],
1920
+ },
1921
+ },
1922
+ },
1923
+ });
1924
+ const content = 'env: '; // len: 5
1925
+ const completion = parseSetup(content, 5);
1926
+ completion
1927
+ .then(function (result) {
1928
+ assert.equal(result.items.length, 1);
1929
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('Default value', '\n ${1:KEY}: ${2:VALUE}\n ${3:KEY2}:\n ${4:TEST}: ${5:TEST2}\n ${6:KEY3}:\n - ${7:Test}\n - ${8:Test2}\n', 0, 5, 0, 5, 9, 2, {
1930
+ detail: 'Default value',
1931
+ }));
1932
+ })
1933
+ .then(done, done);
1934
+ });
1935
+ it('should handle array schema without items', async () => {
1936
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1937
+ type: 'array',
1938
+ items: {
1939
+ anyOf: [
1940
+ {
1941
+ type: 'object',
1942
+ properties: {
1943
+ fooBar: {
1944
+ type: 'object',
1945
+ properties: {
1946
+ name: {
1947
+ type: 'string',
1948
+ },
1949
+ aaa: {
1950
+ type: 'array',
1951
+ },
1952
+ },
1953
+ required: ['name', 'aaa'],
1954
+ },
1955
+ },
1956
+ },
1957
+ ],
1958
+ },
1959
+ });
1960
+ const content = '---\n- |\n|'; // len: 7, pos: 6
1961
+ const completion = await parseSetup(content);
1962
+ (0, chai_1.expect)(completion.items).lengthOf(1);
1963
+ (0, chai_1.expect)(completion.items[0].label).eq('fooBar');
1964
+ (0, chai_1.expect)(completion.items[0].insertText).eq('fooBar:\n name: $1\n aaa:\n - $2');
1965
+ });
1966
+ it('auto completion based on the list indentation', async () => {
1967
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
1968
+ type: 'array',
1969
+ items: {
1970
+ type: 'object',
1971
+ properties: {
1972
+ prop1: {
1973
+ type: 'string',
1974
+ },
1975
+ prop2: {
1976
+ type: 'string',
1977
+ },
1978
+ Object: {
1979
+ type: 'array',
1980
+ items: {
1981
+ type: 'object',
1982
+ properties: {
1983
+ env_prop1: {
1984
+ type: 'string',
1985
+ },
1986
+ },
1987
+ },
1988
+ },
1989
+ },
1990
+ },
1991
+ });
1992
+ const content = '- prop1: value\n object:\n - env_prop1: value\n '; // len: 48
1993
+ const completion = await parseSetup(content, 49);
1994
+ (0, chai_1.expect)(completion.items).lengthOf(2);
1995
+ (0, chai_1.expect)(completion.items[0].label).eq('prop2');
1996
+ (0, chai_1.expect)(completion.items[0].insertText).eq('prop2: ');
1997
+ });
1998
+ it('should complete string which contains number in default value', async () => {
1999
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2000
+ type: 'object',
2001
+ properties: {
2002
+ env: {
2003
+ type: 'integer',
2004
+ default: '1',
2005
+ },
2006
+ enum: {
2007
+ type: 'string',
2008
+ default: '1',
2009
+ },
2010
+ },
2011
+ });
2012
+ const content = 'enu|m|'; // len: 4, pos: 3
2013
+ const completion = await parseSetup(content);
2014
+ const enumItem = completion.items.find((i) => i.label === 'enum');
2015
+ (0, chai_1.expect)(enumItem).to.not.undefined;
2016
+ (0, chai_1.expect)(enumItem.textEdit.newText).equal('enum: ${1:"1"}');
2017
+ const envItem = completion.items.find((i) => i.label === 'env');
2018
+ (0, chai_1.expect)(envItem).to.not.undefined;
2019
+ (0, chai_1.expect)(envItem.textEdit.newText).equal('env: ${1:1}');
2020
+ });
2021
+ it('should complete string which contains number in examples values', async () => {
2022
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2023
+ type: 'object',
2024
+ properties: {
2025
+ fooBar: {
2026
+ type: 'string',
2027
+ examples: ['test', '1', 'true'],
2028
+ },
2029
+ },
2030
+ });
2031
+ const content = 'fooBar: |\n|'; // len: 9, pos: 8
2032
+ const completion = await parseSetup(content);
2033
+ const testItem = completion.items.find((i) => i.label === 'test');
2034
+ (0, chai_1.expect)(testItem).to.not.undefined;
2035
+ (0, chai_1.expect)(testItem.textEdit.newText).equal('test');
2036
+ const oneItem = completion.items.find((i) => i.label === '"1"');
2037
+ (0, chai_1.expect)(oneItem).to.not.undefined;
2038
+ (0, chai_1.expect)(oneItem.textEdit.newText).equal('"1"');
2039
+ const trueItem = completion.items.find((i) => i.label === '"true"');
2040
+ (0, chai_1.expect)(trueItem).to.not.undefined;
2041
+ (0, chai_1.expect)(trueItem.textEdit.newText).equal('"true"');
2042
+ });
2043
+ it('should provide label as string for examples completion item', async () => {
2044
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2045
+ type: 'object',
2046
+ properties: {
2047
+ fooBar: {
2048
+ type: 'array',
2049
+ items: {
2050
+ type: 'string',
2051
+ examples: ['test'],
2052
+ },
2053
+ },
2054
+ },
2055
+ });
2056
+ const content = 'fooBar: |\n|'; // len: 9, pos: 8
2057
+ const completion = await parseSetup(content);
2058
+ (0, chai_1.expect)(completion.items).length(1);
2059
+ });
2060
+ it('should provide completion for flow map', async () => {
2061
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2062
+ type: 'object',
2063
+ properties: { A: { type: 'string', enum: ['a1', 'a2'] }, B: { type: 'string', enum: ['b1', 'b2'] } },
2064
+ });
2065
+ const content = '{A: |,| B: b1}'; // len: 12, pos: 4
2066
+ const completion = await parseSetup(content);
2067
+ (0, chai_1.expect)(completion.items).lengthOf(2);
2068
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('a1', 'a1', 0, 4, 0, 4, 12, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: undefined }));
2069
+ (0, chai_1.expect)(completion.items[1]).eql((0, verifyError_1.createExpectedCompletion)('a2', 'a2', 0, 4, 0, 4, 12, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: undefined }));
2070
+ });
2071
+ it('should provide completion for "null" enum value', async () => {
2072
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2073
+ type: 'object',
2074
+ properties: {
2075
+ kind: {
2076
+ enum: ['project', null],
2077
+ },
2078
+ },
2079
+ });
2080
+ const content = 'kind: |\n|'; // len: 7, pos: 6
2081
+ const completion = await parseSetup(content);
2082
+ (0, chai_1.expect)(completion.items).lengthOf(2);
2083
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('project', 'project', 0, 6, 0, 6, 12, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: undefined }));
2084
+ (0, chai_1.expect)(completion.items[1]).eql((0, verifyError_1.createExpectedCompletion)('null', 'null', 0, 6, 0, 6, 12, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: undefined }));
2085
+ });
2086
+ it('should provide completion for empty file', async () => {
2087
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2088
+ oneOf: [
2089
+ {
2090
+ type: 'object',
2091
+ description: 'dummy schema',
2092
+ },
2093
+ {
2094
+ properties: {
2095
+ kind: {
2096
+ type: 'string',
2097
+ },
2098
+ },
2099
+ type: 'object',
2100
+ additionalProperties: false,
2101
+ },
2102
+ {
2103
+ properties: {
2104
+ name: {
2105
+ type: 'string',
2106
+ },
2107
+ },
2108
+ type: 'object',
2109
+ additionalProperties: false,
2110
+ },
2111
+ ],
2112
+ });
2113
+ const content = ' \n\n|\n|'; // len: 4, pos: 3
2114
+ const completion = await parseSetup(content);
2115
+ (0, chai_1.expect)(completion.items).lengthOf(2);
2116
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('kind', 'kind: ', 2, 0, 2, 0, 10, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: '' }));
2117
+ (0, chai_1.expect)(completion.items[1]).eql((0, verifyError_1.createExpectedCompletion)('name', 'name: ', 2, 0, 2, 0, 10, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: '' }));
2118
+ });
2119
+ it('should not provide additional ":" on existing property completion', async () => {
2120
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2121
+ type: 'object',
2122
+ properties: {
2123
+ kind: {
2124
+ type: 'string',
2125
+ },
2126
+ },
2127
+ required: ['kind'],
2128
+ });
2129
+ const content = 'kin|d|: 111\n'; // len: 10, pos: 3
2130
+ const completion = await parseSetup(content);
2131
+ (0, chai_1.expect)(completion.items).lengthOf(2);
2132
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('kind', 'kind', 0, 0, 0, 4, 10, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: '' }));
2133
+ });
2134
+ it('should not provide additional ":" on existing property completion when try to complete partial property', async () => {
2135
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2136
+ type: 'object',
2137
+ properties: {
2138
+ kind: {
2139
+ type: 'string',
2140
+ },
2141
+ },
2142
+ required: ['kind'],
2143
+ });
2144
+ const content = 'k|i|: 111\n'; // len: 8, pos: 1
2145
+ const completion = await parseSetup(content);
2146
+ (0, chai_1.expect)(completion.items).lengthOf(2);
2147
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('kind', 'kind', 0, 0, 0, 2, 10, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: '' }));
2148
+ });
2149
+ it('should use markdownDescription for property completion', async () => {
2150
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2151
+ type: 'object',
2152
+ properties: {
2153
+ kind: {
2154
+ type: 'string',
2155
+ description: 'Kind is a string value representing the REST',
2156
+ markdownDescription: '**kind** (string)\n\nKind is a string value representing the REST resource this object represents.',
2157
+ },
2158
+ },
2159
+ required: ['kind'],
2160
+ });
2161
+ const content = 'k|i|n'; // len: 3, pos: 1
2162
+ const completion = await parseSetup(content);
2163
+ (0, chai_1.expect)(completion.items).lengthOf(2);
2164
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('kind', 'kind: ', 0, 0, 0, 3, 10, vscode_languageserver_types_1.InsertTextFormat.Snippet, {
2165
+ documentation: {
2166
+ kind: vscode_languageserver_types_1.MarkupKind.Markdown,
2167
+ value: '**kind** (string)\n\nKind is a string value representing the REST resource this object represents.',
2168
+ },
2169
+ }));
2170
+ });
2171
+ it('should follow $ref in additionalItems', async () => {
2172
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2173
+ type: 'object',
2174
+ properties: {
2175
+ test: {
2176
+ $ref: '#/definitions/Recur',
2177
+ },
2178
+ },
2179
+ definitions: {
2180
+ Recur: {
2181
+ type: 'array',
2182
+ items: [
2183
+ {
2184
+ type: 'string',
2185
+ enum: ['and'],
2186
+ },
2187
+ ],
2188
+ additionalItems: {
2189
+ $ref: '#/definitions/Recur',
2190
+ },
2191
+ },
2192
+ },
2193
+ });
2194
+ const content = 'test:\n - and\n - - '; // len: 20
2195
+ const completion = await parseSetup(content, 20);
2196
+ (0, chai_1.expect)(completion.items).lengthOf(1);
2197
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('and', 'and', 2, 6, 2, 6, 12, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: undefined }));
2198
+ });
2199
+ it('should follow $ref in additionalItems: extra space after cursor', async () => {
2200
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2201
+ type: 'object',
2202
+ properties: {
2203
+ test: {
2204
+ $ref: '#/definitions/Recur',
2205
+ },
2206
+ },
2207
+ definitions: {
2208
+ Recur: {
2209
+ type: 'array',
2210
+ items: [
2211
+ {
2212
+ type: 'string',
2213
+ enum: ['and'],
2214
+ },
2215
+ ],
2216
+ additionalItems: {
2217
+ $ref: '#/definitions/Recur',
2218
+ },
2219
+ },
2220
+ },
2221
+ });
2222
+ const content = 'test:\n - and\n - - | | '; // len: 22, pos: 20
2223
+ const completion = await parseSetup(content);
2224
+ (0, chai_1.expect)(completion.items).lengthOf(1);
2225
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('and', 'and', 2, 6, 2, 8, 12, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: undefined }));
2226
+ });
2227
+ it('should follow $ref in additionalItems for flow style array', async () => {
2228
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2229
+ type: 'object',
2230
+ properties: {
2231
+ test: {
2232
+ $ref: '#/definitions/Recur',
2233
+ },
2234
+ },
2235
+ definitions: {
2236
+ Recur: {
2237
+ type: 'array',
2238
+ items: [
2239
+ {
2240
+ type: 'string',
2241
+ enum: ['and'],
2242
+ },
2243
+ ],
2244
+ additionalItems: {
2245
+ $ref: '#/definitions/Recur',
2246
+ },
2247
+ },
2248
+ },
2249
+ });
2250
+ const content = 'test:\n - and\n - |[|]'; // len: 20, pos: 18
2251
+ const completion = await parseSetup(content);
2252
+ (0, chai_1.expect)(completion.items).lengthOf(1);
2253
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('and', 'and', 2, 4, 2, 4, 12, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: undefined }));
2254
+ });
2255
+ it('completion should handle bad schema', async () => {
2256
+ const doc = (0, testHelper_1.setupSchemaIDTextDocument)('foo:\n bar', 'bad-schema.yaml');
2257
+ yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
2258
+ yamlSettings.documents.set(doc);
2259
+ const result = await languageHandler.completionHandler({
2260
+ position: vscode_languageserver_types_1.Position.create(0, 1),
2261
+ textDocument: doc,
2262
+ });
2263
+ (0, chai_1.expect)(result.items).to.be.empty;
2264
+ });
2265
+ it('should convert to string non string completion label', async () => {
2266
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2267
+ type: 'object',
2268
+ properties: {
2269
+ version: {
2270
+ default: 2.1,
2271
+ enum: [2, 2.1],
2272
+ },
2273
+ },
2274
+ });
2275
+ const content = 'version: '; // len: 9
2276
+ const completion = await parseSetup(content, 9);
2277
+ (0, chai_1.expect)(completion.items).lengthOf(2);
2278
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('2', '2', 0, 9, 0, 9, 12, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: undefined }));
2279
+ (0, chai_1.expect)(completion.items[1]).eql((0, verifyError_1.createExpectedCompletion)('2.1', '2.1', 0, 9, 0, 9, 12, vscode_languageserver_types_1.InsertTextFormat.Snippet, {
2280
+ documentation: undefined,
2281
+ detail: 'Default value',
2282
+ }));
2283
+ });
2284
+ it('required enum property completes with default value', async () => {
2285
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2286
+ type: 'object',
2287
+ properties: {
2288
+ Mode: {
2289
+ type: 'integer',
2290
+ enum: [0, 1],
2291
+ default: 1,
2292
+ },
2293
+ },
2294
+ required: ['Mode'],
2295
+ });
2296
+ const completion = await parseSetup('', 0);
2297
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('Mode', 'Mode: 1', 0, 0, 0, 0, 10, vscode_languageserver_types_1.InsertTextFormat.Snippet, { documentation: '' }));
2298
+ });
2299
+ it('enum completion should label the default value', async () => {
2300
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2301
+ type: 'object',
2302
+ properties: {
2303
+ Mode: {
2304
+ type: 'integer',
2305
+ enum: [0, 1],
2306
+ default: 1,
2307
+ },
2308
+ },
2309
+ });
2310
+ const content = 'Mode: ';
2311
+ const completion = await parseSetup(content, content.length);
2312
+ const zero = completion.items.find((i) => i.label === '0');
2313
+ const one = completion.items.find((i) => i.label === '1');
2314
+ (0, chai_1.expect)(zero, 'Expected enum option 0').to.not.be.undefined;
2315
+ (0, chai_1.expect)(one, 'Expected enum option 1').to.not.be.undefined;
2316
+ (0, chai_1.expect)(zero).eql((0, verifyError_1.createExpectedCompletion)('0', '0', 0, 6, 0, 6, 12, 2, { documentation: undefined }));
2317
+ (0, chai_1.expect)(one).eql((0, verifyError_1.createExpectedCompletion)('1', '1', 0, 6, 0, 6, 12, 2, {
2318
+ documentation: undefined,
2319
+ detail: 'Default value',
2320
+ }));
2321
+ });
2322
+ });
2323
+ describe('Array completion', () => {
2324
+ it('Simple array object completion with "-" without any item', (done) => {
2325
+ const schema = require(path.join(__dirname, './fixtures/testArrayCompletionSchema.json'));
2326
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2327
+ const content = 'test_simpleArrayObject:\n -';
2328
+ const completion = parseSetup(content, content.length);
2329
+ completion
2330
+ .then(function (result) {
2331
+ assert.equal(result.items.length, 2);
2332
+ assert.equal(result.items[0].label, 'obj1');
2333
+ assert.equal(result.items[0].insertText, ' obj1:\n ');
2334
+ })
2335
+ .then(done, done);
2336
+ });
2337
+ it('Simple array object completion without "-" after array item', (done) => {
2338
+ const schema = require(path.join(__dirname, './fixtures/testArrayCompletionSchema.json'));
2339
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2340
+ const content = 'test_simpleArrayObject:\n - obj1:\n name: 1\n ';
2341
+ const completion = parseSetup(content, content.length);
2342
+ completion
2343
+ .then(function (result) {
2344
+ assert.equal(result.items.length, 1);
2345
+ assert.equal(result.items[0].label, '- (array item) obj1');
2346
+ })
2347
+ .then(done, done);
2348
+ });
2349
+ it('Simple array object completion with "-" after array item', (done) => {
2350
+ const schema = require(path.join(__dirname, './fixtures/testArrayCompletionSchema.json'));
2351
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2352
+ const content = 'test_simpleArrayObject:\n - obj1:\n name: 1\n -';
2353
+ const completion = parseSetup(content, content.length);
2354
+ completion
2355
+ .then(function (result) {
2356
+ assert.equal(result.items.length, 2);
2357
+ assert.equal(result.items[0].label, 'obj1');
2358
+ assert.equal(result.items[0].insertText, ' obj1:\n ');
2359
+ })
2360
+ .then(done, done);
2361
+ });
2362
+ it('Array anyOf two objects completion with "- " without any item', (done) => {
2363
+ const schema = require(path.join(__dirname, './fixtures/testArrayCompletionSchema.json'));
2364
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2365
+ const content = 'test_array_anyOf_2objects:\n - ';
2366
+ const completion = parseSetup(content, content.length);
2367
+ completion
2368
+ .then(function (result) {
2369
+ assert.equal(result.items.length, 4);
2370
+ assert.equal(result.items[0].label, 'obj1');
2371
+ assert.equal(result.items[0].kind, 10);
2372
+ assert.equal(result.items[1].label, 'obj1');
2373
+ assert.equal(result.items[1].kind, 7);
2374
+ })
2375
+ .then(done, done);
2376
+ });
2377
+ it('Array anyOf two objects completion with "-" without any item', (done) => {
2378
+ const schema = require(path.join(__dirname, './fixtures/testArrayCompletionSchema.json'));
2379
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2380
+ const content = 'test_array_anyOf_2objects:\n -';
2381
+ const completion = parseSetup(content, content.length);
2382
+ completion
2383
+ .then(function (result) {
2384
+ assert.equal(result.items.length, 4);
2385
+ assert.equal(result.items[0].label, 'obj1');
2386
+ assert.equal(result.items[0].insertText, ' obj1:\n ');
2387
+ })
2388
+ .then(done, done);
2389
+ });
2390
+ it('Simple array object completion without "-" befor array empty item', (done) => {
2391
+ const schema = require(path.join(__dirname, './fixtures/testArrayCompletionSchema.json'));
2392
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2393
+ const content = 'test_simpleArrayObject:\n |\n| -'; // len: 30, pos: 26
2394
+ const completion = parseSetup(content);
2395
+ completion
2396
+ .then(function (result) {
2397
+ assert.equal(result.items.length, 1);
2398
+ assert.equal(result.items[0].label, '- (array item) obj1');
2399
+ })
2400
+ .then(done, done);
2401
+ });
2402
+ it('Array anyOf two objects completion without "-" after array item', (done) => {
2403
+ const schema = require(path.join(__dirname, './fixtures/testArrayCompletionSchema.json'));
2404
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2405
+ const content = 'test_array_anyOf_2objects:\n - obj1:\n name: 1\n ';
2406
+ const completion = parseSetup(content, content.length);
2407
+ completion
2408
+ .then(function (result) {
2409
+ (0, chai_1.expect)(result.items.map((i) => i.label)).deep.eq(['- (array item) obj1', '- (array item) obj2']);
2410
+ })
2411
+ .then(done, done);
2412
+ });
2413
+ it('Array nested anyOf without "-" should return all array items', (done) => {
2414
+ const schema = require(path.join(__dirname, './fixtures/testArrayCompletionSchema.json'));
2415
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2416
+ const content = 'test_array_nested_anyOf:\n - obj1:\n name:1\n ';
2417
+ const completion = parseSetup(content, content.length);
2418
+ completion
2419
+ .then(function (result) {
2420
+ (0, chai_1.expect)(result.items.map((i) => i.label)).deep.eq(['- (array item) obj1', '- (array item) obj2', '- (array item) obj3']);
2421
+ })
2422
+ .then(done, done);
2423
+ });
2424
+ it('Array anyOf two objects completion with "-" after array item', (done) => {
2425
+ const schema = require(path.join(__dirname, './fixtures/testArrayCompletionSchema.json'));
2426
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2427
+ const content = 'test_array_anyOf_2objects:\n - obj1:\n name: 1\n -';
2428
+ const completion = parseSetup(content, content.length);
2429
+ completion
2430
+ .then(function (result) {
2431
+ assert.equal(result.items.length, 4);
2432
+ assert.equal(result.items[0].label, 'obj1');
2433
+ assert.equal(result.items[0].insertText, ' obj1:\n ');
2434
+ })
2435
+ .then(done, done);
2436
+ });
2437
+ it('Array anyOf two objects completion indentation', async () => {
2438
+ const schema = require(path.join(__dirname, './fixtures/testArrayCompletionSchema.json'));
2439
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2440
+ const content = 'test_array_anyOf_2objects:\n - obj';
2441
+ const completion = await parseSetup(content, content.length);
2442
+ (0, chai_1.expect)(completion.items.length).is.equal(4);
2443
+ const obj1 = completion.items.find((it) => it.label === 'obj1');
2444
+ (0, chai_1.expect)(obj1).is.not.undefined;
2445
+ (0, chai_1.expect)(obj1.textEdit.newText).equal('obj1:\n ');
2446
+ });
2447
+ it('Autocomplete key in nested object while typing', (done) => {
2448
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2449
+ type: 'object',
2450
+ properties: {
2451
+ parent: {
2452
+ type: 'object',
2453
+ properties: {
2454
+ child: {
2455
+ type: 'object',
2456
+ properties: {
2457
+ prop: {
2458
+ type: 'string',
2459
+ default: 'test',
2460
+ },
2461
+ },
2462
+ },
2463
+ },
2464
+ },
2465
+ },
2466
+ });
2467
+ const content = 'parent:\n child:\n p';
2468
+ const completion = parseSetup(content, content.length);
2469
+ completion
2470
+ .then(function (result) {
2471
+ assert.strictEqual(result.items.length, 1);
2472
+ assert.deepEqual(result.items[0], (0, verifyError_1.createExpectedCompletion)('prop', 'prop: ${1:test}', 2, 4, 2, 5, 10, 2, {
2473
+ documentation: '',
2474
+ }));
2475
+ })
2476
+ .then(done, done);
2477
+ });
2478
+ });
2479
+ describe('Parent Completion', () => {
2480
+ const obj1 = {
2481
+ properties: {
2482
+ type: {
2483
+ const: 'typeObj1',
2484
+ },
2485
+ options: {
2486
+ type: 'object',
2487
+ properties: {
2488
+ label: {
2489
+ type: 'string',
2490
+ },
2491
+ },
2492
+ required: ['label'],
2493
+ },
2494
+ },
2495
+ required: ['type', 'options'],
2496
+ type: 'object',
2497
+ description: 'Description1',
2498
+ title: 'Object1',
2499
+ };
2500
+ const obj2 = {
2501
+ properties: {
2502
+ type: {
2503
+ const: 'typeObj2',
2504
+ },
2505
+ options: {
2506
+ type: 'object',
2507
+ properties: {
2508
+ description: {
2509
+ type: 'string',
2510
+ },
2511
+ },
2512
+ required: ['description'],
2513
+ },
2514
+ },
2515
+ required: ['type', 'options'],
2516
+ type: 'object',
2517
+ };
2518
+ it('Should suggest all possible option in oneOf when content empty', async () => {
2519
+ const schema = {
2520
+ type: 'object',
2521
+ oneOf: [
2522
+ {
2523
+ additionalProperties: false,
2524
+ properties: {
2525
+ A: {
2526
+ type: 'string',
2527
+ },
2528
+ },
2529
+ required: ['A'],
2530
+ },
2531
+ {
2532
+ additionalProperties: false,
2533
+ properties: {
2534
+ B: {
2535
+ type: 'string',
2536
+ },
2537
+ },
2538
+ required: ['B'],
2539
+ },
2540
+ ],
2541
+ };
2542
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2543
+ const content = '';
2544
+ const result = await parseSetup(content, content.length);
2545
+ (0, chai_1.expect)(result.items.length).equal(4);
2546
+ (0, chai_1.expect)(result.items[0]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('A', 'A: ', 0, 0, 0, 0, 10, 2, {
2547
+ documentation: '',
2548
+ }));
2549
+ (0, chai_1.expect)(result.items[2]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('B', 'B: ', 0, 0, 0, 0, 10, 2, {
2550
+ documentation: '',
2551
+ }));
2552
+ });
2553
+ it('Should suggest complete object skeleton', async () => {
2554
+ const schema = {
2555
+ definitions: { obj1, obj2 },
2556
+ anyOf: [
2557
+ {
2558
+ $ref: '#/definitions/obj1',
2559
+ },
2560
+ {
2561
+ $ref: '#/definitions/obj2',
2562
+ },
2563
+ ],
2564
+ };
2565
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2566
+ const content = '';
2567
+ const result = await parseSetup(content, content.length);
2568
+ (0, chai_1.expect)(result.items.length).equal(5);
2569
+ (0, chai_1.expect)(result.items[0]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('type', 'type: ${1|typeObj1,typeObj2|}', 0, 0, 0, 0, 10, 2, { documentation: '' }));
2570
+ (0, chai_1.expect)(result.items[1]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('Object1', 'type: typeObj1\noptions:\n label: ', 0, 0, 0, 0, 7, 2, {
2571
+ documentation: {
2572
+ kind: 'markdown',
2573
+ value: 'Description1\n\n----\n\n```yaml\ntype: typeObj1\noptions:\n label: \n```',
2574
+ },
2575
+ sortText: '_Object1',
2576
+ }));
2577
+ (0, chai_1.expect)(result.items[2]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('options', 'options:\n label: ', 0, 0, 0, 0, 10, 2, { documentation: '' }));
2578
+ (0, chai_1.expect)(result.items[3]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('obj2', 'type: typeObj2\noptions:\n description: ', 0, 0, 0, 0, 7, 2, {
2579
+ documentation: {
2580
+ kind: 'markdown',
2581
+ value: '```yaml\ntype: typeObj2\noptions:\n description: \n```',
2582
+ },
2583
+ sortText: '_obj2',
2584
+ }));
2585
+ (0, chai_1.expect)(result.items[4]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('options', 'options:\n description: ', 0, 0, 0, 0, 10, 2, { documentation: '' }));
2586
+ });
2587
+ it('Should suggest complete object skeleton - array', async () => {
2588
+ const schema = {
2589
+ definitions: { obj1, obj2 },
2590
+ items: {
2591
+ anyOf: [
2592
+ {
2593
+ $ref: '#/definitions/obj1',
2594
+ },
2595
+ {
2596
+ $ref: '#/definitions/obj2',
2597
+ },
2598
+ ],
2599
+ },
2600
+ type: 'array',
2601
+ };
2602
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2603
+ const content = '- ';
2604
+ const result = await parseSetup(content, content.length);
2605
+ (0, chai_1.expect)(result.items.length).equal(5);
2606
+ (0, chai_1.expect)(result.items[0]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('type', 'type: ${1|typeObj1,typeObj2|}', 0, 2, 0, 2, 10, 2, { documentation: '' }));
2607
+ (0, chai_1.expect)(result.items[1]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('Object1', 'type: typeObj1\n options:\n label: ', 0, 2, 0, 2, 7, 2, {
2608
+ documentation: {
2609
+ kind: 'markdown',
2610
+ value: 'Description1\n\n----\n\n```yaml\n type: typeObj1\n options:\n label: \n```',
2611
+ },
2612
+ sortText: '_Object1',
2613
+ }));
2614
+ (0, chai_1.expect)(result.items[2]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('options', 'options:\n label: ', 0, 2, 0, 2, 10, 2, { documentation: '' }));
2615
+ (0, chai_1.expect)(result.items[3]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('obj2', 'type: typeObj2\n options:\n description: ', 0, 2, 0, 2, 7, 2, {
2616
+ documentation: {
2617
+ kind: 'markdown',
2618
+ value: '```yaml\n type: typeObj2\n options:\n description: \n```',
2619
+ },
2620
+ sortText: '_obj2',
2621
+ }));
2622
+ (0, chai_1.expect)(result.items[4]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('options', 'options:\n description: ', 0, 2, 0, 2, 10, 2, { documentation: '' }));
2623
+ });
2624
+ it('Should not agregate suggested text from different schemas', async () => {
2625
+ const schema = {
2626
+ definitions: { obj1, obj2 },
2627
+ anyOf: [
2628
+ {
2629
+ $ref: '#/definitions/obj1',
2630
+ },
2631
+ {
2632
+ $ref: '#/definitions/obj1',
2633
+ },
2634
+ ],
2635
+ };
2636
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2637
+ const content = '';
2638
+ const result = await parseSetup(content, content.length);
2639
+ (0, chai_1.expect)(result.items.length).equal(3);
2640
+ (0, chai_1.expect)(result.items[1]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('Object1', 'type: typeObj1\noptions:\n label: ', 0, 0, 0, 0, 7, 2, {
2641
+ documentation: {
2642
+ kind: 'markdown',
2643
+ value: 'Description1\n\n----\n\n```yaml\ntype: typeObj1\noptions:\n label: \n```',
2644
+ },
2645
+ sortText: '_Object1',
2646
+ }));
2647
+ });
2648
+ it('Should suggest rest of the parent object', async () => {
2649
+ const schema = {
2650
+ definitions: { obj1 },
2651
+ $ref: '#/definitions/obj1',
2652
+ };
2653
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2654
+ const content = 'type: typeObj1\n';
2655
+ const result = await parseSetup(content, content.length);
2656
+ (0, chai_1.expect)(result.items.length).equal(2);
2657
+ (0, chai_1.expect)(result.items[1]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('Object1', 'options:\n label: ', 1, 0, 1, 0, 7, 2, {
2658
+ documentation: {
2659
+ kind: 'markdown',
2660
+ value: 'Description1\n\n----\n\n```yaml\noptions:\n label: \n```',
2661
+ },
2662
+ sortText: '_Object1',
2663
+ }));
2664
+ });
2665
+ it('Should reindex $x', async () => {
2666
+ const schema = {
2667
+ properties: {
2668
+ options: {
2669
+ type: 'object',
2670
+ properties: {
2671
+ label: {
2672
+ type: 'string',
2673
+ },
2674
+ },
2675
+ required: ['label'],
2676
+ },
2677
+ prop1: {
2678
+ type: 'string',
2679
+ },
2680
+ },
2681
+ required: ['type', 'options', 'prop1'],
2682
+ type: 'object',
2683
+ };
2684
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2685
+ const content = '';
2686
+ const result = await parseSetup(content, content.length);
2687
+ (0, chai_1.expect)(result.items.length).equal(3);
2688
+ (0, chai_1.expect)(result.items[1]).to.deep.equal((0, verifyError_1.createExpectedCompletion)('object', 'options:\n label: $1\nprop1: $2', 0, 0, 0, 0, 7, 2, {
2689
+ documentation: {
2690
+ kind: 'markdown',
2691
+ value: '```yaml\noptions:\n label: \nprop1: \n```',
2692
+ },
2693
+ sortText: '_object',
2694
+ }));
2695
+ });
2696
+ it('object completion with default boolean and default integer', async () => {
2697
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, {
2698
+ type: 'object',
2699
+ properties: {
2700
+ env: {
2701
+ type: 'object',
2702
+ properties: {
2703
+ val: {
2704
+ type: 'boolean',
2705
+ default: false,
2706
+ },
2707
+ },
2708
+ required: ['val'],
2709
+ },
2710
+ salad: {
2711
+ type: 'integer',
2712
+ default: 0,
2713
+ },
2714
+ },
2715
+ required: ['env', 'salad'],
2716
+ });
2717
+ const content = '';
2718
+ const result = await parseSetup(content, 0);
2719
+ assert.equal(result.items.length, 3);
2720
+ assert.deepEqual(result.items[1], (0, verifyError_1.createExpectedCompletion)('object', 'env:\n val: ${1:false}\nsalad: 0', 0, 0, 0, 0, 7, 2, {
2721
+ sortText: '_object',
2722
+ documentation: {
2723
+ kind: 'markdown',
2724
+ value: '```yaml\nenv:\n val: false\nsalad: 0\n```',
2725
+ },
2726
+ }));
2727
+ });
2728
+ describe('Select parent skeleton first', () => {
2729
+ beforeEach(() => {
2730
+ const languageSettingsSetup = new serviceSetup_1.ServiceSetup().withCompletion();
2731
+ languageSettingsSetup.languageSettings.parentSkeletonSelectedFirst = true;
2732
+ languageService.configure(languageSettingsSetup.languageSettings);
2733
+ });
2734
+ it('Should suggest complete object skeleton', async () => {
2735
+ const schema = {
2736
+ definitions: { obj1, obj2 },
2737
+ anyOf: [
2738
+ {
2739
+ $ref: '#/definitions/obj1',
2740
+ },
2741
+ {
2742
+ $ref: '#/definitions/obj2',
2743
+ },
2744
+ ],
2745
+ };
2746
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2747
+ const content = '';
2748
+ const result = await parseSetup(content, content.length);
2749
+ (0, chai_1.expect)(result.items.map((i) => i.label)).to.have.members(['Object1', 'obj2']);
2750
+ });
2751
+ it('Should suggest complete object skeleton - nested', async () => {
2752
+ const schema = {
2753
+ definitions: { obj1, obj2 },
2754
+ properties: {
2755
+ name: {
2756
+ anyOf: [
2757
+ {
2758
+ $ref: '#/definitions/obj1',
2759
+ },
2760
+ {
2761
+ $ref: '#/definitions/obj2',
2762
+ },
2763
+ ],
2764
+ },
2765
+ },
2766
+ };
2767
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2768
+ const content = 'name:\n ';
2769
+ const result = await parseSetup(content, content.length);
2770
+ (0, chai_1.expect)(result.items.map((i) => i.label)).to.have.members(['Object1', 'obj2']);
2771
+ });
2772
+ it('Should suggest complete object skeleton - array', async () => {
2773
+ const schema = {
2774
+ definitions: { obj1, obj2 },
2775
+ items: {
2776
+ anyOf: [
2777
+ {
2778
+ $ref: '#/definitions/obj1',
2779
+ },
2780
+ {
2781
+ $ref: '#/definitions/obj2',
2782
+ },
2783
+ ],
2784
+ },
2785
+ type: 'array',
2786
+ };
2787
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2788
+ const content = '- ';
2789
+ const result = await parseSetup(content, content.length);
2790
+ (0, chai_1.expect)(result.items.map((i) => i.label)).to.have.members(['Object1', 'obj2']);
2791
+ });
2792
+ it('Should suggest rest of the parent object', async () => {
2793
+ const schema = {
2794
+ definitions: { obj1 },
2795
+ $ref: '#/definitions/obj1',
2796
+ };
2797
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2798
+ const content = 'type: typeObj1\n';
2799
+ const result = await parseSetup(content, content.length);
2800
+ (0, chai_1.expect)(result.items.map((i) => i.label)).to.have.members(['options', 'Object1']);
2801
+ });
2802
+ it('Should suggest all feature when user is typing', async () => {
2803
+ const schema = {
2804
+ definitions: { obj1 },
2805
+ $ref: '#/definitions/obj1',
2806
+ };
2807
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2808
+ const content = 'ty';
2809
+ const result = await parseSetup(content, content.length);
2810
+ (0, chai_1.expect)(result.items.map((i) => i.label)).to.have.members(['type', 'options', 'Object1']);
2811
+ });
2812
+ it('Should suggest all properties in empty yaml with now required props', async () => {
2813
+ const schema = {
2814
+ properties: {
2815
+ fruit: {},
2816
+ vegetable: {},
2817
+ },
2818
+ };
2819
+ schemaProvider.addSchema(testHelper_1.SCHEMA_ID, schema);
2820
+ const content = '';
2821
+ const result = await parseSetup(content, content.length);
2822
+ (0, chai_1.expect)(result.items.map((i) => i.label)).to.have.members(['fruit', 'vegetable']);
2823
+ });
2824
+ });
2825
+ it('Should function when settings are undefined', async () => {
2826
+ languageService.configure({ completion: true });
2827
+ const content = '';
2828
+ await parseSetup(content, 0);
2829
+ });
2830
+ });
2831
+ });
2832
+ //# sourceMappingURL=autoCompletion.test.js.map