@zentryc5t/ts-plugin-for-bruno 3.1.0 → 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.
Files changed (54) hide show
  1. package/README.md +4 -0
  2. package/out/codeBlocks/bruCodeBlocks.js +71 -0
  3. package/out/codeBlocks/bruCodeBlocks.js.map +1 -0
  4. package/out/codeChanges/codeChanges.js +144 -0
  5. package/out/codeChanges/codeChanges.js.map +1 -0
  6. package/out/collection/collectionFormat.js +69 -0
  7. package/out/collection/collectionFormat.js.map +1 -0
  8. package/out/constants.js +36 -0
  9. package/out/constants.js.map +1 -0
  10. package/out/diagnostics/filterDefaultDiagnostics.js +81 -0
  11. package/out/diagnostics/filterDefaultDiagnostics.js.map +1 -0
  12. package/out/fileContent.js +28 -0
  13. package/out/fileContent.js.map +1 -0
  14. package/out/fileTypes.js +16 -0
  15. package/out/fileTypes.js.map +1 -0
  16. package/out/index.js +18 -297
  17. package/out/index.js.map +1 -1
  18. package/out/languageService/codeChangeOverrides.js +40 -0
  19. package/out/languageService/codeChangeOverrides.js.map +1 -0
  20. package/out/languageService/diagnosticsOverrides.js +41 -0
  21. package/out/languageService/diagnosticsOverrides.js.map +1 -0
  22. package/out/languageService/formattingOverrides.js +18 -0
  23. package/out/languageService/formattingOverrides.js.map +1 -0
  24. package/out/languageService/navigationOverrides.js +98 -0
  25. package/out/languageService/navigationOverrides.js.map +1 -0
  26. package/out/pluginConfiguration.js +29 -0
  27. package/out/pluginConfiguration.js.map +1 -0
  28. package/out/yamlFiles/getIndentationOfScripts.js +24 -0
  29. package/out/yamlFiles/getIndentationOfScripts.js.map +1 -0
  30. package/out/yamlFiles/maskYamlFileContent.js +126 -0
  31. package/out/yamlFiles/maskYamlFileContent.js.map +1 -0
  32. package/out/yamlFiles/maskYamlFilesForTypescriptServer.js +94 -0
  33. package/out/yamlFiles/maskYamlFilesForTypescriptServer.js.map +1 -0
  34. package/package.json +3 -2
  35. package/src/codeBlocks/bruCodeBlocks.ts +66 -0
  36. package/src/codeChanges/codeChanges.ts +182 -0
  37. package/src/collection/collectionFormat.ts +96 -0
  38. package/src/constants.test.ts +12 -0
  39. package/src/constants.ts +31 -0
  40. package/src/diagnostics/filterDefaultDiagnostics.ts +145 -0
  41. package/src/fileContent.ts +38 -0
  42. package/src/fileTypes.ts +13 -0
  43. package/src/index.test.ts +329 -0
  44. package/src/index.ts +24 -499
  45. package/src/languageService/codeChangeOverrides.ts +90 -0
  46. package/src/languageService/diagnosticsOverrides.ts +65 -0
  47. package/src/languageService/formattingOverrides.ts +42 -0
  48. package/src/languageService/navigationOverrides.ts +201 -0
  49. package/src/pluginConfiguration.ts +34 -0
  50. package/src/yamlFiles/getIndentationOfScripts.ts +34 -0
  51. package/src/yamlFiles/maskYamlFileContent.test.ts +213 -0
  52. package/src/yamlFiles/maskYamlFileContent.ts +179 -0
  53. package/src/yamlFiles/maskYamlFilesForTypescriptServer.ts +85 -0
  54. package/tsconfig.json +2 -1
package/README.md CHANGED
@@ -14,3 +14,7 @@ For using the local TS plugin within the VS Code extension, please follow these
14
14
 
15
15
  - Replace the `name` in the base [package.json](../package.json) for the `typescriptServerPlugins` contibution field with the name `typescript-for-bruno`.
16
16
  - Use the launch configuration `Run Extension With local TS plugin` for launching the extension
17
+
18
+ ## Configuration
19
+
20
+ Scripts within Yaml collection files are only handled, if the plugin is configured with `{ "yamlCollectionSupport": true }` (e.g. via the `configurePlugin` function of the API of the VS Code Typescript extension). Otherwise, the Typescript server does not see any content of Yaml files.
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getCodeBlockIndizesForBruFile = getCodeBlockIndizesForBruFile;
37
+ const ts = __importStar(require("typescript/lib/tsserverlibrary"));
38
+ const constants_1 = require("../constants");
39
+ function getCodeBlockIndizesForBruFile(fileContent) {
40
+ const indizes = [];
41
+ for (const blockName of Object.values(constants_1.CodeBlockName)) {
42
+ const indizesForBlock = getCodeBlockStartAndEndIndex(fileContent, blockName);
43
+ if (indizesForBlock) {
44
+ indizes.push({ blockName, ...indizesForBlock });
45
+ }
46
+ }
47
+ return indizes;
48
+ }
49
+ function getCodeBlockStartAndEndIndex(fullTextContent, blockName) {
50
+ const openingBracketChar = "{";
51
+ const startPattern = new RegExp(`^\\s*${blockName}\\s*${openingBracketChar}\\s*$`, "m");
52
+ const startMatches = startPattern.exec(fullTextContent);
53
+ if (!startMatches || startMatches.length == 0) {
54
+ return undefined;
55
+ }
56
+ const blockStartIndex = startMatches.index;
57
+ const remainingDoc = fullTextContent.substring(blockStartIndex);
58
+ const sourceFile = ts.createSourceFile("test.js", remainingDoc, ts.ScriptTarget.ES2020);
59
+ const blockNodeInSubDocument = sourceFile
60
+ .getChildAt(0, sourceFile)
61
+ .getChildren(sourceFile)
62
+ .find(({ kind }) => kind == ts.SyntaxKind.Block);
63
+ if (!blockNodeInSubDocument) {
64
+ throw new Error(`Could not find code block within given subdocument: ${remainingDoc}`);
65
+ }
66
+ return {
67
+ startIndex: blockStartIndex + startMatches[0].indexOf(openingBracketChar) + 1,
68
+ endIndex: blockStartIndex + blockNodeInSubDocument.end,
69
+ };
70
+ }
71
+ //# sourceMappingURL=bruCodeBlocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bruCodeBlocks.js","sourceRoot":"","sources":["../../src/codeBlocks/bruCodeBlocks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,sEAmBC;AAtBD,mEAAqD;AACrD,4CAA6C;AAE7C,SAAgB,6BAA6B,CAAC,WAAmB;IAC7D,MAAM,OAAO,GAIP,EAAE,CAAC;IAET,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,yBAAa,CAAC,EAAE,CAAC;QACnD,MAAM,eAAe,GAAG,4BAA4B,CAChD,WAAW,EACX,SAAS,CACZ,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,4BAA4B,CACjC,eAAuB,EACvB,SAAwB;IAExB,MAAM,kBAAkB,GAAG,GAAG,CAAC;IAE/B,MAAM,YAAY,GAAG,IAAI,MAAM,CAC3B,QAAQ,SAAS,OAAO,kBAAkB,OAAO,EACjD,GAAG,CACN,CAAC;IACF,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAExD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3C,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAClC,SAAS,EACT,YAAY,EACZ,EAAE,CAAC,YAAY,CAAC,MAAM,CACzB,CAAC;IAEF,MAAM,sBAAsB,GAAI,UAAsB;SACjD,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC;SACzB,WAAW,CAAC,UAAU,CAAC;SACvB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAErD,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACX,uDAAuD,YAAY,EAAE,CACxE,CAAC;IACN,CAAC;IAED,OAAO;QACH,UAAU,EACN,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC;QACrE,QAAQ,EAAE,eAAe,GAAG,sBAAsB,CAAC,GAAG;KACzD,CAAC;AACN,CAAC"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getFormatOptionsForFile = getFormatOptionsForFile;
37
+ exports.createCheckForChangesWithinCodeBlocks = createCheckForChangesWithinCodeBlocks;
38
+ const ts = __importStar(require("typescript/lib/tsserverlibrary"));
39
+ const bruCodeBlocks_1 = require("../codeBlocks/bruCodeBlocks");
40
+ const collectionFormat_1 = require("../collection/collectionFormat");
41
+ const fileContent_1 = require("../fileContent");
42
+ const fileTypes_1 = require("../fileTypes");
43
+ const getIndentationOfScripts_1 = require("../yamlFiles/getIndentationOfScripts");
44
+ const maskYamlFileContent_1 = require("../yamlFiles/maskYamlFileContent");
45
+ /**
46
+ * The Typescript server indents the top-level statements of scripts in Yaml files relative to column 0,
47
+ * since each script is wrapped in a block that is not indented (see `maskYamlCollectionFileContent`).
48
+ * Inserted lines (e.g. when extracting a constant) would therefore end the Yaml block scalar.
49
+ * To avoid this, the base indentation is set to the indentation of the scripts minus one indentation level for the wrapping block.
50
+ */
51
+ function getFormatOptionsForFile(info, fileName, formatOptions, range) {
52
+ if (!(0, collectionFormat_1.isFileFromYamlCollection)(info, fileName)) {
53
+ return formatOptions;
54
+ }
55
+ const originalContent = (0, fileContent_1.getOriginalFileContent)(info, fileName);
56
+ const scriptIndentation = originalContent
57
+ ? (0, getIndentationOfScripts_1.getIndentationOfScripts)(fileName, originalContent, range)
58
+ : undefined;
59
+ const indentSize = formatOptions.indentSize ??
60
+ ts.getDefaultFormatCodeSettings().indentSize;
61
+ if (scriptIndentation == undefined || scriptIndentation < indentSize) {
62
+ return formatOptions;
63
+ }
64
+ return {
65
+ ...formatOptions,
66
+ baseIndentSize: scriptIndentation - indentSize,
67
+ // Tabs are not allowed for indenting Yaml content.
68
+ convertTabsToSpaces: true,
69
+ };
70
+ }
71
+ /**
72
+ * Returns a function that checks whether the given changes only modify the code within code blocks, if they affect '.bru' or '.yml' files.
73
+ *
74
+ * The returned function determines the data for the original content of each file only once,
75
+ * since the changes of many code fixes usually affect the same file.
76
+ */
77
+ function createCheckForChangesWithinCodeBlocks(info) {
78
+ const originalFiles = new Map();
79
+ return (changes) => changes.every(({ fileName, textChanges, isNewFile }) => {
80
+ if (!(0, fileTypes_1.hasEmbeddedCodeBlocks)(fileName)) {
81
+ return true;
82
+ }
83
+ else if (isNewFile) {
84
+ return false;
85
+ }
86
+ if (!originalFiles.has(fileName)) {
87
+ originalFiles.set(fileName, getOriginalFile(info, fileName));
88
+ }
89
+ const originalFile = originalFiles.get(fileName);
90
+ if (!originalFile) {
91
+ return false;
92
+ }
93
+ const { content, contentOutsideOfCode, getCodeRanges } = originalFile;
94
+ const modifiedContent = applyTextChanges(content, textChanges);
95
+ // Comparing the content outside of code blocks also detects changes that end a code block early,
96
+ // e.g. an inserted line within a Yaml block scalar that is not indented enough.
97
+ const modifiedContentOutsideOfCode = getContentOutsideOfCodeRanges(modifiedContent, getCodeRanges(modifiedContent));
98
+ return (contentOutsideOfCode.length ==
99
+ modifiedContentOutsideOfCode.length &&
100
+ contentOutsideOfCode.every((part, index) => part == modifiedContentOutsideOfCode[index]));
101
+ });
102
+ }
103
+ function getOriginalFile(info, fileName) {
104
+ const content = (0, fileContent_1.getOriginalFileContent)(info, fileName);
105
+ if (!content) {
106
+ return undefined;
107
+ }
108
+ const getCodeRanges = (0, fileTypes_1.isBruFile)(fileName)
109
+ ? getCodeRangesForBruFile
110
+ : (0, collectionFormat_1.isFileFromYamlCollection)(info, fileName)
111
+ ? (fileContent) => (0, maskYamlFileContent_1.getScriptContentRanges)(fileName, fileContent)
112
+ : () => [];
113
+ return {
114
+ content,
115
+ contentOutsideOfCode: getContentOutsideOfCodeRanges(content, getCodeRanges(content)),
116
+ getCodeRanges,
117
+ };
118
+ }
119
+ function getCodeRangesForBruFile(fileContent) {
120
+ return (0, bruCodeBlocks_1.getCodeBlockIndizesForBruFile)(fileContent)
121
+ .map(({ startIndex, endIndex }) => ({
122
+ start: startIndex,
123
+ end: endIndex - 1, // index of the closing bracket
124
+ }))
125
+ .sort(({ start: start1 }, { start: start2 }) => start1 - start2);
126
+ }
127
+ function getContentOutsideOfCodeRanges(fileContent, codeRanges) {
128
+ return codeRanges
129
+ .map(({ start }, index) => fileContent.substring(index == 0 ? 0 : codeRanges[index - 1].end, start))
130
+ .concat(fileContent.substring(codeRanges.length > 0
131
+ ? codeRanges[codeRanges.length - 1].end
132
+ : 0));
133
+ }
134
+ /**
135
+ * The text changes for a file do not overlap and their spans refer to the original content.
136
+ */
137
+ function applyTextChanges(fileContent, textChanges) {
138
+ return [...textChanges]
139
+ .sort(({ span: { start: start1 } }, { span: { start: start2 } }) => start2 - start1)
140
+ .reduce((content, { span: { start, length }, newText }) => content.substring(0, start) +
141
+ newText +
142
+ content.substring(start + length), fileContent);
143
+ }
144
+ //# sourceMappingURL=codeChanges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeChanges.js","sourceRoot":"","sources":["../../src/codeChanges/codeChanges.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isInABrunoCollection = isInABrunoCollection;
4
+ exports.isFileFromYamlCollection = isFileFromYamlCollection;
5
+ const path_1 = require("path");
6
+ const constants_1 = require("../constants");
7
+ function isInABrunoCollection(info, fileName) {
8
+ return getFormatOfContainingCollection(info, fileName) != undefined;
9
+ }
10
+ /**
11
+ * Collection files in the Yaml format always use the extension `.yml`.
12
+ */
13
+ function isFileFromYamlCollection(info, fileName) {
14
+ return ((0, path_1.extname)(fileName) == ".yml" &&
15
+ getFormatOfContainingCollection(info, fileName) == constants_1.CollectionFormat.Yaml);
16
+ }
17
+ function getFormatOfContainingCollection(info, fileName) {
18
+ let currentDirectory = (0, path_1.dirname)(fileName);
19
+ let format = getFormatIfCollectionRootFolder(info, currentDirectory);
20
+ while (info.serverHost.directoryExists(currentDirectory) &&
21
+ !format &&
22
+ (0, path_1.dirname)(currentDirectory) != currentDirectory // dirname of a base folder in the file system seems to return the input folder again
23
+ ) {
24
+ currentDirectory = (0, path_1.dirname)(currentDirectory);
25
+ format = getFormatIfCollectionRootFolder(info, currentDirectory);
26
+ }
27
+ return format;
28
+ }
29
+ function getFormatIfCollectionRootFolder(info, directoryPath) {
30
+ const collectionRootFile = info.serverHost
31
+ .readDirectory(directoryPath, undefined, undefined, undefined, 1)
32
+ .find((fileName) => {
33
+ const isBruCollectionRootFile = fileName.endsWith("bruno.json");
34
+ const isYamlCollectionRootFile = fileName.endsWith("opencollection.yml");
35
+ if (!isBruCollectionRootFile && !isYamlCollectionRootFile) {
36
+ return false;
37
+ }
38
+ const content = info.languageServiceHost.readFile(fileName);
39
+ if (!content) {
40
+ return false;
41
+ }
42
+ return isBruCollectionRootFile
43
+ ? isBrunoJsonForCollection(content)
44
+ : isOpenCollectionRootFileContent(content);
45
+ });
46
+ if (!collectionRootFile) {
47
+ return undefined;
48
+ }
49
+ return collectionRootFile.endsWith("bruno.json")
50
+ ? constants_1.CollectionFormat.Bru
51
+ : constants_1.CollectionFormat.Yaml;
52
+ }
53
+ function isBrunoJsonForCollection(content) {
54
+ try {
55
+ const parsedContent = JSON.parse(content);
56
+ return parsedContent && parsedContent.type == "collection";
57
+ }
58
+ catch {
59
+ return false;
60
+ }
61
+ }
62
+ /**
63
+ * Request, folder and environment files can be named `opencollection.yml` as well.
64
+ * Only the actual collection root file defines the top-level key `opencollection`.
65
+ */
66
+ function isOpenCollectionRootFileContent(content) {
67
+ return /^opencollection\s*:/m.test(content);
68
+ }
69
+ //# sourceMappingURL=collectionFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectionFormat.js","sourceRoot":"","sources":["../../src/collection/collectionFormat.ts"],"names":[],"mappings":";;AAIA,oDAKC;AAKD,4DAQC;AAtBD,+BAAwC;AAExC,4CAAgD;AAEhD,SAAgB,oBAAoB,CAChC,IAAgC,EAChC,QAAgB;IAEhB,OAAO,+BAA+B,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CACpC,IAAgC,EAChC,QAAgB;IAEhB,OAAO,CACH,IAAA,cAAO,EAAC,QAAQ,CAAC,IAAI,MAAM;QAC3B,+BAA+B,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,4BAAgB,CAAC,IAAI,CAC3E,CAAC;AACN,CAAC;AAED,SAAS,+BAA+B,CACpC,IAAgC,EAChC,QAAgB;IAEhB,IAAI,gBAAgB,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,MAAM,GAAG,+BAA+B,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAErE,OACI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,CAAC;QACjD,CAAC,MAAM;QACP,IAAA,cAAO,EAAC,gBAAgB,CAAC,IAAI,gBAAgB,CAAC,qFAAqF;MACrI,CAAC;QACC,gBAAgB,GAAG,IAAA,cAAO,EAAC,gBAAgB,CAAC,CAAC;QAC7C,MAAM,GAAG,+BAA+B,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,+BAA+B,CACpC,IAAgC,EAChC,aAAqB;IAErB,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU;SACrC,aAAa,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;SAChE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACf,MAAM,uBAAuB,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAChE,MAAM,wBAAwB,GAC1B,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAE5C,IAAI,CAAC,uBAAuB,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,uBAAuB;YAC1B,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC;YACnC,CAAC,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEP,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5C,CAAC,CAAC,4BAAgB,CAAC,GAAG;QACtB,CAAC,CAAC,4BAAgB,CAAC,IAAI,CAAC;AAChC,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe;IAC7C,IAAI,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CACR,CAAC;QAEjC,OAAO,aAAa,IAAI,aAAa,CAAC,IAAI,IAAI,YAAY,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,+BAA+B,CAAC,OAAe;IACpD,OAAO,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScriptType = exports.CodeBlockName = exports.CollectionFormat = void 0;
4
+ exports.getTempJsFileBaseNameWithoutExtension = getTempJsFileBaseNameWithoutExtension;
5
+ exports.getNamesForInbuiltRuntimeVarsAndFunctions = getNamesForInbuiltRuntimeVarsAndFunctions;
6
+ var CollectionFormat;
7
+ (function (CollectionFormat) {
8
+ CollectionFormat["Bru"] = "bru";
9
+ CollectionFormat["Yaml"] = "yaml";
10
+ })(CollectionFormat || (exports.CollectionFormat = CollectionFormat = {}));
11
+ var CodeBlockName;
12
+ (function (CodeBlockName) {
13
+ CodeBlockName["Tests"] = "tests";
14
+ CodeBlockName["PreRequestScript"] = "script:pre-request";
15
+ CodeBlockName["PostResponseScript"] = "script:post-response";
16
+ CodeBlockName["GrpcBeforeCallStartScript"] = "script:grpc:before-call-start";
17
+ CodeBlockName["GrpcBeforeMessageSendScript"] = "script:grpc:before-message-send";
18
+ CodeBlockName["GrpcAfterMessageReceiveScript"] = "script:grpc:after-message-receive";
19
+ CodeBlockName["GrpcAfterCallEndScript"] = "script:grpc:after-call-end";
20
+ })(CodeBlockName || (exports.CodeBlockName = CodeBlockName = {}));
21
+ function getTempJsFileBaseNameWithoutExtension() {
22
+ return "__temp_bru_reference";
23
+ }
24
+ function getNamesForInbuiltRuntimeVarsAndFunctions() {
25
+ return ["bru", "req", "res", "test", "expect"];
26
+ }
27
+ /**
28
+ * Same as `ScriptType` for Yaml files in the shared folder of the extension.
29
+ */
30
+ var ScriptType;
31
+ (function (ScriptType) {
32
+ ScriptType["BeforeRequest"] = "before-request";
33
+ ScriptType["AfterResponse"] = "after-response";
34
+ ScriptType["Tests"] = "tests";
35
+ })(ScriptType || (exports.ScriptType = ScriptType = {}));
36
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAeA,sFAEC;AAED,8FAEC;AArBD,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,iCAAa,CAAA;AACjB,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B;AAED,IAAY,aAQX;AARD,WAAY,aAAa;IACrB,gCAAe,CAAA;IACf,wDAAuC,CAAA;IACvC,4DAA2C,CAAA;IAC3C,4EAA2D,CAAA;IAC3D,gFAA+D,CAAA;IAC/D,oFAAmE,CAAA;IACnE,sEAAqD,CAAA;AACzD,CAAC,EARW,aAAa,6BAAb,aAAa,QAQxB;AAED,SAAgB,qCAAqC;IACjD,OAAO,sBAAsB,CAAC;AAClC,CAAC;AAED,SAAgB,yCAAyC;IACrD,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,8CAAgC,CAAA;IAChC,8CAAgC,CAAA;IAChC,6BAAe,CAAA;AACnB,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterDefaultDiagnostics = filterDefaultDiagnostics;
4
+ const path_1 = require("path");
5
+ const bruCodeBlocks_1 = require("../codeBlocks/bruCodeBlocks");
6
+ const collectionFormat_1 = require("../collection/collectionFormat");
7
+ const constants_1 = require("../constants");
8
+ const fileContent_1 = require("../fileContent");
9
+ const fileTypes_1 = require("../fileTypes");
10
+ function filterDefaultDiagnostics(info, fileName, defaultDiagnostics) {
11
+ if ((0, fileTypes_1.isYamlFile)(fileName)) {
12
+ return filterDiagnosticsForYamlFile(info, fileName, defaultDiagnostics);
13
+ }
14
+ else if (!(0, fileTypes_1.isBruFile)(fileName)) {
15
+ return (0, path_1.extname)(fileName) == ".js"
16
+ ? filterDiagnosticsForJsFile(info, fileName, defaultDiagnostics)
17
+ : defaultDiagnostics;
18
+ }
19
+ const fileContent = (0, fileContent_1.getFileContent)(info, fileName);
20
+ if (!fileContent) {
21
+ return [];
22
+ }
23
+ const indizes = (0, bruCodeBlocks_1.getCodeBlockIndizesForBruFile)(fileContent);
24
+ if (indizes.length == 0) {
25
+ return [];
26
+ }
27
+ return filterOutDiagnosticsForInbuiltRuntimeFunctions(defaultDiagnostics.filter(({ start }) => start != undefined &&
28
+ indizes.some(({ startIndex: blockStart, endIndex: blockEnd }) => start >= blockStart && start <= blockEnd)), fileContent);
29
+ }
30
+ /**
31
+ * The Typescript server only sees the code of scripts within Yaml files (see `maskYamlFilesForTypescriptServer`).
32
+ * Therefore, all diagnostics are already located within code blocks.
33
+ */
34
+ function filterDiagnosticsForYamlFile(info, fileName, defaultDiagnostics) {
35
+ const fileContent = (0, fileContent_1.getFileContent)(info, fileName);
36
+ return fileContent
37
+ ? filterOutDiagnosticsForInbuiltRuntimeFunctions(defaultDiagnostics, fileContent)
38
+ : [];
39
+ }
40
+ function filterDiagnosticsForJsFile(info, fileName, defaultDiagnostics) {
41
+ if (fileName.includes((0, constants_1.getTempJsFileBaseNameWithoutExtension)())) {
42
+ // Filter out all diagnostics for temp js files.
43
+ return [];
44
+ }
45
+ else if (!(0, collectionFormat_1.isInABrunoCollection)(info, fileName)) {
46
+ return defaultDiagnostics;
47
+ }
48
+ const fileContent = (0, fileContent_1.getFileContent)(info, fileName);
49
+ if (!fileContent) {
50
+ return [];
51
+ }
52
+ const filteredDiagnostics = filterOutDiagnosticsForInbuiltRuntimeFunctions(defaultDiagnostics, fileContent);
53
+ return filteredDiagnostics.map((diagnostic) => {
54
+ const { relatedInformation } = diagnostic;
55
+ const referencesTempJsFile = relatedInformation &&
56
+ relatedInformation.some(({ file }) => file &&
57
+ file.fileName.endsWith(`${(0, constants_1.getTempJsFileBaseNameWithoutExtension)()}.js`));
58
+ return referencesTempJsFile
59
+ ? { ...diagnostic, relatedInformation: undefined }
60
+ : diagnostic;
61
+ });
62
+ }
63
+ function filterOutDiagnosticsForInbuiltRuntimeFunctions(diagnosticsToFilter, fileContent) {
64
+ return filterOutMisleadingDiagnosticsForOtherTestFrameworks(diagnosticsToFilter).filter(({ start, length }) => start != undefined &&
65
+ length != undefined &&
66
+ // Do not show diagnostics for functions that are provided by Bruno at runtime
67
+ !(0, constants_1.getNamesForInbuiltRuntimeVarsAndFunctions)().includes(fileContent.substring(start, start + length)) &&
68
+ // Avoid showing incorrect error when using `require`
69
+ // (the error seems to only occur for short periods of time when typescript type definitions have not been reloaded for a while)
70
+ fileContent.substring(start, start + length) != "require");
71
+ }
72
+ function filterOutMisleadingDiagnosticsForOtherTestFrameworks(diagnostics) {
73
+ return diagnostics.filter(({ code, messageText }) => {
74
+ const errorText = typeof messageText == "string"
75
+ ? messageText
76
+ : messageText.messageText;
77
+ // When using global type definitions for Jest, the TS server expects every `expect` statement to use the matchers for Jest.
78
+ return code != 2_339 || !errorText.includes("JestMatchers<any>");
79
+ });
80
+ }
81
+ //# sourceMappingURL=filterDefaultDiagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterDefaultDiagnostics.js","sourceRoot":"","sources":["../../src/diagnostics/filterDefaultDiagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.originalSnapshotGettersForHosts = void 0;
4
+ exports.getFileContent = getFileContent;
5
+ exports.getOriginalFileContent = getOriginalFileContent;
6
+ exports.originalSnapshotGettersForHosts = new WeakMap();
7
+ function getFileContent(info, fileName) {
8
+ const scriptSnapshot = info.languageServiceHost.getScriptSnapshot(fileName);
9
+ if (scriptSnapshot) {
10
+ return scriptSnapshot.getText(0, scriptSnapshot.getLength());
11
+ }
12
+ else {
13
+ return info.languageServiceHost.readFile(fileName);
14
+ }
15
+ }
16
+ /**
17
+ * For Yaml files, the content returned by the language service host is masked (see `maskYamlFilesForTypescriptServer`).
18
+ */
19
+ function getOriginalFileContent(info, fileName) {
20
+ const getOriginalSnapshot = exports.originalSnapshotGettersForHosts.get(info.languageServiceHost);
21
+ const scriptSnapshot = getOriginalSnapshot
22
+ ? getOriginalSnapshot(fileName)
23
+ : info.languageServiceHost.getScriptSnapshot(fileName);
24
+ return scriptSnapshot
25
+ ? scriptSnapshot.getText(0, scriptSnapshot.getLength())
26
+ : info.languageServiceHost.readFile(fileName);
27
+ }
28
+ //# sourceMappingURL=fileContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileContent.js","sourceRoot":"","sources":["../src/fileContent.ts"],"names":[],"mappings":";;;AAOA,wCAWC;AAKD,wDAcC;AAnCY,QAAA,+BAA+B,GAAG,IAAI,OAAO,EAGvD,CAAC;AAEJ,SAAgB,cAAc,CAC1B,IAAgC,EAChC,QAAgB;IAEhB,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAE5E,IAAI,cAAc,EAAE,CAAC;QACjB,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAClC,IAAgC,EAChC,QAAgB;IAEhB,MAAM,mBAAmB,GAAG,uCAA+B,CAAC,GAAG,CAC3D,IAAI,CAAC,mBAAmB,CAC3B,CAAC;IACF,MAAM,cAAc,GAAG,mBAAmB;QACtC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAE3D,OAAO,cAAc;QACjB,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC;QACvD,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasEmbeddedCodeBlocks = hasEmbeddedCodeBlocks;
4
+ exports.isBruFile = isBruFile;
5
+ exports.isYamlFile = isYamlFile;
6
+ const path_1 = require("path");
7
+ function hasEmbeddedCodeBlocks(fileName) {
8
+ return isBruFile(fileName) || isYamlFile(fileName);
9
+ }
10
+ function isBruFile(fileName) {
11
+ return (0, path_1.extname)(fileName) == ".bru";
12
+ }
13
+ function isYamlFile(fileName) {
14
+ return [".yml", ".yaml"].includes((0, path_1.extname)(fileName));
15
+ }
16
+ //# sourceMappingURL=fileTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileTypes.js","sourceRoot":"","sources":["../src/fileTypes.ts"],"names":[],"mappings":";;AAEA,sDAEC;AAED,8BAEC;AAED,gCAEC;AAZD,+BAA+B;AAE/B,SAAgB,qBAAqB,CAAC,QAAgB;IAClD,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,SAAS,CAAC,QAAgB;IACtC,OAAO,IAAA,cAAO,EAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;AACvC,CAAC;AAED,SAAgB,UAAU,CAAC,QAAgB;IACvC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,CAAC"}