brighterscript 0.47.1 → 0.48.0
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.
- package/CHANGELOG.md +22 -0
- package/bsconfig.schema.json +12 -0
- package/dist/DiagnosticMessages.d.ts +21 -1
- package/dist/DiagnosticMessages.js +23 -0
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/Program.d.ts +1 -2
- package/dist/Program.js.map +1 -1
- package/dist/Scope.d.ts +7 -0
- package/dist/Scope.js +57 -0
- package/dist/Scope.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +15 -2
- package/dist/astUtils/visitors.js +1 -1
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +25 -13
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
- package/dist/files/BrsFile.js +12 -4
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +5 -1
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/tests/optionalChaning.spec.d.ts +1 -0
- package/dist/files/tests/optionalChaning.spec.js +88 -0
- package/dist/files/tests/optionalChaning.spec.js.map +1 -0
- package/dist/interfaces.d.ts +3 -0
- package/dist/lexer/Lexer.d.ts +5 -0
- package/dist/lexer/Lexer.js +37 -0
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +62 -4
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +4 -0
- package/dist/lexer/TokenKind.js +4 -0
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/Expression.d.ts +37 -8
- package/dist/parser/Expression.js +26 -7
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +15 -0
- package/dist/parser/Parser.js +39 -9
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +83 -0
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +66 -0
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/preprocessor/Manifest.d.ts +5 -5
- package/dist/preprocessor/Manifest.js +14 -35
- package/dist/preprocessor/Manifest.js.map +1 -1
- package/dist/preprocessor/Manifest.spec.d.ts +1 -0
- package/dist/preprocessor/Manifest.spec.js +78 -103
- package/dist/preprocessor/Manifest.spec.js.map +1 -1
- package/dist/roku-types/data.json +21891 -0
- package/dist/roku-types/index.d.ts +6776 -0
- package/dist/roku-types/index.js +11 -0
- package/dist/roku-types/index.js.map +1 -0
- package/dist/types/InterfaceType.spec.js +2 -1
- package/dist/types/InterfaceType.spec.js.map +1 -1
- package/dist/util.d.ts +7 -0
- package/dist/util.js +34 -0
- package/dist/util.js.map +1 -1
- package/package.json +12 -3
|
@@ -1,105 +1,80 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"Manifest.spec.js","sourceRoot":"","sources":["../../src/preprocessor/Manifest.spec.ts"],"names":[],"mappings":"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"}
|