brighterscript 1.0.0-alpha.44 → 1.0.0-alpha.46

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 (229) hide show
  1. package/bsconfig.schema.json +6 -1
  2. package/dist/AstValidationSegmenter.js +6 -1
  3. package/dist/AstValidationSegmenter.js.map +1 -1
  4. package/dist/BsConfig.d.ts +4 -0
  5. package/dist/BusyStatusTracker.d.ts +37 -7
  6. package/dist/BusyStatusTracker.js +73 -8
  7. package/dist/BusyStatusTracker.js.map +1 -1
  8. package/dist/Cache.d.ts +0 -4
  9. package/dist/Cache.js +0 -6
  10. package/dist/Cache.js.map +1 -1
  11. package/dist/CodeActionUtil.d.ts +6 -1
  12. package/dist/CodeActionUtil.js +3 -0
  13. package/dist/CodeActionUtil.js.map +1 -1
  14. package/dist/CrossScopeValidator.d.ts +1 -1
  15. package/dist/CrossScopeValidator.js +8 -7
  16. package/dist/CrossScopeValidator.js.map +1 -1
  17. package/dist/DiagnosticCollection.d.ts +19 -5
  18. package/dist/DiagnosticCollection.js +71 -23
  19. package/dist/DiagnosticCollection.js.map +1 -1
  20. package/dist/DiagnosticFilterer.d.ts +14 -1
  21. package/dist/DiagnosticFilterer.js +130 -12
  22. package/dist/DiagnosticFilterer.js.map +1 -1
  23. package/dist/DiagnosticManager.d.ts +11 -1
  24. package/dist/DiagnosticManager.js +192 -35
  25. package/dist/DiagnosticManager.js.map +1 -1
  26. package/dist/DiagnosticMessages.d.ts +19 -7
  27. package/dist/DiagnosticMessages.js +21 -9
  28. package/dist/DiagnosticMessages.js.map +1 -1
  29. package/dist/LanguageServer.d.ts +82 -139
  30. package/dist/LanguageServer.js +402 -980
  31. package/dist/LanguageServer.js.map +1 -1
  32. package/dist/Logger.d.ts +9 -4
  33. package/dist/Logger.js +30 -6
  34. package/dist/Logger.js.map +1 -1
  35. package/dist/PluginInterface.d.ts +8 -8
  36. package/dist/PluginInterface.js.map +1 -1
  37. package/dist/Program.d.ts +23 -4
  38. package/dist/Program.js +294 -194
  39. package/dist/Program.js.map +1 -1
  40. package/dist/ProgramBuilder.d.ts +22 -7
  41. package/dist/ProgramBuilder.js +44 -21
  42. package/dist/ProgramBuilder.js.map +1 -1
  43. package/dist/Scope.d.ts +11 -6
  44. package/dist/Scope.js +60 -36
  45. package/dist/Scope.js.map +1 -1
  46. package/dist/SemanticTokenUtils.js +1 -1
  47. package/dist/SemanticTokenUtils.js.map +1 -1
  48. package/dist/astUtils/CachedLookups.js +0 -1
  49. package/dist/astUtils/CachedLookups.js.map +1 -1
  50. package/dist/astUtils/reflection.d.ts +4 -4
  51. package/dist/astUtils/reflection.js +12 -10
  52. package/dist/astUtils/reflection.js.map +1 -1
  53. package/dist/bscPlugin/BscPlugin.d.ts +3 -3
  54. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  55. package/dist/bscPlugin/CallExpressionInfo.js +4 -2
  56. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
  57. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +2 -0
  58. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +147 -0
  59. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  60. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +44 -0
  61. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  62. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +1 -1
  63. package/dist/bscPlugin/completions/CompletionsProcessor.js +15 -15
  64. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  65. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +82 -5
  66. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -1
  67. package/dist/bscPlugin/hover/HoverProcessor.js +3 -0
  68. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  69. package/dist/bscPlugin/hover/HoverProcessor.spec.js +44 -0
  70. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  71. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +4 -0
  72. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  73. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +17 -0
  74. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  75. package/dist/bscPlugin/validation/BrsFileValidator.js +21 -0
  76. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  77. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +161 -7
  78. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  79. package/dist/bscPlugin/validation/ScopeValidator.d.ts +4 -1
  80. package/dist/bscPlugin/validation/ScopeValidator.js +166 -63
  81. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  82. package/dist/bscPlugin/validation/ScopeValidator.spec.js +21 -9
  83. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
  84. package/dist/common/Sequencer.d.ts +53 -0
  85. package/dist/common/Sequencer.js +233 -0
  86. package/dist/common/Sequencer.js.map +1 -0
  87. package/dist/common/Sequencer.spec.d.ts +1 -0
  88. package/dist/common/Sequencer.spec.js +75 -0
  89. package/dist/common/Sequencer.spec.js.map +1 -0
  90. package/dist/deferred.d.ts +2 -0
  91. package/dist/deferred.js +10 -0
  92. package/dist/deferred.js.map +1 -1
  93. package/dist/examples/plugins/removePrint.d.ts +2 -2
  94. package/dist/examples/plugins/removePrint.js.map +1 -1
  95. package/dist/files/BrsFile.d.ts +1 -1
  96. package/dist/files/BrsFile.js +22 -42
  97. package/dist/files/BrsFile.js.map +1 -1
  98. package/dist/files/BrsFile.spec.js +155 -4
  99. package/dist/files/BrsFile.spec.js.map +1 -1
  100. package/dist/files/BscFile.d.ts +1 -0
  101. package/dist/files/LazyFileData.d.ts +1 -0
  102. package/dist/files/XmlFile.spec.js +1 -1
  103. package/dist/files/XmlFile.spec.js.map +1 -1
  104. package/dist/globalCallables.js +189 -189
  105. package/dist/globalCallables.js.map +1 -1
  106. package/dist/interfaces.d.ts +56 -13
  107. package/dist/interfaces.js.map +1 -1
  108. package/dist/lexer/Lexer.js +1 -1
  109. package/dist/lexer/Lexer.js.map +1 -1
  110. package/dist/logging.d.ts +6 -1
  111. package/dist/logging.js +14 -1
  112. package/dist/logging.js.map +1 -1
  113. package/dist/lsp/ActionQueue.d.ts +35 -0
  114. package/dist/lsp/ActionQueue.js +115 -0
  115. package/dist/lsp/ActionQueue.js.map +1 -0
  116. package/dist/lsp/ActionQueue.spec.d.ts +1 -0
  117. package/dist/lsp/ActionQueue.spec.js +80 -0
  118. package/dist/lsp/ActionQueue.spec.js.map +1 -0
  119. package/dist/lsp/DocumentManager.d.ts +63 -0
  120. package/dist/lsp/DocumentManager.js +122 -0
  121. package/dist/lsp/DocumentManager.js.map +1 -0
  122. package/dist/lsp/DocumentManager.spec.d.ts +1 -0
  123. package/dist/lsp/DocumentManager.spec.js +103 -0
  124. package/dist/lsp/DocumentManager.spec.js.map +1 -0
  125. package/dist/lsp/LspProject.d.ts +231 -0
  126. package/dist/lsp/LspProject.js +3 -0
  127. package/dist/lsp/LspProject.js.map +1 -0
  128. package/dist/lsp/PathFilterer.d.ts +75 -0
  129. package/dist/lsp/PathFilterer.js +196 -0
  130. package/dist/lsp/PathFilterer.js.map +1 -0
  131. package/dist/lsp/PathFilterer.spec.d.ts +1 -0
  132. package/dist/lsp/PathFilterer.spec.js +182 -0
  133. package/dist/lsp/PathFilterer.spec.js.map +1 -0
  134. package/dist/lsp/Project.d.ts +167 -0
  135. package/dist/lsp/Project.js +432 -0
  136. package/dist/lsp/Project.js.map +1 -0
  137. package/dist/lsp/Project.spec.d.ts +1 -0
  138. package/dist/lsp/Project.spec.js +220 -0
  139. package/dist/lsp/Project.spec.js.map +1 -0
  140. package/dist/lsp/ProjectManager.d.ts +221 -0
  141. package/dist/lsp/ProjectManager.js +754 -0
  142. package/dist/lsp/ProjectManager.js.map +1 -0
  143. package/dist/lsp/ProjectManager.spec.d.ts +1 -0
  144. package/dist/lsp/ProjectManager.spec.js +783 -0
  145. package/dist/lsp/ProjectManager.spec.js.map +1 -0
  146. package/dist/lsp/ReaderWriterManager.d.ts +21 -0
  147. package/dist/lsp/ReaderWriterManager.js +60 -0
  148. package/dist/lsp/ReaderWriterManager.js.map +1 -0
  149. package/dist/lsp/worker/MessageHandler.d.ts +99 -0
  150. package/dist/lsp/worker/MessageHandler.js +138 -0
  151. package/dist/lsp/worker/MessageHandler.js.map +1 -0
  152. package/dist/lsp/worker/MessageHandler.spec.d.ts +1 -0
  153. package/dist/lsp/worker/MessageHandler.spec.js +64 -0
  154. package/dist/lsp/worker/MessageHandler.spec.js.map +1 -0
  155. package/dist/lsp/worker/WorkerPool.d.ts +38 -0
  156. package/dist/lsp/worker/WorkerPool.js +78 -0
  157. package/dist/lsp/worker/WorkerPool.js.map +1 -0
  158. package/dist/lsp/worker/WorkerPool.spec.d.ts +1 -0
  159. package/dist/lsp/worker/WorkerPool.spec.js +59 -0
  160. package/dist/lsp/worker/WorkerPool.spec.js.map +1 -0
  161. package/dist/lsp/worker/WorkerThreadProject.d.ts +144 -0
  162. package/dist/lsp/worker/WorkerThreadProject.js +183 -0
  163. package/dist/lsp/worker/WorkerThreadProject.js.map +1 -0
  164. package/dist/lsp/worker/WorkerThreadProject.spec.d.ts +2 -0
  165. package/dist/lsp/worker/WorkerThreadProject.spec.js +68 -0
  166. package/dist/lsp/worker/WorkerThreadProject.spec.js.map +1 -0
  167. package/dist/lsp/worker/WorkerThreadProjectRunner.d.ts +15 -0
  168. package/dist/lsp/worker/WorkerThreadProjectRunner.js +58 -0
  169. package/dist/lsp/worker/WorkerThreadProjectRunner.js.map +1 -0
  170. package/dist/parser/Expression.d.ts +1 -0
  171. package/dist/parser/Expression.js +65 -3
  172. package/dist/parser/Expression.js.map +1 -1
  173. package/dist/parser/Parser.spec.js +12 -0
  174. package/dist/parser/Parser.spec.js.map +1 -1
  175. package/dist/parser/Statement.js +2 -2
  176. package/dist/parser/Statement.js.map +1 -1
  177. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +47 -0
  178. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  179. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +51 -5
  180. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  181. package/dist/parser/tests/expression/TernaryExpression.spec.js +44 -0
  182. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  183. package/dist/roku-types/data.json +880 -756
  184. package/dist/roku-types/index.d.ts +17 -0
  185. package/dist/types/BooleanType.d.ts +0 -2
  186. package/dist/types/BooleanType.js +4 -6
  187. package/dist/types/BooleanType.js.map +1 -1
  188. package/dist/types/BscType.js +5 -0
  189. package/dist/types/BscType.js.map +1 -1
  190. package/dist/types/BuiltInInterfaceAdder.d.ts +1 -0
  191. package/dist/types/BuiltInInterfaceAdder.js +24 -17
  192. package/dist/types/BuiltInInterfaceAdder.js.map +1 -1
  193. package/dist/types/DoubleType.d.ts +0 -2
  194. package/dist/types/DoubleType.js +4 -6
  195. package/dist/types/DoubleType.js.map +1 -1
  196. package/dist/types/DynamicType.d.ts +0 -2
  197. package/dist/types/DynamicType.js +3 -5
  198. package/dist/types/DynamicType.js.map +1 -1
  199. package/dist/types/FloatType.d.ts +0 -2
  200. package/dist/types/FloatType.js +4 -6
  201. package/dist/types/FloatType.js.map +1 -1
  202. package/dist/types/FunctionType.d.ts +0 -2
  203. package/dist/types/FunctionType.js +5 -7
  204. package/dist/types/FunctionType.js.map +1 -1
  205. package/dist/types/IntegerType.d.ts +0 -2
  206. package/dist/types/IntegerType.js +4 -6
  207. package/dist/types/IntegerType.js.map +1 -1
  208. package/dist/types/LongIntegerType.d.ts +0 -2
  209. package/dist/types/LongIntegerType.js +4 -6
  210. package/dist/types/LongIntegerType.js.map +1 -1
  211. package/dist/types/ObjectType.d.ts +3 -3
  212. package/dist/types/ObjectType.js +6 -8
  213. package/dist/types/ObjectType.js.map +1 -1
  214. package/dist/types/StringType.d.ts +0 -2
  215. package/dist/types/StringType.js +4 -6
  216. package/dist/types/StringType.js.map +1 -1
  217. package/dist/types/VoidType.d.ts +0 -2
  218. package/dist/types/VoidType.js +4 -6
  219. package/dist/types/VoidType.js.map +1 -1
  220. package/dist/types/helpers.d.ts +4 -0
  221. package/dist/types/helpers.js +5 -1
  222. package/dist/types/helpers.js.map +1 -1
  223. package/dist/util.d.ts +48 -16
  224. package/dist/util.js +203 -70
  225. package/dist/util.js.map +1 -1
  226. package/dist/validators/ClassValidator.js +2 -2
  227. package/dist/validators/ClassValidator.js.map +1 -1
  228. package/package.json +15 -5
  229. package/CHANGELOG.md +0 -2352
@@ -0,0 +1,432 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Project = void 0;
4
+ const ProgramBuilder_1 = require("../ProgramBuilder");
5
+ const EventEmitter = require("eventemitter3");
6
+ const util_1 = require("../util");
7
+ const path = require("path");
8
+ const deferred_1 = require("../deferred");
9
+ const roku_deploy_1 = require("roku-deploy");
10
+ const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
11
+ const vscode_languageserver_protocol_2 = require("vscode-languageserver-protocol");
12
+ const logging_1 = require("../logging");
13
+ const fsExtra = require("fs-extra");
14
+ class Project {
15
+ constructor(options) {
16
+ var _a, _b;
17
+ this.isStandaloneProject = false;
18
+ /**
19
+ * Gets resolved when the project has finished activating
20
+ */
21
+ this.activationDeferred = new deferred_1.Deferred();
22
+ this.emitter = new EventEmitter();
23
+ this.disposables = [];
24
+ this.logger = (_a = options === null || options === void 0 ? void 0 : options.logger) !== null && _a !== void 0 ? _a : (0, logging_1.createLogger)({
25
+ //when running inside a worker thread, we don't want to use colors
26
+ enableColor: false
27
+ });
28
+ this.projectIdentifier = (_b = options === null || options === void 0 ? void 0 : options.projectIdentifier) !== null && _b !== void 0 ? _b : '';
29
+ }
30
+ /**
31
+ * Activates this project. Every call to `activate` should completely reset the project, clear all used ram and start from scratch.
32
+ */
33
+ async activate(options) {
34
+ this.logger.info('Project.activate', options.projectPath);
35
+ this.activateOptions = options;
36
+ this.projectPath = options.projectPath ? util_1.default.standardizePath(options.projectPath) : options.projectPath;
37
+ this.workspaceFolder = options.workspaceFolder ? util_1.default.standardizePath(options.workspaceFolder) : options.workspaceFolder;
38
+ this.projectNumber = options.projectNumber;
39
+ this.bsconfigPath = await this.getConfigFilePath(options);
40
+ this.builder = new ProgramBuilder_1.ProgramBuilder({
41
+ //share our logger with ProgramBuilder, which will keep our level in sync with the one in the program
42
+ logger: this.logger
43
+ });
44
+ this.builder.logger.prefix = `[${this.projectIdentifier}]`;
45
+ this.disposables.push(this.builder);
46
+ let cwd;
47
+ //if the config file exists, use it and its folder as cwd
48
+ if (this.bsconfigPath && await util_1.default.pathExists(this.bsconfigPath)) {
49
+ cwd = path.dirname(this.bsconfigPath);
50
+ //load the bsconfig file contents (used for performance optimizations externally)
51
+ try {
52
+ this.bsconfigFileContents = (await fsExtra.readFile(this.bsconfigPath)).toString();
53
+ }
54
+ catch (_a) { }
55
+ }
56
+ else {
57
+ cwd = this.projectPath;
58
+ //config file doesn't exist...let `brighterscript` resolve the default way
59
+ this.bsconfigPath = undefined;
60
+ }
61
+ const builderOptions = {
62
+ cwd: cwd,
63
+ project: this.bsconfigPath,
64
+ watch: false,
65
+ createPackage: false,
66
+ deploy: false,
67
+ copyToStaging: false,
68
+ showDiagnosticsInConsole: false,
69
+ validate: false
70
+ };
71
+ //Assign .files (mostly used for standalone projects) if available, as a dedicated assignment because `undefined` overrides the default value in the `bsconfig.json`
72
+ if (options.files) {
73
+ builderOptions.files = roku_deploy_1.rokuDeploy.normalizeFilesArray(options.files);
74
+ }
75
+ //run the builder to initialize the program. Skip validation for now, we'll trigger it soon in a more cancellable way
76
+ await this.builder.run(Object.assign(Object.assign({}, builderOptions), { validate: false,
77
+ //don't show diagnostics in the console since this is run via the language server, they're presented in a different way
78
+ showDiagnosticsInConsole: false }));
79
+ //flush diagnostics every time the program finishes validating
80
+ //this plugin must be added LAST to the program to ensure we can see all diagnostics
81
+ this.builder.plugins.add({
82
+ name: 'bsc-language-server',
83
+ afterProgramValidate: () => {
84
+ const diagnostics = this.getDiagnostics();
85
+ this.emit('diagnostics', {
86
+ diagnostics: diagnostics
87
+ });
88
+ }
89
+ });
90
+ //trigger a validation (but don't wait for it. That way we can cancel it sooner if we get new incoming data or requests)
91
+ void this.validate();
92
+ this.activationDeferred.resolve();
93
+ return {
94
+ bsconfigPath: this.bsconfigPath,
95
+ logLevel: this.builder.program.options.logLevel,
96
+ rootDir: this.builder.program.options.rootDir,
97
+ filePatterns: this.filePatterns
98
+ };
99
+ }
100
+ get rootDir() {
101
+ return this.builder.program.options.rootDir;
102
+ }
103
+ /**
104
+ * The file patterns from bsconfig.json that were used to find all files for this project
105
+ */
106
+ get filePatterns() {
107
+ if (!this.builder) {
108
+ return undefined;
109
+ }
110
+ const patterns = roku_deploy_1.rokuDeploy.normalizeFilesArray(this.builder.program.options.files);
111
+ return patterns.map(x => {
112
+ return typeof x === 'string' ? x : x.src;
113
+ });
114
+ }
115
+ /**
116
+ * Promise that resolves when the project finishes activating
117
+ * @returns a promise that resolves when the project finishes activating
118
+ */
119
+ whenActivated() {
120
+ return this.activationDeferred.promise;
121
+ }
122
+ /**
123
+ * Validate the project. This will trigger a full validation on any scopes that were changed since the last validation,
124
+ * and will also eventually emit a new 'diagnostics' event that includes all diagnostics for the project.
125
+ *
126
+ * This will cancel any currently running validation and then run a new one.
127
+ */
128
+ async validate() {
129
+ this.logger.debug('Project.validate');
130
+ this.cancelValidate();
131
+ //store
132
+ this.validationCancelToken = new vscode_languageserver_protocol_2.CancellationTokenSource();
133
+ try {
134
+ this.emit('validate-begin', {});
135
+ await this.builder.program.validate({
136
+ async: true,
137
+ cancellationToken: this.validationCancelToken.token
138
+ });
139
+ }
140
+ finally {
141
+ this.emit('validate-end', {});
142
+ }
143
+ }
144
+ /**
145
+ * Cancel any active running validation
146
+ */
147
+ cancelValidate() {
148
+ var _a;
149
+ (_a = this.validationCancelToken) === null || _a === void 0 ? void 0 : _a.cancel();
150
+ delete this.validationCancelToken;
151
+ }
152
+ getDiagnostics() {
153
+ const diagnostics = this.builder.getDiagnostics();
154
+ return diagnostics.map(x => {
155
+ const srcPath = util_1.default.uriToPath(x.location.uri);
156
+ return Object.assign(Object.assign({}, util_1.default.toDiagnostic(x, srcPath)), { uri: x.location.uri });
157
+ });
158
+ }
159
+ /**
160
+ * Promise that resolves the next time the system is idle. If the system is already idle, it will resolve immediately
161
+ */
162
+ async onIdle() {
163
+ await Promise.all([
164
+ this.activationDeferred.promise
165
+ ]);
166
+ }
167
+ /**
168
+ * Add or replace the in-memory contents of the file at the specified path. This is typically called as the user is typing.
169
+ * This will cancel any pending validation cycles and queue a future validation cycle instead.
170
+ */
171
+ async applyFileChanges(documentActions) {
172
+ var _a, _b;
173
+ this.logger.debug('Project.applyFileChanges', documentActions.map(x => x.srcPath));
174
+ await this.onIdle();
175
+ let didChangeFiles = false;
176
+ const result = [...documentActions];
177
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
178
+ for (let i = 0; i < result.length; i++) {
179
+ const action = result[i];
180
+ let didChangeThisFile = false;
181
+ //if this is a `set` and the file matches the project's files array, set it
182
+ if (action.type === 'set' && Project.willAcceptFile(action.srcPath, this.builder.program.options.files, this.builder.program.options.rootDir)) {
183
+ //load the file contents from disk if we don't have an in memory copy
184
+ const fileContents = (_a = action.fileContents) !== null && _a !== void 0 ? _a : (_b = util_1.default.readFileSync(action.srcPath)) === null || _b === void 0 ? void 0 : _b.toString();
185
+ //if we got file contents, set the file on the program
186
+ if (fileContents !== undefined) {
187
+ didChangeThisFile = this.setFile(action.srcPath, fileContents);
188
+ //this file was accepted by the program
189
+ action.status = 'accepted';
190
+ //if we can't get file contents, apply this as a delete
191
+ }
192
+ else {
193
+ action.status = 'accepted';
194
+ result.push({
195
+ id: action.id,
196
+ srcPath: action.srcPath,
197
+ type: 'delete',
198
+ status: undefined,
199
+ allowStandaloneProject: false
200
+ });
201
+ continue;
202
+ }
203
+ //try to delete the file or directory
204
+ }
205
+ else if (action.type === 'delete') {
206
+ didChangeThisFile = this.removeFileOrDirectory(action.srcPath);
207
+ //if we deleted at least one file, mark this action as accepted
208
+ action.status = didChangeThisFile ? 'accepted' : 'rejected';
209
+ //we did not handle this action, so reject
210
+ }
211
+ else {
212
+ action.status = 'rejected';
213
+ }
214
+ didChangeFiles = didChangeFiles || didChangeThisFile;
215
+ }
216
+ if (didChangeFiles) {
217
+ //trigger a validation (but don't wait for it. That way we can cancel it sooner if we get new incoming data or requests)
218
+ this.validate().catch(e => this.logger.error(e));
219
+ }
220
+ this.logger.debug('project.applyFileChanges done', documentActions.map(x => x.srcPath));
221
+ return result;
222
+ }
223
+ /**
224
+ * Determine if this project will accept the file at the specified path (i.e. does it match a pattern in the project's files array)
225
+ */
226
+ static willAcceptFile(srcPath, files, rootDir) {
227
+ srcPath = util_1.default.standardizePath(srcPath);
228
+ if (roku_deploy_1.rokuDeploy.getDestPath(srcPath, files, rootDir) !== undefined) {
229
+ return true;
230
+ //is this exact path in the `files` array? (this check is mostly for standalone projects)
231
+ }
232
+ else if (files.find(x => (0, util_1.standardizePath) `${x.src}` === srcPath)) {
233
+ return true;
234
+ }
235
+ return false;
236
+ }
237
+ /**
238
+ * Set new contents for a file. This is safe to call any time. Changes will be queued and flushed at the correct times
239
+ * during the program's lifecycle flow
240
+ * @param srcPath absolute source path of the file
241
+ * @param fileContents the text contents of the file
242
+ * @returns true if this program accepted and added the file. false if the program didn't want the file, or if the contents didn't change
243
+ */
244
+ setFile(srcPath, fileContents) {
245
+ this.logger.debug('Project.setFile', { srcPath: srcPath, fileContentsLength: fileContents.length });
246
+ const { files, rootDir } = this.builder.program.options;
247
+ //get the dest path for this file.
248
+ let destPath = roku_deploy_1.rokuDeploy.getDestPath(srcPath, files, rootDir);
249
+ //if we have a file and the contents haven't changed
250
+ let file = this.builder.program.getFile(destPath);
251
+ if (file && file.fileContents === fileContents) {
252
+ return false;
253
+ }
254
+ //if we got a dest path, then the program wants this file
255
+ if (destPath) {
256
+ this.builder.program.setFile({
257
+ src: srcPath,
258
+ dest: destPath
259
+ }, fileContents);
260
+ return true;
261
+ }
262
+ return false;
263
+ }
264
+ /**
265
+ * Remove the in-memory file at the specified path. This is typically called when the user (or file system watcher) triggers a file delete
266
+ * @param srcPath absolute path to the File
267
+ * @returns true if we found and removed at least one file, or false if no files were removed
268
+ */
269
+ removeFileOrDirectory(srcPath) {
270
+ var _a;
271
+ this.logger.debug('Project.removeFileOrDirectory', srcPath);
272
+ srcPath = util_1.default.standardizePath(srcPath);
273
+ //if this is a direct file match, remove the file
274
+ if (this.builder.program.hasFile(srcPath)) {
275
+ this.builder.program.removeFile(srcPath);
276
+ return true;
277
+ }
278
+ //maybe this is a directory. Remove all files that start with this path
279
+ let removedSomeFiles = false;
280
+ let lowerSrcPath = srcPath.toLowerCase();
281
+ for (let file of Object.values(this.builder.program.files)) {
282
+ //if the file path starts with the parent path and the file path does not exactly match the folder path
283
+ if ((_a = file.srcPath) === null || _a === void 0 ? void 0 : _a.toLowerCase().startsWith(lowerSrcPath)) {
284
+ this.logger.debug('Project.removeFileOrDirectory removing file because it matches the given directory', { dir: srcPath, srcPath: file.srcPath });
285
+ this.builder.program.removeFile(file.srcPath, false);
286
+ removedSomeFiles = true;
287
+ }
288
+ }
289
+ //return true if we removed at least one file
290
+ return removedSomeFiles;
291
+ }
292
+ /**
293
+ * Get the full list of semantic tokens for the given file path
294
+ * @param options options for getting semantic tokens
295
+ * @param options.srcPath absolute path to the source file
296
+ */
297
+ async getSemanticTokens(options) {
298
+ await this.onIdle();
299
+ if (this.builder.program.hasFile(options.srcPath)) {
300
+ return this.builder.program.getSemanticTokens(options.srcPath);
301
+ }
302
+ }
303
+ async transpileFile(options) {
304
+ await this.onIdle();
305
+ if (this.builder.program.hasFile(options.srcPath)) {
306
+ return this.builder.program.getTranspiledFileContents(options.srcPath);
307
+ }
308
+ }
309
+ async getHover(options) {
310
+ await this.onIdle();
311
+ if (this.builder.program.hasFile(options.srcPath)) {
312
+ return this.builder.program.getHover(options.srcPath, options.position);
313
+ }
314
+ }
315
+ async getDefinition(options) {
316
+ await this.onIdle();
317
+ if (this.builder.program.hasFile(options.srcPath)) {
318
+ return this.builder.program.getDefinition(options.srcPath, options.position);
319
+ }
320
+ }
321
+ async getSignatureHelp(options) {
322
+ await this.onIdle();
323
+ if (this.builder.program.hasFile(options.srcPath)) {
324
+ return this.builder.program.getSignatureHelp(options.srcPath, options.position);
325
+ }
326
+ }
327
+ async getDocumentSymbol(options) {
328
+ await this.onIdle();
329
+ if (this.builder.program.hasFile(options.srcPath)) {
330
+ return this.builder.program.getDocumentSymbols(options.srcPath);
331
+ }
332
+ }
333
+ async getWorkspaceSymbol() {
334
+ await this.onIdle();
335
+ const result = this.builder.program.getWorkspaceSymbols();
336
+ return result;
337
+ }
338
+ async getReferences(options) {
339
+ await this.onIdle();
340
+ if (this.builder.program.hasFile(options.srcPath)) {
341
+ return this.builder.program.getReferences(options.srcPath, options.position);
342
+ }
343
+ }
344
+ async getCodeActions(options) {
345
+ var _a;
346
+ await this.onIdle();
347
+ if (this.builder.program.hasFile(options.srcPath)) {
348
+ const codeActions = this.builder.program.getCodeActions(options.srcPath, options.range);
349
+ //clone each diagnostic since certain diagnostics can have circular reference properties that kill the language server if serialized
350
+ for (const codeAction of codeActions !== null && codeActions !== void 0 ? codeActions : []) {
351
+ if (codeAction.diagnostics) {
352
+ codeAction.diagnostics = (_a = codeAction.diagnostics) === null || _a === void 0 ? void 0 : _a.map(x => util_1.default.toDiagnostic(x, options.srcPath));
353
+ }
354
+ }
355
+ return codeActions;
356
+ }
357
+ }
358
+ async getCompletions(options) {
359
+ await this.onIdle();
360
+ this.logger.debug('Project.getCompletions', options.srcPath, options.position);
361
+ if (this.builder.program.hasFile(options.srcPath)) {
362
+ const completions = this.builder.program.getCompletions(options.srcPath, options.position);
363
+ const result = vscode_languageserver_protocol_1.CompletionList.create(completions);
364
+ result.itemDefaults = {
365
+ commitCharacters: ['.']
366
+ };
367
+ return result;
368
+ }
369
+ return undefined;
370
+ }
371
+ /**
372
+ * Find the path to the bsconfig.json file for this project
373
+ * @returns path to bsconfig.json, or undefined if unable to find it
374
+ */
375
+ async getConfigFilePath(config) {
376
+ let configFilePath;
377
+ //if there's a setting, we need to find the file or show error if it can't be found
378
+ if (config === null || config === void 0 ? void 0 : config.configFilePath) {
379
+ configFilePath = path.resolve(config.projectPath, config.configFilePath);
380
+ if (await util_1.default.pathExists(configFilePath)) {
381
+ return util_1.default.standardizePath(configFilePath);
382
+ }
383
+ else {
384
+ this.emit('critical-failure', {
385
+ message: `Cannot find config file specified in user or workspace settings at '${configFilePath}'`
386
+ });
387
+ }
388
+ }
389
+ //the rest of these require a projectPath, so return early if we don't have one
390
+ if (!(config === null || config === void 0 ? void 0 : config.projectPath)) {
391
+ return undefined;
392
+ }
393
+ //default to config file path found in the root of the workspace
394
+ configFilePath = (0, util_1.standardizePath) `${config.projectPath}/bsconfig.json`;
395
+ if (await util_1.default.pathExists(configFilePath)) {
396
+ return util_1.default.standardizePath(configFilePath);
397
+ }
398
+ //look for the deprecated `brsconfig.json` file
399
+ configFilePath = (0, util_1.standardizePath) `${config.projectPath}/brsconfig.json`;
400
+ if (await util_1.default.pathExists(configFilePath)) {
401
+ return util_1.default.standardizePath(configFilePath);
402
+ }
403
+ //no config file could be found
404
+ return undefined;
405
+ }
406
+ on(eventName, handler) {
407
+ this.emitter.on(eventName, handler);
408
+ return () => {
409
+ this.emitter.removeListener(eventName, handler);
410
+ };
411
+ }
412
+ async emit(eventName, data) {
413
+ //emit these events on next tick, otherwise they will be processed immediately which could cause issues
414
+ await util_1.default.sleep(0);
415
+ this.emitter.emit(eventName, data);
416
+ //emit the 'all' event
417
+ this.emitter.emit('all', eventName, data);
418
+ }
419
+ dispose() {
420
+ var _a, _b, _c, _d;
421
+ for (let disposable of (_a = this.disposables) !== null && _a !== void 0 ? _a : []) {
422
+ (_b = disposable === null || disposable === void 0 ? void 0 : disposable.dispose) === null || _b === void 0 ? void 0 : _b.call(disposable);
423
+ }
424
+ this.disposables = [];
425
+ (_c = this.emitter) === null || _c === void 0 ? void 0 : _c.removeAllListeners();
426
+ if (((_d = this.activationDeferred) === null || _d === void 0 ? void 0 : _d.isCompleted) === false) {
427
+ this.activationDeferred.reject(new Error('Project was disposed, activation has been cancelled'));
428
+ }
429
+ }
430
+ }
431
+ exports.Project = Project;
432
+ //# sourceMappingURL=Project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Project.js","sourceRoot":"","sources":["../../src/lsp/Project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};