@zentryc5t/ts-plugin-for-bruno 2.0.0 → 3.0.1
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 -3
- package/out/index.js +119 -46
- package/out/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +260 -76
package/README.md
CHANGED
|
@@ -11,6 +11,7 @@ Only some of the intellisense features for `Bruno` files are provided by this np
|
|
|
11
11
|
## Debugging
|
|
12
12
|
|
|
13
13
|
For using the local TS plugin within the VS Code extension, please follow these steps:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
|
|
15
|
+
- Replace the `name` in the base [package.json](../../package.json) for the `typescriptServerPlugins` contibution field with the name `typescript-for-bruno`.
|
|
16
|
+
- In the base [tsconfig.json](../../tsconfig.json) replace the value for the `plugins` field with the commented out plugins value.
|
|
17
|
+
- Use the launch configuration `Run Extension With local TS plugin` for launching the extension
|
package/out/index.js
CHANGED
|
@@ -21,9 +21,6 @@ function init(_modules) {
|
|
|
21
21
|
proxy.getSuggestionDiagnostics = (fileName) => {
|
|
22
22
|
const defaultDiagnostics = info.languageService.getSuggestionDiagnostics(fileName);
|
|
23
23
|
const isBruFile = isBrunoFile(fileName);
|
|
24
|
-
if (!isBruFile && !isJsFileFromBrunoCollection(info, fileName)) {
|
|
25
|
-
return defaultDiagnostics;
|
|
26
|
-
}
|
|
27
24
|
const allDiagnostics = filterDefaultDiagnostics(info, fileName, defaultDiagnostics);
|
|
28
25
|
// The ts server always reports errors when importing a Javascript function in a .bru file.
|
|
29
26
|
return isBruFile
|
|
@@ -36,23 +33,87 @@ function init(_modules) {
|
|
|
36
33
|
code != 80004)
|
|
37
34
|
: allDiagnostics.filter(({ code }) => code != 80001); // Bruno currently only supports CommonJS modules.
|
|
38
35
|
};
|
|
39
|
-
// All hovers are provided by the extension implementation for '.bru'
|
|
40
|
-
// Only for the temp js file, the ts language service has to be used.
|
|
36
|
+
// All hovers are provided by the extension implementation for '.bru' files.
|
|
41
37
|
proxy.getQuickInfoAtPosition = (fileName, position) => {
|
|
42
|
-
if (isBrunoFile(fileName)
|
|
43
|
-
(isJsFileFromBrunoCollection(info, fileName) &&
|
|
44
|
-
!isTempJsFile(fileName))) {
|
|
38
|
+
if (isBrunoFile(fileName)) {
|
|
45
39
|
return undefined;
|
|
46
40
|
}
|
|
47
41
|
return info.languageService.getQuickInfoAtPosition(fileName, position);
|
|
48
42
|
};
|
|
49
|
-
// All completions for '.js' files within collections are provided by the extension already.
|
|
50
43
|
proxy.getCompletionsAtPosition = (fileName, position, options) => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
?
|
|
54
|
-
|
|
44
|
+
const defaultCompletions = info.languageService.getCompletionsAtPosition(fileName, position, options);
|
|
45
|
+
return defaultCompletions && isInABrunoCollection(info, fileName)
|
|
46
|
+
? {
|
|
47
|
+
...defaultCompletions,
|
|
48
|
+
entries: defaultCompletions.entries.filter(({ data }) => !data ||
|
|
49
|
+
!data.fileName ||
|
|
50
|
+
!data.fileName.includes(getTempJsFileBaseNameWithoutExtension())),
|
|
51
|
+
}
|
|
52
|
+
: defaultCompletions;
|
|
53
|
+
};
|
|
54
|
+
proxy.getRenameInfo = (fileName, position, preferences) => {
|
|
55
|
+
const defaultRenameInfo = info.languageService.getRenameInfo(fileName, position, preferences);
|
|
56
|
+
if ((0, path_1.extname)(fileName) != ".js" ||
|
|
57
|
+
!isInABrunoCollection(info, fileName)) {
|
|
58
|
+
return defaultRenameInfo;
|
|
59
|
+
}
|
|
60
|
+
const definitionForPosition = info.languageService.getDefinitionAtPosition(fileName, position);
|
|
61
|
+
const isForInbuiltRuntimeFunction = definitionForPosition &&
|
|
62
|
+
definitionForPosition.some(({ fileName }) => fileName.includes(getTempJsFileBaseNameWithoutExtension()));
|
|
63
|
+
return isForInbuiltRuntimeFunction
|
|
64
|
+
? {
|
|
65
|
+
canRename: false,
|
|
66
|
+
localizedErrorMessage: "You cannot rename elements that are provided by Bruno at runtime.",
|
|
67
|
+
}
|
|
68
|
+
: defaultRenameInfo;
|
|
69
|
+
};
|
|
70
|
+
proxy.findRenameLocations = (fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename) => {
|
|
71
|
+
const defaultRenameLocations = info.languageService.findRenameLocations(fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename &&
|
|
72
|
+
typeof providePrefixAndSuffixTextForRename != "boolean"
|
|
73
|
+
? providePrefixAndSuffixTextForRename
|
|
74
|
+
: {});
|
|
75
|
+
return defaultRenameLocations &&
|
|
76
|
+
isInABrunoCollection(info, fileName)
|
|
77
|
+
? defaultRenameLocations.filter(({ fileName: fileForRenameLocation }) => !fileForRenameLocation.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
78
|
+
: defaultRenameLocations;
|
|
79
|
+
};
|
|
80
|
+
proxy.findReferences = (fileName, position) => {
|
|
81
|
+
const defaultReferences = info.languageService.findReferences(fileName, position);
|
|
82
|
+
return defaultReferences && isInABrunoCollection(info, fileName)
|
|
83
|
+
? defaultReferences.filter(({ definition: { fileName: fileForDefinition } }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
84
|
+
: defaultReferences;
|
|
85
|
+
};
|
|
86
|
+
proxy.getDefinitionAtPosition = (fileName, position) => {
|
|
87
|
+
const defaultDefinitions = info.languageService.getDefinitionAtPosition(fileName, position);
|
|
88
|
+
return defaultDefinitions && isInABrunoCollection(info, fileName)
|
|
89
|
+
? defaultDefinitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
90
|
+
: defaultDefinitions;
|
|
55
91
|
};
|
|
92
|
+
proxy.getDefinitionAndBoundSpan = (fileName, position) => {
|
|
93
|
+
const defaultDefinition = info.languageService.getDefinitionAndBoundSpan(fileName, position);
|
|
94
|
+
return defaultDefinition &&
|
|
95
|
+
isInABrunoCollection(info, fileName) &&
|
|
96
|
+
defaultDefinition.definitions
|
|
97
|
+
? {
|
|
98
|
+
...defaultDefinition,
|
|
99
|
+
definitions: defaultDefinition.definitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension())),
|
|
100
|
+
}
|
|
101
|
+
: defaultDefinition;
|
|
102
|
+
};
|
|
103
|
+
proxy.getTypeDefinitionAtPosition = (fileName, position) => {
|
|
104
|
+
const defaultDefinitions = info.languageService.getDefinitionAtPosition(fileName, position);
|
|
105
|
+
return defaultDefinitions && isInABrunoCollection(info, fileName)
|
|
106
|
+
? defaultDefinitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
107
|
+
: defaultDefinitions;
|
|
108
|
+
};
|
|
109
|
+
proxy.getImplementationAtPosition = (fileName, position) => {
|
|
110
|
+
const defaultImplementations = info.languageService.getImplementationAtPosition(fileName, position);
|
|
111
|
+
return defaultImplementations &&
|
|
112
|
+
isInABrunoCollection(info, fileName)
|
|
113
|
+
? defaultImplementations.filter(({ fileName: fileForImplementation }) => !fileForImplementation.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
114
|
+
: defaultImplementations;
|
|
115
|
+
};
|
|
116
|
+
// ToDo: Filter out displayed link to temp js file for code fix suggestions (e.g. 'bru is declared here')
|
|
56
117
|
return proxy;
|
|
57
118
|
}
|
|
58
119
|
return {
|
|
@@ -60,38 +121,50 @@ function init(_modules) {
|
|
|
60
121
|
};
|
|
61
122
|
}
|
|
62
123
|
function filterDefaultDiagnostics(info, fileName, defaultDiagnostics) {
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
const fileContent = getFileContent(info, fileName);
|
|
69
|
-
if (!fileContent) {
|
|
70
|
-
return [];
|
|
71
|
-
}
|
|
72
|
-
return filterOutDiagnosticsForInbuiltRuntimeFunctions(defaultDiagnostics, fileContent);
|
|
124
|
+
if (!isBrunoFile(fileName)) {
|
|
125
|
+
return (0, path_1.extname)(fileName) == ".js"
|
|
126
|
+
? filterDiagnosticsForJsFile(info, fileName, defaultDiagnostics)
|
|
127
|
+
: defaultDiagnostics;
|
|
73
128
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
indizes.push({ blockName, ...indizesForBlock });
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
if (indizes.length == 0) {
|
|
87
|
-
return [];
|
|
129
|
+
const fileContent = getFileContent(info, fileName);
|
|
130
|
+
if (!fileContent) {
|
|
131
|
+
return [];
|
|
132
|
+
}
|
|
133
|
+
const indizes = [];
|
|
134
|
+
for (const blockName of Object.values(TextBlockName)) {
|
|
135
|
+
const indizesForBlock = getCodeBlockStartAndEndIndex(fileContent, blockName);
|
|
136
|
+
if (indizesForBlock) {
|
|
137
|
+
indizes.push({ blockName, ...indizesForBlock });
|
|
88
138
|
}
|
|
89
|
-
return filterOutDiagnosticsForInbuiltRuntimeFunctions(defaultDiagnostics.filter(({ start }) => start != undefined &&
|
|
90
|
-
indizes.some(({ startIndex: blockStart, endIndex: blockEnd }) => start >= blockStart && start <= blockEnd)), fileContent);
|
|
91
139
|
}
|
|
92
|
-
|
|
140
|
+
if (indizes.length == 0) {
|
|
141
|
+
return [];
|
|
142
|
+
}
|
|
143
|
+
return filterOutDiagnosticsForInbuiltRuntimeFunctions(defaultDiagnostics.filter(({ start }) => start != undefined &&
|
|
144
|
+
indizes.some(({ startIndex: blockStart, endIndex: blockEnd }) => start >= blockStart && start <= blockEnd)), fileContent);
|
|
145
|
+
}
|
|
146
|
+
function filterDiagnosticsForJsFile(info, fileName, defaultDiagnostics) {
|
|
147
|
+
if (!isInABrunoCollection(info, fileName)) {
|
|
93
148
|
return defaultDiagnostics;
|
|
94
149
|
}
|
|
150
|
+
else if (fileName.includes(getTempJsFileBaseNameWithoutExtension())) {
|
|
151
|
+
// Filter out all diagnostics for temp js files.
|
|
152
|
+
return [];
|
|
153
|
+
}
|
|
154
|
+
const fileContent = getFileContent(info, fileName);
|
|
155
|
+
if (!fileContent) {
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
const filteredDiagnostics = filterOutDiagnosticsForInbuiltRuntimeFunctions(defaultDiagnostics, fileContent);
|
|
159
|
+
return filteredDiagnostics.map((diagnostic) => {
|
|
160
|
+
const { relatedInformation } = diagnostic;
|
|
161
|
+
const referencesTempJsFile = relatedInformation &&
|
|
162
|
+
relatedInformation.some(({ file }) => file &&
|
|
163
|
+
file.fileName.endsWith(`${getTempJsFileBaseNameWithoutExtension()}.js`));
|
|
164
|
+
return referencesTempJsFile
|
|
165
|
+
? { ...diagnostic, relatedInformation: undefined }
|
|
166
|
+
: diagnostic;
|
|
167
|
+
});
|
|
95
168
|
}
|
|
96
169
|
function getCodeBlockStartAndEndIndex(fullTextContent, blockName) {
|
|
97
170
|
const openingBracketChar = "{";
|
|
@@ -115,14 +188,11 @@ function getCodeBlockStartAndEndIndex(fullTextContent, blockName) {
|
|
|
115
188
|
endIndex: blockStartIndex + blockNodeInSubDocument.end,
|
|
116
189
|
};
|
|
117
190
|
}
|
|
118
|
-
function isJsFileFromBrunoCollection(info, fileName) {
|
|
119
|
-
return (0, path_1.extname)(fileName) == ".js" && isInABrunoCollection(info, fileName);
|
|
120
|
-
}
|
|
121
191
|
function filterOutDiagnosticsForInbuiltRuntimeFunctions(diagnosticsToFilter, fileContent) {
|
|
122
192
|
return diagnosticsToFilter.filter(({ start, length }) => start != undefined &&
|
|
123
193
|
length != undefined &&
|
|
124
194
|
// Do not show diagnostics for functions that are provided by Bruno at runtime
|
|
125
|
-
!
|
|
195
|
+
!getNamesForInbuiltRuntimeVarsAndFunctions().includes(fileContent.substring(start, start + length)) &&
|
|
126
196
|
// Avoid showing incorrect error when using `require`
|
|
127
197
|
// (the error seems to only occur for short periods of time when typescript type definitions have not been reloaded for a while)
|
|
128
198
|
fileContent.substring(start, start + length) != "require");
|
|
@@ -171,8 +241,11 @@ function isACollectionRootFolder(info, directoryPath) {
|
|
|
171
241
|
function isBrunoFile(fileName) {
|
|
172
242
|
return (0, path_1.extname)(fileName) == ".bru";
|
|
173
243
|
}
|
|
174
|
-
function
|
|
175
|
-
return
|
|
244
|
+
function getTempJsFileBaseNameWithoutExtension() {
|
|
245
|
+
return "__temp_bru_reference";
|
|
246
|
+
}
|
|
247
|
+
function getNamesForInbuiltRuntimeVarsAndFunctions() {
|
|
248
|
+
return ["bru", "req", "res", "test", "expect"];
|
|
176
249
|
}
|
|
177
250
|
var TextBlockName;
|
|
178
251
|
(function (TextBlockName) {
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zentryc5t/ts-plugin-for-bruno",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"main": "./out/index.js",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"
|
|
6
|
+
"compile": "tsc --project tsconfig.json"
|
|
7
7
|
},
|
|
8
8
|
"author": "zentryc5t",
|
|
9
9
|
"license": "MIT",
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { dirname, extname } from "path";
|
|
2
2
|
import * as ts from "typescript/lib/tsserverlibrary";
|
|
3
3
|
|
|
4
4
|
function init(_modules: {
|
|
@@ -40,10 +40,6 @@ function init(_modules: {
|
|
|
40
40
|
|
|
41
41
|
const isBruFile = isBrunoFile(fileName);
|
|
42
42
|
|
|
43
|
-
if (!isBruFile && !isJsFileFromBrunoCollection(info, fileName)) {
|
|
44
|
-
return defaultDiagnostics;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
43
|
const allDiagnostics = filterDefaultDiagnostics(
|
|
48
44
|
info,
|
|
49
45
|
fileName,
|
|
@@ -64,14 +60,9 @@ function init(_modules: {
|
|
|
64
60
|
: allDiagnostics.filter(({ code }) => code != 80_001); // Bruno currently only supports CommonJS modules.
|
|
65
61
|
};
|
|
66
62
|
|
|
67
|
-
// All hovers are provided by the extension implementation for '.bru'
|
|
68
|
-
// Only for the temp js file, the ts language service has to be used.
|
|
63
|
+
// All hovers are provided by the extension implementation for '.bru' files.
|
|
69
64
|
proxy.getQuickInfoAtPosition = (fileName, position) => {
|
|
70
|
-
if (
|
|
71
|
-
isBrunoFile(fileName) ||
|
|
72
|
-
(isJsFileFromBrunoCollection(info, fileName) &&
|
|
73
|
-
!isTempJsFile(fileName))
|
|
74
|
-
) {
|
|
65
|
+
if (isBrunoFile(fileName)) {
|
|
75
66
|
return undefined;
|
|
76
67
|
}
|
|
77
68
|
|
|
@@ -81,18 +72,186 @@ function init(_modules: {
|
|
|
81
72
|
);
|
|
82
73
|
};
|
|
83
74
|
|
|
84
|
-
// All completions for '.js' files within collections are provided by the extension already.
|
|
85
75
|
proxy.getCompletionsAtPosition = (fileName, position, options) => {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
76
|
+
const defaultCompletions =
|
|
77
|
+
info.languageService.getCompletionsAtPosition(
|
|
78
|
+
fileName,
|
|
79
|
+
position,
|
|
80
|
+
options,
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
return defaultCompletions && isInABrunoCollection(info, fileName)
|
|
84
|
+
? {
|
|
85
|
+
...defaultCompletions,
|
|
86
|
+
entries: defaultCompletions.entries.filter(
|
|
87
|
+
({ data }) =>
|
|
88
|
+
!data ||
|
|
89
|
+
!data.fileName ||
|
|
90
|
+
!data.fileName.includes(
|
|
91
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
92
|
+
),
|
|
93
|
+
),
|
|
94
|
+
}
|
|
95
|
+
: defaultCompletions;
|
|
94
96
|
};
|
|
95
97
|
|
|
98
|
+
proxy.getRenameInfo = (fileName, position, preferences) => {
|
|
99
|
+
const defaultRenameInfo = info.languageService.getRenameInfo(
|
|
100
|
+
fileName,
|
|
101
|
+
position,
|
|
102
|
+
preferences as ts.UserPreferences,
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
if (
|
|
106
|
+
extname(fileName) != ".js" ||
|
|
107
|
+
!isInABrunoCollection(info, fileName)
|
|
108
|
+
) {
|
|
109
|
+
return defaultRenameInfo;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const definitionForPosition =
|
|
113
|
+
info.languageService.getDefinitionAtPosition(
|
|
114
|
+
fileName,
|
|
115
|
+
position,
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
const isForInbuiltRuntimeFunction =
|
|
119
|
+
definitionForPosition &&
|
|
120
|
+
definitionForPosition.some(({ fileName }) =>
|
|
121
|
+
fileName.includes(getTempJsFileBaseNameWithoutExtension()),
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
return isForInbuiltRuntimeFunction
|
|
125
|
+
? {
|
|
126
|
+
canRename: false,
|
|
127
|
+
localizedErrorMessage:
|
|
128
|
+
"You cannot rename elements that are provided by Bruno at runtime.",
|
|
129
|
+
}
|
|
130
|
+
: defaultRenameInfo;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
proxy.findRenameLocations = (
|
|
134
|
+
fileName,
|
|
135
|
+
position,
|
|
136
|
+
findInStrings,
|
|
137
|
+
findInComments,
|
|
138
|
+
providePrefixAndSuffixTextForRename,
|
|
139
|
+
) => {
|
|
140
|
+
const defaultRenameLocations =
|
|
141
|
+
info.languageService.findRenameLocations(
|
|
142
|
+
fileName,
|
|
143
|
+
position,
|
|
144
|
+
findInStrings,
|
|
145
|
+
findInComments,
|
|
146
|
+
providePrefixAndSuffixTextForRename &&
|
|
147
|
+
typeof providePrefixAndSuffixTextForRename != "boolean"
|
|
148
|
+
? providePrefixAndSuffixTextForRename
|
|
149
|
+
: {},
|
|
150
|
+
);
|
|
151
|
+
|
|
152
|
+
return defaultRenameLocations &&
|
|
153
|
+
isInABrunoCollection(info, fileName)
|
|
154
|
+
? defaultRenameLocations.filter(
|
|
155
|
+
({ fileName: fileForRenameLocation }) =>
|
|
156
|
+
!fileForRenameLocation.includes(
|
|
157
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
158
|
+
),
|
|
159
|
+
)
|
|
160
|
+
: defaultRenameLocations;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
proxy.findReferences = (fileName, position) => {
|
|
164
|
+
const defaultReferences = info.languageService.findReferences(
|
|
165
|
+
fileName,
|
|
166
|
+
position,
|
|
167
|
+
);
|
|
168
|
+
|
|
169
|
+
return defaultReferences && isInABrunoCollection(info, fileName)
|
|
170
|
+
? defaultReferences.filter(
|
|
171
|
+
({ definition: { fileName: fileForDefinition } }) =>
|
|
172
|
+
!fileForDefinition.includes(
|
|
173
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
174
|
+
),
|
|
175
|
+
)
|
|
176
|
+
: defaultReferences;
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
proxy.getDefinitionAtPosition = (fileName, position) => {
|
|
180
|
+
const defaultDefinitions =
|
|
181
|
+
info.languageService.getDefinitionAtPosition(
|
|
182
|
+
fileName,
|
|
183
|
+
position,
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
return defaultDefinitions && isInABrunoCollection(info, fileName)
|
|
187
|
+
? defaultDefinitions.filter(
|
|
188
|
+
({ fileName: fileForDefinition }) =>
|
|
189
|
+
!fileForDefinition.includes(
|
|
190
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
191
|
+
),
|
|
192
|
+
)
|
|
193
|
+
: defaultDefinitions;
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
proxy.getDefinitionAndBoundSpan = (fileName, position) => {
|
|
197
|
+
const defaultDefinition =
|
|
198
|
+
info.languageService.getDefinitionAndBoundSpan(
|
|
199
|
+
fileName,
|
|
200
|
+
position,
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
return defaultDefinition &&
|
|
204
|
+
isInABrunoCollection(info, fileName) &&
|
|
205
|
+
defaultDefinition.definitions
|
|
206
|
+
? {
|
|
207
|
+
...defaultDefinition,
|
|
208
|
+
definitions: defaultDefinition.definitions.filter(
|
|
209
|
+
({ fileName: fileForDefinition }) =>
|
|
210
|
+
!fileForDefinition.includes(
|
|
211
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
212
|
+
),
|
|
213
|
+
),
|
|
214
|
+
}
|
|
215
|
+
: defaultDefinition;
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
proxy.getTypeDefinitionAtPosition = (fileName, position) => {
|
|
219
|
+
const defaultDefinitions =
|
|
220
|
+
info.languageService.getDefinitionAtPosition(
|
|
221
|
+
fileName,
|
|
222
|
+
position,
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
return defaultDefinitions && isInABrunoCollection(info, fileName)
|
|
226
|
+
? defaultDefinitions.filter(
|
|
227
|
+
({ fileName: fileForDefinition }) =>
|
|
228
|
+
!fileForDefinition.includes(
|
|
229
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
230
|
+
),
|
|
231
|
+
)
|
|
232
|
+
: defaultDefinitions;
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
proxy.getImplementationAtPosition = (fileName, position) => {
|
|
236
|
+
const defaultImplementations =
|
|
237
|
+
info.languageService.getImplementationAtPosition(
|
|
238
|
+
fileName,
|
|
239
|
+
position,
|
|
240
|
+
);
|
|
241
|
+
|
|
242
|
+
return defaultImplementations &&
|
|
243
|
+
isInABrunoCollection(info, fileName)
|
|
244
|
+
? defaultImplementations.filter(
|
|
245
|
+
({ fileName: fileForImplementation }) =>
|
|
246
|
+
!fileForImplementation.includes(
|
|
247
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
248
|
+
),
|
|
249
|
+
)
|
|
250
|
+
: defaultImplementations;
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
// ToDo: Filter out displayed link to temp js file for code fix suggestions (e.g. 'bru is declared here')
|
|
254
|
+
|
|
96
255
|
return proxy;
|
|
97
256
|
}
|
|
98
257
|
|
|
@@ -106,64 +265,92 @@ function filterDefaultDiagnostics(
|
|
|
106
265
|
fileName: string,
|
|
107
266
|
defaultDiagnostics: (ts.Diagnostic | ts.DiagnosticWithLocation)[],
|
|
108
267
|
) {
|
|
109
|
-
if (
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
268
|
+
if (!isBrunoFile(fileName)) {
|
|
269
|
+
return extname(fileName) == ".js"
|
|
270
|
+
? filterDiagnosticsForJsFile(info, fileName, defaultDiagnostics)
|
|
271
|
+
: defaultDiagnostics;
|
|
272
|
+
}
|
|
114
273
|
|
|
115
|
-
|
|
274
|
+
const fileContent = getFileContent(info, fileName);
|
|
116
275
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
276
|
+
if (!fileContent) {
|
|
277
|
+
return [];
|
|
278
|
+
}
|
|
120
279
|
|
|
121
|
-
|
|
122
|
-
|
|
280
|
+
const indizes: {
|
|
281
|
+
blockName: string;
|
|
282
|
+
startIndex: number;
|
|
283
|
+
endIndex: number;
|
|
284
|
+
}[] = [];
|
|
285
|
+
|
|
286
|
+
for (const blockName of Object.values(TextBlockName)) {
|
|
287
|
+
const indizesForBlock = getCodeBlockStartAndEndIndex(
|
|
123
288
|
fileContent,
|
|
289
|
+
blockName,
|
|
124
290
|
);
|
|
125
|
-
} else if (isBrunoFile(fileName)) {
|
|
126
|
-
const fileContent = getFileContent(info, fileName);
|
|
127
291
|
|
|
128
|
-
if (
|
|
129
|
-
|
|
292
|
+
if (indizesForBlock) {
|
|
293
|
+
indizes.push({ blockName, ...indizesForBlock });
|
|
130
294
|
}
|
|
295
|
+
}
|
|
131
296
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
endIndex: number;
|
|
136
|
-
}[] = [];
|
|
297
|
+
if (indizes.length == 0) {
|
|
298
|
+
return [];
|
|
299
|
+
}
|
|
137
300
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
301
|
+
return filterOutDiagnosticsForInbuiltRuntimeFunctions(
|
|
302
|
+
defaultDiagnostics.filter(
|
|
303
|
+
({ start }) =>
|
|
304
|
+
start != undefined &&
|
|
305
|
+
indizes.some(
|
|
306
|
+
({ startIndex: blockStart, endIndex: blockEnd }) =>
|
|
307
|
+
start >= blockStart && start <= blockEnd,
|
|
308
|
+
),
|
|
309
|
+
),
|
|
310
|
+
fileContent,
|
|
311
|
+
);
|
|
312
|
+
}
|
|
143
313
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
314
|
+
function filterDiagnosticsForJsFile(
|
|
315
|
+
info: ts.server.PluginCreateInfo,
|
|
316
|
+
fileName: string,
|
|
317
|
+
defaultDiagnostics: (ts.Diagnostic | ts.DiagnosticWithLocation)[],
|
|
318
|
+
) {
|
|
319
|
+
if (!isInABrunoCollection(info, fileName)) {
|
|
320
|
+
return defaultDiagnostics;
|
|
321
|
+
} else if (fileName.includes(getTempJsFileBaseNameWithoutExtension())) {
|
|
322
|
+
// Filter out all diagnostics for temp js files.
|
|
323
|
+
return [];
|
|
324
|
+
}
|
|
148
325
|
|
|
149
|
-
|
|
150
|
-
return [];
|
|
151
|
-
}
|
|
326
|
+
const fileContent = getFileContent(info, fileName);
|
|
152
327
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
({ start }) =>
|
|
156
|
-
start != undefined &&
|
|
157
|
-
indizes.some(
|
|
158
|
-
({ startIndex: blockStart, endIndex: blockEnd }) =>
|
|
159
|
-
start >= blockStart && start <= blockEnd,
|
|
160
|
-
),
|
|
161
|
-
),
|
|
162
|
-
fileContent,
|
|
163
|
-
);
|
|
164
|
-
} else {
|
|
165
|
-
return defaultDiagnostics;
|
|
328
|
+
if (!fileContent) {
|
|
329
|
+
return [];
|
|
166
330
|
}
|
|
331
|
+
|
|
332
|
+
const filteredDiagnostics = filterOutDiagnosticsForInbuiltRuntimeFunctions(
|
|
333
|
+
defaultDiagnostics,
|
|
334
|
+
fileContent,
|
|
335
|
+
);
|
|
336
|
+
|
|
337
|
+
return filteredDiagnostics.map((diagnostic) => {
|
|
338
|
+
const { relatedInformation } = diagnostic;
|
|
339
|
+
|
|
340
|
+
const referencesTempJsFile =
|
|
341
|
+
relatedInformation &&
|
|
342
|
+
relatedInformation.some(
|
|
343
|
+
({ file }) =>
|
|
344
|
+
file &&
|
|
345
|
+
file.fileName.endsWith(
|
|
346
|
+
`${getTempJsFileBaseNameWithoutExtension()}.js`,
|
|
347
|
+
),
|
|
348
|
+
);
|
|
349
|
+
|
|
350
|
+
return referencesTempJsFile
|
|
351
|
+
? { ...diagnostic, relatedInformation: undefined }
|
|
352
|
+
: diagnostic;
|
|
353
|
+
});
|
|
167
354
|
}
|
|
168
355
|
|
|
169
356
|
function getCodeBlockStartAndEndIndex(
|
|
@@ -209,13 +396,6 @@ function getCodeBlockStartAndEndIndex(
|
|
|
209
396
|
};
|
|
210
397
|
}
|
|
211
398
|
|
|
212
|
-
function isJsFileFromBrunoCollection(
|
|
213
|
-
info: ts.server.PluginCreateInfo,
|
|
214
|
-
fileName: string,
|
|
215
|
-
) {
|
|
216
|
-
return extname(fileName) == ".js" && isInABrunoCollection(info, fileName);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
399
|
function filterOutDiagnosticsForInbuiltRuntimeFunctions(
|
|
220
400
|
diagnosticsToFilter: (ts.Diagnostic | ts.DiagnosticWithLocation)[],
|
|
221
401
|
fileContent: string,
|
|
@@ -225,7 +405,7 @@ function filterOutDiagnosticsForInbuiltRuntimeFunctions(
|
|
|
225
405
|
start != undefined &&
|
|
226
406
|
length != undefined &&
|
|
227
407
|
// Do not show diagnostics for functions that are provided by Bruno at runtime
|
|
228
|
-
!
|
|
408
|
+
!getNamesForInbuiltRuntimeVarsAndFunctions().includes(
|
|
229
409
|
fileContent.substring(start, start + length),
|
|
230
410
|
) &&
|
|
231
411
|
// Avoid showing incorrect error when using `require`
|
|
@@ -296,8 +476,12 @@ function isBrunoFile(fileName: string) {
|
|
|
296
476
|
return extname(fileName) == ".bru";
|
|
297
477
|
}
|
|
298
478
|
|
|
299
|
-
function
|
|
300
|
-
return
|
|
479
|
+
function getTempJsFileBaseNameWithoutExtension() {
|
|
480
|
+
return "__temp_bru_reference";
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
function getNamesForInbuiltRuntimeVarsAndFunctions() {
|
|
484
|
+
return ["bru", "req", "res", "test", "expect"];
|
|
301
485
|
}
|
|
302
486
|
|
|
303
487
|
enum TextBlockName {
|