yaml-language-server 1.8.1-c2e2e0f.0 → 1.9.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 (243) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/CONTRIBUTING.md +8 -0
  3. package/DCO +37 -0
  4. package/README.md +1 -0
  5. package/lib/esm/languageserver/handlers/settingsHandlers.js.map +1 -1
  6. package/lib/esm/languageservice/jsonASTTypes.js +1 -0
  7. package/lib/esm/languageservice/jsonSchema.js +1 -0
  8. package/lib/esm/languageservice/parser/jsonParser07.js +3 -3
  9. package/lib/esm/languageservice/parser/jsonParser07.js.map +1 -1
  10. package/lib/esm/languageservice/parser/yaml-documents.js +10 -2
  11. package/lib/esm/languageservice/parser/yaml-documents.js.map +1 -1
  12. package/lib/esm/languageservice/parser/yamlParser07.js.map +1 -1
  13. package/lib/esm/languageservice/services/validation/types.js +1 -0
  14. package/lib/esm/languageservice/services/yamlCodeActions.js.map +1 -1
  15. package/lib/esm/languageservice/services/yamlCodeLens.js +2 -17
  16. package/lib/esm/languageservice/services/yamlCodeLens.js.map +1 -1
  17. package/lib/esm/languageservice/services/yamlCompletion.js +51 -36
  18. package/lib/esm/languageservice/services/yamlCompletion.js.map +1 -1
  19. package/lib/esm/languageservice/services/yamlFolding.js.map +1 -1
  20. package/lib/esm/languageservice/services/yamlHover.js +1 -1
  21. package/lib/esm/languageservice/services/yamlHover.js.map +1 -1
  22. package/lib/esm/languageservice/services/yamlSchemaService.js +14 -0
  23. package/lib/esm/languageservice/services/yamlSchemaService.js.map +1 -1
  24. package/lib/esm/languageservice/utils/astUtils.js.map +1 -1
  25. package/lib/esm/languageservice/utils/charCode.js +1 -0
  26. package/lib/esm/languageservice/utils/indentationGuesser.js +6 -6
  27. package/lib/esm/languageservice/utils/indentationGuesser.js.map +1 -1
  28. package/lib/esm/languageservice/utils/objects.js.map +1 -1
  29. package/lib/esm/languageservice/utils/schemaUtils.d.ts +1 -0
  30. package/lib/esm/languageservice/utils/schemaUtils.js +16 -0
  31. package/lib/esm/languageservice/utils/schemaUtils.js.map +1 -1
  32. package/lib/esm/languageservice/utils/strings.js +1 -1
  33. package/lib/esm/languageservice/utils/strings.js.map +1 -1
  34. package/lib/esm/languageservice/utils/textBuffer.js +1 -1
  35. package/lib/esm/languageservice/utils/textBuffer.js.map +1 -1
  36. package/lib/esm/languageservice/yamlTypes.js +1 -0
  37. package/lib/umd/index.js +7 -2
  38. package/lib/umd/index.js.map +1 -1
  39. package/lib/umd/languageserver/handlers/languageHandlers.js +1 -1
  40. package/lib/umd/languageserver/handlers/languageHandlers.js.map +1 -1
  41. package/lib/umd/languageserver/handlers/schemaSelectionHandlers.js +1 -1
  42. package/lib/umd/languageserver/handlers/schemaSelectionHandlers.js.map +1 -1
  43. package/lib/umd/languageserver/handlers/settingsHandlers.js +7 -7
  44. package/lib/umd/languageserver/handlers/settingsHandlers.js.map +1 -1
  45. package/lib/umd/languageserver/handlers/validationHandlers.js +2 -2
  46. package/lib/umd/languageserver/handlers/validationHandlers.js.map +1 -1
  47. package/lib/umd/languageservice/parser/ast-converter.js +11 -11
  48. package/lib/umd/languageservice/parser/ast-converter.js.map +1 -1
  49. package/lib/umd/languageservice/parser/custom-tag-provider.js +3 -3
  50. package/lib/umd/languageservice/parser/custom-tag-provider.js.map +1 -1
  51. package/lib/umd/languageservice/parser/jsonParser07.js +28 -28
  52. package/lib/umd/languageservice/parser/jsonParser07.js.map +1 -1
  53. package/lib/umd/languageservice/parser/yaml-documents.js +23 -15
  54. package/lib/umd/languageservice/parser/yaml-documents.js.map +1 -1
  55. package/lib/umd/languageservice/parser/yamlParser07.js +1 -1
  56. package/lib/umd/languageservice/parser/yamlParser07.js.map +1 -1
  57. package/lib/umd/languageservice/services/documentSymbols.js +4 -4
  58. package/lib/umd/languageservice/services/documentSymbols.js.map +1 -1
  59. package/lib/umd/languageservice/services/schemaRequestHandler.js +6 -5
  60. package/lib/umd/languageservice/services/schemaRequestHandler.js.map +1 -1
  61. package/lib/umd/languageservice/services/validation/unused-anchors.js +5 -5
  62. package/lib/umd/languageservice/services/validation/unused-anchors.js.map +1 -1
  63. package/lib/umd/languageservice/services/yamlCodeActions.js +1 -1
  64. package/lib/umd/languageservice/services/yamlCodeActions.js.map +1 -1
  65. package/lib/umd/languageservice/services/yamlCodeLens.js +5 -20
  66. package/lib/umd/languageservice/services/yamlCodeLens.js.map +1 -1
  67. package/lib/umd/languageservice/services/yamlCompletion.js +101 -86
  68. package/lib/umd/languageservice/services/yamlCompletion.js.map +1 -1
  69. package/lib/umd/languageservice/services/yamlDefinition.js +3 -3
  70. package/lib/umd/languageservice/services/yamlDefinition.js.map +1 -1
  71. package/lib/umd/languageservice/services/yamlFolding.js.map +1 -1
  72. package/lib/umd/languageservice/services/yamlHover.js +5 -5
  73. package/lib/umd/languageservice/services/yamlHover.js.map +1 -1
  74. package/lib/umd/languageservice/services/yamlLinks.js +2 -2
  75. package/lib/umd/languageservice/services/yamlLinks.js.map +1 -1
  76. package/lib/umd/languageservice/services/yamlSchemaService.js +18 -4
  77. package/lib/umd/languageservice/services/yamlSchemaService.js.map +1 -1
  78. package/lib/umd/languageservice/services/yamlValidation.js +4 -3
  79. package/lib/umd/languageservice/services/yamlValidation.js.map +1 -1
  80. package/lib/umd/languageservice/utils/astUtils.js +3 -3
  81. package/lib/umd/languageservice/utils/astUtils.js.map +1 -1
  82. package/lib/umd/languageservice/utils/indentationGuesser.js +6 -6
  83. package/lib/umd/languageservice/utils/indentationGuesser.js.map +1 -1
  84. package/lib/umd/languageservice/utils/objects.js.map +1 -1
  85. package/lib/umd/languageservice/utils/paths.js +9 -6
  86. package/lib/umd/languageservice/utils/paths.js.map +1 -1
  87. package/lib/umd/languageservice/utils/schemaUrls.js +3 -3
  88. package/lib/umd/languageservice/utils/schemaUrls.js.map +1 -1
  89. package/lib/umd/languageservice/utils/schemaUtils.d.ts +1 -0
  90. package/lib/umd/languageservice/utils/schemaUtils.js +19 -2
  91. package/lib/umd/languageservice/utils/schemaUtils.js.map +1 -1
  92. package/lib/umd/languageservice/utils/strings.js +1 -1
  93. package/lib/umd/languageservice/utils/strings.js.map +1 -1
  94. package/lib/umd/languageservice/utils/textBuffer.js +1 -1
  95. package/lib/umd/languageservice/utils/textBuffer.js.map +1 -1
  96. package/lib/umd/languageservice/yamlLanguageService.js +1 -1
  97. package/lib/umd/languageservice/yamlLanguageService.js.map +1 -1
  98. package/lib/umd/server.js +4 -4
  99. package/lib/umd/server.js.map +1 -1
  100. package/lib/umd/webworker/yamlServerMain.js +2 -2
  101. package/lib/umd/webworker/yamlServerMain.js.map +1 -1
  102. package/lib/umd/yamlServerInit.js +2 -2
  103. package/lib/umd/yamlServerInit.js.map +1 -1
  104. package/out/server/src/index.js +7 -2
  105. package/out/server/src/index.js.map +1 -1
  106. package/out/server/src/languageserver/handlers/languageHandlers.js +1 -1
  107. package/out/server/src/languageserver/handlers/languageHandlers.js.map +1 -1
  108. package/out/server/src/languageserver/handlers/schemaSelectionHandlers.js +1 -1
  109. package/out/server/src/languageserver/handlers/schemaSelectionHandlers.js.map +1 -1
  110. package/out/server/src/languageserver/handlers/settingsHandlers.js +7 -7
  111. package/out/server/src/languageserver/handlers/settingsHandlers.js.map +1 -1
  112. package/out/server/src/languageserver/handlers/validationHandlers.js +2 -2
  113. package/out/server/src/languageserver/handlers/validationHandlers.js.map +1 -1
  114. package/out/server/src/languageservice/parser/ast-converter.js +11 -11
  115. package/out/server/src/languageservice/parser/ast-converter.js.map +1 -1
  116. package/out/server/src/languageservice/parser/custom-tag-provider.js +3 -3
  117. package/out/server/src/languageservice/parser/custom-tag-provider.js.map +1 -1
  118. package/out/server/src/languageservice/parser/jsonParser07.js +28 -28
  119. package/out/server/src/languageservice/parser/jsonParser07.js.map +1 -1
  120. package/out/server/src/languageservice/parser/yaml-documents.js +23 -15
  121. package/out/server/src/languageservice/parser/yaml-documents.js.map +1 -1
  122. package/out/server/src/languageservice/parser/yamlParser07.js +1 -1
  123. package/out/server/src/languageservice/parser/yamlParser07.js.map +1 -1
  124. package/out/server/src/languageservice/services/documentSymbols.js +4 -4
  125. package/out/server/src/languageservice/services/documentSymbols.js.map +1 -1
  126. package/out/server/src/languageservice/services/schemaRequestHandler.js +6 -5
  127. package/out/server/src/languageservice/services/schemaRequestHandler.js.map +1 -1
  128. package/out/server/src/languageservice/services/validation/unused-anchors.js +5 -5
  129. package/out/server/src/languageservice/services/validation/unused-anchors.js.map +1 -1
  130. package/out/server/src/languageservice/services/yamlCodeActions.js +1 -1
  131. package/out/server/src/languageservice/services/yamlCodeActions.js.map +1 -1
  132. package/out/server/src/languageservice/services/yamlCodeLens.js +4 -19
  133. package/out/server/src/languageservice/services/yamlCodeLens.js.map +1 -1
  134. package/out/server/src/languageservice/services/yamlCompletion.js +100 -85
  135. package/out/server/src/languageservice/services/yamlCompletion.js.map +1 -1
  136. package/out/server/src/languageservice/services/yamlDefinition.js +3 -3
  137. package/out/server/src/languageservice/services/yamlDefinition.js.map +1 -1
  138. package/out/server/src/languageservice/services/yamlFolding.js.map +1 -1
  139. package/out/server/src/languageservice/services/yamlHover.js +5 -5
  140. package/out/server/src/languageservice/services/yamlHover.js.map +1 -1
  141. package/out/server/src/languageservice/services/yamlLinks.js +2 -2
  142. package/out/server/src/languageservice/services/yamlLinks.js.map +1 -1
  143. package/out/server/src/languageservice/services/yamlSchemaService.js +17 -3
  144. package/out/server/src/languageservice/services/yamlSchemaService.js.map +1 -1
  145. package/out/server/src/languageservice/services/yamlValidation.js +4 -3
  146. package/out/server/src/languageservice/services/yamlValidation.js.map +1 -1
  147. package/out/server/src/languageservice/utils/astUtils.js +3 -3
  148. package/out/server/src/languageservice/utils/astUtils.js.map +1 -1
  149. package/out/server/src/languageservice/utils/indentationGuesser.js +6 -6
  150. package/out/server/src/languageservice/utils/indentationGuesser.js.map +1 -1
  151. package/out/server/src/languageservice/utils/objects.js.map +1 -1
  152. package/out/server/src/languageservice/utils/paths.js +9 -6
  153. package/out/server/src/languageservice/utils/paths.js.map +1 -1
  154. package/out/server/src/languageservice/utils/schemaUrls.js +3 -3
  155. package/out/server/src/languageservice/utils/schemaUrls.js.map +1 -1
  156. package/out/server/src/languageservice/utils/schemaUtils.d.ts +1 -0
  157. package/out/server/src/languageservice/utils/schemaUtils.js +18 -1
  158. package/out/server/src/languageservice/utils/schemaUtils.js.map +1 -1
  159. package/out/server/src/languageservice/utils/strings.js +1 -1
  160. package/out/server/src/languageservice/utils/strings.js.map +1 -1
  161. package/out/server/src/languageservice/utils/textBuffer.js +1 -1
  162. package/out/server/src/languageservice/utils/textBuffer.js.map +1 -1
  163. package/out/server/src/languageservice/yamlLanguageService.js +1 -1
  164. package/out/server/src/languageservice/yamlLanguageService.js.map +1 -1
  165. package/out/server/src/server.js +4 -4
  166. package/out/server/src/server.js.map +1 -1
  167. package/out/server/src/webworker/yamlServerMain.js +2 -2
  168. package/out/server/src/webworker/yamlServerMain.js.map +1 -1
  169. package/out/server/src/yamlServerInit.js +2 -2
  170. package/out/server/src/yamlServerInit.js.map +1 -1
  171. package/out/server/test/arrUtils.test.js +6 -6
  172. package/out/server/test/arrUtils.test.js.map +1 -1
  173. package/out/server/test/astUtils.test.js +18 -18
  174. package/out/server/test/astUtils.test.js.map +1 -1
  175. package/out/server/test/autoCompletion.test.js +267 -256
  176. package/out/server/test/autoCompletion.test.js.map +1 -1
  177. package/out/server/test/autoCompletionFix.test.js +408 -71
  178. package/out/server/test/autoCompletionFix.test.js.map +1 -1
  179. package/out/server/test/code-action-schema.test.js +12 -12
  180. package/out/server/test/code-action-schema.test.js.map +1 -1
  181. package/out/server/test/customTags.test.js +3 -3
  182. package/out/server/test/customTags.test.js.map +1 -1
  183. package/out/server/test/defaultSnippets.test.js +53 -32
  184. package/out/server/test/defaultSnippets.test.js.map +1 -1
  185. package/out/server/test/documentPositionCalculator.test.js +10 -10
  186. package/out/server/test/documentPositionCalculator.test.js.map +1 -1
  187. package/out/server/test/documentSymbols.test.js +62 -62
  188. package/out/server/test/documentSymbols.test.js.map +1 -1
  189. package/out/server/test/findLinks.test.js +2 -2
  190. package/out/server/test/findLinks.test.js.map +1 -1
  191. package/out/server/test/formatter.test.js +2 -2
  192. package/out/server/test/formatter.test.js.map +1 -1
  193. package/out/server/test/hover.test.js +107 -42
  194. package/out/server/test/hover.test.js.map +1 -1
  195. package/out/server/test/integration.test.js +4 -4
  196. package/out/server/test/integration.test.js.map +1 -1
  197. package/out/server/test/jsonParser.test.js +6 -6
  198. package/out/server/test/jsonParser.test.js.map +1 -1
  199. package/out/server/test/multipleDocuments.test.js +4 -4
  200. package/out/server/test/multipleDocuments.test.js.map +1 -1
  201. package/out/server/test/objects.test.js +14 -14
  202. package/out/server/test/objects.test.js.map +1 -1
  203. package/out/server/test/paths.test.js +26 -26
  204. package/out/server/test/paths.test.js.map +1 -1
  205. package/out/server/test/schema.test.js +9 -9
  206. package/out/server/test/schema.test.js.map +1 -1
  207. package/out/server/test/schemaRequestHandler.test.js +3 -3
  208. package/out/server/test/schemaRequestHandler.test.js.map +1 -1
  209. package/out/server/test/schemaSelectionHandlers.test.js +4 -4
  210. package/out/server/test/schemaSelectionHandlers.test.js.map +1 -1
  211. package/out/server/test/schemaValidation.test.js +69 -47
  212. package/out/server/test/schemaValidation.test.js.map +1 -1
  213. package/out/server/test/settingsHandlers.test.js +5 -5
  214. package/out/server/test/settingsHandlers.test.js.map +1 -1
  215. package/out/server/test/strings.test.js +19 -19
  216. package/out/server/test/strings.test.js.map +1 -1
  217. package/out/server/test/telemetry.test.js +2 -2
  218. package/out/server/test/telemetry.test.js.map +1 -1
  219. package/out/server/test/textBuffer.test.js +1 -1
  220. package/out/server/test/utils/testHelper.d.ts +11 -0
  221. package/out/server/test/utils/testHelper.js +22 -3
  222. package/out/server/test/utils/testHelper.js.map +1 -1
  223. package/out/server/test/yaml-documents.test.js +29 -29
  224. package/out/server/test/yaml-documents.test.js.map +1 -1
  225. package/out/server/test/yamlCodeActions.test.js +15 -15
  226. package/out/server/test/yamlCodeActions.test.js.map +1 -1
  227. package/out/server/test/yamlCodeLens.test.js +7 -7
  228. package/out/server/test/yamlCodeLens.test.js.map +1 -1
  229. package/out/server/test/yamlCommands.test.js +3 -3
  230. package/out/server/test/yamlCommands.test.js.map +1 -1
  231. package/out/server/test/yamlDefinition.test.js +5 -5
  232. package/out/server/test/yamlDefinition.test.js.map +1 -1
  233. package/out/server/test/yamlFolding.test.js +44 -44
  234. package/out/server/test/yamlFolding.test.js.map +1 -1
  235. package/out/server/test/yamlOnTypeFormatting.test.js +22 -22
  236. package/out/server/test/yamlOnTypeFormatting.test.js.map +1 -1
  237. package/out/server/test/yamlParser.test.js +24 -24
  238. package/out/server/test/yamlParser.test.js.map +1 -1
  239. package/out/server/test/yamlSchemaService.test.js +7 -7
  240. package/out/server/test/yamlSchemaService.test.js.map +1 -1
  241. package/out/server/test/yamlValidation.test.js +22 -22
  242. package/out/server/test/yamlValidation.test.js.map +1 -1
  243. package/package.json +5 -4
@@ -30,20 +30,20 @@ describe('Auto Completion Fix Tests', () => {
30
30
  uri: 'https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.22.4-standalone-strict/all.json',
31
31
  fileMatch: [testHelper_1.SCHEMA_ID],
32
32
  });
33
- const { languageService: langService, languageHandler: langHandler, yamlSettings: settings } = testHelper_1.setupLanguageService(languageSettingsSetup.languageSettings);
33
+ const { languageService: langService, languageHandler: langHandler, yamlSettings: settings } = (0, testHelper_1.setupLanguageService)(languageSettingsSetup.languageSettings);
34
34
  languageService = langService;
35
35
  languageHandler = langHandler;
36
36
  yamlSettings = settings;
37
37
  });
38
38
  /**
39
- *
40
- * @param content
39
+ * Generates a completion list for the given document and caret (cursor) position.
40
+ * @param content The content of the document.
41
41
  * @param line starts with 0 index
42
42
  * @param character starts with 1 index
43
- * @returns
43
+ * @returns A list of valid completions.
44
44
  */
45
45
  function parseSetup(content, line, character) {
46
- const testTextDocument = testHelper_1.setupSchemaIDTextDocument(content);
46
+ const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)(content);
47
47
  yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
48
48
  yamlSettings.documents.set(testTextDocument);
49
49
  return languageHandler.completionHandler({
@@ -51,6 +51,23 @@ describe('Auto Completion Fix Tests', () => {
51
51
  textDocument: testTextDocument,
52
52
  });
53
53
  }
54
+ /**
55
+ * Generates a completion list for the given document and caret (cursor) position.
56
+ * @param content The content of the document.
57
+ * The caret is located in the content using `|` bookends.
58
+ * For example, `content = 'ab|c|d'` places the caret over the `'c'`, at `position = 2`
59
+ * @returns A list of valid completions.
60
+ */
61
+ function parseCaret(content) {
62
+ const { position, content: content2 } = (0, testHelper_1.caretPosition)(content);
63
+ const testTextDocument = (0, testHelper_1.setupSchemaIDTextDocument)(content2);
64
+ yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
65
+ yamlSettings.documents.set(testTextDocument);
66
+ return languageHandler.completionHandler({
67
+ position: testTextDocument.positionAt(position),
68
+ textDocument: testTextDocument,
69
+ });
70
+ }
54
71
  afterEach(() => {
55
72
  languageService.deleteSchema(testHelper_1.SCHEMA_ID);
56
73
  languageService.configure(languageSettingsSetup.languageSettings);
@@ -72,10 +89,10 @@ describe('Auto Completion Fix Tests', () => {
72
89
  },
73
90
  },
74
91
  });
75
- const content = '- from:\n ';
76
- const completion = yield parseSetup(content, 1, 3);
77
- chai_1.expect(completion.items).lengthOf(1);
78
- chai_1.expect(completion.items[0]).eql(verifyError_1.createExpectedCompletion('foo', 'foo: ', 1, 3, 1, 3, 10, 2, {
92
+ const content = '- from:\n | |'; // len: 12, pos: 11
93
+ const completion = yield parseCaret(content);
94
+ (0, chai_1.expect)(completion.items).lengthOf(1);
95
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('foo', 'foo: ', 1, 3, 1, 4, 10, 2, {
79
96
  documentation: '',
80
97
  }));
81
98
  }));
@@ -96,10 +113,10 @@ describe('Auto Completion Fix Tests', () => {
96
113
  },
97
114
  },
98
115
  });
99
- const content = '- ';
116
+ const content = '- '; // len: 2
100
117
  const completion = yield parseSetup(content, 0, 2);
101
- chai_1.expect(completion.items).lengthOf(1);
102
- chai_1.expect(completion.items[0]).eql(verifyError_1.createExpectedCompletion('from', 'from:\n ', 0, 2, 0, 2, 10, 2, {
118
+ (0, chai_1.expect)(completion.items).lengthOf(1);
119
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('from', 'from:\n ', 0, 2, 0, 2, 10, 2, {
103
120
  documentation: '',
104
121
  }));
105
122
  }));
@@ -113,19 +130,19 @@ spec:
113
130
  - name: test
114
131
 
115
132
  image: alpine
116
- `;
133
+ `; // len: 90
117
134
  const completion = yield parseSetup(content, 7, 6);
118
- chai_1.expect(completion.items).length.greaterThan(1);
135
+ (0, chai_1.expect)(completion.items).length.greaterThan(1);
119
136
  }));
120
137
  it('should show completion on array item on first line', () => __awaiter(void 0, void 0, void 0, function* () {
121
- const content = '-d';
138
+ const content = '-d'; // len: 2
122
139
  const completion = yield parseSetup(content, 0, 1);
123
- chai_1.expect(completion.items).is.empty;
140
+ (0, chai_1.expect)(completion.items).is.empty;
124
141
  }));
125
142
  it('should complete without error on map inside array', () => __awaiter(void 0, void 0, void 0, function* () {
126
- const content = '- foo\n- bar:\n so';
143
+ const content = '- foo\n- bar:\n so'; // len: 19
127
144
  const completion = yield parseSetup(content, 2, 6);
128
- chai_1.expect(completion.items).is.empty;
145
+ (0, chai_1.expect)(completion.items).is.empty;
129
146
  }));
130
147
  it('should complete array', () => __awaiter(void 0, void 0, void 0, function* () {
131
148
  // eslint-disable-next-line @typescript-eslint/no-var-requires
@@ -137,9 +154,9 @@ spec:
137
154
  objB:
138
155
  size: midle
139
156
  name: nameB2
140
- `;
157
+ `; // len: 67
141
158
  const completion = yield parseSetup(content, 2, 4);
142
- chai_1.expect(completion.items).is.not.empty;
159
+ (0, chai_1.expect)(completion.items).is.not.empty;
143
160
  }));
144
161
  it('should complete array item for "oneOf" schema', () => __awaiter(void 0, void 0, void 0, function* () {
145
162
  // eslint-disable-next-line @typescript-eslint/no-var-requires
@@ -149,10 +166,10 @@ objB:
149
166
  Selector:
150
167
  query:
151
168
  -
152
- `;
169
+ `; // len: 42
153
170
  const completion = yield parseSetup(content, 3, 8);
154
- chai_1.expect(completion.items).length(5);
155
- chai_1.expect(completion.items.map((it) => it.label)).to.have.members(['NOT', 'attribute', 'operation', 'value', 'FUNC_item']);
171
+ (0, chai_1.expect)(completion.items).length(5);
172
+ (0, chai_1.expect)(completion.items.map((it) => it.label)).to.have.members(['NOT', 'attribute', 'operation', 'value', 'FUNC_item']);
156
173
  }));
157
174
  it('Autocomplete with short nextLine - nested object', () => __awaiter(void 0, void 0, void 0, function* () {
158
175
  languageService.addSchema(testHelper_1.SCHEMA_ID, {
@@ -177,10 +194,10 @@ objB:
177
194
  },
178
195
  },
179
196
  });
180
- const content = 'example:\n sample:\n ';
197
+ const content = 'example:\n sample:\n '; // len: 23
181
198
  const completion = yield parseSetup(content + '\na: test', 2, 4);
182
- chai_1.expect(completion.items.length).equal(1);
183
- chai_1.expect(completion.items[0]).to.be.deep.equal(verifyError_1.createExpectedCompletion('detail', 'detail:\n ', 2, 4, 2, 4, 10, 2, {
199
+ (0, chai_1.expect)(completion.items.length).equal(1);
200
+ (0, chai_1.expect)(completion.items[0]).to.be.deep.equal((0, verifyError_1.createExpectedCompletion)('detail', 'detail:\n ', 2, 4, 2, 4, 10, 2, {
184
201
  documentation: '',
185
202
  }));
186
203
  }));
@@ -206,10 +223,10 @@ objB:
206
223
  },
207
224
  },
208
225
  });
209
- const content = 'example:\n sample:\n \n prop2: value2';
210
- const completion = yield parseSetup(content, 2, 4);
211
- chai_1.expect(completion.items.length).equal(1);
212
- chai_1.expect(completion.items[0]).to.be.deep.equal(verifyError_1.createExpectedCompletion('prop1', 'prop1: ', 2, 4, 2, 4, 10, 2, {
226
+ const content = 'example:\n sample:\n |\n| prop2: value2'; // len: 41, pos: 23
227
+ const completion = yield parseCaret(content);
228
+ (0, chai_1.expect)(completion.items.length).equal(1);
229
+ (0, chai_1.expect)(completion.items[0]).to.be.deep.equal((0, verifyError_1.createExpectedCompletion)('prop1', 'prop1: ', 2, 4, 2, 4, 10, 2, {
213
230
  documentation: '',
214
231
  }));
215
232
  }));
@@ -235,16 +252,67 @@ objB:
235
252
  },
236
253
  },
237
254
  });
238
- const content = 'examples:\n \n - sample:\n prop1: value1';
239
- const completion = yield parseSetup(content, 1, 2);
240
- chai_1.expect(completion.items.length).equal(1);
241
- chai_1.expect(completion.items[0]).to.be.deep.equal(verifyError_1.createExpectedCompletion('- (array item)', '- ', 1, 2, 1, 2, 9, 2, {
255
+ const content = 'examples:\n |\n| - sample:\n prop1: value1'; // len: 44, pos: 12
256
+ const completion = yield parseCaret(content);
257
+ (0, chai_1.expect)(completion.items.length).equal(1);
258
+ (0, chai_1.expect)(completion.items[0]).to.be.deep.equal((0, verifyError_1.createExpectedCompletion)('- (array item)', '- ', 1, 2, 1, 2, 9, 2, {
242
259
  documentation: {
243
260
  kind: 'markdown',
244
261
  value: 'Create an item of an array\n ```\n- \n```',
245
262
  },
246
263
  }));
247
264
  }));
265
+ it('Array of enum autocomplete of irregular order', () => __awaiter(void 0, void 0, void 0, function* () {
266
+ languageService.addSchema(testHelper_1.SCHEMA_ID, {
267
+ type: 'object',
268
+ properties: {
269
+ apiVersion: {
270
+ type: 'string',
271
+ },
272
+ metadata: {
273
+ type: 'object',
274
+ properties: {
275
+ name: {
276
+ type: 'string',
277
+ },
278
+ },
279
+ },
280
+ kind: {
281
+ type: 'string',
282
+ enum: ['Pod', 'PodTemplate'],
283
+ },
284
+ },
285
+ });
286
+ const content = 'kind: Po'; // len: 8
287
+ const completion = yield parseSetup(content, 1, 9);
288
+ (0, chai_1.expect)(completion.items.length).equal(2);
289
+ (0, chai_1.expect)(completion.items[0].insertText).equal('Pod');
290
+ (0, chai_1.expect)(completion.items[1].insertText).equal('PodTemplate');
291
+ }));
292
+ it('Test that properties have enum of string type with number', () => __awaiter(void 0, void 0, void 0, function* () {
293
+ languageService.addSchema(testHelper_1.SCHEMA_ID, {
294
+ type: 'object',
295
+ properties: {
296
+ version: {
297
+ type: 'array',
298
+ items: {
299
+ enum: ['12.1', 13, '13.1', '14.0', 'all', 14.4, false, null, ['test']],
300
+ type: ['string', 'integer', 'number', 'boolean', 'object', 'array'],
301
+ },
302
+ },
303
+ },
304
+ });
305
+ const content = 'version:\n - ';
306
+ const completion = yield parseSetup(content, 2, 0);
307
+ (0, chai_1.expect)(completion.items).lengthOf(9);
308
+ (0, chai_1.expect)(completion.items[0].insertText).equal('"12.1"');
309
+ (0, chai_1.expect)(completion.items[1].insertText).equal('13');
310
+ (0, chai_1.expect)(completion.items[4].insertText).equal('all');
311
+ (0, chai_1.expect)(completion.items[5].insertText).equal('14.4');
312
+ (0, chai_1.expect)(completion.items[6].insertText).equal('false');
313
+ (0, chai_1.expect)(completion.items[7].insertText).equal('null');
314
+ (0, chai_1.expect)(completion.items[8].insertText).equal('\n - ${1:test}\n');
315
+ }));
248
316
  it('Autocomplete indent on array when parent is array', () => __awaiter(void 0, void 0, void 0, function* () {
249
317
  languageService.addSchema(testHelper_1.SCHEMA_ID, {
250
318
  type: 'object',
@@ -265,10 +333,10 @@ objB:
265
333
  },
266
334
  },
267
335
  });
268
- const content = 'examples:\n - ';
336
+ const content = 'examples:\n - '; // len: 14
269
337
  const completion = yield parseSetup(content, 1, 4);
270
- chai_1.expect(completion.items.length).equal(1);
271
- chai_1.expect(completion.items[0]).to.be.deep.equal(verifyError_1.createExpectedCompletion('objectWithArray', 'objectWithArray:\n - ${1:""}', 1, 4, 1, 4, 10, 2, {
338
+ (0, chai_1.expect)(completion.items.length).equal(1);
339
+ (0, chai_1.expect)(completion.items[0]).to.be.deep.equal((0, verifyError_1.createExpectedCompletion)('objectWithArray', 'objectWithArray:\n - ${1:""}', 1, 4, 1, 4, 10, 2, {
272
340
  documentation: '',
273
341
  }));
274
342
  }));
@@ -297,10 +365,10 @@ objB:
297
365
  },
298
366
  },
299
367
  });
300
- const content = 'examples:\n - ';
368
+ const content = 'examples:\n - '; // len: 14
301
369
  const completion = yield parseSetup(content, 1, 4);
302
- chai_1.expect(completion.items.length).equal(1);
303
- chai_1.expect(completion.items[0]).to.be.deep.equal(verifyError_1.createExpectedCompletion('objectWithArray', 'objectWithArray:\n - item: $1\n item2: $2', 1, 4, 1, 4, 10, 2, {
370
+ (0, chai_1.expect)(completion.items.length).equal(1);
371
+ (0, chai_1.expect)(completion.items[0]).to.be.deep.equal((0, verifyError_1.createExpectedCompletion)('objectWithArray', 'objectWithArray:\n - item: $1\n item2: $2', 1, 4, 1, 4, 10, 2, {
304
372
  documentation: '',
305
373
  }));
306
374
  }));
@@ -330,22 +398,22 @@ objB:
330
398
  };
331
399
  it('array indent on the first item', () => __awaiter(void 0, void 0, void 0, function* () {
332
400
  languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
333
- const content = 'objectWithArray:\n - ';
401
+ const content = 'objectWithArray:\n - '; // len: 21
334
402
  const completion = yield parseSetup(content, 1, 4);
335
- chai_1.expect(completion.items.length).equal(3);
336
- chai_1.expect(completion.items[0]).to.be.deep.equal(verifyError_1.createExpectedCompletion('item', 'item: ', 1, 4, 1, 4, 10, 2, {
403
+ (0, chai_1.expect)(completion.items.length).equal(3);
404
+ (0, chai_1.expect)(completion.items[0]).to.be.deep.equal((0, verifyError_1.createExpectedCompletion)('item', 'item: ', 1, 4, 1, 4, 10, 2, {
337
405
  documentation: '',
338
406
  }));
339
- chai_1.expect(completion.items[2]).to.be.deep.equal(verifyError_1.createExpectedCompletion('item2', 'item2:\n prop1: $1\n prop2: $2', 1, 4, 1, 4, 10, 2, {
407
+ (0, chai_1.expect)(completion.items[2]).to.be.deep.equal((0, verifyError_1.createExpectedCompletion)('item2', 'item2:\n prop1: $1\n prop2: $2', 1, 4, 1, 4, 10, 2, {
340
408
  documentation: '',
341
409
  }));
342
410
  }));
343
411
  it('array indent on the second item', () => __awaiter(void 0, void 0, void 0, function* () {
344
412
  languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
345
- const content = 'objectWithArray:\n - item: first line\n ';
413
+ const content = 'objectWithArray:\n - item: first line\n '; // len: 42
346
414
  const completion = yield parseSetup(content, 2, 4);
347
- chai_1.expect(completion.items.length).equal(2);
348
- chai_1.expect(completion.items[0]).to.be.deep.equal(verifyError_1.createExpectedCompletion('item2', 'item2:\n prop1: $1\n prop2: $2', 2, 4, 2, 4, 10, 2, {
415
+ (0, chai_1.expect)(completion.items.length).equal(2);
416
+ (0, chai_1.expect)(completion.items[0]).to.be.deep.equal((0, verifyError_1.createExpectedCompletion)('item2', 'item2:\n prop1: $1\n prop2: $2', 2, 4, 2, 4, 10, 2, {
349
417
  documentation: '',
350
418
  }));
351
419
  }));
@@ -379,8 +447,8 @@ objB:
379
447
  languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
380
448
  const content = '';
381
449
  const completion = yield parseSetup(content, 0, 1);
382
- chai_1.expect(completion.items.length).equal(1);
383
- chai_1.expect(completion.items[0].insertText).to.be.equal('simplePropWithSimpleValue: ${1|const value,false,null|}');
450
+ (0, chai_1.expect)(completion.items.length).equal(1);
451
+ (0, chai_1.expect)(completion.items[0].insertText).to.be.equal('simplePropWithSimpleValue: ${1|const value,false,null|}');
384
452
  }));
385
453
  it('should autocomplete as single item with same value', () => __awaiter(void 0, void 0, void 0, function* () {
386
454
  const schema = {
@@ -402,9 +470,9 @@ objB:
402
470
  languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
403
471
  const content = '';
404
472
  const completion = yield parseSetup(content, 0, 1);
405
- chai_1.expect(completion.items.length).equal(2);
406
- chai_1.expect(completion.items[0].insertText).to.be.equal('simplePropWithSameValue: const value 1');
407
- chai_1.expect(completion.items[1].insertText).to.be.equal('obj1:\n ');
473
+ (0, chai_1.expect)(completion.items.length).equal(2);
474
+ (0, chai_1.expect)(completion.items[0].insertText).to.be.equal('simplePropWithSameValue: const value 1');
475
+ (0, chai_1.expect)(completion.items[1].insertText).to.be.equal('obj1:\n ');
408
476
  }));
409
477
  it('should not merge objects', () => __awaiter(void 0, void 0, void 0, function* () {
410
478
  const schema = {
@@ -424,13 +492,15 @@ objB:
424
492
  languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
425
493
  const content = '';
426
494
  const completion = yield parseSetup(content, 0, 1);
427
- chai_1.expect(completion.items.length).equal(2);
428
- chai_1.expect(completion.items[0].label).to.be.equal('obj1');
429
- chai_1.expect(completion.items[0].insertText).to.be.equal('obj1:\n prop1: ');
430
- chai_1.expect(completion.items[1].label).to.be.equal('obj1');
431
- chai_1.expect(completion.items[1].insertText).to.be.equal('obj1:\n prop2: ${1:value}');
495
+ (0, chai_1.expect)(completion.items.length).equal(2);
496
+ (0, chai_1.expect)(completion.items[0].label).to.be.equal('obj1');
497
+ (0, chai_1.expect)(completion.items[0].insertText).to.be.equal('obj1:\n prop1: ');
498
+ (0, chai_1.expect)(completion.items[1].label).to.be.equal('obj1');
499
+ (0, chai_1.expect)(completion.items[1].insertText).to.be.equal('obj1:\n prop2: ${1:value}');
432
500
  }));
433
- it('should suggest when cursor is not on the end of the line', () => __awaiter(void 0, void 0, void 0, function* () {
501
+ });
502
+ describe('extra space after cursor', () => {
503
+ it('simple const', () => __awaiter(void 0, void 0, void 0, function* () {
434
504
  const schema = {
435
505
  properties: {
436
506
  prop: {
@@ -439,13 +509,111 @@ objB:
439
509
  },
440
510
  };
441
511
  languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
442
- const content = 'prop: ';
443
- const completion = yield parseSetup(content, 0, 6);
444
- chai_1.expect(completion.items.length).equal(1);
445
- chai_1.expect(completion.items[0].label).to.be.equal('const');
446
- chai_1.expect(completion.items[0].textEdit).to.be.deep.equal({ newText: 'const', range: vscode_languageserver_types_1.Range.create(0, 6, 0, content.length) });
512
+ const content = 'prop: | | '; // len: 8, pos: 6
513
+ const completion = yield parseCaret(content);
514
+ (0, chai_1.expect)(completion.items.length).equal(1);
515
+ (0, chai_1.expect)(completion.items[0].label).to.be.equal('const');
516
+ (0, chai_1.expect)(completion.items[0].textEdit).to.be.deep.equal({ newText: 'const', range: vscode_languageserver_types_1.Range.create(0, 6, 0, 8) });
517
+ }));
518
+ it('partial key with trailing spaces', () => __awaiter(void 0, void 0, void 0, function* () {
519
+ const schema = {
520
+ properties: {
521
+ name: {
522
+ const: 'my name',
523
+ },
524
+ },
525
+ };
526
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
527
+ const content = 'na ';
528
+ const completion = yield parseSetup(content, 0, 2);
529
+ (0, chai_1.expect)(completion.items.length).equal(1);
530
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('name', 'name: my name', 0, 0, 0, 4, 10, 2, {
531
+ documentation: '',
532
+ }));
533
+ }));
534
+ it('partial key with trailing spaces with new line', () => __awaiter(void 0, void 0, void 0, function* () {
535
+ const schema = {
536
+ properties: {
537
+ name: {
538
+ const: 'my name',
539
+ },
540
+ },
541
+ };
542
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
543
+ const content = 'na \n';
544
+ const completion = yield parseSetup(content, 0, 2);
545
+ (0, chai_1.expect)(completion.items.length).equal(1);
546
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('name', 'name: my name', 0, 0, 0, 5, 10, 2, {
547
+ documentation: '',
548
+ }));
549
+ }));
550
+ it('partial key with leading and trailing spaces', () => __awaiter(void 0, void 0, void 0, function* () {
551
+ const schema = {
552
+ properties: {
553
+ name: {
554
+ const: 'my name',
555
+ },
556
+ },
557
+ };
558
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
559
+ const content = ' na ';
560
+ const completion = yield parseSetup(content, 0, 2);
561
+ (0, chai_1.expect)(completion.items.length).equal(1);
562
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('name', 'name: my name', 0, 2, 0, 4, 10, 2, {
563
+ documentation: '',
564
+ }));
565
+ }));
566
+ it('partial key with trailing spaces with special chars inside the array', () => __awaiter(void 0, void 0, void 0, function* () {
567
+ const schema = {
568
+ type: 'object',
569
+ properties: {
570
+ array: {
571
+ type: 'array',
572
+ items: {
573
+ type: 'object',
574
+ properties: {
575
+ 'name / 123': {
576
+ const: 'my name',
577
+ },
578
+ },
579
+ },
580
+ },
581
+ },
582
+ };
583
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
584
+ const content = 'array:\n - name / ';
585
+ const completion = yield parseSetup(content, 1, 9);
586
+ (0, chai_1.expect)(completion.items.length).equal(1);
587
+ (0, chai_1.expect)(completion.items[0]).eql((0, verifyError_1.createExpectedCompletion)('name / 123', 'name / 123: my name', 1, 3, 1, 12, 10, 2, {
588
+ documentation: '',
589
+ }));
590
+ }));
591
+ it('object - 2nd nested property', () => __awaiter(void 0, void 0, void 0, function* () {
592
+ const schema = {
593
+ properties: {
594
+ parent: {
595
+ properties: {
596
+ prop1: {
597
+ const: 'const1',
598
+ },
599
+ prop2: {
600
+ const: 'const2',
601
+ },
602
+ },
603
+ },
604
+ },
605
+ };
606
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
607
+ const content = 'parent:\n prop1: const1\n prop2: ';
608
+ const completion = yield parseSetup(content, 2, 9);
609
+ (0, chai_1.expect)(completion.items.length).equal(1);
610
+ (0, chai_1.expect)(completion.items[0].label).to.be.equal('const2');
611
+ (0, chai_1.expect)(completion.items[0].textEdit).to.be.deep.equal({
612
+ newText: 'const2',
613
+ range: vscode_languageserver_types_1.Range.create(2, 9, 2, 11),
614
+ });
447
615
  }));
448
- it('should suggest object array when extra space is after cursor', () => __awaiter(void 0, void 0, void 0, function* () {
616
+ it('array - 2nd nested property', () => __awaiter(void 0, void 0, void 0, function* () {
449
617
  const schema = {
450
618
  properties: {
451
619
  arrayObj: {
@@ -457,7 +625,7 @@ objB:
457
625
  type: 'string',
458
626
  },
459
627
  item2: {
460
- type: 'string',
628
+ const: 'const2',
461
629
  },
462
630
  },
463
631
  required: ['item1', 'item2'],
@@ -466,14 +634,183 @@ objB:
466
634
  },
467
635
  };
468
636
  languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
469
- const content = 'arrayObj:\n - ';
470
- const completion = yield parseSetup(content, 1, 4);
471
- chai_1.expect(completion.items.length).equal(3);
472
- chai_1.expect(completion.items[1].textEdit).to.be.deep.equal({
473
- newText: 'item1: $1\n item2: $2',
474
- range: vscode_languageserver_types_1.Range.create(1, 4, 1, 6),
637
+ const content = 'arrayObj:\n - item1: test\n - item2: ';
638
+ const completion = yield parseSetup(content, 2, 11);
639
+ (0, chai_1.expect)(completion.items.length).equal(1);
640
+ (0, chai_1.expect)(completion.items[0].label).to.be.equal('const2');
641
+ (0, chai_1.expect)(completion.items[0].textEdit).to.be.deep.equal({
642
+ newText: 'const2',
643
+ range: vscode_languageserver_types_1.Range.create(2, 11, 2, 13),
475
644
  });
476
645
  }));
646
+ describe('array object item', () => {
647
+ const schema = {
648
+ properties: {
649
+ arrayObj: {
650
+ type: 'array',
651
+ items: {
652
+ type: 'object',
653
+ properties: {
654
+ item1: {
655
+ type: 'string',
656
+ },
657
+ item2: {
658
+ type: 'string',
659
+ },
660
+ },
661
+ required: ['item1', 'item2'],
662
+ },
663
+ },
664
+ },
665
+ };
666
+ it('1st item', () => __awaiter(void 0, void 0, void 0, function* () {
667
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
668
+ const content = 'arrayObj:\n - ';
669
+ const completion = yield parseSetup(content, 1, 4);
670
+ (0, chai_1.expect)(completion.items.length).equal(3);
671
+ (0, chai_1.expect)(completion.items[1].textEdit).to.be.deep.equal({
672
+ newText: 'item1: $1\n item2: $2',
673
+ range: vscode_languageserver_types_1.Range.create(1, 4, 1, 6), // removes extra spaces after cursor
674
+ });
675
+ }));
676
+ it('next item', () => __awaiter(void 0, void 0, void 0, function* () {
677
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
678
+ const content = 'arrayObj:\n - item1: a\n - item2: b\n - ';
679
+ const completion = yield parseSetup(content, 3, 4);
680
+ (0, chai_1.expect)(completion.items.length).equal(3);
681
+ (0, chai_1.expect)(completion.items[1].textEdit).to.be.deep.equal({
682
+ newText: 'item1: $1\n item2: $2',
683
+ range: vscode_languageserver_types_1.Range.create(3, 4, 3, 6), // removes extra spaces after cursor
684
+ });
685
+ }));
686
+ });
687
+ }); //'extra space after cursor'
688
+ it('should suggest from additionalProperties', () => __awaiter(void 0, void 0, void 0, function* () {
689
+ const schema = {
690
+ type: 'object',
691
+ additionalProperties: {
692
+ anyOf: [
693
+ {
694
+ type: 'string',
695
+ const: 'test1',
696
+ },
697
+ ],
698
+ },
699
+ };
700
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
701
+ const content = 'value: ';
702
+ const completion = yield parseSetup(content, 0, content.length);
703
+ (0, chai_1.expect)(completion.items.length).equal(1);
704
+ (0, chai_1.expect)(completion.items[0].insertText).to.be.equal('test1');
705
+ }));
706
+ describe('should suggest prop of the object (based on not completed prop name)', () => {
707
+ const schema = {
708
+ definitions: {
709
+ Obj: {
710
+ anyOf: [
711
+ { type: 'string' },
712
+ {
713
+ type: 'object',
714
+ properties: {
715
+ prop1: { type: 'string' },
716
+ },
717
+ required: ['prop1'],
718
+ },
719
+ ],
720
+ },
721
+ },
722
+ properties: {
723
+ test1: {
724
+ properties: {
725
+ nested: { $ref: '#/definitions/Obj' },
726
+ },
727
+ },
728
+ test2: { $ref: '#/definitions/Obj' },
729
+ },
730
+ };
731
+ const content = `
732
+ test2:
733
+ pr
734
+ test1:
735
+ nested:
736
+ pr
737
+ `;
738
+ it('nested object', () => __awaiter(void 0, void 0, void 0, function* () {
739
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
740
+ const completion = yield parseSetup(content, 5, 6);
741
+ (0, chai_1.expect)(completion.items.length).equal(2);
742
+ (0, chai_1.expect)(completion.items[0].label).to.be.equal('prop1');
743
+ }));
744
+ it('root object', () => __awaiter(void 0, void 0, void 0, function* () {
745
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
746
+ const completion = yield parseSetup(content, 2, 4);
747
+ (0, chai_1.expect)(completion.items.length).equal(2);
748
+ (0, chai_1.expect)(completion.items[0].label).to.be.equal('prop1');
749
+ }));
750
+ });
751
+ describe('should suggest property before indented comment', () => {
752
+ const schema = {
753
+ type: 'object',
754
+ properties: {
755
+ example: {
756
+ type: 'object',
757
+ properties: {
758
+ prop1: {
759
+ type: 'string',
760
+ },
761
+ prop2: {
762
+ type: 'string',
763
+ },
764
+ prop3: {
765
+ type: 'string',
766
+ },
767
+ },
768
+ },
769
+ },
770
+ };
771
+ it('completion should handle indented comment on new line', () => __awaiter(void 0, void 0, void 0, function* () {
772
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
773
+ const content = 'example:\n prop1: "test"\n \n #comment';
774
+ const completion = yield parseSetup(content, 2, 2);
775
+ (0, chai_1.expect)(completion.items.length).equal(2);
776
+ (0, chai_1.expect)(completion.items[0]).to.be.deep.equal((0, verifyError_1.createExpectedCompletion)('prop2', 'prop2: ', 2, 2, 2, 2, vscode_languageserver_types_1.CompletionItemKind.Property, vscode_languageserver_types_1.InsertTextFormat.Snippet, {
777
+ documentation: '',
778
+ }));
779
+ }));
780
+ it('completion should handle comment at same indent level on new line', () => __awaiter(void 0, void 0, void 0, function* () {
781
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
782
+ const content = 'example:\n prop1: "test"\n \n #comment';
783
+ const completion = yield parseSetup(content, 2, 2);
784
+ (0, chai_1.expect)(completion.items.length).equal(2);
785
+ (0, chai_1.expect)(completion.items[0]).to.be.deep.equal((0, verifyError_1.createExpectedCompletion)('prop2', 'prop2: ', 2, 2, 2, 2, vscode_languageserver_types_1.CompletionItemKind.Property, vscode_languageserver_types_1.InsertTextFormat.Snippet, {
786
+ documentation: '',
787
+ }));
788
+ }));
789
+ it('completion should handle suggestion without comment on next line', () => __awaiter(void 0, void 0, void 0, function* () {
790
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
791
+ const content = 'example:\n prop1: "test"\n \n prop3: "test"';
792
+ const completion = yield parseSetup(content, 2, 2);
793
+ (0, chai_1.expect)(completion.items.length).equal(1);
794
+ (0, chai_1.expect)(completion.items[0]).to.be.deep.equal((0, verifyError_1.createExpectedCompletion)('prop2', 'prop2: ', 2, 2, 2, 2, vscode_languageserver_types_1.CompletionItemKind.Property, vscode_languageserver_types_1.InsertTextFormat.Snippet, {
795
+ documentation: '',
796
+ }));
797
+ }));
477
798
  });
799
+ it('should suggest property of unknown object', () => __awaiter(void 0, void 0, void 0, function* () {
800
+ const schema = {
801
+ type: 'object',
802
+ additionalProperties: true,
803
+ propertyNames: {
804
+ title: 'property',
805
+ description: 'Property Description',
806
+ },
807
+ };
808
+ languageService.addSchema(testHelper_1.SCHEMA_ID, schema);
809
+ const content = '';
810
+ const completion = yield parseSetup(content, 0, content.length);
811
+ (0, chai_1.expect)(completion.items.length).equal(1);
812
+ (0, chai_1.expect)(completion.items[0].insertText).to.be.equal('${1:property}: ');
813
+ (0, chai_1.expect)(completion.items[0].documentation).to.be.equal('Property Description');
814
+ }));
478
815
  });
479
816
  //# sourceMappingURL=autoCompletionFix.test.js.map