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.
- package/CHANGELOG.md +24 -0
- package/CONTRIBUTING.md +8 -0
- package/DCO +37 -0
- package/README.md +1 -0
- package/lib/esm/languageserver/handlers/settingsHandlers.js.map +1 -1
- package/lib/esm/languageservice/jsonASTTypes.js +1 -0
- package/lib/esm/languageservice/jsonSchema.js +1 -0
- package/lib/esm/languageservice/parser/jsonParser07.js +3 -3
- package/lib/esm/languageservice/parser/jsonParser07.js.map +1 -1
- package/lib/esm/languageservice/parser/yaml-documents.js +10 -2
- package/lib/esm/languageservice/parser/yaml-documents.js.map +1 -1
- package/lib/esm/languageservice/parser/yamlParser07.js.map +1 -1
- package/lib/esm/languageservice/services/validation/types.js +1 -0
- package/lib/esm/languageservice/services/yamlCodeActions.js.map +1 -1
- package/lib/esm/languageservice/services/yamlCodeLens.js +2 -17
- package/lib/esm/languageservice/services/yamlCodeLens.js.map +1 -1
- package/lib/esm/languageservice/services/yamlCompletion.js +51 -36
- package/lib/esm/languageservice/services/yamlCompletion.js.map +1 -1
- package/lib/esm/languageservice/services/yamlFolding.js.map +1 -1
- package/lib/esm/languageservice/services/yamlHover.js +1 -1
- package/lib/esm/languageservice/services/yamlHover.js.map +1 -1
- package/lib/esm/languageservice/services/yamlSchemaService.js +14 -0
- package/lib/esm/languageservice/services/yamlSchemaService.js.map +1 -1
- package/lib/esm/languageservice/utils/astUtils.js.map +1 -1
- package/lib/esm/languageservice/utils/charCode.js +1 -0
- package/lib/esm/languageservice/utils/indentationGuesser.js +6 -6
- package/lib/esm/languageservice/utils/indentationGuesser.js.map +1 -1
- package/lib/esm/languageservice/utils/objects.js.map +1 -1
- package/lib/esm/languageservice/utils/schemaUtils.d.ts +1 -0
- package/lib/esm/languageservice/utils/schemaUtils.js +16 -0
- package/lib/esm/languageservice/utils/schemaUtils.js.map +1 -1
- package/lib/esm/languageservice/utils/strings.js +1 -1
- package/lib/esm/languageservice/utils/strings.js.map +1 -1
- package/lib/esm/languageservice/utils/textBuffer.js +1 -1
- package/lib/esm/languageservice/utils/textBuffer.js.map +1 -1
- package/lib/esm/languageservice/yamlTypes.js +1 -0
- package/lib/umd/index.js +7 -2
- package/lib/umd/index.js.map +1 -1
- package/lib/umd/languageserver/handlers/languageHandlers.js +1 -1
- package/lib/umd/languageserver/handlers/languageHandlers.js.map +1 -1
- package/lib/umd/languageserver/handlers/schemaSelectionHandlers.js +1 -1
- package/lib/umd/languageserver/handlers/schemaSelectionHandlers.js.map +1 -1
- package/lib/umd/languageserver/handlers/settingsHandlers.js +7 -7
- package/lib/umd/languageserver/handlers/settingsHandlers.js.map +1 -1
- package/lib/umd/languageserver/handlers/validationHandlers.js +2 -2
- package/lib/umd/languageserver/handlers/validationHandlers.js.map +1 -1
- package/lib/umd/languageservice/parser/ast-converter.js +11 -11
- package/lib/umd/languageservice/parser/ast-converter.js.map +1 -1
- package/lib/umd/languageservice/parser/custom-tag-provider.js +3 -3
- package/lib/umd/languageservice/parser/custom-tag-provider.js.map +1 -1
- package/lib/umd/languageservice/parser/jsonParser07.js +28 -28
- package/lib/umd/languageservice/parser/jsonParser07.js.map +1 -1
- package/lib/umd/languageservice/parser/yaml-documents.js +23 -15
- package/lib/umd/languageservice/parser/yaml-documents.js.map +1 -1
- package/lib/umd/languageservice/parser/yamlParser07.js +1 -1
- package/lib/umd/languageservice/parser/yamlParser07.js.map +1 -1
- package/lib/umd/languageservice/services/documentSymbols.js +4 -4
- package/lib/umd/languageservice/services/documentSymbols.js.map +1 -1
- package/lib/umd/languageservice/services/schemaRequestHandler.js +6 -5
- package/lib/umd/languageservice/services/schemaRequestHandler.js.map +1 -1
- package/lib/umd/languageservice/services/validation/unused-anchors.js +5 -5
- package/lib/umd/languageservice/services/validation/unused-anchors.js.map +1 -1
- package/lib/umd/languageservice/services/yamlCodeActions.js +1 -1
- package/lib/umd/languageservice/services/yamlCodeActions.js.map +1 -1
- package/lib/umd/languageservice/services/yamlCodeLens.js +5 -20
- package/lib/umd/languageservice/services/yamlCodeLens.js.map +1 -1
- package/lib/umd/languageservice/services/yamlCompletion.js +101 -86
- package/lib/umd/languageservice/services/yamlCompletion.js.map +1 -1
- package/lib/umd/languageservice/services/yamlDefinition.js +3 -3
- package/lib/umd/languageservice/services/yamlDefinition.js.map +1 -1
- package/lib/umd/languageservice/services/yamlFolding.js.map +1 -1
- package/lib/umd/languageservice/services/yamlHover.js +5 -5
- package/lib/umd/languageservice/services/yamlHover.js.map +1 -1
- package/lib/umd/languageservice/services/yamlLinks.js +2 -2
- package/lib/umd/languageservice/services/yamlLinks.js.map +1 -1
- package/lib/umd/languageservice/services/yamlSchemaService.js +18 -4
- package/lib/umd/languageservice/services/yamlSchemaService.js.map +1 -1
- package/lib/umd/languageservice/services/yamlValidation.js +4 -3
- package/lib/umd/languageservice/services/yamlValidation.js.map +1 -1
- package/lib/umd/languageservice/utils/astUtils.js +3 -3
- package/lib/umd/languageservice/utils/astUtils.js.map +1 -1
- package/lib/umd/languageservice/utils/indentationGuesser.js +6 -6
- package/lib/umd/languageservice/utils/indentationGuesser.js.map +1 -1
- package/lib/umd/languageservice/utils/objects.js.map +1 -1
- package/lib/umd/languageservice/utils/paths.js +9 -6
- package/lib/umd/languageservice/utils/paths.js.map +1 -1
- package/lib/umd/languageservice/utils/schemaUrls.js +3 -3
- package/lib/umd/languageservice/utils/schemaUrls.js.map +1 -1
- package/lib/umd/languageservice/utils/schemaUtils.d.ts +1 -0
- package/lib/umd/languageservice/utils/schemaUtils.js +19 -2
- package/lib/umd/languageservice/utils/schemaUtils.js.map +1 -1
- package/lib/umd/languageservice/utils/strings.js +1 -1
- package/lib/umd/languageservice/utils/strings.js.map +1 -1
- package/lib/umd/languageservice/utils/textBuffer.js +1 -1
- package/lib/umd/languageservice/utils/textBuffer.js.map +1 -1
- package/lib/umd/languageservice/yamlLanguageService.js +1 -1
- package/lib/umd/languageservice/yamlLanguageService.js.map +1 -1
- package/lib/umd/server.js +4 -4
- package/lib/umd/server.js.map +1 -1
- package/lib/umd/webworker/yamlServerMain.js +2 -2
- package/lib/umd/webworker/yamlServerMain.js.map +1 -1
- package/lib/umd/yamlServerInit.js +2 -2
- package/lib/umd/yamlServerInit.js.map +1 -1
- package/out/server/src/index.js +7 -2
- package/out/server/src/index.js.map +1 -1
- package/out/server/src/languageserver/handlers/languageHandlers.js +1 -1
- package/out/server/src/languageserver/handlers/languageHandlers.js.map +1 -1
- package/out/server/src/languageserver/handlers/schemaSelectionHandlers.js +1 -1
- package/out/server/src/languageserver/handlers/schemaSelectionHandlers.js.map +1 -1
- package/out/server/src/languageserver/handlers/settingsHandlers.js +7 -7
- package/out/server/src/languageserver/handlers/settingsHandlers.js.map +1 -1
- package/out/server/src/languageserver/handlers/validationHandlers.js +2 -2
- package/out/server/src/languageserver/handlers/validationHandlers.js.map +1 -1
- package/out/server/src/languageservice/parser/ast-converter.js +11 -11
- package/out/server/src/languageservice/parser/ast-converter.js.map +1 -1
- package/out/server/src/languageservice/parser/custom-tag-provider.js +3 -3
- package/out/server/src/languageservice/parser/custom-tag-provider.js.map +1 -1
- package/out/server/src/languageservice/parser/jsonParser07.js +28 -28
- package/out/server/src/languageservice/parser/jsonParser07.js.map +1 -1
- package/out/server/src/languageservice/parser/yaml-documents.js +23 -15
- package/out/server/src/languageservice/parser/yaml-documents.js.map +1 -1
- package/out/server/src/languageservice/parser/yamlParser07.js +1 -1
- package/out/server/src/languageservice/parser/yamlParser07.js.map +1 -1
- package/out/server/src/languageservice/services/documentSymbols.js +4 -4
- package/out/server/src/languageservice/services/documentSymbols.js.map +1 -1
- package/out/server/src/languageservice/services/schemaRequestHandler.js +6 -5
- package/out/server/src/languageservice/services/schemaRequestHandler.js.map +1 -1
- package/out/server/src/languageservice/services/validation/unused-anchors.js +5 -5
- package/out/server/src/languageservice/services/validation/unused-anchors.js.map +1 -1
- package/out/server/src/languageservice/services/yamlCodeActions.js +1 -1
- package/out/server/src/languageservice/services/yamlCodeActions.js.map +1 -1
- package/out/server/src/languageservice/services/yamlCodeLens.js +4 -19
- package/out/server/src/languageservice/services/yamlCodeLens.js.map +1 -1
- package/out/server/src/languageservice/services/yamlCompletion.js +100 -85
- package/out/server/src/languageservice/services/yamlCompletion.js.map +1 -1
- package/out/server/src/languageservice/services/yamlDefinition.js +3 -3
- package/out/server/src/languageservice/services/yamlDefinition.js.map +1 -1
- package/out/server/src/languageservice/services/yamlFolding.js.map +1 -1
- package/out/server/src/languageservice/services/yamlHover.js +5 -5
- package/out/server/src/languageservice/services/yamlHover.js.map +1 -1
- package/out/server/src/languageservice/services/yamlLinks.js +2 -2
- package/out/server/src/languageservice/services/yamlLinks.js.map +1 -1
- package/out/server/src/languageservice/services/yamlSchemaService.js +17 -3
- package/out/server/src/languageservice/services/yamlSchemaService.js.map +1 -1
- package/out/server/src/languageservice/services/yamlValidation.js +4 -3
- package/out/server/src/languageservice/services/yamlValidation.js.map +1 -1
- package/out/server/src/languageservice/utils/astUtils.js +3 -3
- package/out/server/src/languageservice/utils/astUtils.js.map +1 -1
- package/out/server/src/languageservice/utils/indentationGuesser.js +6 -6
- package/out/server/src/languageservice/utils/indentationGuesser.js.map +1 -1
- package/out/server/src/languageservice/utils/objects.js.map +1 -1
- package/out/server/src/languageservice/utils/paths.js +9 -6
- package/out/server/src/languageservice/utils/paths.js.map +1 -1
- package/out/server/src/languageservice/utils/schemaUrls.js +3 -3
- package/out/server/src/languageservice/utils/schemaUrls.js.map +1 -1
- package/out/server/src/languageservice/utils/schemaUtils.d.ts +1 -0
- package/out/server/src/languageservice/utils/schemaUtils.js +18 -1
- package/out/server/src/languageservice/utils/schemaUtils.js.map +1 -1
- package/out/server/src/languageservice/utils/strings.js +1 -1
- package/out/server/src/languageservice/utils/strings.js.map +1 -1
- package/out/server/src/languageservice/utils/textBuffer.js +1 -1
- package/out/server/src/languageservice/utils/textBuffer.js.map +1 -1
- package/out/server/src/languageservice/yamlLanguageService.js +1 -1
- package/out/server/src/languageservice/yamlLanguageService.js.map +1 -1
- package/out/server/src/server.js +4 -4
- package/out/server/src/server.js.map +1 -1
- package/out/server/src/webworker/yamlServerMain.js +2 -2
- package/out/server/src/webworker/yamlServerMain.js.map +1 -1
- package/out/server/src/yamlServerInit.js +2 -2
- package/out/server/src/yamlServerInit.js.map +1 -1
- package/out/server/test/arrUtils.test.js +6 -6
- package/out/server/test/arrUtils.test.js.map +1 -1
- package/out/server/test/astUtils.test.js +18 -18
- package/out/server/test/astUtils.test.js.map +1 -1
- package/out/server/test/autoCompletion.test.js +267 -256
- package/out/server/test/autoCompletion.test.js.map +1 -1
- package/out/server/test/autoCompletionFix.test.js +408 -71
- package/out/server/test/autoCompletionFix.test.js.map +1 -1
- package/out/server/test/code-action-schema.test.js +12 -12
- package/out/server/test/code-action-schema.test.js.map +1 -1
- package/out/server/test/customTags.test.js +3 -3
- package/out/server/test/customTags.test.js.map +1 -1
- package/out/server/test/defaultSnippets.test.js +53 -32
- package/out/server/test/defaultSnippets.test.js.map +1 -1
- package/out/server/test/documentPositionCalculator.test.js +10 -10
- package/out/server/test/documentPositionCalculator.test.js.map +1 -1
- package/out/server/test/documentSymbols.test.js +62 -62
- package/out/server/test/documentSymbols.test.js.map +1 -1
- package/out/server/test/findLinks.test.js +2 -2
- package/out/server/test/findLinks.test.js.map +1 -1
- package/out/server/test/formatter.test.js +2 -2
- package/out/server/test/formatter.test.js.map +1 -1
- package/out/server/test/hover.test.js +107 -42
- package/out/server/test/hover.test.js.map +1 -1
- package/out/server/test/integration.test.js +4 -4
- package/out/server/test/integration.test.js.map +1 -1
- package/out/server/test/jsonParser.test.js +6 -6
- package/out/server/test/jsonParser.test.js.map +1 -1
- package/out/server/test/multipleDocuments.test.js +4 -4
- package/out/server/test/multipleDocuments.test.js.map +1 -1
- package/out/server/test/objects.test.js +14 -14
- package/out/server/test/objects.test.js.map +1 -1
- package/out/server/test/paths.test.js +26 -26
- package/out/server/test/paths.test.js.map +1 -1
- package/out/server/test/schema.test.js +9 -9
- package/out/server/test/schema.test.js.map +1 -1
- package/out/server/test/schemaRequestHandler.test.js +3 -3
- package/out/server/test/schemaRequestHandler.test.js.map +1 -1
- package/out/server/test/schemaSelectionHandlers.test.js +4 -4
- package/out/server/test/schemaSelectionHandlers.test.js.map +1 -1
- package/out/server/test/schemaValidation.test.js +69 -47
- package/out/server/test/schemaValidation.test.js.map +1 -1
- package/out/server/test/settingsHandlers.test.js +5 -5
- package/out/server/test/settingsHandlers.test.js.map +1 -1
- package/out/server/test/strings.test.js +19 -19
- package/out/server/test/strings.test.js.map +1 -1
- package/out/server/test/telemetry.test.js +2 -2
- package/out/server/test/telemetry.test.js.map +1 -1
- package/out/server/test/textBuffer.test.js +1 -1
- package/out/server/test/utils/testHelper.d.ts +11 -0
- package/out/server/test/utils/testHelper.js +22 -3
- package/out/server/test/utils/testHelper.js.map +1 -1
- package/out/server/test/yaml-documents.test.js +29 -29
- package/out/server/test/yaml-documents.test.js.map +1 -1
- package/out/server/test/yamlCodeActions.test.js +15 -15
- package/out/server/test/yamlCodeActions.test.js.map +1 -1
- package/out/server/test/yamlCodeLens.test.js +7 -7
- package/out/server/test/yamlCodeLens.test.js.map +1 -1
- package/out/server/test/yamlCommands.test.js +3 -3
- package/out/server/test/yamlCommands.test.js.map +1 -1
- package/out/server/test/yamlDefinition.test.js +5 -5
- package/out/server/test/yamlDefinition.test.js.map +1 -1
- package/out/server/test/yamlFolding.test.js +44 -44
- package/out/server/test/yamlFolding.test.js.map +1 -1
- package/out/server/test/yamlOnTypeFormatting.test.js +22 -22
- package/out/server/test/yamlOnTypeFormatting.test.js.map +1 -1
- package/out/server/test/yamlParser.test.js +24 -24
- package/out/server/test/yamlParser.test.js.map +1 -1
- package/out/server/test/yamlSchemaService.test.js +7 -7
- package/out/server/test/yamlSchemaService.test.js.map +1 -1
- package/out/server/test/yamlValidation.test.js +22 -22
- package/out/server/test/yamlValidation.test.js.map +1 -1
- 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
|
|
77
|
-
chai_1.expect(completion.items).lengthOf(1);
|
|
78
|
-
chai_1.expect(completion.items[0]).eql(verifyError_1.createExpectedCompletion('foo', 'foo: ', 1, 3, 1,
|
|
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
|
|
210
|
-
const completion = yield
|
|
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
|
|
239
|
-
const completion = yield
|
|
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
|
-
|
|
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
|
|
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,
|
|
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('
|
|
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
|
-
|
|
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,
|
|
471
|
-
chai_1.expect(completion.items.length).equal(
|
|
472
|
-
chai_1.expect(completion.items[
|
|
473
|
-
|
|
474
|
-
|
|
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
|