brighterscript 0.71.1 → 0.72.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.
Files changed (121) hide show
  1. package/bsconfig.schema.json +75 -0
  2. package/dist/BsConfig.d.ts +90 -5
  3. package/dist/CodeActionUtil.d.ts +17 -0
  4. package/dist/CodeActionUtil.js.map +1 -1
  5. package/dist/CommentFlagProcessor.d.ts +16 -12
  6. package/dist/CommentFlagProcessor.js +141 -59
  7. package/dist/CommentFlagProcessor.js.map +1 -1
  8. package/dist/DiagnosticMessages.d.ts +32 -1
  9. package/dist/DiagnosticMessages.js +37 -2
  10. package/dist/DiagnosticMessages.js.map +1 -1
  11. package/dist/LanguageServer.d.ts +15 -2
  12. package/dist/LanguageServer.js +100 -7
  13. package/dist/LanguageServer.js.map +1 -1
  14. package/dist/Program.d.ts +80 -1
  15. package/dist/Program.js +217 -2
  16. package/dist/Program.js.map +1 -1
  17. package/dist/ProgramBuilder.d.ts +1 -8
  18. package/dist/ProgramBuilder.js +31 -11
  19. package/dist/ProgramBuilder.js.map +1 -1
  20. package/dist/Scope.d.ts +53 -7
  21. package/dist/Scope.js +28 -66
  22. package/dist/Scope.js.map +1 -1
  23. package/dist/ScopeNamespaceLookup.d.ts +73 -0
  24. package/dist/ScopeNamespaceLookup.js +240 -0
  25. package/dist/ScopeNamespaceLookup.js.map +1 -0
  26. package/dist/SymbolTable.d.ts +9 -2
  27. package/dist/SymbolTable.js +10 -5
  28. package/dist/SymbolTable.js.map +1 -1
  29. package/dist/bscPlugin/BscPlugin.d.ts +3 -1
  30. package/dist/bscPlugin/BscPlugin.js +8 -0
  31. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  32. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +38 -0
  33. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +259 -18
  34. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  35. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +360 -10
  36. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  37. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.d.ts +17 -0
  38. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js +66 -0
  39. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js.map +1 -0
  40. package/dist/bscPlugin/codeActions/codeActionHelpers.d.ts +18 -0
  41. package/dist/bscPlugin/codeActions/codeActionHelpers.js +29 -0
  42. package/dist/bscPlugin/codeActions/codeActionHelpers.js.map +1 -0
  43. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.d.ts +7 -0
  44. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js +74 -0
  45. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js.map +1 -0
  46. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.d.ts +1 -0
  47. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js +298 -0
  48. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js.map +1 -0
  49. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +2 -0
  50. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +49 -4
  51. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
  52. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +13 -0
  53. package/dist/bscPlugin/validation/BrsFileValidator.js +55 -0
  54. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  55. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +316 -0
  56. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  57. package/dist/bscPlugin/validation/ScopeValidator.d.ts +11 -0
  58. package/dist/bscPlugin/validation/ScopeValidator.js +69 -0
  59. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  60. package/dist/cli.js +13 -0
  61. package/dist/cli.js.map +1 -1
  62. package/dist/diagnosticUtils.d.ts +51 -1
  63. package/dist/diagnosticUtils.js +222 -1
  64. package/dist/diagnosticUtils.js.map +1 -1
  65. package/dist/files/BrsFile.d.ts +15 -0
  66. package/dist/files/BrsFile.js +92 -7
  67. package/dist/files/BrsFile.js.map +1 -1
  68. package/dist/files/BrsFile.spec.js +347 -3
  69. package/dist/files/BrsFile.spec.js.map +1 -1
  70. package/dist/files/XmlFile.js +2 -1
  71. package/dist/files/XmlFile.js.map +1 -1
  72. package/dist/files/XmlFile.spec.js +50 -0
  73. package/dist/files/XmlFile.spec.js.map +1 -1
  74. package/dist/interfaces.d.ts +66 -2
  75. package/dist/lexer/TokenKind.d.ts +8 -0
  76. package/dist/lexer/TokenKind.js +21 -1
  77. package/dist/lexer/TokenKind.js.map +1 -1
  78. package/dist/lsp/DocumentManager.spec.js +1 -1
  79. package/dist/lsp/DocumentManager.spec.js.map +1 -1
  80. package/dist/lsp/LspProject.d.ts +49 -1
  81. package/dist/lsp/Project.d.ts +33 -1
  82. package/dist/lsp/Project.js +107 -3
  83. package/dist/lsp/Project.js.map +1 -1
  84. package/dist/lsp/Project.spec.js +146 -9
  85. package/dist/lsp/Project.spec.js.map +1 -1
  86. package/dist/lsp/ProjectManager.d.ts +38 -2
  87. package/dist/lsp/ProjectManager.js +131 -5
  88. package/dist/lsp/ProjectManager.js.map +1 -1
  89. package/dist/lsp/ProjectManager.spec.js +272 -1
  90. package/dist/lsp/ProjectManager.spec.js.map +1 -1
  91. package/dist/lsp/worker/WorkerThreadProject.d.ts +27 -2
  92. package/dist/lsp/worker/WorkerThreadProject.js +16 -0
  93. package/dist/lsp/worker/WorkerThreadProject.js.map +1 -1
  94. package/dist/lsp/worker/WorkerThreadProject.spec.js +2 -1
  95. package/dist/lsp/worker/WorkerThreadProject.spec.js.map +1 -1
  96. package/dist/parser/Parser.d.ts +22 -0
  97. package/dist/parser/Parser.js +57 -16
  98. package/dist/parser/Parser.js.map +1 -1
  99. package/dist/parser/Parser.spec.js +239 -0
  100. package/dist/parser/Parser.spec.js.map +1 -1
  101. package/dist/parser/TranspileState.d.ts +4 -2
  102. package/dist/parser/TranspileState.js +3 -3
  103. package/dist/parser/TranspileState.js.map +1 -1
  104. package/dist/parser/tests/controlFlow/For.spec.js +47 -0
  105. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  106. package/dist/parser/tests/controlFlow/ForEach.spec.js +37 -0
  107. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  108. package/dist/parser/tests/controlFlow/While.spec.js +49 -0
  109. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  110. package/dist/parser/tests/expression/Call.spec.js +4 -5
  111. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  112. package/dist/parser/tests/expression/Function.spec.js +2 -2
  113. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  114. package/dist/parser/tests/statement/ConstStatement.spec.js +218 -1
  115. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  116. package/dist/parser/tests/statement/Enum.spec.js +2 -0
  117. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  118. package/dist/util.d.ts +26 -0
  119. package/dist/util.js +87 -8
  120. package/dist/util.js.map +1 -1
  121. package/package.json +4 -2
@@ -43,6 +43,11 @@ class ProjectManager {
43
43
  * All of these are also present in the `projects` collection.
44
44
  */
45
45
  this.standaloneProjects = new Map();
46
+ /**
47
+ * Maximum number of projects to activate or validate concurrently during syncProjects.
48
+ * Limits CPU spikes when many projects are discovered (e.g. in large monorepos).
49
+ */
50
+ this.projectActivationConcurrencyLimit = 3;
46
51
  this.busyStatusTracker = new BusyStatusTracker_1.BusyStatusTracker();
47
52
  /**
48
53
  * Cache for PathCollection instances per project. Avoids recreating PathCollection
@@ -50,6 +55,12 @@ class ProjectManager {
50
55
  */
51
56
  this.projectFiltererCache = new WeakMap();
52
57
  this.firstSync = new deferred_1.Deferred();
58
+ /**
59
+ * Monotonically increasing counter used to detect stale sync cycles.
60
+ * When a new `syncProjects` call arrives, any in-progress activation or validation
61
+ * from a previous cycle will see a mismatched generation and bail out.
62
+ */
63
+ this.syncGeneration = 0;
53
64
  this.fileChangesQueue = new ActionQueue_1.ActionQueue({
54
65
  maxActionDuration: 45000
55
66
  });
@@ -193,6 +204,7 @@ class ProjectManager {
193
204
  project.isStandaloneProject = true;
194
205
  this.standaloneProjects.set(srcPath, project);
195
206
  await this.activateProject(project, projectConfig);
207
+ void project.validate();
196
208
  }
197
209
  removeStandaloneProject(srcPath) {
198
210
  srcPath = util_1.util.standardizePath(srcPath);
@@ -252,6 +264,7 @@ class ProjectManager {
252
264
  }
253
265
  }
254
266
  this.logger.log('syncProjects', workspaceConfigs.map(x => x.workspaceFolder));
267
+ const generation = ++this.syncGeneration;
255
268
  this.syncPromise = (async () => {
256
269
  //build a list of unique projects across all workspace folders
257
270
  let projectConfigs = (await Promise.all(workspaceConfigs.map(async (workspaceConfig) => {
@@ -287,16 +300,50 @@ class ProjectManager {
287
300
  projectConfigs = [
288
301
  ...projectConfigs.reduce((acc, x) => acc.set(x.projectKey, x), new Map()).values()
289
302
  ];
290
- //create missing projects
291
- await Promise.all(projectConfigs.map(async (config) => {
292
- await this.createAndActivateProject(config);
293
- }));
303
+ // Phase 1: activate projects with concurrency limit (awaited — gates LSP readiness)
304
+ const activatedProjects = [];
305
+ await this.runWithConcurrencyLimit(projectConfigs, this.projectActivationConcurrencyLimit, async (config) => {
306
+ if (this.syncGeneration !== generation) {
307
+ return;
308
+ }
309
+ const project = await this.createAndActivateProject(config);
310
+ activatedProjects.push(project);
311
+ });
294
312
  //mark that we've completed our first sync
295
313
  this.firstSync.tryResolve();
314
+ // Phase 2: validate activated projects with concurrency limit (NOT awaited — doesn't block LSP requests)
315
+ if (this.syncGeneration === generation) {
316
+ void this.runWithConcurrencyLimit(activatedProjects, this.projectActivationConcurrencyLimit, async (project) => {
317
+ if (this.syncGeneration !== generation) {
318
+ return;
319
+ }
320
+ await project.validate();
321
+ }).catch(e => this.logger.error('Validation phase error', e));
322
+ }
296
323
  })();
297
324
  //return the sync promise
298
325
  return this.syncPromise;
299
326
  }
327
+ /**
328
+ * Run async actions over a list of items with a concurrency limit.
329
+ * Uses a worker-pool pattern: `concurrencyLimit` workers pull items from a shared queue.
330
+ */
331
+ async runWithConcurrencyLimit(items, concurrencyLimit, action) {
332
+ const queue = [...items];
333
+ if (queue.length === 0) {
334
+ return;
335
+ }
336
+ const workerCount = Math.max(1, Math.min(concurrencyLimit, queue.length));
337
+ const workers = Array.from({ length: workerCount }, async () => {
338
+ while (queue.length > 0) {
339
+ const item = queue.shift();
340
+ if (item) {
341
+ await action(item);
342
+ }
343
+ }
344
+ });
345
+ await Promise.all(workers);
346
+ }
300
347
  handleFileChanges(changes) {
301
348
  this.logger.debug('handleFileChanges', changes.map(x => `${FileChangeTypeLookup[x.type]}: ${x.srcPath}`));
302
349
  //this function should NOT be marked as async, because typescript wraps the body in an async call sometimes. These need to be registered synchronously
@@ -360,7 +407,7 @@ class ProjectManager {
360
407
  }
361
408
  //reload any projects whose bsconfig.json was changed
362
409
  const projectsToReload = this.projects.filter(project => {
363
- var _a;
410
+ var _a, _b;
364
411
  //this is a path to a bsconfig.json file
365
412
  if (((_a = project.bsconfigPath) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === change.srcPath.toLowerCase()) {
366
413
  //fetch file contents if we don't already have them
@@ -375,6 +422,20 @@ class ProjectManager {
375
422
  return true;
376
423
  }
377
424
  }
425
+ //this is a path to a manifest file
426
+ if (((_b = project.manifestSrcPath) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === change.srcPath.toLowerCase()) {
427
+ //try to read the manifest file contents. If this fails (e.g. the file was deleted), manifestFileContents stays undefined,
428
+ //which will still trigger a reload when compared against the previously loaded contents
429
+ let manifestFileContents;
430
+ try {
431
+ manifestFileContents = fsExtra.readFileSync(change.srcPath).toString();
432
+ }
433
+ catch (_c) { }
434
+ //the manifest contents have changed since we last saw it, so reload this project
435
+ if (project.manifestFileContents !== manifestFileContents) {
436
+ return true;
437
+ }
438
+ }
378
439
  return false;
379
440
  });
380
441
  if (projectsToReload.length > 0) {
@@ -397,6 +458,7 @@ class ProjectManager {
397
458
  this.logger.log('Reloading project', { projectPath: project.projectKey });
398
459
  this.removeProject(project);
399
460
  project = await this.createAndActivateProject(project.activateOptions);
461
+ void project.validate();
400
462
  }
401
463
  /**
402
464
  * Get all the semantic tokens for the given file
@@ -527,6 +589,46 @@ class ProjectManager {
527
589
  (result) => !!result);
528
590
  return result !== null && result !== void 0 ? result : [];
529
591
  }
592
+ /**
593
+ * Collect file-rename text edits from every project and reconcile them.
594
+ * If two projects produce different replacement text for the same (uri, range), drop that edit
595
+ * to avoid mangling source. Otherwise emit the agreed-upon edit once.
596
+ */
597
+ async getFileRenameEdits(options) {
598
+ await this.onIdle();
599
+ const perProjectEdits = await Promise.all(this.projects.map(async (project) => {
600
+ try {
601
+ return await project.getFileRenameEdits(options);
602
+ }
603
+ catch (error) {
604
+ this.logger.debug(`[${util_1.util.getProjectLogName(project)}] getFileRenameEdits failed`, error);
605
+ return [];
606
+ }
607
+ }));
608
+ const editsByKey = new Map();
609
+ for (const projectEdits of perProjectEdits) {
610
+ for (const edit of projectEdits !== null && projectEdits !== void 0 ? projectEdits : []) {
611
+ const key = `${edit.uri.toLowerCase()}|${edit.range.start.line}:${edit.range.start.character}-${edit.range.end.line}:${edit.range.end.character}`;
612
+ const existing = editsByKey.get(key);
613
+ if (!existing) {
614
+ editsByKey.set(key, { edit: edit, agreedNewText: edit.newText });
615
+ }
616
+ else if (existing.agreedNewText !== null && existing.agreedNewText !== edit.newText) {
617
+ //projects disagree on the replacement — drop the edit rather than risk corrupting source
618
+ existing.agreedNewText = null;
619
+ }
620
+ }
621
+ }
622
+ const result = [];
623
+ for (const { edit, agreedNewText } of editsByKey.values()) {
624
+ if (agreedNewText === null) {
625
+ this.logger.debug('Dropping file-rename edit due to cross-project disagreement', edit);
626
+ continue;
627
+ }
628
+ result.push({ uri: edit.uri, range: edit.range, newText: agreedNewText });
629
+ }
630
+ return result;
631
+ }
530
632
  async getCodeActions(options) {
531
633
  //wait for all pending syncs to finish
532
634
  await this.onIdle();
@@ -536,6 +638,21 @@ class ProjectManager {
536
638
  (result) => !!result);
537
639
  return result;
538
640
  }
641
+ async getFixAllCodeActions(options) {
642
+ //wait for all pending syncs to finish
643
+ await this.onIdle();
644
+ let result = await util_1.util.promiseRaceMatch(this.projects.map(x => x.getSourceFixAllCodeActions(options)), (result) => !!result);
645
+ return result;
646
+ }
647
+ async getSelectionRanges(options) {
648
+ //wait for all pending syncs to finish
649
+ await this.onIdle();
650
+ //Ask every project for selection ranges, keep whichever one responds first with a non-empty result
651
+ let result = await util_1.util.promiseRaceMatch(this.projects.map(x => x.getSelectionRanges(options)),
652
+ //keep the first non-empty result
653
+ (result) => (result === null || result === void 0 ? void 0 : result.length) > 0);
654
+ return result !== null && result !== void 0 ? result : [];
655
+ }
539
656
  /**
540
657
  * Scan a given workspace for all `bsconfig.json` files. If at least one is found, then only folders who have bsconfig.json are returned.
541
658
  * If none are found, then the workspaceFolder itself is treated as a project
@@ -797,9 +914,18 @@ __decorate([
797
914
  __decorate([
798
915
  TrackBusyStatus
799
916
  ], ProjectManager.prototype, "getReferences", null);
917
+ __decorate([
918
+ TrackBusyStatus
919
+ ], ProjectManager.prototype, "getFileRenameEdits", null);
800
920
  __decorate([
801
921
  TrackBusyStatus
802
922
  ], ProjectManager.prototype, "getCodeActions", null);
923
+ __decorate([
924
+ TrackBusyStatus
925
+ ], ProjectManager.prototype, "getFixAllCodeActions", null);
926
+ __decorate([
927
+ TrackBusyStatus
928
+ ], ProjectManager.prototype, "getSelectionRanges", null);
803
929
  __decorate([
804
930
  TrackBusyStatus
805
931
  ], ProjectManager.prototype, "createAndActivateProject", null);
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectManager.js","sourceRoot":"","sources":["../../src/lsp/ProjectManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProjectManager.js","sourceRoot":"","sources":["../../src/lsp/ProjectManager.ts"],"names":[],"mappings":"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"}
@@ -252,6 +252,164 @@ describe('ProjectManager', () => {
252
252
  (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/project1/bsconfig.json`
253
253
  ]);
254
254
  });
255
+ describe('concurrency limiting', () => {
256
+ it('limits the number of projects activating concurrently', async () => {
257
+ //create multiple bsconfig.json files
258
+ for (let i = 0; i < 6; i++) {
259
+ fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
260
+ }
261
+ //track concurrent activation count by stubbing the private activateProject method
262
+ let maxConcurrent = 0;
263
+ let currentConcurrent = 0;
264
+ const activateStub = sinon.stub(manager, 'activateProject').callsFake(async () => {
265
+ currentConcurrent++;
266
+ maxConcurrent = Math.max(maxConcurrent, currentConcurrent);
267
+ //simulate async activation work
268
+ await util_1.default.sleep(10);
269
+ currentConcurrent--;
270
+ });
271
+ //set a low concurrency limit for testing
272
+ manager.projectActivationConcurrencyLimit = 2;
273
+ await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
274
+ //should have activated all 6 projects
275
+ (0, chai_1.expect)(activateStub.callCount).to.eql(6);
276
+ //but never more than 2 at a time
277
+ (0, chai_1.expect)(maxConcurrent).to.be.at.most(2);
278
+ });
279
+ it('activates all projects even with concurrency limit', async () => {
280
+ //create 5 bsconfig.json files
281
+ for (let i = 0; i < 5; i++) {
282
+ fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
283
+ }
284
+ manager.projectActivationConcurrencyLimit = 2;
285
+ await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
286
+ //all projects should be created
287
+ (0, chai_1.expect)(manager.projects.length).to.eql(5);
288
+ });
289
+ it('limits the number of projects validating concurrently', async () => {
290
+ for (let i = 0; i < 6; i++) {
291
+ fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
292
+ }
293
+ let maxConcurrent = 0;
294
+ let currentConcurrent = 0;
295
+ let validateCallCount = 0;
296
+ //stub activateProject to be a no-op so projects activate quickly
297
+ sinon.stub(manager, 'activateProject').callsFake(async () => { });
298
+ //stub Project.prototype.validate BEFORE syncProjects so the fire-and-forget phase uses it
299
+ sinon.stub(Project_1.Project.prototype, 'validate').callsFake(async () => {
300
+ currentConcurrent++;
301
+ validateCallCount++;
302
+ maxConcurrent = Math.max(maxConcurrent, currentConcurrent);
303
+ await util_1.default.sleep(10);
304
+ currentConcurrent--;
305
+ });
306
+ manager.projectActivationConcurrencyLimit = 2;
307
+ await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
308
+ //wait for the fire-and-forget validation phase to complete
309
+ await util_1.default.sleep(200);
310
+ (0, chai_1.expect)(validateCallCount).to.eql(6);
311
+ (0, chai_1.expect)(maxConcurrent).to.be.at.most(2);
312
+ });
313
+ it('validates all projects after activation completes', async () => {
314
+ for (let i = 0; i < 3; i++) {
315
+ fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
316
+ }
317
+ let allActivated = false;
318
+ let validationStartedBeforeActivation = false;
319
+ let validateCallCount = 0;
320
+ sinon.stub(manager, 'activateProject').callsFake(async () => { });
321
+ sinon.stub(Project_1.Project.prototype, 'validate').callsFake(() => {
322
+ if (!allActivated) {
323
+ validationStartedBeforeActivation = true;
324
+ }
325
+ validateCallCount++;
326
+ return Promise.resolve();
327
+ });
328
+ manager.projectActivationConcurrencyLimit = 1;
329
+ //hook into the end of the activation phase by spying on firstSync
330
+ const origTryResolve = manager['firstSync'].tryResolve.bind(manager['firstSync']);
331
+ sinon.stub(manager['firstSync'], 'tryResolve').callsFake(() => {
332
+ allActivated = true;
333
+ return origTryResolve();
334
+ });
335
+ await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
336
+ //wait for fire-and-forget validation phase
337
+ await util_1.default.sleep(100);
338
+ (0, chai_1.expect)(validateCallCount).to.eql(3);
339
+ (0, chai_1.expect)(validationStartedBeforeActivation).to.be.false;
340
+ });
341
+ it('stops activating projects when a new sync starts', async () => {
342
+ for (let i = 0; i < 4; i++) {
343
+ fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
344
+ }
345
+ let activateCount = 0;
346
+ const activateDeferred = new deferred_1.Deferred();
347
+ sinon.stub(manager, 'activateProject').callsFake(async () => {
348
+ activateCount++;
349
+ //block the first activation so we can trigger a re-sync
350
+ if (activateCount === 1) {
351
+ await activateDeferred.promise;
352
+ }
353
+ });
354
+ manager.projectActivationConcurrencyLimit = 1;
355
+ //start first sync (will block on first activation)
356
+ const firstSync = manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
357
+ //wait for the first activation to start
358
+ await util_1.default.sleep(50);
359
+ //start a second sync which bumps the generation counter
360
+ const secondSync = manager.syncProjects([testHelpers_spec_1.workspaceSettings], true);
361
+ //unblock the first activation
362
+ activateDeferred.resolve();
363
+ await firstSync;
364
+ await secondSync;
365
+ //the first sync should have stopped activating after generation changed.
366
+ //the exact count depends on timing, but we should NOT see all 4 from the first sync
367
+ //plus all 4 from the second sync (8 total). The first sync's remaining items should be skipped.
368
+ (0, chai_1.expect)(activateCount).to.be.lessThan(8);
369
+ });
370
+ it('skips validation when a new sync starts before validation phase', async () => {
371
+ for (let i = 0; i < 3; i++) {
372
+ fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
373
+ }
374
+ let validateCallCount = 0;
375
+ const activateDeferred = new deferred_1.Deferred();
376
+ sinon.stub(manager, 'activateProject').callsFake(async () => {
377
+ //block on the deferred only when it's pending (we'll make it pending for the second sync)
378
+ if (!activateDeferred.isCompleted) {
379
+ await activateDeferred.promise;
380
+ }
381
+ });
382
+ sinon.stub(Project_1.Project.prototype, 'validate').callsFake(() => {
383
+ validateCallCount++;
384
+ return Promise.resolve();
385
+ });
386
+ manager.projectActivationConcurrencyLimit = 1;
387
+ //first sync — activates and validates normally (deferred starts resolved)
388
+ activateDeferred.resolve();
389
+ await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
390
+ await util_1.default.sleep(50);
391
+ const firstSyncValidateCount = validateCallCount;
392
+ //reset for the next syncs: create a new deferred that blocks
393
+ const blockDeferred = new deferred_1.Deferred();
394
+ manager.activateProject.callsFake(async () => {
395
+ await blockDeferred.promise;
396
+ });
397
+ //start second sync (blocks on activation)
398
+ const secondSync = manager.syncProjects([testHelpers_spec_1.workspaceSettings], true);
399
+ await util_1.default.sleep(10);
400
+ //immediately start a third sync which bumps the generation
401
+ const thirdSync = manager.syncProjects([testHelpers_spec_1.workspaceSettings], true);
402
+ //unblock activation
403
+ blockDeferred.resolve();
404
+ await secondSync;
405
+ await thirdSync;
406
+ //wait for any fire-and-forget validation
407
+ await util_1.default.sleep(100);
408
+ //the second sync's validation should have been skipped because the third sync bumped the generation.
409
+ //we should see at most the first sync's validations + the third sync's validations
410
+ (0, chai_1.expect)(validateCallCount - firstSyncValidateCount).to.be.at.most(3);
411
+ });
412
+ });
255
413
  });
256
414
  describe('maxDepth configuration', () => {
257
415
  function writeTestFiles(files) {
@@ -430,6 +588,83 @@ describe('ProjectManager', () => {
430
588
  }]);
431
589
  });
432
590
  });
591
+ describe('getFileRenameEdits', () => {
592
+ const mainUri = util_1.default.pathToUri((0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/main.bs`);
593
+ function fakeProject(getFileRenameEdits) {
594
+ return {
595
+ projectNumber: 0,
596
+ whenActivated: () => Promise.resolve(),
597
+ getFileRenameEdits: getFileRenameEdits
598
+ };
599
+ }
600
+ function fileRenameEdit(uri, newText, range = util_1.default.createRange(0, 8, 0, 14)) {
601
+ return { uri: uri, range: range, newText: newText };
602
+ }
603
+ beforeEach(() => {
604
+ //these tests exercise the cross-project consensus logic; bypass the project-sync wait so we don't need a real project setup
605
+ sinon.stub(manager, 'onIdle').callsFake(() => Promise.resolve());
606
+ });
607
+ it('passes through edits from a single project', async () => {
608
+ manager.projects = [
609
+ fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')])
610
+ ];
611
+ const result = await manager.getFileRenameEdits({
612
+ oldSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib.bs`,
613
+ newSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib2.bs`
614
+ });
615
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
616
+ (0, chai_1.expect)(result[0].uri).to.eql(mainUri);
617
+ (0, chai_1.expect)(result[0].newText).to.eql('lib2.bs');
618
+ });
619
+ it('keeps edits when every project that produced an edit at the same range agrees', async () => {
620
+ manager.projects = [
621
+ fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')]),
622
+ fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')])
623
+ ];
624
+ const result = await manager.getFileRenameEdits({
625
+ oldSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib.bs`,
626
+ newSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib2.bs`
627
+ });
628
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
629
+ (0, chai_1.expect)(result[0].newText).to.eql('lib2.bs');
630
+ });
631
+ it('drops edits when projects disagree on the replacement text for the same range', async () => {
632
+ manager.projects = [
633
+ fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')]),
634
+ fakeProject(() => [fileRenameEdit(mainUri, 'pkg:/source/lib2.bs')])
635
+ ];
636
+ const result = await manager.getFileRenameEdits({
637
+ oldSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib.bs`,
638
+ newSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib2.bs`
639
+ });
640
+ (0, chai_1.expect)(result).to.be.empty;
641
+ });
642
+ it('keeps edits unique to one project when others have nothing to say at that range', async () => {
643
+ manager.projects = [
644
+ fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')]),
645
+ fakeProject(() => [])
646
+ ];
647
+ const result = await manager.getFileRenameEdits({
648
+ oldSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib.bs`,
649
+ newSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib2.bs`
650
+ });
651
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
652
+ });
653
+ it('still emits edits from healthy projects when one project throws', async () => {
654
+ manager.projects = [
655
+ fakeProject(() => {
656
+ throw new Error('boom');
657
+ }),
658
+ fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')])
659
+ ];
660
+ const result = await manager.getFileRenameEdits({
661
+ oldSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib.bs`,
662
+ newSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib2.bs`
663
+ });
664
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
665
+ (0, chai_1.expect)(result[0].newText).to.eql('lib2.bs');
666
+ });
667
+ });
433
668
  describe('flushDocumentChanges', () => {
434
669
  it('reuses cached PathCollection across multiple flushes', async () => {
435
670
  fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/source/main.brs`, ``);
@@ -697,7 +932,7 @@ describe('ProjectManager', () => {
697
932
  });
698
933
  describe('threading', () => {
699
934
  before(async function workerThreadWarmup() {
700
- this.timeout(20000);
935
+ this.timeout(60000);
701
936
  await (0, WorkerThreadProject_spec_1.getWakeWorkerThreadPromise)();
702
937
  });
703
938
  it('spawns a worker thread when threading is enabled', async () => {
@@ -908,5 +1143,41 @@ describe('ProjectManager', () => {
908
1143
  //the project was not reloaded this time
909
1144
  (0, chai_1.expect)(stub.callCount).to.eql(1);
910
1145
  });
1146
+ it('properly handles reloading when manifest contents change', async () => {
1147
+ fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/manifest`, 'title=MyApp\nbs_const=DEBUG=false');
1148
+ //wait for the projects to finish syncing/loading
1149
+ await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
1150
+ const stub = sinon.stub(manager, 'reloadProject').callThrough();
1151
+ //change the manifest to new contents
1152
+ fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/manifest`, 'title=MyApp\nbs_const=DEBUG=true');
1153
+ await manager.handleFileChanges([{
1154
+ srcPath: `${testHelpers_spec_1.rootDir}/manifest`,
1155
+ type: vscode_languageserver_protocol_1.FileChangeType.Changed
1156
+ }]);
1157
+ //the project was reloaded
1158
+ (0, chai_1.expect)(stub.callCount).to.eql(1);
1159
+ //change the manifest to the same contents
1160
+ fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/manifest`, 'title=MyApp\nbs_const=DEBUG=true');
1161
+ await manager.handleFileChanges([{
1162
+ srcPath: `${testHelpers_spec_1.rootDir}/manifest`,
1163
+ type: vscode_languageserver_protocol_1.FileChangeType.Changed
1164
+ }]);
1165
+ //the project was not reloaded this time
1166
+ (0, chai_1.expect)(stub.callCount).to.eql(1);
1167
+ });
1168
+ it('reloads project when manifest is deleted', async () => {
1169
+ fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/manifest`, 'title=MyApp');
1170
+ //wait for the projects to finish syncing/loading
1171
+ await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
1172
+ const stub = sinon.stub(manager, 'reloadProject').callThrough();
1173
+ //delete the manifest file
1174
+ fsExtra.removeSync(`${testHelpers_spec_1.rootDir}/manifest`);
1175
+ await manager.handleFileChanges([{
1176
+ srcPath: `${testHelpers_spec_1.rootDir}/manifest`,
1177
+ type: vscode_languageserver_protocol_1.FileChangeType.Deleted
1178
+ }]);
1179
+ //the project was reloaded because the manifest is gone
1180
+ (0, chai_1.expect)(stub.callCount).to.eql(1);
1181
+ });
911
1182
  });
912
1183
  //# sourceMappingURL=ProjectManager.spec.js.map