brighterscript 0.44.0 → 0.45.2

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 (113) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/Cache.d.ts +2 -7
  3. package/dist/Cache.js +4 -13
  4. package/dist/Cache.js.map +1 -1
  5. package/dist/DependencyGraph.js +5 -4
  6. package/dist/DependencyGraph.js.map +1 -1
  7. package/dist/DiagnosticMessages.d.ts +21 -1
  8. package/dist/DiagnosticMessages.js +20 -0
  9. package/dist/DiagnosticMessages.js.map +1 -1
  10. package/dist/LanguageServer.js +3 -3
  11. package/dist/LanguageServer.js.map +1 -1
  12. package/dist/Program.d.ts +21 -7
  13. package/dist/Program.js +14 -10
  14. package/dist/Program.js.map +1 -1
  15. package/dist/ProgramBuilder.js +3 -3
  16. package/dist/ProgramBuilder.js.map +1 -1
  17. package/dist/Scope.d.ts +13 -7
  18. package/dist/Scope.js +24 -1
  19. package/dist/Scope.js.map +1 -1
  20. package/dist/XmlScope.d.ts +3 -3
  21. package/dist/astUtils/AstEditor.d.ts +6 -0
  22. package/dist/astUtils/AstEditor.js +10 -0
  23. package/dist/astUtils/AstEditor.js.map +1 -1
  24. package/dist/astUtils/AstEditor.spec.js +37 -0
  25. package/dist/astUtils/AstEditor.spec.js.map +1 -1
  26. package/dist/astUtils/creators.d.ts +7 -3
  27. package/dist/astUtils/creators.js +86 -5
  28. package/dist/astUtils/creators.js.map +1 -1
  29. package/dist/astUtils/reflection.d.ts +3 -1
  30. package/dist/astUtils/reflection.js +10 -2
  31. package/dist/astUtils/reflection.js.map +1 -1
  32. package/dist/astUtils/reflection.spec.js +3 -2
  33. package/dist/astUtils/reflection.spec.js.map +1 -1
  34. package/dist/astUtils/visitors.d.ts +3 -1
  35. package/dist/astUtils/visitors.js.map +1 -1
  36. package/dist/astUtils/visitors.spec.js +6 -6
  37. package/dist/astUtils/visitors.spec.js.map +1 -1
  38. package/dist/bscPlugin/BscPlugin.d.ts +4 -1
  39. package/dist/bscPlugin/BscPlugin.js +16 -0
  40. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  41. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +16 -16
  42. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  43. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +1 -0
  44. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +36 -0
  45. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  46. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +30 -2
  47. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  48. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +8 -0
  49. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +36 -0
  50. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -0
  51. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +9 -0
  52. package/dist/bscPlugin/validation/BrsFileValidator.js +66 -0
  53. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
  54. package/dist/bscPlugin/validation/ScopeValidator.d.ts +11 -0
  55. package/dist/bscPlugin/validation/ScopeValidator.js +94 -0
  56. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
  57. package/dist/diagnosticUtils.js +3 -3
  58. package/dist/diagnosticUtils.js.map +1 -1
  59. package/dist/files/BrsFile.Class.spec.js +47 -47
  60. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  61. package/dist/files/BrsFile.d.ts +9 -1
  62. package/dist/files/BrsFile.js +111 -29
  63. package/dist/files/BrsFile.js.map +1 -1
  64. package/dist/files/BrsFile.spec.js +164 -94
  65. package/dist/files/BrsFile.spec.js.map +1 -1
  66. package/dist/files/XmlFile.d.ts +5 -5
  67. package/dist/files/XmlFile.js +3 -3
  68. package/dist/files/XmlFile.js.map +1 -1
  69. package/dist/files/XmlFile.spec.js +80 -80
  70. package/dist/files/XmlFile.spec.js.map +1 -1
  71. package/dist/files/tests/imports.spec.js +23 -23
  72. package/dist/files/tests/imports.spec.js.map +1 -1
  73. package/dist/interfaces.d.ts +5 -5
  74. package/dist/lexer/Lexer.spec.js +8 -0
  75. package/dist/lexer/Lexer.spec.js.map +1 -1
  76. package/dist/lexer/TokenKind.d.ts +2 -0
  77. package/dist/lexer/TokenKind.js +5 -0
  78. package/dist/lexer/TokenKind.js.map +1 -1
  79. package/dist/parser/Expression.d.ts +0 -1
  80. package/dist/parser/Expression.js.map +1 -1
  81. package/dist/parser/Parser.d.ts +10 -1
  82. package/dist/parser/Parser.js +90 -4
  83. package/dist/parser/Parser.js.map +1 -1
  84. package/dist/parser/SGParser.spec.js +1 -1
  85. package/dist/parser/SGParser.spec.js.map +1 -1
  86. package/dist/parser/Statement.d.ts +52 -0
  87. package/dist/parser/Statement.js +159 -15
  88. package/dist/parser/Statement.js.map +1 -1
  89. package/dist/parser/Statement.spec.js +1 -1
  90. package/dist/parser/Statement.spec.js.map +1 -1
  91. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +1 -1
  92. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  93. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +1 -1
  94. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  95. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +1 -1
  96. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  97. package/dist/parser/tests/expression/TernaryExpression.spec.js +1 -1
  98. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  99. package/dist/parser/tests/statement/Enum.spec.d.ts +1 -0
  100. package/dist/parser/tests/statement/Enum.spec.js +774 -0
  101. package/dist/parser/tests/statement/Enum.spec.js.map +1 -0
  102. package/dist/parser/tests/statement/For.spec.d.ts +1 -0
  103. package/dist/parser/tests/statement/For.spec.js +46 -0
  104. package/dist/parser/tests/statement/For.spec.js.map +1 -0
  105. package/dist/parser/tests/statement/ForEach.spec.d.ts +1 -0
  106. package/dist/parser/tests/statement/ForEach.spec.js +37 -0
  107. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -0
  108. package/dist/parser/tests/statement/InterfaceStatement.spec.js +1 -1
  109. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  110. package/dist/util.d.ts +10 -0
  111. package/dist/util.js +37 -0
  112. package/dist/util.js.map +1 -1
  113. package/package.json +2 -3
@@ -46,7 +46,7 @@ describe('XmlFile', () => {
46
46
  }
47
47
  }
48
48
  });
49
- file = program.addOrReplaceFile('components/ChildScene.xml', (0, testHelpers_spec_1.trim) `
49
+ file = program.setFile('components/ChildScene.xml', (0, testHelpers_spec_1.trim) `
50
50
  <?xml version="1.0" encoding="utf-8" ?>
51
51
  <component name="ChildScene" extends="Scene">
52
52
  </component>
@@ -83,7 +83,7 @@ describe('XmlFile', () => {
83
83
  `);
84
84
  });
85
85
  it('supports importing BrighterScript files', () => {
86
- file = program.addOrReplaceFile({ src: `${rootDir}/components/custom.xml`, dest: 'components/custom.xml' }, (0, testHelpers_spec_1.trim) `
86
+ file = program.setFile({ src: `${rootDir}/components/custom.xml`, dest: 'components/custom.xml' }, (0, testHelpers_spec_1.trim) `
87
87
  <?xml version="1.0" encoding="utf-8" ?>
88
88
  <component name="ChildScene" extends="Scene">
89
89
  <script type="text/brightscript" uri="ChildScene.bs" />
@@ -93,7 +93,7 @@ describe('XmlFile', () => {
93
93
  });
94
94
  it('does not include commented-out script imports', () => {
95
95
  var _a, _b;
96
- file = program.addOrReplaceFile({ src: `${rootDir}/components/custom.xml`, dest: 'components/custom.xml' }, (0, testHelpers_spec_1.trim) `
96
+ file = program.setFile({ src: `${rootDir}/components/custom.xml`, dest: 'components/custom.xml' }, (0, testHelpers_spec_1.trim) `
97
97
  <?xml version="1.0" encoding="utf-8" ?>
98
98
  <component name="ChildScene" extends="Scene">
99
99
  <script type="text/brightscript" uri="ChildScene.brs" />
@@ -167,7 +167,7 @@ describe('XmlFile', () => {
167
167
  (0, chai_1.expect)(file.diagnostics[1]).to.deep.include(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('unexpectedToo')), { range: vscode_languageserver_1.Range.create(5, 5, 5, 18) }));
168
168
  });
169
169
  it('Adds error when no component is declared in xml', () => {
170
- program.addOrReplaceFile('components/comp.xml', '<script type="text/brightscript" uri="ChildScene.brs" />');
170
+ program.setFile('components/comp.xml', '<script type="text/brightscript" uri="ChildScene.brs" />');
171
171
  program.validate();
172
172
  (0, testHelpers_spec_1.expectDiagnostics)(program, [
173
173
  Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('script')), { range: vscode_languageserver_1.Range.create(0, 1, 0, 7) }),
@@ -175,7 +175,7 @@ describe('XmlFile', () => {
175
175
  ]);
176
176
  });
177
177
  it('adds error when component does not declare a name', () => {
178
- file = program.addOrReplaceFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
178
+ file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
179
179
  <?xml version="1.0" encoding="utf-8" ?>
180
180
  <component extends="ParentScene">
181
181
  <script type="text/brightscript" uri="ChildScene.brs" />
@@ -189,7 +189,7 @@ describe('XmlFile', () => {
189
189
  });
190
190
  });
191
191
  it('catches xml parse errors', () => {
192
- file = program.addOrReplaceFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
192
+ file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
193
193
  <?xml version="1.0" encoding="utf-8" ?>
194
194
  <component 1extends="ParentScene">
195
195
  </component>
@@ -230,7 +230,7 @@ describe('XmlFile', () => {
230
230
  }
231
231
  });
232
232
  it('resolves relative paths', () => {
233
- file = program.addOrReplaceFile({
233
+ file = program.setFile({
234
234
  src: `${rootDir}/components/comp1.xml`,
235
235
  dest: 'components/comp1.xml'
236
236
  }, (0, testHelpers_spec_1.trim) `
@@ -247,7 +247,7 @@ describe('XmlFile', () => {
247
247
  });
248
248
  it('finds correct position for empty uri in script tag', () => {
249
249
  var _a;
250
- file = program.addOrReplaceFile({
250
+ file = program.setFile({
251
251
  src: `${rootDir}/components/comp1.xml`,
252
252
  dest: 'components/comp1.xml'
253
253
  }, (0, testHelpers_spec_1.trim) `
@@ -262,7 +262,7 @@ describe('XmlFile', () => {
262
262
  });
263
263
  describe('doesReferenceFile', () => {
264
264
  it('compares case insensitive', () => {
265
- let xmlFile = program.addOrReplaceFile({
265
+ let xmlFile = program.setFile({
266
266
  src: `${rootDir}/components/comp1.xml`,
267
267
  dest: 'components/comp1.xml'
268
268
  }, (0, testHelpers_spec_1.trim) `
@@ -271,7 +271,7 @@ describe('XmlFile', () => {
271
271
  <script type="text/brightscript" uri="HeroGrid.brs" />
272
272
  </component>
273
273
  `);
274
- let brsFile = program.addOrReplaceFile({
274
+ let brsFile = program.setFile({
275
275
  src: `${rootDir}/components/HEROGRID.brs`,
276
276
  dest: `components/HEROGRID.brs`
277
277
  }, ``);
@@ -280,17 +280,17 @@ describe('XmlFile', () => {
280
280
  });
281
281
  describe('autoImportComponentScript', () => {
282
282
  it('is not enabled by default', () => {
283
- program.addOrReplaceFile({ src: `${rootDir}/components/comp1.xml`, dest: 'components/comp1.xml' }, (0, testHelpers_spec_1.trim) `
283
+ program.setFile({ src: `${rootDir}/components/comp1.xml`, dest: 'components/comp1.xml' }, (0, testHelpers_spec_1.trim) `
284
284
  <?xml version="1.0" encoding="utf-8" ?>
285
285
  <component name="ParentScene" extends="GrandparentScene">
286
286
  <script type="text/brightscript" uri="./lib.brs" />
287
287
  </component>
288
288
  `);
289
- program.addOrReplaceFile({ src: `${rootDir}/components/lib.brs`, dest: 'components/lib.brs' }, `
289
+ program.setFile({ src: `${rootDir}/components/lib.brs`, dest: 'components/lib.brs' }, `
290
290
  function libFunc()
291
291
  end function
292
292
  `);
293
- program.addOrReplaceFile({ src: `${rootDir}/components/comp1.bs`, dest: 'components/comp1.bs' }, `
293
+ program.setFile({ src: `${rootDir}/components/comp1.bs`, dest: 'components/comp1.bs' }, `
294
294
  function init()
295
295
  libFunc()
296
296
  end function
@@ -305,17 +305,17 @@ describe('XmlFile', () => {
305
305
  rootDir: rootDir,
306
306
  autoImportComponentScript: true
307
307
  });
308
- program.addOrReplaceFile({ src: `${rootDir}/components/comp1.xml`, dest: 'components/comp1.xml' }, (0, testHelpers_spec_1.trim) `
308
+ program.setFile({ src: `${rootDir}/components/comp1.xml`, dest: 'components/comp1.xml' }, (0, testHelpers_spec_1.trim) `
309
309
  <?xml version="1.0" encoding="utf-8" ?>
310
310
  <component name="ParentScene" extends="GrandparentScene">
311
311
  <script type="text/brightscript" uri="./lib.brs" />
312
312
  </component>
313
313
  `);
314
- program.addOrReplaceFile({ src: `${rootDir}/components/lib.brs`, dest: 'components/lib.brs' }, `
314
+ program.setFile({ src: `${rootDir}/components/lib.brs`, dest: 'components/lib.brs' }, `
315
315
  function libFunc()
316
316
  end function
317
317
  `);
318
- program.addOrReplaceFile({ src: `${rootDir}/components/comp1.bs`, dest: 'components/comp1.bs' }, `
318
+ program.setFile({ src: `${rootDir}/components/comp1.bs`, dest: 'components/comp1.bs' }, `
319
319
  function init()
320
320
  libFunc()
321
321
  end function
@@ -345,13 +345,13 @@ describe('XmlFile', () => {
345
345
  });
346
346
  });
347
347
  it('returns empty set when out of range', () => {
348
- program.addOrReplaceFile({ src: `${rootDir}/components/Component1.brs`, dest: 'components/component1.brs' }, ``);
348
+ program.setFile({ src: `${rootDir}/components/Component1.brs`, dest: 'components/component1.brs' }, ``);
349
349
  (0, chai_1.expect)(file.getCompletions(vscode_languageserver_1.Position.create(99, 99))).to.be.empty;
350
350
  });
351
351
  //TODO - refine this test once cdata scripts are supported
352
352
  it('prevents scope completions entirely', () => {
353
- program.addOrReplaceFile({ src: `${rootDir}/components/Component1.brs`, dest: 'components/component1.brs' }, ``);
354
- let xmlFile = program.addOrReplaceFile({ src: `${rootDir}/components/Component1.xml`, dest: 'components/component1.xml' }, (0, testHelpers_spec_1.trim) `
353
+ program.setFile({ src: `${rootDir}/components/Component1.brs`, dest: 'components/component1.brs' }, ``);
354
+ let xmlFile = program.setFile({ src: `${rootDir}/components/Component1.xml`, dest: 'components/component1.xml' }, (0, testHelpers_spec_1.trim) `
355
355
  <?xml version="1.0" encoding="utf-8" ?>
356
356
  <component name="ParentScene" extends="GrandparentScene">
357
357
  <script type="text/brightscript" uri="./Component1.brs" />
@@ -362,7 +362,7 @@ describe('XmlFile', () => {
362
362
  });
363
363
  describe('getAllDependencies', () => {
364
364
  it('returns own imports', () => {
365
- file = program.addOrReplaceFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
365
+ file = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
366
366
  <?xml version="1.0" encoding="utf-8" ?>
367
367
  <component name="ChildScene" extends="BaseScene">
368
368
  <script type="text/brightscript" uri="pkg:/source/lib.brs" />
@@ -375,7 +375,7 @@ describe('XmlFile', () => {
375
375
  });
376
376
  });
377
377
  it('invalidates dependent scopes on change', () => {
378
- let xmlFile = program.addOrReplaceFile({
378
+ let xmlFile = program.setFile({
379
379
  src: `${rootDir}/components/comp1.xml`,
380
380
  dest: `components/comp1.xml`
381
381
  }, (0, testHelpers_spec_1.trim) `
@@ -389,7 +389,7 @@ describe('XmlFile', () => {
389
389
  //scope should be validated
390
390
  (0, chai_1.expect)(scope.isValidated);
391
391
  //add lib1
392
- program.addOrReplaceFile({
392
+ program.setFile({
393
393
  src: `${rootDir}/source/lib.bs`,
394
394
  dest: `source/lib.bs`
395
395
  }, ``);
@@ -398,7 +398,7 @@ describe('XmlFile', () => {
398
398
  program.validate();
399
399
  (0, chai_1.expect)(scope.isValidated).to.be.true;
400
400
  //update lib1 to include an import
401
- program.addOrReplaceFile({
401
+ program.setFile({
402
402
  src: `${rootDir}/source/lib.bs`,
403
403
  dest: `source/lib.bs`
404
404
  }, `
@@ -409,7 +409,7 @@ describe('XmlFile', () => {
409
409
  program.validate();
410
410
  (0, chai_1.expect)(scope.isValidated).to.be.true;
411
411
  //add the lib2 imported from lib
412
- program.addOrReplaceFile({
412
+ program.setFile({
413
413
  src: `${rootDir}/source/lib2.bs`,
414
414
  dest: `source/lib2.bs`
415
415
  }, ``);
@@ -421,7 +421,7 @@ describe('XmlFile', () => {
421
421
  (0, chai_1.expect)(scope.isValidated).to.be.false;
422
422
  });
423
423
  it('does not invalidate unrelated scopes on change', () => {
424
- let xmlFile1 = program.addOrReplaceFile({
424
+ let xmlFile1 = program.setFile({
425
425
  src: `${rootDir}/components/comp1.xml`,
426
426
  dest: `components/comp1.xml`
427
427
  }, (0, testHelpers_spec_1.trim) `
@@ -430,7 +430,7 @@ describe('XmlFile', () => {
430
430
  <script type="text/brightscript" uri="pkg:/source/lib.brs" />
431
431
  </component>
432
432
  `);
433
- let xmlFile2 = program.addOrReplaceFile({
433
+ let xmlFile2 = program.setFile({
434
434
  src: `${rootDir}/components/comp2.xml`,
435
435
  dest: `components/comp2.xml`
436
436
  }, (0, testHelpers_spec_1.trim) `
@@ -443,7 +443,7 @@ describe('XmlFile', () => {
443
443
  (0, chai_1.expect)(program.getScopesForFile(xmlFile1)[0].isValidated).to.be.true;
444
444
  (0, chai_1.expect)(program.getScopesForFile(xmlFile2)[0].isValidated).to.be.true;
445
445
  //add the lib file
446
- program.addOrReplaceFile({
446
+ program.setFile({
447
447
  src: `${rootDir}/source/lib.brs`,
448
448
  dest: `source/lib.brs`
449
449
  }, ``);
@@ -461,7 +461,7 @@ describe('XmlFile', () => {
461
461
  });
462
462
  describe('component extends', () => {
463
463
  it('works for single-line', () => {
464
- file = program.addOrReplaceFile({
464
+ file = program.setFile({
465
465
  src: `${rootDir}/components/comp1.xml`,
466
466
  dest: `components/comp1.xml`
467
467
  }, (0, testHelpers_spec_1.trim) `
@@ -472,7 +472,7 @@ describe('XmlFile', () => {
472
472
  (0, chai_1.expect)(file.parentComponentName.range).to.eql(vscode_languageserver_1.Range.create(1, 38, 1, 47));
473
473
  });
474
474
  it('works for multi-line', () => {
475
- file = program.addOrReplaceFile({
475
+ file = program.setFile({
476
476
  src: `${rootDir}/components/comp1.xml`,
477
477
  dest: `components/comp1.xml`
478
478
  }, (0, testHelpers_spec_1.trim) `
@@ -484,7 +484,7 @@ describe('XmlFile', () => {
484
484
  (0, chai_1.expect)(file.parentComponentName.range).to.eql(vscode_languageserver_1.Range.create(2, 13, 2, 22));
485
485
  });
486
486
  it('does not throw when unable to find extends', () => {
487
- file = program.addOrReplaceFile({
487
+ file = program.setFile({
488
488
  src: `${rootDir}/components/comp1.xml`,
489
489
  dest: `components/comp1.xml`
490
490
  }, (0, testHelpers_spec_1.trim) `
@@ -495,7 +495,7 @@ describe('XmlFile', () => {
495
495
  (0, chai_1.expect)(file.parentComponentName).to.not.exist;
496
496
  });
497
497
  it('adds warning when no "extends" attribute is found', () => {
498
- program.addOrReplaceFile({
498
+ program.setFile({
499
499
  src: `${rootDir}/components/comp1.xml`,
500
500
  dest: `components/comp1.xml`
501
501
  }, (0, testHelpers_spec_1.trim) `
@@ -514,11 +514,11 @@ describe('XmlFile', () => {
514
514
  autoImportComponentScript: true,
515
515
  rootDir: rootDir
516
516
  });
517
- program.addOrReplaceFile({
517
+ program.setFile({
518
518
  src: `${rootDir}/components/SimpleScene.bs`,
519
519
  dest: `components/SimpleScene.bs`
520
520
  }, '');
521
- program.addOrReplaceFile({
521
+ program.setFile({
522
522
  src: `${rootDir}/components/SimpleScene.xml`,
523
523
  dest: `components/SimpleScene.xml`
524
524
  }, (0, testHelpers_spec_1.trim) `
@@ -573,7 +573,7 @@ describe('XmlFile', () => {
573
573
  file.needsTranspiled = true;
574
574
  }
575
575
  });
576
- const file = program.addOrReplaceFile('components/file.xml', (0, testHelpers_spec_1.trim) `
576
+ const file = program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
577
577
  <?xml version="1.0" encoding="utf-8" ?>
578
578
  <component name="Comp" extends="Group">
579
579
  </component>
@@ -606,8 +606,8 @@ describe('XmlFile', () => {
606
606
  `, 'none', 'components/child.xml');
607
607
  });
608
608
  it('does not include bslib script if already there from ropm', () => {
609
- program.addOrReplaceFile('source/roku_modules/bslib/bslib.brs', ``);
610
- program.addOrReplaceFile('source/lib.bs', ``);
609
+ program.setFile('source/roku_modules/bslib/bslib.brs', ``);
610
+ program.setFile('source/lib.bs', ``);
611
611
  //include a bs file to force transpile for the xml file
612
612
  testTranspile((0, testHelpers_spec_1.trim) `
613
613
  <?xml version="1.0" encoding="utf-8" ?>
@@ -624,7 +624,7 @@ describe('XmlFile', () => {
624
624
  `, 'none', 'components/child.xml');
625
625
  });
626
626
  it('does not transpile xml file when bslib script is already present', () => {
627
- const file = program.addOrReplaceFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
627
+ const file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
628
628
  <?xml version="1.0" encoding="utf-8" ?>
629
629
  <component name="Comp" extends="Group">
630
630
  <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
@@ -638,8 +638,8 @@ describe('XmlFile', () => {
638
638
  * There was a bug that would incorrectly replace one of the script paths on the second or third transpile, so this test verifies it doesn't do that anymore
639
639
  */
640
640
  it('does not mangle scripts on multiple transpile', async () => {
641
- program.addOrReplaceFile('components/SimpleScene.bs', ``);
642
- program.addOrReplaceFile(`components/SimpleScene.xml`, (0, testHelpers_spec_1.trim) `
641
+ program.setFile('components/SimpleScene.bs', ``);
642
+ program.setFile(`components/SimpleScene.xml`, (0, testHelpers_spec_1.trim) `
643
643
  <?xml version="1.0" encoding="utf-8" ?>
644
644
  <component name="SimpleScene" extends="Scene">
645
645
  <script type="text/brightscript" uri="SimpleScene.bs" />
@@ -660,7 +660,7 @@ describe('XmlFile', () => {
660
660
  (0, chai_1.expect)(fsExtra.readFileSync(`${stagingDir}/components/SimpleScene.xml`).toString()).to.eql(expected);
661
661
  });
662
662
  it('keeps all content of the XML', () => {
663
- program.addOrReplaceFile(`components/SimpleScene.bs`, `
663
+ program.setFile(`components/SimpleScene.bs`, `
664
664
  sub b()
665
665
  end sub
666
666
  `);
@@ -700,10 +700,10 @@ describe('XmlFile', () => {
700
700
  `, 'none', 'components/SimpleScene.xml');
701
701
  });
702
702
  it('changes file extensions from bs to brs', () => {
703
- program.addOrReplaceFile(`components/SimpleScene.bs`, `
703
+ program.setFile(`components/SimpleScene.bs`, `
704
704
  import "pkg:/source/lib.bs"
705
705
  `);
706
- program.addOrReplaceFile('source/lib.bs', ``);
706
+ program.setFile('source/lib.bs', ``);
707
707
  testTranspile((0, testHelpers_spec_1.trim) `
708
708
  <?xml version="1.0" encoding="utf-8" ?>
709
709
  <component name="SimpleScene" extends="Scene">
@@ -719,7 +719,7 @@ describe('XmlFile', () => {
719
719
  `, 'none', 'components/SimpleScene.xml');
720
720
  });
721
721
  it('does not fail on missing script type', () => {
722
- program.addOrReplaceFile('components/SimpleScene.brs', '');
722
+ program.setFile('components/SimpleScene.brs', '');
723
723
  testTranspile((0, testHelpers_spec_1.trim) `
724
724
  <?xml version="1.0" encoding="utf-8" ?>
725
725
  <component name="SimpleScene" extends="Scene">
@@ -734,7 +734,7 @@ describe('XmlFile', () => {
734
734
  `, null, 'components/comp.xml');
735
735
  });
736
736
  it('returns the XML unmodified if needsTranspiled is false', () => {
737
- let file = program.addOrReplaceFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
737
+ let file = program.setFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
738
738
  <?xml version="1.0" encoding="utf-8" ?>
739
739
  <!-- should stay as-is -->
740
740
  <component name="SimpleScene" extends="Scene" >
@@ -752,7 +752,7 @@ describe('XmlFile', () => {
752
752
  `);
753
753
  });
754
754
  it('needsTranspiled is false by default', () => {
755
- let file = program.addOrReplaceFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
755
+ let file = program.setFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
756
756
  <?xml version="1.0" encoding="utf-8" ?>
757
757
  <component name="SimpleScene" extends="Scene" >
758
758
  </component>
@@ -760,7 +760,7 @@ describe('XmlFile', () => {
760
760
  (0, chai_1.expect)(file.needsTranspiled).to.be.false;
761
761
  });
762
762
  it('needsTranspiled is true if an import is brighterscript', () => {
763
- let file = program.addOrReplaceFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
763
+ let file = program.setFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
764
764
  <?xml version="1.0" encoding="utf-8" ?>
765
765
  <component name="SimpleScene" extends="Scene" >
766
766
  <script type="text/brightscript" uri="SimpleScene.bs"/>
@@ -770,7 +770,7 @@ describe('XmlFile', () => {
770
770
  });
771
771
  it('simple source mapping includes sourcemap reference', () => {
772
772
  program.options.sourceMap = true;
773
- let file = program.addOrReplaceFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
773
+ let file = program.setFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
774
774
  <?xml version="1.0" encoding="utf-8" ?>
775
775
  <component name="SimpleScene" extends="Scene">
776
776
  </component>
@@ -782,7 +782,7 @@ describe('XmlFile', () => {
782
782
  });
783
783
  it('AST-based source mapping includes sourcemap reference', () => {
784
784
  program.options.sourceMap = true;
785
- let file = program.addOrReplaceFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
785
+ let file = program.setFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
786
786
  <?xml version="1.0" encoding="utf-8" ?>
787
787
  <component name="SimpleScene" extends="Scene">
788
788
  </component>
@@ -802,7 +802,7 @@ describe('XmlFile', () => {
802
802
  name: 'Transform plugins',
803
803
  afterFileParse: file => validateXml(file)
804
804
  });
805
- file = program.addOrReplaceFile('components/component.xml', (0, testHelpers_spec_1.trim) `
805
+ file = program.setFile('components/component.xml', (0, testHelpers_spec_1.trim) `
806
806
  <?xml version="1.0" encoding="utf-8" ?>
807
807
  <component name="Cmp1" extends="Scene">
808
808
  </component>
@@ -831,7 +831,7 @@ describe('XmlFile', () => {
831
831
  }
832
832
  }
833
833
  });
834
- program.addOrReplaceFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
834
+ program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
835
835
  <?xml version="1.0" encoding="utf-8" ?>
836
836
  <component name="Cmp1" extends="Scene">
837
837
  </component>
@@ -844,40 +844,40 @@ describe('XmlFile', () => {
844
844
  });
845
845
  describe('typedef', () => {
846
846
  it('loads d.bs files from parent scope', () => {
847
- program.addOrReplaceFile('components/ParentComponent.xml', (0, testHelpers_spec_1.trim) `
847
+ program.setFile('components/ParentComponent.xml', (0, testHelpers_spec_1.trim) `
848
848
  <?xml version="1.0" encoding="utf-8" ?>
849
849
  <component name="ParentComponent" extends="Scene">
850
850
  <script uri="ParentComponent.brs" />
851
851
  </component>
852
852
  `);
853
- program.addOrReplaceFile('components/ParentComponent.d.bs', `
853
+ program.setFile('components/ParentComponent.d.bs', `
854
854
  import "Lib.brs"
855
855
  namespace Parent
856
856
  sub log()
857
857
  end sub
858
858
  end namespace
859
859
  `);
860
- program.addOrReplaceFile('components/ParentComponent.brs', `
860
+ program.setFile('components/ParentComponent.brs', `
861
861
  sub Parent_log()
862
862
  end sub
863
863
  `);
864
- program.addOrReplaceFile('components/Lib.d.bs', `
864
+ program.setFile('components/Lib.d.bs', `
865
865
  namespace Lib
866
866
  sub log()
867
867
  end sub
868
868
  end namespace
869
869
  `);
870
- program.addOrReplaceFile('components/Lib.brs', `
870
+ program.setFile('components/Lib.brs', `
871
871
  sub Lib_log()
872
872
  end sub
873
873
  `);
874
- program.addOrReplaceFile('components/ChildComponent.xml', (0, testHelpers_spec_1.trim) `
874
+ program.setFile('components/ChildComponent.xml', (0, testHelpers_spec_1.trim) `
875
875
  <?xml version="1.0" encoding="utf-8" ?>
876
876
  <component name="ChildComponent" extends="ParentComponent">
877
877
  <script uri="ChildComponent.bs" />
878
878
  </component>
879
879
  `);
880
- program.addOrReplaceFile('components/ChildComponent.bs', `
880
+ program.setFile('components/ChildComponent.bs', `
881
881
  sub init()
882
882
  Parent.log()
883
883
  Lib.log()
@@ -892,28 +892,28 @@ describe('XmlFile', () => {
892
892
  ]);
893
893
  });
894
894
  it('loads `d.bs` files into scope', () => {
895
- const xmlFile = program.addOrReplaceFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
895
+ const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
896
896
  <?xml version="1.0" encoding="utf-8" ?>
897
897
  <component name="Component1" extends="Scene">
898
898
  <script uri="Component1.brs" />
899
899
  </component>
900
900
  `);
901
- program.addOrReplaceFile('components/Component1.d.bs', `
901
+ program.setFile('components/Component1.d.bs', `
902
902
  sub logInfo()
903
903
  end sub
904
904
  `);
905
905
  (0, chai_1.expect)(program.getScopesForFile(xmlFile)[0].getAllCallables().map(x => x.callable.name)).to.include('logInfo');
906
906
  });
907
907
  it('does not include `d.bs` script during transpile', () => {
908
- program.addOrReplaceFile('source/logger.d.bs', `
908
+ program.setFile('source/logger.d.bs', `
909
909
  sub logInfo()
910
910
  end sub
911
911
  `);
912
- program.addOrReplaceFile('source/logger.brs', `
912
+ program.setFile('source/logger.brs', `
913
913
  sub logInfo()
914
914
  end sub
915
915
  `);
916
- program.addOrReplaceFile('components/Component1.bs', `
916
+ program.setFile('components/Component1.bs', `
917
917
  import "pkg:/source/logger.brs"
918
918
  sub init()
919
919
  end sub
@@ -933,7 +933,7 @@ describe('XmlFile', () => {
933
933
  `, 'none', 'components/Component1.xml');
934
934
  });
935
935
  it('does not load .brs information into scope if related d.bs is in scope', () => {
936
- const xmlFile = program.addOrReplaceFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
936
+ const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
937
937
  <?xml version="1.0" encoding="utf-8" ?>
938
938
  <component name="Component1" extends="Scene">
939
939
  <script uri="Component1.brs" />
@@ -941,7 +941,7 @@ describe('XmlFile', () => {
941
941
  `);
942
942
  const scope = program.getScopesForFile(xmlFile)[0];
943
943
  //load brs file
944
- program.addOrReplaceFile('components/Component1.brs', `
944
+ program.setFile('components/Component1.brs', `
945
945
  sub logInfo()
946
946
  end sub
947
947
  sub logWarning()
@@ -951,7 +951,7 @@ describe('XmlFile', () => {
951
951
  (0, chai_1.expect)(functionNames).to.include('logInfo');
952
952
  (0, chai_1.expect)(functionNames).to.include('logWarning');
953
953
  //load d.bs file, which should shadow out the .brs file
954
- program.addOrReplaceFile('components/Component1.d.bs', `
954
+ program.setFile('components/Component1.d.bs', `
955
955
  sub logError()
956
956
  end sub
957
957
  `);
@@ -961,7 +961,7 @@ describe('XmlFile', () => {
961
961
  (0, chai_1.expect)(functionNames).not.to.include('logWarning');
962
962
  });
963
963
  it('updates xml scope when typedef disappears', () => {
964
- const xmlFile = program.addOrReplaceFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
964
+ const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
965
965
  <?xml version="1.0" encoding="utf-8" ?>
966
966
  <component name="Component1" extends="Scene">
967
967
  <script uri="Component1.brs" />
@@ -969,12 +969,12 @@ describe('XmlFile', () => {
969
969
  `);
970
970
  const scope = program.getScopesForFile(xmlFile)[0];
971
971
  //load brs file
972
- program.addOrReplaceFile('components/Component1.brs', `
972
+ program.setFile('components/Component1.brs', `
973
973
  sub logBrs()
974
974
  end sub
975
975
  `);
976
976
  //load d.bs file, which should shadow out the .brs file
977
- const typedef = program.addOrReplaceFile('components/Component1.d.bs', `
977
+ const typedef = program.setFile('components/Component1.d.bs', `
978
978
  sub logTypedef()
979
979
  end sub
980
980
  `);
@@ -992,7 +992,7 @@ describe('XmlFile', () => {
992
992
  });
993
993
  it('finds script imports for single-quoted script tags', () => {
994
994
  var _a;
995
- const file = program.addOrReplaceFile('components/file.xml', (0, testHelpers_spec_1.trim) `
995
+ const file = program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
996
996
  <?xml version="1.0" encoding="utf-8" ?>
997
997
  <component name="Cmp1" extends="Scene">
998
998
  <script uri='SingleQuotedFile.brs' />
@@ -1003,7 +1003,7 @@ describe('XmlFile', () => {
1003
1003
  describe('commentFlags', () => {
1004
1004
  it('ignores warning from previous line comment', () => {
1005
1005
  //component without a name attribute
1006
- program.addOrReplaceFile('components/file.xml', (0, testHelpers_spec_1.trim) `
1006
+ program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
1007
1007
  <?xml version="1.0" encoding="utf-8" ?>
1008
1008
  <!--bs:disable-next-line-->
1009
1009
  <component>
@@ -1014,7 +1014,7 @@ describe('XmlFile', () => {
1014
1014
  });
1015
1015
  it('ignores warning from previous line just for the specified code', () => {
1016
1016
  //component without a name attribute
1017
- program.addOrReplaceFile('components/file.xml', (0, testHelpers_spec_1.trim) `
1017
+ program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
1018
1018
  <?xml version="1.0" encoding="utf-8" ?>
1019
1019
  <!--bs:disable-next-line 1006-->
1020
1020
  <component>
@@ -1027,7 +1027,7 @@ describe('XmlFile', () => {
1027
1027
  });
1028
1028
  it('ignores warning from previous line comment', () => {
1029
1029
  //component without a name attribute
1030
- program.addOrReplaceFile('components/file.xml', (0, testHelpers_spec_1.trim) `
1030
+ program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
1031
1031
  <?xml version="1.0" encoding="utf-8" ?>
1032
1032
  <component> <!--bs:disable-line-->
1033
1033
  </component>
@@ -1037,7 +1037,7 @@ describe('XmlFile', () => {
1037
1037
  });
1038
1038
  it('ignores warning from previous line just for the specified code', () => {
1039
1039
  //component without a name attribute
1040
- program.addOrReplaceFile('components/file.xml', (0, testHelpers_spec_1.trim) `
1040
+ program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
1041
1041
  <?xml version="1.0" encoding="utf-8" ?>
1042
1042
  <component> <!--bs:disable-line 1006-->
1043
1043
  </component>
@@ -1050,16 +1050,16 @@ describe('XmlFile', () => {
1050
1050
  });
1051
1051
  describe('duplicate components', () => {
1052
1052
  it('more gracefully handles multiple components with the same name', () => {
1053
- program.addOrReplaceFile('components/comp1.brs', ``);
1054
- program.addOrReplaceFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
1053
+ program.setFile('components/comp1.brs', ``);
1054
+ program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
1055
1055
  <?xml version="1.0" encoding="utf-8" ?>
1056
1056
  <component name="comp1" extends="Group">
1057
1057
  <script uri="comp1.brs" />
1058
1058
  </component>
1059
1059
  `);
1060
1060
  //add another component with the same name
1061
- program.addOrReplaceFile('components/comp2.brs', ``);
1062
- program.addOrReplaceFile('components/comp2.xml', (0, testHelpers_spec_1.trim) `
1061
+ program.setFile('components/comp2.brs', ``);
1062
+ program.setFile('components/comp2.xml', (0, testHelpers_spec_1.trim) `
1063
1063
  <?xml version="1.0" encoding="utf-8" ?>
1064
1064
  <component name="comp1" extends="Group">
1065
1065
  <script uri="comp2.brs" />
@@ -1073,14 +1073,14 @@ describe('XmlFile', () => {
1073
1073
  });
1074
1074
  it('maintains consistent component selection', () => {
1075
1075
  //add comp2 first
1076
- const comp2 = program.addOrReplaceFile('components/comp2.xml', (0, testHelpers_spec_1.trim) `
1076
+ const comp2 = program.setFile('components/comp2.xml', (0, testHelpers_spec_1.trim) `
1077
1077
  <?xml version="1.0" encoding="utf-8" ?>
1078
1078
  <component name="comp1">
1079
1079
  </component>
1080
1080
  `);
1081
1081
  (0, chai_1.expect)(program.getComponent('comp1').file.pkgPath).to.equal(comp2.pkgPath);
1082
1082
  //add comp1. it should become the main component with this name
1083
- const comp1 = program.addOrReplaceFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
1083
+ const comp1 = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
1084
1084
  <?xml version="1.0" encoding="utf-8" ?>
1085
1085
  <component name="comp1" extends="Group">
1086
1086
  </component>
@@ -1090,7 +1090,7 @@ describe('XmlFile', () => {
1090
1090
  program.removeFile((0, util_1.standardizePath) `${rootDir}/components/comp1.xml`);
1091
1091
  (0, chai_1.expect)(program.getComponent('comp1').file.pkgPath).to.equal(comp2.pkgPath);
1092
1092
  //add comp3
1093
- program.addOrReplaceFile('components/comp3.xml', (0, testHelpers_spec_1.trim) `
1093
+ program.setFile('components/comp3.xml', (0, testHelpers_spec_1.trim) `
1094
1094
  <?xml version="1.0" encoding="utf-8" ?>
1095
1095
  <component name="comp1">
1096
1096
  </component>