@zentryc5t/ts-plugin-for-bruno 3.0.6 → 3.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/README.md +4 -0
- package/out/codeBlocks/bruCodeBlocks.js +71 -0
- package/out/codeBlocks/bruCodeBlocks.js.map +1 -0
- package/out/codeChanges/codeChanges.js +144 -0
- package/out/codeChanges/codeChanges.js.map +1 -0
- package/out/collection/collectionFormat.js +69 -0
- package/out/collection/collectionFormat.js.map +1 -0
- package/out/constants.js +36 -0
- package/out/constants.js.map +1 -0
- package/out/diagnostics/filterDefaultDiagnostics.js +81 -0
- package/out/diagnostics/filterDefaultDiagnostics.js.map +1 -0
- package/out/fileContent.js +28 -0
- package/out/fileContent.js.map +1 -0
- package/out/fileTypes.js +16 -0
- package/out/fileTypes.js.map +1 -0
- package/out/index.js +18 -260
- package/out/index.js.map +1 -1
- package/out/languageService/codeChangeOverrides.js +40 -0
- package/out/languageService/codeChangeOverrides.js.map +1 -0
- package/out/languageService/diagnosticsOverrides.js +41 -0
- package/out/languageService/diagnosticsOverrides.js.map +1 -0
- package/out/languageService/formattingOverrides.js +18 -0
- package/out/languageService/formattingOverrides.js.map +1 -0
- package/out/languageService/navigationOverrides.js +98 -0
- package/out/languageService/navigationOverrides.js.map +1 -0
- package/out/pluginConfiguration.js +29 -0
- package/out/pluginConfiguration.js.map +1 -0
- package/out/yamlFiles/getIndentationOfScripts.js +24 -0
- package/out/yamlFiles/getIndentationOfScripts.js.map +1 -0
- package/out/yamlFiles/maskYamlFileContent.js +126 -0
- package/out/yamlFiles/maskYamlFileContent.js.map +1 -0
- package/out/yamlFiles/maskYamlFilesForTypescriptServer.js +94 -0
- package/out/yamlFiles/maskYamlFilesForTypescriptServer.js.map +1 -0
- package/package.json +4 -3
- package/src/codeBlocks/bruCodeBlocks.ts +66 -0
- package/src/codeChanges/codeChanges.ts +182 -0
- package/src/collection/collectionFormat.ts +96 -0
- package/src/constants.test.ts +12 -0
- package/src/constants.ts +31 -0
- package/src/diagnostics/filterDefaultDiagnostics.ts +145 -0
- package/src/fileContent.ts +38 -0
- package/src/fileTypes.ts +13 -0
- package/src/index.test.ts +329 -0
- package/src/index.ts +24 -496
- package/src/languageService/codeChangeOverrides.ts +90 -0
- package/src/languageService/diagnosticsOverrides.ts +65 -0
- package/src/languageService/formattingOverrides.ts +42 -0
- package/src/languageService/navigationOverrides.ts +201 -0
- package/src/pluginConfiguration.ts +34 -0
- package/src/yamlFiles/getIndentationOfScripts.ts +34 -0
- package/src/yamlFiles/maskYamlFileContent.test.ts +213 -0
- package/src/yamlFiles/maskYamlFileContent.ts +179 -0
- package/src/yamlFiles/maskYamlFilesForTypescriptServer.ts +85 -0
- package/tsconfig.json +2 -1
package/out/index.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const
|
|
3
|
-
const
|
|
2
|
+
const maskYamlFilesForTypescriptServer_1 = require("./yamlFiles/maskYamlFilesForTypescriptServer");
|
|
3
|
+
const codeChangeOverrides_1 = require("./languageService/codeChangeOverrides");
|
|
4
|
+
const diagnosticsOverrides_1 = require("./languageService/diagnosticsOverrides");
|
|
5
|
+
const formattingOverrides_1 = require("./languageService/formattingOverrides");
|
|
6
|
+
const navigationOverrides_1 = require("./languageService/navigationOverrides");
|
|
7
|
+
const pluginConfiguration_1 = require("./pluginConfiguration");
|
|
4
8
|
function init(_modules) {
|
|
9
|
+
const configuration = new pluginConfiguration_1.PluginConfiguration();
|
|
5
10
|
function create(info) {
|
|
11
|
+
(0, maskYamlFilesForTypescriptServer_1.maskYamlFilesForTypescriptServer)(info, configuration);
|
|
6
12
|
// Set up decorator object
|
|
7
13
|
const proxy = Object.create(null);
|
|
8
14
|
for (const k of Object.keys(info.languageService)) {
|
|
@@ -12,269 +18,21 @@ function init(_modules) {
|
|
|
12
18
|
// @ts-expect-error - JS runtime trickery which is tricky to type tersely
|
|
13
19
|
x.apply(info.languageService, args);
|
|
14
20
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
// The ts server always reports errors when importing a Javascript function in a .bru file.
|
|
22
|
-
return isBruFile
|
|
23
|
-
? allDiagnostics.filter(
|
|
24
|
-
// Do not show diagnostics that only make sense for Typescript files.
|
|
25
|
-
// Bru file code blocks should be treated like Javascript functions instead.
|
|
26
|
-
// A list of diagnostics can be found here: https://github.com/microsoft/TypeScript/blob/main/src/compiler/diagnosticMessages.json
|
|
27
|
-
({ code }) => ![7_006, 7_031, 18_046].includes(code))
|
|
28
|
-
: allDiagnostics;
|
|
29
|
-
};
|
|
30
|
-
proxy.getSuggestionDiagnostics = (fileName) => {
|
|
31
|
-
const defaultDiagnostics = info.languageService.getSuggestionDiagnostics(fileName);
|
|
32
|
-
const isBruFile = isBrunoFile(fileName);
|
|
33
|
-
const allDiagnostics = filterDefaultDiagnostics(info, fileName, defaultDiagnostics);
|
|
34
|
-
// The ts server always reports errors when importing a Javascript function in a .bru file.
|
|
35
|
-
return isBruFile
|
|
36
|
-
? allDiagnostics.filter(
|
|
37
|
-
// Do not show diagnostics that only make sense for Typescript files.
|
|
38
|
-
// Bru file code blocks should be treated like Javascript functions instead.
|
|
39
|
-
// A list of diagnostics can be found here: https://github.com/microsoft/TypeScript/blob/main/src/compiler/diagnosticMessages.json
|
|
40
|
-
({ code }) => (code < 7_043 || code > 7_050) &&
|
|
41
|
-
code != 80_001 &&
|
|
42
|
-
code != 80_004)
|
|
43
|
-
: isInABrunoCollection(info, fileName)
|
|
44
|
-
? allDiagnostics.filter(({ code }) => code != 80_001)
|
|
45
|
-
: allDiagnostics; // Bruno currently only supports CommonJS modules.)
|
|
46
|
-
};
|
|
47
|
-
// All hovers are provided by the extension implementation for '.bru' files.
|
|
48
|
-
proxy.getQuickInfoAtPosition = (fileName, position) => {
|
|
49
|
-
if (isBrunoFile(fileName)) {
|
|
50
|
-
return undefined;
|
|
51
|
-
}
|
|
52
|
-
return info.languageService.getQuickInfoAtPosition(fileName, position);
|
|
53
|
-
};
|
|
54
|
-
proxy.getCompletionsAtPosition = (fileName, position, options) => {
|
|
55
|
-
// All completions are provided by the extension implementation for '.bru' files.
|
|
56
|
-
if (isBrunoFile(fileName)) {
|
|
57
|
-
return undefined;
|
|
58
|
-
}
|
|
59
|
-
const defaultCompletions = info.languageService.getCompletionsAtPosition(fileName, position, options);
|
|
60
|
-
return defaultCompletions && isInABrunoCollection(info, fileName)
|
|
61
|
-
? {
|
|
62
|
-
...defaultCompletions,
|
|
63
|
-
entries: defaultCompletions.entries.filter(({ data }) => !data ||
|
|
64
|
-
!data.fileName ||
|
|
65
|
-
!data.fileName.includes(getTempJsFileBaseNameWithoutExtension())),
|
|
66
|
-
}
|
|
67
|
-
: defaultCompletions;
|
|
68
|
-
};
|
|
69
|
-
proxy.getRenameInfo = (fileName, position, preferences) => {
|
|
70
|
-
const defaultRenameInfo = info.languageService.getRenameInfo(fileName, position, preferences);
|
|
71
|
-
if ((0, path_1.extname)(fileName) != ".js" ||
|
|
72
|
-
!isInABrunoCollection(info, fileName)) {
|
|
73
|
-
return defaultRenameInfo;
|
|
74
|
-
}
|
|
75
|
-
const definitionForPosition = info.languageService.getDefinitionAtPosition(fileName, position);
|
|
76
|
-
const isForInbuiltRuntimeFunction = definitionForPosition &&
|
|
77
|
-
definitionForPosition.some(({ fileName }) => fileName.includes(getTempJsFileBaseNameWithoutExtension()));
|
|
78
|
-
return isForInbuiltRuntimeFunction
|
|
79
|
-
? {
|
|
80
|
-
canRename: false,
|
|
81
|
-
localizedErrorMessage: "You cannot rename elements that are provided by Bruno at runtime.",
|
|
82
|
-
}
|
|
83
|
-
: defaultRenameInfo;
|
|
84
|
-
};
|
|
85
|
-
proxy.findRenameLocations = (fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename) => {
|
|
86
|
-
const defaultRenameLocations = info.languageService.findRenameLocations(fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename &&
|
|
87
|
-
typeof providePrefixAndSuffixTextForRename != "boolean"
|
|
88
|
-
? providePrefixAndSuffixTextForRename
|
|
89
|
-
: {});
|
|
90
|
-
return defaultRenameLocations &&
|
|
91
|
-
isInABrunoCollection(info, fileName)
|
|
92
|
-
? defaultRenameLocations.filter(({ fileName: fileForRenameLocation }) => !fileForRenameLocation.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
93
|
-
: defaultRenameLocations;
|
|
94
|
-
};
|
|
95
|
-
proxy.findReferences = (fileName, position) => {
|
|
96
|
-
const defaultReferences = info.languageService.findReferences(fileName, position);
|
|
97
|
-
return defaultReferences && isInABrunoCollection(info, fileName)
|
|
98
|
-
? defaultReferences.filter(({ definition: { fileName: fileForDefinition } }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
99
|
-
: defaultReferences;
|
|
100
|
-
};
|
|
101
|
-
proxy.getDefinitionAtPosition = (fileName, position) => {
|
|
102
|
-
const defaultDefinitions = info.languageService.getDefinitionAtPosition(fileName, position);
|
|
103
|
-
return defaultDefinitions && isInABrunoCollection(info, fileName)
|
|
104
|
-
? defaultDefinitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
105
|
-
: defaultDefinitions;
|
|
106
|
-
};
|
|
107
|
-
proxy.getDefinitionAndBoundSpan = (fileName, position) => {
|
|
108
|
-
const defaultDefinition = info.languageService.getDefinitionAndBoundSpan(fileName, position);
|
|
109
|
-
return defaultDefinition &&
|
|
110
|
-
isInABrunoCollection(info, fileName) &&
|
|
111
|
-
defaultDefinition.definitions
|
|
112
|
-
? {
|
|
113
|
-
...defaultDefinition,
|
|
114
|
-
definitions: defaultDefinition.definitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension())),
|
|
115
|
-
}
|
|
116
|
-
: defaultDefinition;
|
|
117
|
-
};
|
|
118
|
-
proxy.getTypeDefinitionAtPosition = (fileName, position) => {
|
|
119
|
-
const defaultDefinitions = info.languageService.getDefinitionAtPosition(fileName, position);
|
|
120
|
-
return defaultDefinitions && isInABrunoCollection(info, fileName)
|
|
121
|
-
? defaultDefinitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
122
|
-
: defaultDefinitions;
|
|
123
|
-
};
|
|
124
|
-
proxy.getImplementationAtPosition = (fileName, position) => {
|
|
125
|
-
const defaultImplementations = info.languageService.getImplementationAtPosition(fileName, position);
|
|
126
|
-
return defaultImplementations &&
|
|
127
|
-
isInABrunoCollection(info, fileName)
|
|
128
|
-
? defaultImplementations.filter(({ fileName: fileForImplementation }) => !fileForImplementation.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
129
|
-
: defaultImplementations;
|
|
130
|
-
};
|
|
21
|
+
(0, diagnosticsOverrides_1.overrideDiagnostics)(info, proxy);
|
|
22
|
+
(0, navigationOverrides_1.overrideHoverAndCompletions)(info, proxy);
|
|
23
|
+
(0, navigationOverrides_1.overrideRename)(info, proxy);
|
|
24
|
+
(0, navigationOverrides_1.overrideReferencesAndDefinitions)(info, proxy);
|
|
25
|
+
(0, codeChangeOverrides_1.overrideCodeChanges)(info, proxy);
|
|
26
|
+
(0, formattingOverrides_1.overrideFormatting)(info, proxy);
|
|
131
27
|
return proxy;
|
|
132
28
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
function filterDefaultDiagnostics(info, fileName, defaultDiagnostics) {
|
|
138
|
-
if (!isBrunoFile(fileName)) {
|
|
139
|
-
return (0, path_1.extname)(fileName) == ".js"
|
|
140
|
-
? filterDiagnosticsForJsFile(info, fileName, defaultDiagnostics)
|
|
141
|
-
: defaultDiagnostics;
|
|
142
|
-
}
|
|
143
|
-
const fileContent = getFileContent(info, fileName);
|
|
144
|
-
if (!fileContent) {
|
|
145
|
-
return [];
|
|
146
|
-
}
|
|
147
|
-
const indizes = [];
|
|
148
|
-
for (const blockName of Object.values(TextBlockName)) {
|
|
149
|
-
const indizesForBlock = getCodeBlockStartAndEndIndex(fileContent, blockName);
|
|
150
|
-
if (indizesForBlock) {
|
|
151
|
-
indizes.push({ blockName, ...indizesForBlock });
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if (indizes.length == 0) {
|
|
155
|
-
return [];
|
|
156
|
-
}
|
|
157
|
-
return filterOutDiagnosticsForInbuiltRuntimeFunctions(defaultDiagnostics.filter(({ start }) => start != undefined &&
|
|
158
|
-
indizes.some(({ startIndex: blockStart, endIndex: blockEnd }) => start >= blockStart && start <= blockEnd)), fileContent);
|
|
159
|
-
}
|
|
160
|
-
function filterDiagnosticsForJsFile(info, fileName, defaultDiagnostics) {
|
|
161
|
-
if (fileName.includes(getTempJsFileBaseNameWithoutExtension())) {
|
|
162
|
-
// Filter out all diagnostics for temp js files.
|
|
163
|
-
return [];
|
|
164
|
-
}
|
|
165
|
-
else if (!isInABrunoCollection(info, fileName)) {
|
|
166
|
-
return defaultDiagnostics;
|
|
167
|
-
}
|
|
168
|
-
const fileContent = getFileContent(info, fileName);
|
|
169
|
-
if (!fileContent) {
|
|
170
|
-
return [];
|
|
171
|
-
}
|
|
172
|
-
const filteredDiagnostics = filterOutDiagnosticsForInbuiltRuntimeFunctions(defaultDiagnostics, fileContent);
|
|
173
|
-
return filteredDiagnostics.map((diagnostic) => {
|
|
174
|
-
const { relatedInformation } = diagnostic;
|
|
175
|
-
const referencesTempJsFile = relatedInformation &&
|
|
176
|
-
relatedInformation.some(({ file }) => file &&
|
|
177
|
-
file.fileName.endsWith(`${getTempJsFileBaseNameWithoutExtension()}.js`));
|
|
178
|
-
return referencesTempJsFile
|
|
179
|
-
? { ...diagnostic, relatedInformation: undefined }
|
|
180
|
-
: diagnostic;
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
function getCodeBlockStartAndEndIndex(fullTextContent, blockName) {
|
|
184
|
-
const openingBracketChar = "{";
|
|
185
|
-
const startPattern = new RegExp(`^\\s*${blockName}\\s*${openingBracketChar}\\s*$`, "m");
|
|
186
|
-
const startMatches = startPattern.exec(fullTextContent);
|
|
187
|
-
if (!startMatches || startMatches.length == 0) {
|
|
188
|
-
return undefined;
|
|
189
|
-
}
|
|
190
|
-
const blockStartIndex = startMatches.index;
|
|
191
|
-
const remainingDoc = fullTextContent.substring(blockStartIndex);
|
|
192
|
-
const sourceFile = ts.createSourceFile("test.js", remainingDoc, ts.ScriptTarget.ES2020);
|
|
193
|
-
const blockNodeInSubDocument = sourceFile
|
|
194
|
-
.getChildAt(0, sourceFile)
|
|
195
|
-
.getChildren(sourceFile)
|
|
196
|
-
.find(({ kind }) => kind == ts.SyntaxKind.Block);
|
|
197
|
-
if (!blockNodeInSubDocument) {
|
|
198
|
-
throw new Error(`Could not find code block within given subdocument: ${remainingDoc}`);
|
|
29
|
+
function onConfigurationChanged(config) {
|
|
30
|
+
configuration.update(config);
|
|
199
31
|
}
|
|
200
32
|
return {
|
|
201
|
-
|
|
202
|
-
|
|
33
|
+
create,
|
|
34
|
+
onConfigurationChanged,
|
|
203
35
|
};
|
|
204
36
|
}
|
|
205
|
-
function filterOutDiagnosticsForInbuiltRuntimeFunctions(diagnosticsToFilter, fileContent) {
|
|
206
|
-
return filterOutMisleadingDiagnosticsForOtherTestFrameworks(diagnosticsToFilter).filter(({ start, length }) => start != undefined &&
|
|
207
|
-
length != undefined &&
|
|
208
|
-
// Do not show diagnostics for functions that are provided by Bruno at runtime
|
|
209
|
-
!getNamesForInbuiltRuntimeVarsAndFunctions().includes(fileContent.substring(start, start + length)) &&
|
|
210
|
-
// Avoid showing incorrect error when using `require`
|
|
211
|
-
// (the error seems to only occur for short periods of time when typescript type definitions have not been reloaded for a while)
|
|
212
|
-
fileContent.substring(start, start + length) != "require");
|
|
213
|
-
}
|
|
214
|
-
function filterOutMisleadingDiagnosticsForOtherTestFrameworks(diagnostics) {
|
|
215
|
-
return diagnostics.filter(({ code, messageText }) => {
|
|
216
|
-
const errorText = typeof messageText == "string"
|
|
217
|
-
? messageText
|
|
218
|
-
: messageText.messageText;
|
|
219
|
-
// When using global type definitions for Jest, the TS server expects every `expect` statement to use the matchers for Jest.
|
|
220
|
-
return code != 2_339 || !errorText.includes("JestMatchers<any>");
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
function getFileContent(info, fileName) {
|
|
224
|
-
const scriptSnapshot = info.languageServiceHost.getScriptSnapshot(fileName);
|
|
225
|
-
if (scriptSnapshot) {
|
|
226
|
-
return scriptSnapshot.getText(0, scriptSnapshot.getLength());
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
return info.languageServiceHost.readFile(fileName);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
function isInABrunoCollection(info, fileName) {
|
|
233
|
-
let currentDirectory = (0, path_1.dirname)(fileName);
|
|
234
|
-
let isCollectionRoot = isACollectionRootFolder(info, currentDirectory);
|
|
235
|
-
while (info.serverHost.directoryExists(currentDirectory) &&
|
|
236
|
-
!isCollectionRoot &&
|
|
237
|
-
(0, path_1.dirname)(currentDirectory) != currentDirectory // dirname of a base folder in the file system seems to return the input folder again
|
|
238
|
-
) {
|
|
239
|
-
currentDirectory = (0, path_1.dirname)(currentDirectory);
|
|
240
|
-
isCollectionRoot = isACollectionRootFolder(info, currentDirectory);
|
|
241
|
-
}
|
|
242
|
-
return isCollectionRoot;
|
|
243
|
-
}
|
|
244
|
-
function isACollectionRootFolder(info, directoryPath) {
|
|
245
|
-
return info.serverHost
|
|
246
|
-
.readDirectory(directoryPath, undefined, undefined, undefined, 1)
|
|
247
|
-
.some((fileName) => {
|
|
248
|
-
if (!fileName.endsWith("bruno.json")) {
|
|
249
|
-
return false;
|
|
250
|
-
}
|
|
251
|
-
const content = info.languageServiceHost.readFile(fileName);
|
|
252
|
-
if (!content) {
|
|
253
|
-
return false;
|
|
254
|
-
}
|
|
255
|
-
try {
|
|
256
|
-
const parsedContent = JSON.parse(content);
|
|
257
|
-
return parsedContent && parsedContent.type == "collection";
|
|
258
|
-
}
|
|
259
|
-
catch {
|
|
260
|
-
return false;
|
|
261
|
-
}
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
function isBrunoFile(fileName) {
|
|
265
|
-
return (0, path_1.extname)(fileName) == ".bru";
|
|
266
|
-
}
|
|
267
|
-
function getTempJsFileBaseNameWithoutExtension() {
|
|
268
|
-
return "__temp_bru_reference";
|
|
269
|
-
}
|
|
270
|
-
function getNamesForInbuiltRuntimeVarsAndFunctions() {
|
|
271
|
-
return ["bru", "req", "res", "test", "expect"];
|
|
272
|
-
}
|
|
273
|
-
var TextBlockName;
|
|
274
|
-
(function (TextBlockName) {
|
|
275
|
-
TextBlockName["Tests"] = "tests";
|
|
276
|
-
TextBlockName["PreRequestScript"] = "script:pre-request";
|
|
277
|
-
TextBlockName["PostResponseScript"] = "script:post-response";
|
|
278
|
-
})(TextBlockName || (TextBlockName = {}));
|
|
279
37
|
module.exports = init;
|
|
280
38
|
//# sourceMappingURL=index.js.map
|
package/out/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,mGAAgG;AAChG,+EAA4E;AAC5E,iFAA6E;AAC7E,+EAA2E;AAC3E,+EAI+C;AAC/C,+DAA0E;AAE1E,SAAS,IAAI,CAAC,QAEb;IACG,MAAM,aAAa,GAAG,IAAI,yCAAmB,EAAE,CAAC;IAEhD,SAAS,MAAM,CAAC,IAAgC;QAC5C,IAAA,mEAAgC,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAEtD,0BAA0B;QAC1B,MAAM,KAAK,GAAuB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEtD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CACvB,IAAI,CAAC,eAAe,CACS,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAE,CAAC;YACnC,yEAAyE;YACzE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YAC9B,yEAAyE;YACzE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAED,IAAA,0CAAmB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,IAAA,iDAA2B,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,IAAA,oCAAc,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAA,sDAAgC,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAA,yCAAmB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,IAAA,wCAAkB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEhC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,SAAS,sBAAsB,CAAC,MAAyC;QACrE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,OAAO;QACH,MAAM;QACN,sBAAsB;KACzB,CAAC;AACN,CAAC;AAED,iBAAS,IAAI,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.overrideCodeChanges = overrideCodeChanges;
|
|
4
|
+
const codeChanges_1 = require("../codeChanges/codeChanges");
|
|
5
|
+
// Some code fixes and refactorings insert code outside of code blocks (e.g. an import at the top of the file),
|
|
6
|
+
// which would corrupt the content of '.bru' and '.yml' files.
|
|
7
|
+
function overrideCodeChanges(info, proxy) {
|
|
8
|
+
proxy.getCodeFixesAtPosition = (fileName, start, end, errorCodes, formatOptions, preferences) => {
|
|
9
|
+
const areAllChangesWithinCodeBlocks = (0, codeChanges_1.createCheckForChangesWithinCodeBlocks)(info);
|
|
10
|
+
return info.languageService
|
|
11
|
+
.getCodeFixesAtPosition(fileName, start, end, errorCodes, (0, codeChanges_1.getFormatOptionsForFile)(info, fileName, formatOptions, {
|
|
12
|
+
start,
|
|
13
|
+
end,
|
|
14
|
+
}), preferences)
|
|
15
|
+
.filter(({ changes }) => areAllChangesWithinCodeBlocks(changes));
|
|
16
|
+
};
|
|
17
|
+
proxy.getCombinedCodeFix = (scope, fixId, formatOptions, preferences) => {
|
|
18
|
+
const combinedFix = info.languageService.getCombinedCodeFix(scope, fixId, (0, codeChanges_1.getFormatOptionsForFile)(info, scope.fileName, formatOptions, {
|
|
19
|
+
start: 0,
|
|
20
|
+
end: Number.MAX_SAFE_INTEGER,
|
|
21
|
+
}), preferences);
|
|
22
|
+
// Only applying some of the changes could result in invalid code.
|
|
23
|
+
return (0, codeChanges_1.createCheckForChangesWithinCodeBlocks)(info)(combinedFix.changes)
|
|
24
|
+
? combinedFix
|
|
25
|
+
: { changes: [] };
|
|
26
|
+
};
|
|
27
|
+
proxy.getEditsForRefactor = (fileName, formatOptions, positionOrRange, refactorName, actionName, preferences, interactiveRefactorArguments) => {
|
|
28
|
+
const refactorEdits = info.languageService.getEditsForRefactor(fileName, (0, codeChanges_1.getFormatOptionsForFile)(info, fileName, formatOptions, typeof positionOrRange == "number"
|
|
29
|
+
? { start: positionOrRange, end: positionOrRange }
|
|
30
|
+
: {
|
|
31
|
+
start: positionOrRange.pos,
|
|
32
|
+
end: positionOrRange.end,
|
|
33
|
+
}), positionOrRange, refactorName, actionName, preferences, interactiveRefactorArguments);
|
|
34
|
+
return refactorEdits &&
|
|
35
|
+
(0, codeChanges_1.createCheckForChangesWithinCodeBlocks)(info)(refactorEdits.edits)
|
|
36
|
+
? refactorEdits
|
|
37
|
+
: undefined;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=codeChangeOverrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeChangeOverrides.js","sourceRoot":"","sources":["../../src/languageService/codeChangeOverrides.ts"],"names":[],"mappings":";;AAQA,kDAiFC;AAxFD,4DAGoC;AAEpC,+GAA+G;AAC/G,8DAA8D;AAC9D,SAAgB,mBAAmB,CAC/B,IAAgC,EAChC,KAAyB;IAEzB,KAAK,CAAC,sBAAsB,GAAG,CAC3B,QAAQ,EACR,KAAK,EACL,GAAG,EACH,UAAU,EACV,aAAa,EACb,WAAW,EACb,EAAE;QACA,MAAM,6BAA6B,GAC/B,IAAA,mDAAqC,EAAC,IAAI,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,eAAe;aACtB,sBAAsB,CACnB,QAAQ,EACR,KAAK,EACL,GAAG,EACH,UAAU,EACV,IAAA,qCAAuB,EAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE;YACnD,KAAK;YACL,GAAG;SACN,CAAC,EACF,WAAW,CACd;aACA,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC;IAEF,KAAK,CAAC,kBAAkB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CACvD,KAAK,EACL,KAAK,EACL,IAAA,qCAAuB,EAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,aAAa,EAAE;YACzD,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,MAAM,CAAC,gBAAgB;SAC/B,CAAC,EACF,WAAW,CACd,CAAC;QAEF,kEAAkE;QAClE,OAAO,IAAA,mDAAqC,EAAC,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;YACnE,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,KAAK,CAAC,mBAAmB,GAAG,CACxB,QAAQ,EACR,aAAa,EACb,eAAe,EACf,YAAY,EACZ,UAAU,EACV,WAAW,EACX,4BAA4B,EAC9B,EAAE;QACA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAC1D,QAAQ,EACR,IAAA,qCAAuB,EACnB,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,OAAO,eAAe,IAAI,QAAQ;YAC9B,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,EAAE;YAClD,CAAC,CAAC;gBACI,KAAK,EAAE,eAAe,CAAC,GAAG;gBAC1B,GAAG,EAAE,eAAe,CAAC,GAAG;aAC3B,CACV,EACD,eAAe,EACf,YAAY,EACZ,UAAU,EACV,WAAW,EACX,4BAA4B,CAC/B,CAAC;QAEF,OAAO,aAAa;YAChB,IAAA,mDAAqC,EAAC,IAAI,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;YAChE,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,SAAS,CAAC;IACpB,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.overrideDiagnostics = overrideDiagnostics;
|
|
4
|
+
const collectionFormat_1 = require("../collection/collectionFormat");
|
|
5
|
+
const filterDefaultDiagnostics_1 = require("../diagnostics/filterDefaultDiagnostics");
|
|
6
|
+
const fileTypes_1 = require("../fileTypes");
|
|
7
|
+
function overrideDiagnostics(info, proxy) {
|
|
8
|
+
proxy.getSyntacticDiagnostics = (fileName) => {
|
|
9
|
+
return (0, filterDefaultDiagnostics_1.filterDefaultDiagnostics)(info, fileName, info.languageService.getSyntacticDiagnostics(fileName));
|
|
10
|
+
};
|
|
11
|
+
proxy.getSemanticDiagnostics = (fileName) => {
|
|
12
|
+
const hasCodeBlocks = (0, fileTypes_1.hasEmbeddedCodeBlocks)(fileName);
|
|
13
|
+
const allDiagnostics = (0, filterDefaultDiagnostics_1.filterDefaultDiagnostics)(info, fileName, info.languageService.getSemanticDiagnostics(fileName));
|
|
14
|
+
// The ts server always reports errors when importing a Javascript function in a .bru or .yml file.
|
|
15
|
+
return hasCodeBlocks
|
|
16
|
+
? allDiagnostics.filter(
|
|
17
|
+
// Do not show diagnostics that only make sense for Typescript files.
|
|
18
|
+
// Code blocks should be treated like Javascript functions instead.
|
|
19
|
+
// A list of diagnostics can be found here: https://github.com/microsoft/TypeScript/blob/main/src/compiler/diagnosticMessages.json
|
|
20
|
+
({ code }) => ![7_006, 7_031, 18_046].includes(code))
|
|
21
|
+
: allDiagnostics;
|
|
22
|
+
};
|
|
23
|
+
proxy.getSuggestionDiagnostics = (fileName) => {
|
|
24
|
+
const defaultDiagnostics = info.languageService.getSuggestionDiagnostics(fileName);
|
|
25
|
+
const hasCodeBlocks = (0, fileTypes_1.hasEmbeddedCodeBlocks)(fileName);
|
|
26
|
+
const allDiagnostics = (0, filterDefaultDiagnostics_1.filterDefaultDiagnostics)(info, fileName, defaultDiagnostics);
|
|
27
|
+
// The ts server always reports errors when importing a Javascript function in a .bru or .yml file.
|
|
28
|
+
return hasCodeBlocks
|
|
29
|
+
? allDiagnostics.filter(
|
|
30
|
+
// Do not show diagnostics that only make sense for Typescript files.
|
|
31
|
+
// Code blocks should be treated like Javascript functions instead.
|
|
32
|
+
// A list of diagnostics can be found here: https://github.com/microsoft/TypeScript/blob/main/src/compiler/diagnosticMessages.json
|
|
33
|
+
({ code }) => (code < 7_043 || code > 7_050) &&
|
|
34
|
+
code != 80_001 &&
|
|
35
|
+
code != 80_004)
|
|
36
|
+
: (0, collectionFormat_1.isInABrunoCollection)(info, fileName)
|
|
37
|
+
? allDiagnostics.filter(({ code }) => code != 80_001)
|
|
38
|
+
: allDiagnostics; // Bruno currently only supports CommonJS modules.)
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=diagnosticsOverrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticsOverrides.js","sourceRoot":"","sources":["../../src/languageService/diagnosticsOverrides.ts"],"names":[],"mappings":";;AAKA,kDA2DC;AA/DD,qEAAsE;AACtE,sFAAmF;AACnF,4CAAqD;AAErD,SAAgB,mBAAmB,CAC/B,IAAgC,EAChC,KAAyB;IAEzB,KAAK,CAAC,uBAAuB,GAAG,CAAC,QAAQ,EAAE,EAAE;QACzC,OAAO,IAAA,mDAAwB,EAC3B,IAAI,EACJ,QAAQ,EACR,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAC1B,CAAC;IACrC,CAAC,CAAC;IAEF,KAAK,CAAC,sBAAsB,GAAG,CAAC,QAAQ,EAAE,EAAE;QACxC,MAAM,aAAa,GAAG,IAAA,iCAAqB,EAAC,QAAQ,CAAC,CAAC;QAEtD,MAAM,cAAc,GAAG,IAAA,mDAAwB,EAC3C,IAAI,EACJ,QAAQ,EACR,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CACxD,CAAC;QAEF,mGAAmG;QACnG,OAAO,aAAa;YAChB,CAAC,CAAC,cAAc,CAAC,MAAM;YACjB,qEAAqE;YACrE,mEAAmE;YACnE,kIAAkI;YAClI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CACvD;YACH,CAAC,CAAC,cAAc,CAAC;IACzB,CAAC,CAAC;IAEF,KAAK,CAAC,wBAAwB,GAAG,CAAC,QAAQ,EAAE,EAAE;QAC1C,MAAM,kBAAkB,GACpB,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAE5D,MAAM,aAAa,GAAG,IAAA,iCAAqB,EAAC,QAAQ,CAAC,CAAC;QAEtD,MAAM,cAAc,GAAG,IAAA,mDAAwB,EAC3C,IAAI,EACJ,QAAQ,EACR,kBAAkB,CACU,CAAC;QAEjC,mGAAmG;QACnG,OAAO,aAAa;YAChB,CAAC,CAAC,cAAc,CAAC,MAAM;YACjB,qEAAqE;YACrE,mEAAmE;YACnE,kIAAkI;YAClI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CACT,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC;gBAC9B,IAAI,IAAI,MAAM;gBACd,IAAI,IAAI,MAAM,CACrB;YACH,CAAC,CAAC,IAAA,uCAAoB,EAAC,IAAI,EAAE,QAAQ,CAAC;gBACpC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC;gBACrD,CAAC,CAAC,cAAc,CAAC,CAAC,mDAAmD;IAC/E,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.overrideFormatting = overrideFormatting;
|
|
4
|
+
const fileTypes_1 = require("../fileTypes");
|
|
5
|
+
// The Typescript server only sees the masked content of Yaml files (see `maskYamlFilesForTypescriptServer`).
|
|
6
|
+
// Formatting edits are computed for the masked content and would therefore remove the Yaml content outside of scripts.
|
|
7
|
+
function overrideFormatting(info, proxy) {
|
|
8
|
+
proxy.getFormattingEditsForDocument = (fileName, options) => (0, fileTypes_1.isYamlFile)(fileName)
|
|
9
|
+
? []
|
|
10
|
+
: info.languageService.getFormattingEditsForDocument(fileName, options);
|
|
11
|
+
proxy.getFormattingEditsForRange = (fileName, start, end, options) => (0, fileTypes_1.isYamlFile)(fileName)
|
|
12
|
+
? []
|
|
13
|
+
: info.languageService.getFormattingEditsForRange(fileName, start, end, options);
|
|
14
|
+
proxy.getFormattingEditsAfterKeystroke = (fileName, position, key, options) => (0, fileTypes_1.isYamlFile)(fileName)
|
|
15
|
+
? []
|
|
16
|
+
: info.languageService.getFormattingEditsAfterKeystroke(fileName, position, key, options);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=formattingOverrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formattingOverrides.js","sourceRoot":"","sources":["../../src/languageService/formattingOverrides.ts"],"names":[],"mappings":";;AAKA,gDAoCC;AAxCD,4CAA0C;AAE1C,6GAA6G;AAC7G,uHAAuH;AACvH,SAAgB,kBAAkB,CAC9B,IAAgC,EAChC,KAAyB;IAEzB,KAAK,CAAC,6BAA6B,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CACxD,IAAA,sBAAU,EAAC,QAAQ,CAAC;QAChB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAC9C,QAAQ,EACR,OAAO,CACV,CAAC;IAEZ,KAAK,CAAC,0BAA0B,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CACjE,IAAA,sBAAU,EAAC,QAAQ,CAAC;QAChB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAC3C,QAAQ,EACR,KAAK,EACL,GAAG,EACH,OAAO,CACV,CAAC;IAEZ,KAAK,CAAC,gCAAgC,GAAG,CACrC,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,OAAO,EACT,EAAE,CACA,IAAA,sBAAU,EAAC,QAAQ,CAAC;QAChB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,gCAAgC,CACjD,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,OAAO,CACV,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.overrideHoverAndCompletions = overrideHoverAndCompletions;
|
|
4
|
+
exports.overrideRename = overrideRename;
|
|
5
|
+
exports.overrideReferencesAndDefinitions = overrideReferencesAndDefinitions;
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const collectionFormat_1 = require("../collection/collectionFormat");
|
|
8
|
+
const constants_1 = require("../constants");
|
|
9
|
+
const fileTypes_1 = require("../fileTypes");
|
|
10
|
+
function overrideHoverAndCompletions(info, proxy) {
|
|
11
|
+
// All hovers are provided by the extension implementation for '.bru' and '.yml' files.
|
|
12
|
+
proxy.getQuickInfoAtPosition = (fileName, position) => {
|
|
13
|
+
if ((0, fileTypes_1.hasEmbeddedCodeBlocks)(fileName)) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
return info.languageService.getQuickInfoAtPosition(fileName, position);
|
|
17
|
+
};
|
|
18
|
+
proxy.getCompletionsAtPosition = (fileName, position, options) => {
|
|
19
|
+
// All completions are provided by the extension implementation for '.bru' and '.yml' files.
|
|
20
|
+
if ((0, fileTypes_1.hasEmbeddedCodeBlocks)(fileName)) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
const defaultCompletions = info.languageService.getCompletionsAtPosition(fileName, position, options);
|
|
24
|
+
return defaultCompletions && (0, collectionFormat_1.isInABrunoCollection)(info, fileName)
|
|
25
|
+
? {
|
|
26
|
+
...defaultCompletions,
|
|
27
|
+
entries: defaultCompletions.entries.filter(({ data }) => !data ||
|
|
28
|
+
!data.fileName ||
|
|
29
|
+
!data.fileName.includes((0, constants_1.getTempJsFileBaseNameWithoutExtension)())),
|
|
30
|
+
}
|
|
31
|
+
: defaultCompletions;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function overrideRename(info, proxy) {
|
|
35
|
+
proxy.getRenameInfo = (fileName, position, preferences) => {
|
|
36
|
+
const defaultRenameInfo = info.languageService.getRenameInfo(fileName, position, preferences);
|
|
37
|
+
if ((0, path_1.extname)(fileName) != ".js" ||
|
|
38
|
+
!(0, collectionFormat_1.isInABrunoCollection)(info, fileName)) {
|
|
39
|
+
return defaultRenameInfo;
|
|
40
|
+
}
|
|
41
|
+
const definitionForPosition = info.languageService.getDefinitionAtPosition(fileName, position);
|
|
42
|
+
const isForInbuiltRuntimeFunction = definitionForPosition &&
|
|
43
|
+
definitionForPosition.some(({ fileName }) => fileName.includes((0, constants_1.getTempJsFileBaseNameWithoutExtension)()));
|
|
44
|
+
return isForInbuiltRuntimeFunction
|
|
45
|
+
? {
|
|
46
|
+
canRename: false,
|
|
47
|
+
localizedErrorMessage: "You cannot rename elements that are provided by Bruno at runtime.",
|
|
48
|
+
}
|
|
49
|
+
: defaultRenameInfo;
|
|
50
|
+
};
|
|
51
|
+
proxy.findRenameLocations = (fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename) => {
|
|
52
|
+
const defaultRenameLocations = info.languageService.findRenameLocations(fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename &&
|
|
53
|
+
typeof providePrefixAndSuffixTextForRename != "boolean"
|
|
54
|
+
? providePrefixAndSuffixTextForRename
|
|
55
|
+
: {});
|
|
56
|
+
return defaultRenameLocations && (0, collectionFormat_1.isInABrunoCollection)(info, fileName)
|
|
57
|
+
? defaultRenameLocations.filter(({ fileName: fileForRenameLocation }) => !fileForRenameLocation.includes((0, constants_1.getTempJsFileBaseNameWithoutExtension)()))
|
|
58
|
+
: defaultRenameLocations;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function overrideReferencesAndDefinitions(info, proxy) {
|
|
62
|
+
proxy.findReferences = (fileName, position) => {
|
|
63
|
+
const defaultReferences = info.languageService.findReferences(fileName, position);
|
|
64
|
+
return defaultReferences && (0, collectionFormat_1.isInABrunoCollection)(info, fileName)
|
|
65
|
+
? defaultReferences.filter(({ definition: { fileName: fileForDefinition } }) => !fileForDefinition.includes((0, constants_1.getTempJsFileBaseNameWithoutExtension)()))
|
|
66
|
+
: defaultReferences;
|
|
67
|
+
};
|
|
68
|
+
proxy.getDefinitionAtPosition = (fileName, position) => {
|
|
69
|
+
const defaultDefinitions = info.languageService.getDefinitionAtPosition(fileName, position);
|
|
70
|
+
return defaultDefinitions && (0, collectionFormat_1.isInABrunoCollection)(info, fileName)
|
|
71
|
+
? defaultDefinitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes((0, constants_1.getTempJsFileBaseNameWithoutExtension)()))
|
|
72
|
+
: defaultDefinitions;
|
|
73
|
+
};
|
|
74
|
+
proxy.getDefinitionAndBoundSpan = (fileName, position) => {
|
|
75
|
+
const defaultDefinition = info.languageService.getDefinitionAndBoundSpan(fileName, position);
|
|
76
|
+
return defaultDefinition &&
|
|
77
|
+
(0, collectionFormat_1.isInABrunoCollection)(info, fileName) &&
|
|
78
|
+
defaultDefinition.definitions
|
|
79
|
+
? {
|
|
80
|
+
...defaultDefinition,
|
|
81
|
+
definitions: defaultDefinition.definitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes((0, constants_1.getTempJsFileBaseNameWithoutExtension)())),
|
|
82
|
+
}
|
|
83
|
+
: defaultDefinition;
|
|
84
|
+
};
|
|
85
|
+
proxy.getTypeDefinitionAtPosition = (fileName, position) => {
|
|
86
|
+
const defaultDefinitions = info.languageService.getDefinitionAtPosition(fileName, position);
|
|
87
|
+
return defaultDefinitions && (0, collectionFormat_1.isInABrunoCollection)(info, fileName)
|
|
88
|
+
? defaultDefinitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes((0, constants_1.getTempJsFileBaseNameWithoutExtension)()))
|
|
89
|
+
: defaultDefinitions;
|
|
90
|
+
};
|
|
91
|
+
proxy.getImplementationAtPosition = (fileName, position) => {
|
|
92
|
+
const defaultImplementations = info.languageService.getImplementationAtPosition(fileName, position);
|
|
93
|
+
return defaultImplementations && (0, collectionFormat_1.isInABrunoCollection)(info, fileName)
|
|
94
|
+
? defaultImplementations.filter(({ fileName: fileForImplementation }) => !fileForImplementation.includes((0, constants_1.getTempJsFileBaseNameWithoutExtension)()))
|
|
95
|
+
: defaultImplementations;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=navigationOverrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigationOverrides.js","sourceRoot":"","sources":["../../src/languageService/navigationOverrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PluginConfiguration = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* The configuration is passed to the plugin by the VS Code extension (see `configureTsServerPlugin` in the client).
|
|
6
|
+
* As long as no configuration is passed, Yaml collections are not supported.
|
|
7
|
+
*/
|
|
8
|
+
class PluginConfiguration {
|
|
9
|
+
config = { yamlCollectionSupport: false };
|
|
10
|
+
changeListeners = [];
|
|
11
|
+
isYamlCollectionSupportEnabled() {
|
|
12
|
+
return this.config.yamlCollectionSupport;
|
|
13
|
+
}
|
|
14
|
+
onDidChange(listener) {
|
|
15
|
+
this.changeListeners.push(listener);
|
|
16
|
+
}
|
|
17
|
+
update(config) {
|
|
18
|
+
const yamlCollectionSupport = config?.yamlCollectionSupport == true;
|
|
19
|
+
if (yamlCollectionSupport == this.config.yamlCollectionSupport) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
this.config = { yamlCollectionSupport };
|
|
23
|
+
for (const listener of this.changeListeners) {
|
|
24
|
+
listener();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.PluginConfiguration = PluginConfiguration;
|
|
29
|
+
//# sourceMappingURL=pluginConfiguration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginConfiguration.js","sourceRoot":"","sources":["../src/pluginConfiguration.ts"],"names":[],"mappings":";;;AAIA;;;GAGG;AACH,MAAa,mBAAmB;IACpB,MAAM,GAAiB,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;IAC/C,eAAe,GAAmB,EAAE,CAAC;IAEtD,8BAA8B;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAC7C,CAAC;IAED,WAAW,CAAC,QAAoB;QAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,MAAyC;QAC5C,MAAM,qBAAqB,GAAG,MAAM,EAAE,qBAAqB,IAAI,IAAI,CAAC;QAEpE,IAAI,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC7D,OAAO;QACX,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,EAAE,qBAAqB,EAAE,CAAC;QAExC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,QAAQ,EAAE,CAAC;QACf,CAAC;IACL,CAAC;CACJ;AAzBD,kDAyBC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getIndentationOfScripts = getIndentationOfScripts;
|
|
4
|
+
const maskYamlFileContent_1 = require("./maskYamlFileContent");
|
|
5
|
+
/**
|
|
6
|
+
* Returns the indentation of the scripts that overlap with the given range, if all of them use the same indentation.
|
|
7
|
+
*
|
|
8
|
+
* The indentation of a literal block scalar is the minimal indentation of its non-empty lines.
|
|
9
|
+
* Lines with this indentation are always part of the block scalar, even if it uses an explicit indentation indicator (e.g. `code: |2-`).
|
|
10
|
+
*/
|
|
11
|
+
function getIndentationOfScripts(fileName, fileContent, range) {
|
|
12
|
+
const indentations = new Set((0, maskYamlFileContent_1.getScriptContentRanges)(fileName, fileContent)
|
|
13
|
+
.filter(({ start, end }) => start <= range.end && range.start <= end)
|
|
14
|
+
.map(({ start, end }) => getMinimalIndentation(fileContent.substring(start, end))));
|
|
15
|
+
return indentations.size == 1 ? [...indentations][0] : undefined;
|
|
16
|
+
}
|
|
17
|
+
function getMinimalIndentation(scriptContent) {
|
|
18
|
+
const indentations = scriptContent
|
|
19
|
+
.split(/\r\n|\r|\n|\u2028|\u2029/)
|
|
20
|
+
.filter((line) => line.trim().length > 0)
|
|
21
|
+
.map((line) => /^ */.exec(line)[0].length);
|
|
22
|
+
return indentations.length > 0 ? Math.min(...indentations) : undefined;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=getIndentationOfScripts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getIndentationOfScripts.js","sourceRoot":"","sources":["../../src/yamlFiles/getIndentationOfScripts.ts"],"names":[],"mappings":";;AAQA,0DAgBC;AAxBD,+DAA+D;AAE/D;;;;;GAKG;AACH,SAAgB,uBAAuB,CACnC,QAAgB,EAChB,WAAmB,EACnB,KAAqC;IAErC,MAAM,YAAY,GAAG,IAAI,GAAG,CACxB,IAAA,4CAAsB,EAAC,QAAQ,EAAE,WAAW,CAAC;SACxC,MAAM,CACH,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,GAAG,CAC/D;SACA,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CACpB,qBAAqB,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAC3D,CACR,CAAC;IAEF,OAAO,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAED,SAAS,qBAAqB,CAAC,aAAqB;IAChD,MAAM,YAAY,GAAG,aAAa;SAC7B,KAAK,CAAC,0BAA0B,CAAC;SACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAEhD,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC"}
|