brighterscript 1.0.0-alpha.19 → 1.0.0-alpha.21

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 (96) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/bsconfig.schema.json +12 -0
  3. package/dist/Cache.d.ts +5 -1
  4. package/dist/Cache.js +6 -0
  5. package/dist/Cache.js.map +1 -1
  6. package/dist/DiagnosticMessages.d.ts +21 -1
  7. package/dist/DiagnosticMessages.js +27 -4
  8. package/dist/DiagnosticMessages.js.map +1 -1
  9. package/dist/PluginInterface.d.ts +4 -0
  10. package/dist/PluginInterface.js +6 -0
  11. package/dist/PluginInterface.js.map +1 -1
  12. package/dist/Program.d.ts +1 -2
  13. package/dist/Program.js +44 -21
  14. package/dist/Program.js.map +1 -1
  15. package/dist/Scope.d.ts +45 -20
  16. package/dist/Scope.js +64 -18
  17. package/dist/Scope.js.map +1 -1
  18. package/dist/SymbolTable.js +15 -0
  19. package/dist/SymbolTable.js.map +1 -1
  20. package/dist/XmlScope.d.ts +3 -3
  21. package/dist/astUtils/reflection.d.ts +3 -0
  22. package/dist/astUtils/reflection.js +9 -1
  23. package/dist/astUtils/reflection.js.map +1 -1
  24. package/dist/astUtils/visitors.d.ts +15 -5
  25. package/dist/astUtils/visitors.js +1 -1
  26. package/dist/astUtils/visitors.js.map +1 -1
  27. package/dist/bscPlugin/BscPlugin.d.ts +3 -1
  28. package/dist/bscPlugin/BscPlugin.js +6 -1
  29. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  30. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +25 -13
  31. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
  32. package/dist/bscPlugin/validation/ScopeValidator.d.ts +22 -4
  33. package/dist/bscPlugin/validation/ScopeValidator.js +102 -13
  34. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  35. package/dist/cli.js +0 -1
  36. package/dist/cli.js.map +1 -1
  37. package/dist/files/BrsFile.js +5 -3
  38. package/dist/files/BrsFile.js.map +1 -1
  39. package/dist/files/BrsFile.spec.js +145 -12
  40. package/dist/files/BrsFile.spec.js.map +1 -1
  41. package/dist/files/XmlFile.d.ts +5 -5
  42. package/dist/files/XmlFile.spec.js +21 -3
  43. package/dist/files/XmlFile.spec.js.map +1 -1
  44. package/dist/files/tests/optionalChaning.spec.d.ts +1 -0
  45. package/dist/files/tests/optionalChaning.spec.js +88 -0
  46. package/dist/files/tests/optionalChaning.spec.js.map +1 -0
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.js +1 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/interfaces.d.ts +9 -1
  51. package/dist/lexer/Lexer.d.ts +5 -0
  52. package/dist/lexer/Lexer.js +37 -0
  53. package/dist/lexer/Lexer.js.map +1 -1
  54. package/dist/lexer/Lexer.spec.js +62 -4
  55. package/dist/lexer/Lexer.spec.js.map +1 -1
  56. package/dist/lexer/TokenKind.d.ts +4 -0
  57. package/dist/lexer/TokenKind.js +4 -0
  58. package/dist/lexer/TokenKind.js.map +1 -1
  59. package/dist/parser/Expression.d.ts +37 -8
  60. package/dist/parser/Expression.js +26 -28
  61. package/dist/parser/Expression.js.map +1 -1
  62. package/dist/parser/Parser.d.ts +18 -1
  63. package/dist/parser/Parser.js +144 -107
  64. package/dist/parser/Parser.js.map +1 -1
  65. package/dist/parser/Parser.spec.js +83 -0
  66. package/dist/parser/Parser.spec.js.map +1 -1
  67. package/dist/parser/SGParser.js.map +1 -1
  68. package/dist/parser/SGParser.spec.js +1 -1
  69. package/dist/parser/SGParser.spec.js.map +1 -1
  70. package/dist/parser/Statement.d.ts +8 -4
  71. package/dist/parser/Statement.js +31 -20
  72. package/dist/parser/Statement.js.map +1 -1
  73. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +1 -1
  74. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  75. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +9 -9
  76. package/dist/parser/tests/expression/TernaryExpression.spec.js +1 -1
  77. package/dist/parser/tests/statement/Enum.spec.js +66 -0
  78. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  79. package/dist/parser/tests/statement/PrintStatement.spec.js +6 -6
  80. package/dist/preprocessor/Manifest.d.ts +5 -5
  81. package/dist/preprocessor/Manifest.js +14 -35
  82. package/dist/preprocessor/Manifest.js.map +1 -1
  83. package/dist/preprocessor/Manifest.spec.d.ts +1 -0
  84. package/dist/preprocessor/Manifest.spec.js +78 -103
  85. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  86. package/dist/roku-types/data.json +21891 -0
  87. package/dist/roku-types/index.d.ts +6776 -0
  88. package/dist/roku-types/index.js +11 -0
  89. package/dist/roku-types/index.js.map +1 -0
  90. package/dist/types/EnumType.d.ts +22 -0
  91. package/dist/types/EnumType.js +55 -0
  92. package/dist/types/EnumType.js.map +1 -0
  93. package/dist/util.d.ts +4 -0
  94. package/dist/util.js +7 -0
  95. package/dist/util.js.map +1 -1
  96. package/package.json +13 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../../src/preprocessor/Manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../../src/preprocessor/Manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,105 +1,80 @@
1
1
  "use strict";
2
- // import * as fsExtra from 'fs';
3
- // import { expect } from 'chai';
4
- // import { getManifest, getBsConst } from './Manifest';
5
- // import { createSandbox, SinonSandbox } from 'sinon';
6
- // let sinon: SinonSandbox;
7
- // describe('manifest support', () => {
8
- // beforeEach(() => {
9
- // sinon = createSandbox();
10
- // });
11
- // afterEach(() => {
12
- // sinon.restore();
13
- // });
14
- // describe('manifest parser', () => {
15
- // it('returns an empty map if manifest not found', async () => {
16
- // // sinon.stub(fsExtra, 'readFile').returns(<any>
17
- // // Promise.reject(
18
- // // new Error('File not found')
19
- // // )
20
- // // );
21
- // sinon.stub(fsExtra, 'readFile').returns(<any>
22
- // Promise.reject(
23
- // new Error('File not found')
24
- // )
25
- // );
26
- // return expect(await getManifest('/no/manifest/here')).to.eql(new Map());
27
- // });
28
- // it('rejects key-value pairs with no \'=\'', () => {
29
- // fs.readFile.mockImplementation((filename, encoding, cb) => cb(/* no error */ null, 'no_equal')
30
- // );
31
- // return expect(getManifest('/has/key/but/no/equal')).rejects.toThrowError(
32
- // 'No \'=\' detected'
33
- // );
34
- // });
35
- // it('ignores comments', () => {
36
- // fs.readFile.mockImplementation((filename, encoding, cb) => cb(/* no error */ null, '# this line is ignored!')
37
- // );
38
- // return expect(getManifest('/has/a/manifest')).resolves.to.eql(new Map());
39
- // });
40
- // it('ignores empty keys and values', () => {
41
- // fs.readFile.mockImplementation((filename, encoding, cb) => cb(/* no error */ null, [' =lorem', 'ipsum= '].join('\n'))
42
- // );
43
- // return expect(getManifest('/has/blank/keys/and/values')).resolves.to.eql(new Map());
44
- // });
45
- // it('trims whitespace from keys and values', () => {
46
- // fs.readFile.mockImplementation((filename, encoding, cb) => cb(/* no error */ null, ' key = value ')
47
- // );
48
- // return expect(getManifest('/has/extra/whitespace')).resolves.to.eql(
49
- // new Map([['key', 'value']])
50
- // );
51
- // });
52
- // it('parses key-value pairs', () => {
53
- // fs.readFile.mockImplementation((filename, encoding, cb) => cb(
54
- // /* no error */ null,
55
- // ['foo=bar=baz', 'lorem=true', 'five=5', 'six=6.000', 'version=1.2.3'].join('\n')
56
- // )
57
- // );
58
- // return expect(getManifest('/has/a/manifest')).resolves.to.eql(
59
- // new Map([
60
- // ['foo', 'bar=baz'],
61
- // ['lorem', true],
62
- // ['five', 5],
63
- // ['six', 6],
64
- // ['version', '1.2.3']
65
- // ])
66
- // );
67
- // });
68
- // });
69
- // describe('bs_const parser', () => {
70
- // it('returns an empty map if \'bs_const\' isn\'t found', () => {
71
- // let manifest = new Map([['containsBsConst', false]]);
72
- // expect(getBsConst(manifest)).to.eql(new Map());
73
- // });
74
- // it('requires a string value for \'bs_const\' attributes', () => {
75
- // let manifest = new Map([['bs_const', 1.2345]]);
76
- // expect(() => getBsConst(manifest)).toThrowError('Invalid bs_const right-hand side');
77
- // });
78
- // it('ignores empty key-value pairs', () => {
79
- // let manifest = new Map([['bs_const', ';;;;']]);
80
- // expect(getBsConst(manifest)).to.eql(new Map());
81
- // });
82
- // it('rejects key-value pairs with no \'=\'', () => {
83
- // let manifest = new Map([['bs_const', 'i-have-no-equal']]);
84
- // expect(() => getBsConst(manifest)).toThrowError('No \'=\' detected');
85
- // });
86
- // it('trims whitespace from keys and values', () => {
87
- // let manifest = new Map([['bs_const', ' key = true ']]);
88
- // expect(getBsConst(manifest)).to.eql(new Map([['key', true]]));
89
- // });
90
- // it('rejects non-boolean values', () => {
91
- // let manifest = new Map([['bs_const', 'string=word']]);
92
- // expect(() => getBsConst(manifest)).to.throw;
93
- // });
94
- // it('allows case-insensitive booleans', () => {
95
- // let manifest = new Map([['bs_const', 'foo=true;bar=FalSE']]);
96
- // expect(getBsConst(manifest)).to.eql(
97
- // new Map([
98
- // ['foo', true],
99
- // ['bar', false]
100
- // ])
101
- // );
102
- // });
103
- // });
104
- // });
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fsExtra = require("fs");
4
+ const chai_1 = require("chai");
5
+ const Manifest_1 = require("./Manifest");
6
+ const sinon_1 = require("sinon");
7
+ const testHelpers_spec_1 = require("../testHelpers.spec");
8
+ const sinon = (0, sinon_1.createSandbox)();
9
+ describe('manifest support', () => {
10
+ beforeEach(() => {
11
+ sinon.restore();
12
+ });
13
+ afterEach(() => {
14
+ sinon.restore();
15
+ });
16
+ describe('manifest parser', () => {
17
+ it('returns an empty map if manifest not found', async () => {
18
+ sinon.stub(fsExtra, 'readFile').returns(Promise.reject(new Error('File not found')));
19
+ return (0, chai_1.expect)(await (0, Manifest_1.getManifest)('/no/manifest/here')).to.eql(new Map());
20
+ });
21
+ it('rejects key-value pairs with no \'=\'', () => {
22
+ (0, testHelpers_spec_1.expectThrows)(() => {
23
+ (0, Manifest_1.parseManifest)('key');
24
+ });
25
+ });
26
+ it('ignores comments', () => {
27
+ return (0, chai_1.expect)((0, Manifest_1.parseManifest)('')).to.eql(new Map());
28
+ });
29
+ it('retains whitespace for keys and values', () => {
30
+ (0, chai_1.expect)((0, testHelpers_spec_1.mapToObject)((0, Manifest_1.parseManifest)(' leading interum and trailing key spaces = value '))).to.eql({
31
+ ' leading interum and trailing key spaces ': ' value '
32
+ });
33
+ });
34
+ it('does not convert values to primitives', () => {
35
+ (0, chai_1.expect)((0, testHelpers_spec_1.mapToObject)((0, Manifest_1.parseManifest)((0, testHelpers_spec_1.trim) `
36
+ name=bob
37
+ age=12
38
+ enabled=true
39
+ height=1.5
40
+ `))).to.eql({
41
+ name: 'bob',
42
+ age: '12',
43
+ enabled: 'true',
44
+ height: '1.5'
45
+ });
46
+ });
47
+ });
48
+ describe('bs_const parser', () => {
49
+ function test(manifest, expected) {
50
+ (0, chai_1.expect)((0, Manifest_1.getBsConst)((0, Manifest_1.parseManifest)(manifest))).to.eql((0, testHelpers_spec_1.objectToMap)(expected));
51
+ }
52
+ it('returns an empty map if \'bs_const\' isn\'t found', () => {
53
+ test('', new Map());
54
+ });
55
+ it('ignores empty key-value pairs', () => {
56
+ test('bs_const=;;;;', new Map());
57
+ });
58
+ it('rejects key-value pairs with no \'=\'', () => {
59
+ (0, testHelpers_spec_1.expectThrows)(() => test(`bs_const=i-have-no-equal`, {}), `No '=' detected for key i-have-no-equal. bs_const constants must be of the form 'key=value'.`);
60
+ });
61
+ it('trims whitespace from keys and values', () => {
62
+ let manifest = new Map([['bs_const', ' key = true ']]);
63
+ (0, chai_1.expect)((0, Manifest_1.getBsConst)(manifest)).to.eql(new Map([['key', true]]));
64
+ });
65
+ it('rejects non-boolean values', () => {
66
+ const manifest = new Map([['bs_const', 'string=word']]);
67
+ (0, testHelpers_spec_1.expectThrows)(() => {
68
+ (0, Manifest_1.getBsConst)(manifest);
69
+ });
70
+ });
71
+ it('allows case-insensitive booleans', () => {
72
+ let manifest = new Map([['bs_const', 'foo=true;bar=FalSE']]);
73
+ (0, chai_1.expect)((0, Manifest_1.getBsConst)(manifest)).to.eql(new Map([
74
+ ['foo', true],
75
+ ['bar', false]
76
+ ]));
77
+ });
78
+ });
79
+ });
105
80
  //# sourceMappingURL=Manifest.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Manifest.spec.js","sourceRoot":"","sources":["../../src/preprocessor/Manifest.spec.ts"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,iCAAiC;AACjC,wDAAwD;AACxD,uDAAuD;AACvD,2BAA2B;AAE3B,uCAAuC;AACvC,yBAAyB;AACzB,mCAAmC;AACnC,UAAU;AACV,wBAAwB;AACxB,2BAA2B;AAC3B,UAAU;AAEV,0CAA0C;AAC1C,yEAAyE;AACzE,+DAA+D;AAC/D,qCAAqC;AACrC,qDAAqD;AACrD,uBAAuB;AACvB,oBAAoB;AACpB,4DAA4D;AAC5D,kCAAkC;AAClC,kDAAkD;AAClD,oBAAoB;AACpB,iBAAiB;AAEjB,uFAAuF;AACvF,cAAc;AAEd,8DAA8D;AAC9D,6GAA6G;AAC7G,iBAAiB;AAEjB,wFAAwF;AACxF,sCAAsC;AACtC,iBAAiB;AACjB,cAAc;AAEd,yCAAyC;AACzC,4HAA4H;AAC5H,iBAAiB;AAEjB,wFAAwF;AACxF,cAAc;AAEd,sDAAsD;AACtD,sIAAsI;AACtI,iBAAiB;AAEjB,mGAAmG;AACnG,cAAc;AAEd,8DAA8D;AAC9D,wHAAwH;AACxH,iBAAiB;AAEjB,mFAAmF;AACnF,8CAA8C;AAC9C,iBAAiB;AACjB,cAAc;AAEd,+CAA+C;AAC/C,6EAA6E;AAC7E,uCAAuC;AACvC,mGAAmG;AACnG,gBAAgB;AAChB,iBAAiB;AAEjB,6EAA6E;AAC7E,4BAA4B;AAC5B,0CAA0C;AAC1C,uCAAuC;AACvC,mCAAmC;AACnC,kCAAkC;AAClC,2CAA2C;AAC3C,qBAAqB;AACrB,iBAAiB;AACjB,cAAc;AACd,UAAU;AAEV,0CAA0C;AAC1C,0EAA0E;AAC1E,oEAAoE;AACpE,8DAA8D;AAC9D,cAAc;AAEd,4EAA4E;AAC5E,8DAA8D;AAC9D,mGAAmG;AACnG,cAAc;AAEd,sDAAsD;AACtD,8DAA8D;AAC9D,8DAA8D;AAC9D,cAAc;AAEd,8DAA8D;AAC9D,yEAAyE;AACzE,oFAAoF;AACpF,cAAc;AAEd,8DAA8D;AAC9D,4EAA4E;AAC5E,6EAA6E;AAC7E,cAAc;AAEd,mDAAmD;AACnD,qEAAqE;AAErE,2DAA2D;AAC3D,cAAc;AAEd,yDAAyD;AACzD,4EAA4E;AAE5E,mDAAmD;AACnD,4BAA4B;AAC5B,qCAAqC;AACrC,qCAAqC;AACrC,qBAAqB;AACrB,iBAAiB;AACjB,cAAc;AACd,UAAU;AACV,MAAM"}
1
+ {"version":3,"file":"Manifest.spec.js","sourceRoot":"","sources":["../../src/preprocessor/Manifest.spec.ts"],"names":[],"mappings":"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"}