monaco-yql-languages 2.1.0 → 2.2.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/build/yql/autocomplete/__tests__/generateSuggestions.test.js +31 -1
- package/build/yql/autocomplete/generateSuggestions.d.ts +2 -0
- package/build/yql/autocomplete/generateSuggestions.js +11 -2
- package/build/yql/autocomplete/utils.js +9 -7
- package/build/yql/autocomplete/yqlAutocomplete.d.ts +13 -1
- package/build/yql/autocomplete/yqlAutocomplete.js +34 -2
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { generateColumnsSuggestion, generateEntitiesSuggestion } from '../generateSuggestions';
|
|
1
|
+
import { generateColumnsSuggestion, generateCompressionSettingsSuggestion, generateEncodingSettingsSuggestion, generateEntitiesSuggestion, } from '../generateSuggestions';
|
|
2
2
|
jest.mock('../../../fillers/monaco-editor-core', () => ({
|
|
3
3
|
languages: {
|
|
4
4
|
CompletionItemKind: {
|
|
@@ -305,3 +305,33 @@ describe('generateEntitiesSuggestion', () => {
|
|
|
305
305
|
]);
|
|
306
306
|
});
|
|
307
307
|
});
|
|
308
|
+
describe('generateCompressionSettingsSuggestion', () => {
|
|
309
|
+
it('should generate compression settings suggestions', async () => {
|
|
310
|
+
const suggestions = await generateCompressionSettingsSuggestion(mockRange, ['gzip']);
|
|
311
|
+
expect(suggestions).toEqual([
|
|
312
|
+
{
|
|
313
|
+
label: 'gzip',
|
|
314
|
+
insertText: 'gzip',
|
|
315
|
+
kind: undefined,
|
|
316
|
+
detail: 'Setting',
|
|
317
|
+
range: mockRange,
|
|
318
|
+
sortText: 'a',
|
|
319
|
+
},
|
|
320
|
+
]);
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
describe('generateEncodingSettingsSuggestion', () => {
|
|
324
|
+
it('should generate encoding settings suggestions', async () => {
|
|
325
|
+
const suggestions = await generateEncodingSettingsSuggestion(mockRange, ['utf-8']);
|
|
326
|
+
expect(suggestions).toEqual([
|
|
327
|
+
{
|
|
328
|
+
label: 'utf-8',
|
|
329
|
+
insertText: 'utf-8',
|
|
330
|
+
kind: undefined,
|
|
331
|
+
detail: 'Setting',
|
|
332
|
+
range: mockRange,
|
|
333
|
+
sortText: 'a',
|
|
334
|
+
},
|
|
335
|
+
]);
|
|
336
|
+
});
|
|
337
|
+
});
|
|
@@ -27,6 +27,8 @@ export declare function generateTableFunctionsSuggestion(rangeToInsertSuggestion
|
|
|
27
27
|
export declare function generateUdfSuggestion(rangeToInsertSuggestion: monaco.IRange, udfs?: string[]): Promise<monaco.languages.CompletionItem[]>;
|
|
28
28
|
export declare function generatePragmasSuggestion(rangeToInsertSuggestion: monaco.IRange, pragmas?: string[]): Promise<monaco.languages.CompletionItem[]>;
|
|
29
29
|
export declare function generateEntitySettingsSuggestion(rangeToInsertSuggestion: monaco.IRange, entitySettings?: string[]): Promise<monaco.languages.CompletionItem[]>;
|
|
30
|
+
export declare function generateCompressionSettingsSuggestion(rangeToInsertSuggestion: monaco.IRange, compressionSettings?: string[]): Promise<monaco.languages.CompletionItem[]>;
|
|
31
|
+
export declare function generateEncodingSettingsSuggestion(rangeToInsertSuggestion: monaco.IRange, encodingSettings?: string[]): Promise<monaco.languages.CompletionItem[]>;
|
|
30
32
|
export declare function generateColumnAliasesSuggestion(rangeToInsertSuggestion: monaco.IRange, suggestColumnAliases?: ColumnAliasSuggestion[]): {
|
|
31
33
|
label: string;
|
|
32
34
|
insertText: string;
|
|
@@ -125,13 +125,22 @@ export async function generatePragmasSuggestion(rangeToInsertSuggestion, pragmas
|
|
|
125
125
|
}));
|
|
126
126
|
}
|
|
127
127
|
export async function generateEntitySettingsSuggestion(rangeToInsertSuggestion, entitySettings = []) {
|
|
128
|
-
return
|
|
128
|
+
return generateSettingsSuggestion(rangeToInsertSuggestion, entitySettings, 'suggestEntitySettings');
|
|
129
|
+
}
|
|
130
|
+
export async function generateCompressionSettingsSuggestion(rangeToInsertSuggestion, compressionSettings = []) {
|
|
131
|
+
return generateSettingsSuggestion(rangeToInsertSuggestion, compressionSettings, 'suggestCompressionSettings');
|
|
132
|
+
}
|
|
133
|
+
export async function generateEncodingSettingsSuggestion(rangeToInsertSuggestion, encodingSettings = []) {
|
|
134
|
+
return generateSettingsSuggestion(rangeToInsertSuggestion, encodingSettings, 'suggestEncodingSettings');
|
|
135
|
+
}
|
|
136
|
+
function generateSettingsSuggestion(rangeToInsertSuggestion, settings = [], suggestionType) {
|
|
137
|
+
return settings.map((el) => ({
|
|
129
138
|
label: el,
|
|
130
139
|
insertText: el,
|
|
131
140
|
kind: monaco.languages.CompletionItemKind.Property,
|
|
132
141
|
detail: 'Setting',
|
|
133
142
|
range: rangeToInsertSuggestion,
|
|
134
|
-
sortText: suggestionIndexToWeight(getSuggestionIndex(
|
|
143
|
+
sortText: suggestionIndexToWeight(getSuggestionIndex(suggestionType)),
|
|
135
144
|
}));
|
|
136
145
|
}
|
|
137
146
|
export function generateColumnAliasesSuggestion(rangeToInsertSuggestion, suggestColumnAliases = []) {
|
|
@@ -9,13 +9,15 @@ const SuggestionsWeight = {
|
|
|
9
9
|
suggestTableIndexes: 7,
|
|
10
10
|
suggestTableHints: 8,
|
|
11
11
|
suggestEntitySettings: 9,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
suggestCompressionSettings: 10,
|
|
13
|
+
suggestEncodingSettings: 11,
|
|
14
|
+
suggestKeywords: 12,
|
|
15
|
+
suggestAggregateFunctions: 13,
|
|
16
|
+
suggestTableFunctions: 14,
|
|
17
|
+
suggestWindowFunctions: 15,
|
|
18
|
+
suggestFunctions: 16,
|
|
19
|
+
suggestSimpleTypes: 17,
|
|
20
|
+
suggestUdfs: 18,
|
|
19
21
|
};
|
|
20
22
|
export function getSuggestionIndex(suggestionType) {
|
|
21
23
|
return SuggestionsWeight[suggestionType];
|
|
@@ -11,11 +11,13 @@ export type YQLAutocompleteConfig = {
|
|
|
11
11
|
getAggregateFunctions?: YQLAutocomplete['getAggregateFunctions'];
|
|
12
12
|
getSimpleFunctions?: YQLAutocomplete['getSimpleFunctions'];
|
|
13
13
|
getEntitySettings?: YQLAutocomplete['getEntitySettings'];
|
|
14
|
+
getCompressionSettings?: YQLAutocomplete['getCompressionSettings'];
|
|
15
|
+
getEncodingSettings?: YQLAutocomplete['getEncodingSettings'];
|
|
14
16
|
fetchEntities?: YQLAutocomplete['fetchEntities'];
|
|
15
17
|
fetchEntityColumns?: YQLAutocomplete['fetchEntityColumns'];
|
|
16
18
|
};
|
|
17
19
|
export declare class YQLAutocomplete {
|
|
18
|
-
constructor({ getQueryParser, getUdfs, getSimpleTypes, getPragmas, getWindowFunctions, getTableFunctions, getAggregateFunctions, getSimpleFunctions, getEntitySettings, fetchEntities, fetchEntityColumns, }: YQLAutocompleteConfig);
|
|
20
|
+
constructor({ getQueryParser, getUdfs, getSimpleTypes, getPragmas, getWindowFunctions, getTableFunctions, getAggregateFunctions, getSimpleFunctions, getEntitySettings, getCompressionSettings, getEncodingSettings, fetchEntities, fetchEntityColumns, }: YQLAutocompleteConfig);
|
|
19
21
|
getSuggestions(input: string, offset: number): Promise<Monaco.languages.CompletionItem[]>;
|
|
20
22
|
parseInput(input: string, offset: number): Promise<import("@gravity-ui/websql-autocomplete/yql").YqlAutocompleteResult>;
|
|
21
23
|
getQueryParser(): Promise<typeof import("@gravity-ui/websql-autocomplete/yql").parseYqlQuery>;
|
|
@@ -32,6 +34,16 @@ export declare class YQLAutocomplete {
|
|
|
32
34
|
* @returns A promise that resolves to an array of entity settings.
|
|
33
35
|
*/
|
|
34
36
|
getEntitySettings(_entityType: YQLEntity): Promise<string[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Fetches compression settings.
|
|
39
|
+
* @returns A promise that resolves to an array of compression settings.
|
|
40
|
+
*/
|
|
41
|
+
getCompressionSettings(_prefix?: string): Promise<string[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Fetches encoding settings.
|
|
44
|
+
* @returns A promise that resolves to an array of encoding settings.
|
|
45
|
+
*/
|
|
46
|
+
getEncodingSettings(_prefix?: string): Promise<string[]>;
|
|
35
47
|
/**
|
|
36
48
|
* Fetches entities based on the provided prefix and needed entity types.
|
|
37
49
|
* @param prefix - The prefix to filter entities.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { generateAggregateFunctionsSuggestion, generateColumnAliasesSuggestion, generateColumnsSuggestion, generateEntitiesSuggestion, generateEntitySettingsSuggestion, generateKeywordsSuggestion, generatePragmasSuggestion, generateSimpleFunctionsSuggestion, generateSimpleTypesSuggestion, generateTableFunctionsSuggestion, generateUdfSuggestion, generateVariableSuggestion, generateWindowFunctionsSuggestion, } from './generateSuggestions';
|
|
1
|
+
import { generateAggregateFunctionsSuggestion, generateColumnAliasesSuggestion, generateColumnsSuggestion, generateCompressionSettingsSuggestion, generateEncodingSettingsSuggestion, generateEntitiesSuggestion, generateEntitySettingsSuggestion, generateKeywordsSuggestion, generatePragmasSuggestion, generateSimpleFunctionsSuggestion, generateSimpleTypesSuggestion, generateTableFunctionsSuggestion, generateUdfSuggestion, generateVariableSuggestion, generateWindowFunctionsSuggestion, } from './generateSuggestions';
|
|
2
2
|
import { getEntitiesToFetchColumns } from './utils';
|
|
3
3
|
function getCursorPosition(input, offset) {
|
|
4
4
|
const lines = input.slice(0, offset).split('\n');
|
|
@@ -29,7 +29,7 @@ function getRangeToInsertSuggestion(input, offset) {
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
export class YQLAutocomplete {
|
|
32
|
-
constructor({ getQueryParser, getUdfs, getSimpleTypes, getPragmas, getWindowFunctions, getTableFunctions, getAggregateFunctions, getSimpleFunctions, getEntitySettings, fetchEntities, fetchEntityColumns, }) {
|
|
32
|
+
constructor({ getQueryParser, getUdfs, getSimpleTypes, getPragmas, getWindowFunctions, getTableFunctions, getAggregateFunctions, getSimpleFunctions, getEntitySettings, getCompressionSettings, getEncodingSettings, fetchEntities, fetchEntityColumns, }) {
|
|
33
33
|
if (getQueryParser) {
|
|
34
34
|
this.getQueryParser = getQueryParser;
|
|
35
35
|
}
|
|
@@ -57,6 +57,12 @@ export class YQLAutocomplete {
|
|
|
57
57
|
if (getEntitySettings) {
|
|
58
58
|
this.getEntitySettings = getEntitySettings;
|
|
59
59
|
}
|
|
60
|
+
if (getCompressionSettings) {
|
|
61
|
+
this.getCompressionSettings = getCompressionSettings;
|
|
62
|
+
}
|
|
63
|
+
if (getEncodingSettings) {
|
|
64
|
+
this.getEncodingSettings = getEncodingSettings;
|
|
65
|
+
}
|
|
60
66
|
if (fetchEntities) {
|
|
61
67
|
this.fetchEntities = fetchEntities;
|
|
62
68
|
}
|
|
@@ -75,6 +81,8 @@ export class YQLAutocomplete {
|
|
|
75
81
|
let simpleTypesSuggestions = [];
|
|
76
82
|
let pragmasSuggestions = [];
|
|
77
83
|
let entitySettingsSuggestions = [];
|
|
84
|
+
let compressionSettingsSuggestions = [];
|
|
85
|
+
let encodingSettingsSuggestions = [];
|
|
78
86
|
let variableSuggestions = [];
|
|
79
87
|
let columnsSuggestions = [];
|
|
80
88
|
const rangeToInsertSuggestion = getRangeToInsertSuggestion(input, offset);
|
|
@@ -118,6 +126,14 @@ export class YQLAutocomplete {
|
|
|
118
126
|
const entitySettings = await this.getEntitySettings(parseResult.suggestEntitySettings);
|
|
119
127
|
entitySettingsSuggestions = await generateEntitySettingsSuggestion(rangeToInsertSuggestion, entitySettings);
|
|
120
128
|
}
|
|
129
|
+
if (parseResult.suggestCompressionSettings) {
|
|
130
|
+
const compressionSettings = await this.getCompressionSettings(cursorPrefix);
|
|
131
|
+
compressionSettingsSuggestions = await generateCompressionSettingsSuggestion(rangeToInsertSuggestion, compressionSettings);
|
|
132
|
+
}
|
|
133
|
+
if (parseResult.suggestEncodingSettings) {
|
|
134
|
+
const encodingSettings = await this.getEncodingSettings(cursorPrefix);
|
|
135
|
+
encodingSettingsSuggestions = await generateEncodingSettingsSuggestion(rangeToInsertSuggestion, encodingSettings);
|
|
136
|
+
}
|
|
121
137
|
const keywordsSuggestions = generateKeywordsSuggestion(rangeToInsertSuggestion, parseResult.suggestKeywords);
|
|
122
138
|
const columnAliasSuggestion = await generateColumnAliasesSuggestion(rangeToInsertSuggestion, parseResult.suggestColumnAliases);
|
|
123
139
|
if (parseResult.suggestColumns) {
|
|
@@ -138,6 +154,8 @@ export class YQLAutocomplete {
|
|
|
138
154
|
...keywordsSuggestions,
|
|
139
155
|
...aggregateFunctionsSuggestions,
|
|
140
156
|
...entitySettingsSuggestions,
|
|
157
|
+
...compressionSettingsSuggestions,
|
|
158
|
+
...encodingSettingsSuggestions,
|
|
141
159
|
...variableSuggestions,
|
|
142
160
|
];
|
|
143
161
|
return suggestions;
|
|
@@ -184,6 +202,20 @@ export class YQLAutocomplete {
|
|
|
184
202
|
async getEntitySettings(_entityType) {
|
|
185
203
|
return [];
|
|
186
204
|
}
|
|
205
|
+
/**
|
|
206
|
+
* Fetches compression settings.
|
|
207
|
+
* @returns A promise that resolves to an array of compression settings.
|
|
208
|
+
*/
|
|
209
|
+
async getCompressionSettings(_prefix) {
|
|
210
|
+
return [];
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Fetches encoding settings.
|
|
214
|
+
* @returns A promise that resolves to an array of encoding settings.
|
|
215
|
+
*/
|
|
216
|
+
async getEncodingSettings(_prefix) {
|
|
217
|
+
return [];
|
|
218
|
+
}
|
|
187
219
|
/**
|
|
188
220
|
* Fetches entities based on the provided prefix and needed entity types.
|
|
189
221
|
* @param prefix - The prefix to filter entities.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monaco-yql-languages",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "YQL languages for the Monaco Editor, based on monaco-languages.",
|
|
5
5
|
"author": "YDB",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@gravity-ui/prettier-config": "^1.1.0",
|
|
33
33
|
"@gravity-ui/stylelint-config": "^4.0.1",
|
|
34
34
|
"@gravity-ui/tsconfig": "^1.0.0",
|
|
35
|
-
"@gravity-ui/websql-autocomplete": "^13.
|
|
35
|
+
"@gravity-ui/websql-autocomplete": "^13.15.0",
|
|
36
36
|
"@jest/types": "^29.6.3",
|
|
37
37
|
"@types/jest": "^29.5.14",
|
|
38
38
|
"eslint": "^8.57.1",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"typescript": "^5.7.3"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@gravity-ui/websql-autocomplete": "^13.
|
|
49
|
+
"@gravity-ui/websql-autocomplete": "^13.15.0",
|
|
50
50
|
"monaco-editor": ">=0.27.0"
|
|
51
51
|
},
|
|
52
52
|
"nano-staged": {
|