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