@zentryc5t/ts-plugin-for-bruno 2.0.0 → 3.0.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 -3
- package/out/index.js +97 -47
- package/out/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +223 -80
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,22 +33,82 @@ 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
|
+
? { canRename: false, localizedErrorMessage: "You cannot rename elements that are provided by Bruno at runtime." }
|
|
65
|
+
: defaultRenameInfo;
|
|
66
|
+
};
|
|
67
|
+
proxy.findRenameLocations = (fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename) => {
|
|
68
|
+
const defaultRenameLocations = info.languageService.findRenameLocations(fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename &&
|
|
69
|
+
typeof providePrefixAndSuffixTextForRename != "boolean"
|
|
70
|
+
? providePrefixAndSuffixTextForRename
|
|
71
|
+
: {});
|
|
72
|
+
return defaultRenameLocations &&
|
|
73
|
+
isInABrunoCollection(info, fileName)
|
|
74
|
+
? defaultRenameLocations.filter(({ fileName: fileForRenameLocation }) => !fileForRenameLocation.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
75
|
+
: defaultRenameLocations;
|
|
76
|
+
};
|
|
77
|
+
proxy.findReferences = (fileName, position) => {
|
|
78
|
+
const defaultReferences = info.languageService.findReferences(fileName, position);
|
|
79
|
+
return defaultReferences && isInABrunoCollection(info, fileName)
|
|
80
|
+
? defaultReferences.filter(({ definition: { fileName: fileForDefinition } }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
81
|
+
: defaultReferences;
|
|
82
|
+
};
|
|
83
|
+
proxy.getDefinitionAtPosition = (fileName, position) => {
|
|
84
|
+
const defaultDefinitions = info.languageService.getDefinitionAtPosition(fileName, position);
|
|
85
|
+
return defaultDefinitions && isInABrunoCollection(info, fileName)
|
|
86
|
+
? defaultDefinitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
87
|
+
: defaultDefinitions;
|
|
88
|
+
};
|
|
89
|
+
proxy.getDefinitionAndBoundSpan = (fileName, position) => {
|
|
90
|
+
const defaultDefinition = info.languageService.getDefinitionAndBoundSpan(fileName, position);
|
|
91
|
+
return defaultDefinition &&
|
|
92
|
+
isInABrunoCollection(info, fileName) &&
|
|
93
|
+
defaultDefinition.definitions
|
|
94
|
+
? {
|
|
95
|
+
...defaultDefinition,
|
|
96
|
+
definitions: defaultDefinition.definitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension())),
|
|
97
|
+
}
|
|
98
|
+
: defaultDefinition;
|
|
99
|
+
};
|
|
100
|
+
proxy.getTypeDefinitionAtPosition = (fileName, position) => {
|
|
101
|
+
const defaultDefinitions = info.languageService.getDefinitionAtPosition(fileName, position);
|
|
102
|
+
return defaultDefinitions && isInABrunoCollection(info, fileName)
|
|
103
|
+
? defaultDefinitions.filter(({ fileName: fileForDefinition }) => !fileForDefinition.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
104
|
+
: defaultDefinitions;
|
|
105
|
+
};
|
|
106
|
+
proxy.getImplementationAtPosition = (fileName, position) => {
|
|
107
|
+
const defaultImplementations = info.languageService.getImplementationAtPosition(fileName, position);
|
|
108
|
+
return defaultImplementations &&
|
|
109
|
+
isInABrunoCollection(info, fileName)
|
|
110
|
+
? defaultImplementations.filter(({ fileName: fileForImplementation }) => !fileForImplementation.includes(getTempJsFileBaseNameWithoutExtension()))
|
|
111
|
+
: defaultImplementations;
|
|
55
112
|
};
|
|
56
113
|
return proxy;
|
|
57
114
|
}
|
|
@@ -60,38 +117,31 @@ function init(_modules) {
|
|
|
60
117
|
};
|
|
61
118
|
}
|
|
62
119
|
function filterDefaultDiagnostics(info, fileName, defaultDiagnostics) {
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return [];
|
|
67
|
-
}
|
|
68
|
-
const fileContent = getFileContent(info, fileName);
|
|
69
|
-
if (!fileContent) {
|
|
70
|
-
return [];
|
|
71
|
-
}
|
|
72
|
-
return filterOutDiagnosticsForInbuiltRuntimeFunctions(defaultDiagnostics, fileContent);
|
|
120
|
+
if (!isBrunoFile(fileName) &&
|
|
121
|
+
!fileName.includes(getTempJsFileBaseNameWithoutExtension())) {
|
|
122
|
+
return defaultDiagnostics;
|
|
73
123
|
}
|
|
74
|
-
else if (
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (
|
|
87
|
-
|
|
124
|
+
else if (fileName.includes(getTempJsFileBaseNameWithoutExtension()) &&
|
|
125
|
+
isInABrunoCollection(info, fileName)) {
|
|
126
|
+
// Filter out all diagnostics for temp js files.
|
|
127
|
+
return [];
|
|
128
|
+
}
|
|
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
|
-
|
|
93
|
-
return
|
|
140
|
+
if (indizes.length == 0) {
|
|
141
|
+
return [];
|
|
94
142
|
}
|
|
143
|
+
return filterOutDiagnosticsForInbuiltRuntimeFunctions(defaultDiagnostics.filter(({ start }) => start != undefined &&
|
|
144
|
+
indizes.some(({ startIndex: blockStart, endIndex: blockEnd }) => start >= blockStart && start <= blockEnd)), fileContent);
|
|
95
145
|
}
|
|
96
146
|
function getCodeBlockStartAndEndIndex(fullTextContent, blockName) {
|
|
97
147
|
const openingBracketChar = "{";
|
|
@@ -115,14 +165,11 @@ function getCodeBlockStartAndEndIndex(fullTextContent, blockName) {
|
|
|
115
165
|
endIndex: blockStartIndex + blockNodeInSubDocument.end,
|
|
116
166
|
};
|
|
117
167
|
}
|
|
118
|
-
function isJsFileFromBrunoCollection(info, fileName) {
|
|
119
|
-
return (0, path_1.extname)(fileName) == ".js" && isInABrunoCollection(info, fileName);
|
|
120
|
-
}
|
|
121
168
|
function filterOutDiagnosticsForInbuiltRuntimeFunctions(diagnosticsToFilter, fileContent) {
|
|
122
169
|
return diagnosticsToFilter.filter(({ start, length }) => start != undefined &&
|
|
123
170
|
length != undefined &&
|
|
124
171
|
// Do not show diagnostics for functions that are provided by Bruno at runtime
|
|
125
|
-
!
|
|
172
|
+
!getNamesForInbuiltRuntimeVarsAndFunctions().includes(fileContent.substring(start, start + length)) &&
|
|
126
173
|
// Avoid showing incorrect error when using `require`
|
|
127
174
|
// (the error seems to only occur for short periods of time when typescript type definitions have not been reloaded for a while)
|
|
128
175
|
fileContent.substring(start, start + length) != "require");
|
|
@@ -171,8 +218,11 @@ function isACollectionRootFolder(info, directoryPath) {
|
|
|
171
218
|
function isBrunoFile(fileName) {
|
|
172
219
|
return (0, path_1.extname)(fileName) == ".bru";
|
|
173
220
|
}
|
|
174
|
-
function
|
|
175
|
-
return
|
|
221
|
+
function getTempJsFileBaseNameWithoutExtension() {
|
|
222
|
+
return "__temp_bru_reference";
|
|
223
|
+
}
|
|
224
|
+
function getNamesForInbuiltRuntimeVarsAndFunctions() {
|
|
225
|
+
return ["bru", "req", "res", "test", "expect"];
|
|
176
226
|
}
|
|
177
227
|
var TextBlockName;
|
|
178
228
|
(function (TextBlockName) {
|
package/out/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,+
|
|
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.0",
|
|
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,16 +72,178 @@ 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;
|
|
96
|
+
};
|
|
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
|
+
? { canRename: false, localizedErrorMessage: "You cannot rename elements that are provided by Bruno at runtime." }
|
|
126
|
+
: defaultRenameInfo;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
proxy.findRenameLocations = (
|
|
130
|
+
fileName,
|
|
131
|
+
position,
|
|
132
|
+
findInStrings,
|
|
133
|
+
findInComments,
|
|
134
|
+
providePrefixAndSuffixTextForRename,
|
|
135
|
+
) => {
|
|
136
|
+
const defaultRenameLocations =
|
|
137
|
+
info.languageService.findRenameLocations(
|
|
138
|
+
fileName,
|
|
139
|
+
position,
|
|
140
|
+
findInStrings,
|
|
141
|
+
findInComments,
|
|
142
|
+
providePrefixAndSuffixTextForRename &&
|
|
143
|
+
typeof providePrefixAndSuffixTextForRename != "boolean"
|
|
144
|
+
? providePrefixAndSuffixTextForRename
|
|
145
|
+
: {},
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
return defaultRenameLocations &&
|
|
149
|
+
isInABrunoCollection(info, fileName)
|
|
150
|
+
? defaultRenameLocations.filter(
|
|
151
|
+
({ fileName: fileForRenameLocation }) =>
|
|
152
|
+
!fileForRenameLocation.includes(
|
|
153
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
154
|
+
),
|
|
155
|
+
)
|
|
156
|
+
: defaultRenameLocations;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
proxy.findReferences = (fileName, position) => {
|
|
160
|
+
const defaultReferences = info.languageService.findReferences(
|
|
161
|
+
fileName,
|
|
162
|
+
position,
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
return defaultReferences && isInABrunoCollection(info, fileName)
|
|
166
|
+
? defaultReferences.filter(
|
|
167
|
+
({ definition: { fileName: fileForDefinition } }) =>
|
|
168
|
+
!fileForDefinition.includes(
|
|
169
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
170
|
+
),
|
|
171
|
+
)
|
|
172
|
+
: defaultReferences;
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
proxy.getDefinitionAtPosition = (fileName, position) => {
|
|
176
|
+
const defaultDefinitions =
|
|
177
|
+
info.languageService.getDefinitionAtPosition(
|
|
178
|
+
fileName,
|
|
179
|
+
position,
|
|
180
|
+
);
|
|
181
|
+
|
|
182
|
+
return defaultDefinitions && isInABrunoCollection(info, fileName)
|
|
183
|
+
? defaultDefinitions.filter(
|
|
184
|
+
({ fileName: fileForDefinition }) =>
|
|
185
|
+
!fileForDefinition.includes(
|
|
186
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
187
|
+
),
|
|
188
|
+
)
|
|
189
|
+
: defaultDefinitions;
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
proxy.getDefinitionAndBoundSpan = (fileName, position) => {
|
|
193
|
+
const defaultDefinition =
|
|
194
|
+
info.languageService.getDefinitionAndBoundSpan(
|
|
195
|
+
fileName,
|
|
196
|
+
position,
|
|
197
|
+
);
|
|
198
|
+
|
|
199
|
+
return defaultDefinition &&
|
|
200
|
+
isInABrunoCollection(info, fileName) &&
|
|
201
|
+
defaultDefinition.definitions
|
|
202
|
+
? {
|
|
203
|
+
...defaultDefinition,
|
|
204
|
+
definitions: defaultDefinition.definitions.filter(
|
|
205
|
+
({ fileName: fileForDefinition }) =>
|
|
206
|
+
!fileForDefinition.includes(
|
|
207
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
208
|
+
),
|
|
209
|
+
),
|
|
210
|
+
}
|
|
211
|
+
: defaultDefinition;
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
proxy.getTypeDefinitionAtPosition = (fileName, position) => {
|
|
215
|
+
const defaultDefinitions =
|
|
216
|
+
info.languageService.getDefinitionAtPosition(
|
|
217
|
+
fileName,
|
|
218
|
+
position,
|
|
219
|
+
);
|
|
220
|
+
|
|
221
|
+
return defaultDefinitions && isInABrunoCollection(info, fileName)
|
|
222
|
+
? defaultDefinitions.filter(
|
|
223
|
+
({ fileName: fileForDefinition }) =>
|
|
224
|
+
!fileForDefinition.includes(
|
|
225
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
226
|
+
),
|
|
227
|
+
)
|
|
228
|
+
: defaultDefinitions;
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
proxy.getImplementationAtPosition = (fileName, position) => {
|
|
232
|
+
const defaultImplementations =
|
|
233
|
+
info.languageService.getImplementationAtPosition(
|
|
234
|
+
fileName,
|
|
235
|
+
position,
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
return defaultImplementations &&
|
|
239
|
+
isInABrunoCollection(info, fileName)
|
|
240
|
+
? defaultImplementations.filter(
|
|
241
|
+
({ fileName: fileForImplementation }) =>
|
|
242
|
+
!fileForImplementation.includes(
|
|
243
|
+
getTempJsFileBaseNameWithoutExtension(),
|
|
244
|
+
),
|
|
245
|
+
)
|
|
246
|
+
: defaultImplementations;
|
|
94
247
|
};
|
|
95
248
|
|
|
96
249
|
return proxy;
|
|
@@ -106,64 +259,57 @@ function filterDefaultDiagnostics(
|
|
|
106
259
|
fileName: string,
|
|
107
260
|
defaultDiagnostics: (ts.Diagnostic | ts.DiagnosticWithLocation)[],
|
|
108
261
|
) {
|
|
109
|
-
if (
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
262
|
+
if (
|
|
263
|
+
!isBrunoFile(fileName) &&
|
|
264
|
+
!fileName.includes(getTempJsFileBaseNameWithoutExtension())
|
|
265
|
+
) {
|
|
266
|
+
return defaultDiagnostics;
|
|
267
|
+
} else if (
|
|
268
|
+
fileName.includes(getTempJsFileBaseNameWithoutExtension()) &&
|
|
269
|
+
isInABrunoCollection(info, fileName)
|
|
270
|
+
) {
|
|
271
|
+
// Filter out all diagnostics for temp js files.
|
|
272
|
+
return [];
|
|
273
|
+
}
|
|
114
274
|
|
|
115
|
-
|
|
275
|
+
const fileContent = getFileContent(info, fileName);
|
|
116
276
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
277
|
+
if (!fileContent) {
|
|
278
|
+
return [];
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
const indizes: {
|
|
282
|
+
blockName: string;
|
|
283
|
+
startIndex: number;
|
|
284
|
+
endIndex: number;
|
|
285
|
+
}[] = [];
|
|
120
286
|
|
|
121
|
-
|
|
122
|
-
|
|
287
|
+
for (const blockName of Object.values(TextBlockName)) {
|
|
288
|
+
const indizesForBlock = getCodeBlockStartAndEndIndex(
|
|
123
289
|
fileContent,
|
|
290
|
+
blockName,
|
|
124
291
|
);
|
|
125
|
-
} else if (isBrunoFile(fileName)) {
|
|
126
|
-
const fileContent = getFileContent(info, fileName);
|
|
127
|
-
|
|
128
|
-
if (!fileContent) {
|
|
129
|
-
return [];
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
const indizes: {
|
|
133
|
-
blockName: string;
|
|
134
|
-
startIndex: number;
|
|
135
|
-
endIndex: number;
|
|
136
|
-
}[] = [];
|
|
137
|
-
|
|
138
|
-
for (const blockName of Object.values(TextBlockName)) {
|
|
139
|
-
const indizesForBlock = getCodeBlockStartAndEndIndex(
|
|
140
|
-
fileContent,
|
|
141
|
-
blockName,
|
|
142
|
-
);
|
|
143
|
-
|
|
144
|
-
if (indizesForBlock) {
|
|
145
|
-
indizes.push({ blockName, ...indizesForBlock });
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
292
|
|
|
149
|
-
if (
|
|
150
|
-
|
|
293
|
+
if (indizesForBlock) {
|
|
294
|
+
indizes.push({ blockName, ...indizesForBlock });
|
|
151
295
|
}
|
|
296
|
+
}
|
|
152
297
|
|
|
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;
|
|
298
|
+
if (indizes.length == 0) {
|
|
299
|
+
return [];
|
|
166
300
|
}
|
|
301
|
+
|
|
302
|
+
return filterOutDiagnosticsForInbuiltRuntimeFunctions(
|
|
303
|
+
defaultDiagnostics.filter(
|
|
304
|
+
({ start }) =>
|
|
305
|
+
start != undefined &&
|
|
306
|
+
indizes.some(
|
|
307
|
+
({ startIndex: blockStart, endIndex: blockEnd }) =>
|
|
308
|
+
start >= blockStart && start <= blockEnd,
|
|
309
|
+
),
|
|
310
|
+
),
|
|
311
|
+
fileContent,
|
|
312
|
+
);
|
|
167
313
|
}
|
|
168
314
|
|
|
169
315
|
function getCodeBlockStartAndEndIndex(
|
|
@@ -209,13 +355,6 @@ function getCodeBlockStartAndEndIndex(
|
|
|
209
355
|
};
|
|
210
356
|
}
|
|
211
357
|
|
|
212
|
-
function isJsFileFromBrunoCollection(
|
|
213
|
-
info: ts.server.PluginCreateInfo,
|
|
214
|
-
fileName: string,
|
|
215
|
-
) {
|
|
216
|
-
return extname(fileName) == ".js" && isInABrunoCollection(info, fileName);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
358
|
function filterOutDiagnosticsForInbuiltRuntimeFunctions(
|
|
220
359
|
diagnosticsToFilter: (ts.Diagnostic | ts.DiagnosticWithLocation)[],
|
|
221
360
|
fileContent: string,
|
|
@@ -225,7 +364,7 @@ function filterOutDiagnosticsForInbuiltRuntimeFunctions(
|
|
|
225
364
|
start != undefined &&
|
|
226
365
|
length != undefined &&
|
|
227
366
|
// Do not show diagnostics for functions that are provided by Bruno at runtime
|
|
228
|
-
!
|
|
367
|
+
!getNamesForInbuiltRuntimeVarsAndFunctions().includes(
|
|
229
368
|
fileContent.substring(start, start + length),
|
|
230
369
|
) &&
|
|
231
370
|
// Avoid showing incorrect error when using `require`
|
|
@@ -296,8 +435,12 @@ function isBrunoFile(fileName: string) {
|
|
|
296
435
|
return extname(fileName) == ".bru";
|
|
297
436
|
}
|
|
298
437
|
|
|
299
|
-
function
|
|
300
|
-
return
|
|
438
|
+
function getTempJsFileBaseNameWithoutExtension() {
|
|
439
|
+
return "__temp_bru_reference";
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
function getNamesForInbuiltRuntimeVarsAndFunctions() {
|
|
443
|
+
return ["bru", "req", "res", "test", "expect"];
|
|
301
444
|
}
|
|
302
445
|
|
|
303
446
|
enum TextBlockName {
|