septima-lang 0.0.21 → 0.2.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.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const value_1 = require("../src/value");
4
+ const err = () => {
5
+ throw new Error(`should not run`);
6
+ };
7
+ const fixed = (u) => () => value_1.Value.from(u);
8
+ const notFromHere = () => {
9
+ throw new Error('should not be called from this test');
10
+ };
11
+ describe('value', () => {
12
+ test('arithmetics', () => {
13
+ expect(value_1.Value.num(5).plus(value_1.Value.num(3)).export()).toEqual(8);
14
+ expect(value_1.Value.num(5).minus(value_1.Value.num(3)).export()).toEqual(2);
15
+ expect(value_1.Value.num(5).times(value_1.Value.num(3)).export()).toEqual(15);
16
+ expect(value_1.Value.num(14).over(value_1.Value.num(4)).export()).toEqual(3.5);
17
+ expect(value_1.Value.num(5).negate().export()).toEqual(-5);
18
+ expect(value_1.Value.num(-12).negate().export()).toEqual(12);
19
+ expect(value_1.Value.num(3).power(value_1.Value.num(4)).export()).toEqual(81);
20
+ expect(value_1.Value.num(2).power(value_1.Value.num(8)).export()).toEqual(256);
21
+ });
22
+ test('comparisons of numbers', () => {
23
+ expect(value_1.Value.num(5).order(value_1.Value.num(3)).export()).toEqual(1);
24
+ expect(value_1.Value.num(5).order(value_1.Value.num(4)).export()).toEqual(1);
25
+ expect(value_1.Value.num(5).order(value_1.Value.num(5)).export()).toEqual(0);
26
+ expect(value_1.Value.num(5).order(value_1.Value.num(6)).export()).toEqual(-1);
27
+ expect(value_1.Value.num(5).order(value_1.Value.num(7)).export()).toEqual(-1);
28
+ });
29
+ test('booleans', () => {
30
+ expect(value_1.Value.bool(true).export()).toEqual(true);
31
+ expect(value_1.Value.bool(false).export()).toEqual(false);
32
+ expect(value_1.Value.bool(false).not().export()).toEqual(true);
33
+ expect(value_1.Value.bool(true).not().export()).toEqual(false);
34
+ });
35
+ describe('boolean operators', () => {
36
+ test('or', () => {
37
+ expect(value_1.Value.bool(false)
38
+ .or(() => value_1.Value.bool(false))
39
+ .export()).toEqual(false);
40
+ expect(value_1.Value.bool(false)
41
+ .or(() => value_1.Value.bool(true))
42
+ .export()).toEqual(true);
43
+ expect(value_1.Value.bool(true)
44
+ .or(() => value_1.Value.bool(false))
45
+ .export()).toEqual(true);
46
+ expect(value_1.Value.bool(true)
47
+ .or(() => value_1.Value.bool(true))
48
+ .export()).toEqual(true);
49
+ });
50
+ test('and', () => {
51
+ expect(value_1.Value.bool(false)
52
+ .and(() => value_1.Value.bool(false))
53
+ .export()).toEqual(false);
54
+ expect(value_1.Value.bool(false)
55
+ .and(() => value_1.Value.bool(true))
56
+ .export()).toEqual(false);
57
+ expect(value_1.Value.bool(true)
58
+ .and(() => value_1.Value.bool(false))
59
+ .export()).toEqual(false);
60
+ expect(value_1.Value.bool(true)
61
+ .and(() => value_1.Value.bool(true))
62
+ .export()).toEqual(true);
63
+ });
64
+ });
65
+ test('comparisons of booleans', () => {
66
+ expect(value_1.Value.bool(false).order(value_1.Value.bool(false)).export()).toEqual(0);
67
+ expect(value_1.Value.bool(false).order(value_1.Value.bool(true)).export()).toEqual(-1);
68
+ expect(value_1.Value.bool(true).order(value_1.Value.bool(false)).export()).toEqual(1);
69
+ expect(value_1.Value.bool(true).order(value_1.Value.bool(true)).export()).toEqual(0);
70
+ });
71
+ test('strings', () => {
72
+ expect(value_1.Value.str('abc').export()).toEqual('abc');
73
+ expect(value_1.Value.str('').export()).toEqual('');
74
+ expect(value_1.Value.str('a').plus(value_1.Value.str('b')).export()).toEqual('ab');
75
+ expect(value_1.Value.str('').plus(value_1.Value.str('')).export()).toEqual('');
76
+ expect(value_1.Value.str('').plus(value_1.Value.str('xyz')).export()).toEqual('xyz');
77
+ expect(value_1.Value.str('pqr').plus(value_1.Value.str('')).export()).toEqual('pqr');
78
+ expect(value_1.Value.str('zxcvb').plus(value_1.Value.str('nm')).export()).toEqual('zxcvbnm');
79
+ });
80
+ test('comparisons of strings', () => {
81
+ expect(value_1.Value.str('e').order(value_1.Value.str('c')).export()).toEqual(1);
82
+ expect(value_1.Value.str('e').order(value_1.Value.str('d')).export()).toEqual(1);
83
+ expect(value_1.Value.str('e').order(value_1.Value.str('e')).export()).toEqual(0);
84
+ expect(value_1.Value.str('e').order(value_1.Value.str('f')).export()).toEqual(-1);
85
+ expect(value_1.Value.str('e').order(value_1.Value.str('g')).export()).toEqual(-1);
86
+ });
87
+ test('arrays', () => {
88
+ expect(value_1.Value.arr([value_1.Value.num(10), value_1.Value.num(20)]).export()).toEqual([10, 20]);
89
+ expect(value_1.Value.arr([]).export()).toEqual([]);
90
+ expect(value_1.Value.arr([value_1.Value.str('ab'), value_1.Value.num(500), value_1.Value.bool(true)]).export()).toEqual(['ab', 500, true]);
91
+ });
92
+ test('objects', () => {
93
+ expect(value_1.Value.obj({ x: value_1.Value.num(10), y: value_1.Value.num(20) }).export()).toEqual({ x: 10, y: 20 });
94
+ expect(value_1.Value.obj({}).export()).toEqual({});
95
+ expect(value_1.Value.obj({ the: value_1.Value.str('ab'), quick: value_1.Value.num(500), brown: value_1.Value.bool(true) }).export()).toEqual({
96
+ the: 'ab',
97
+ quick: 500,
98
+ brown: true,
99
+ });
100
+ const o = value_1.Value.obj({ the: value_1.Value.str('ab'), quick: value_1.Value.num(500), brown: value_1.Value.bool(true) });
101
+ expect(o.access('the', notFromHere).export()).toEqual('ab');
102
+ expect(o.access('quick', notFromHere).export()).toEqual(500);
103
+ expect(o.access('brown', notFromHere).export()).toEqual(true);
104
+ expect(o.access(value_1.Value.str('quick'), notFromHere).export()).toEqual(500);
105
+ });
106
+ test('yells if access() is called with value which is neither string or num', () => {
107
+ const o = value_1.Value.obj({ the: value_1.Value.str('ab'), quick: value_1.Value.num(500), brown: value_1.Value.bool(true) });
108
+ expect(() => o.access(value_1.Value.arr([]), notFromHere).export()).toThrowError('value type error: expected either num or str but found []');
109
+ expect(() => o.access(value_1.Value.bool(false), notFromHere).export()).toThrowError('value type error: expected either num or str but found false');
110
+ expect(() => o.access(value_1.Value.obj({ x: value_1.Value.num(1) }), notFromHere).export()).toThrowError('value type error: expected either num or str but found {"x":1}');
111
+ });
112
+ test('json', () => {
113
+ const v = value_1.Value.obj({ x: value_1.Value.num(1) });
114
+ expect(JSON.stringify(v)).toEqual('{"x":1}');
115
+ });
116
+ describe('ifElse', () => {
117
+ test('when applied to true evaluates the positive branch', () => {
118
+ expect(value_1.Value.bool(true).ifElse(fixed('yes'), fixed('no')).export()).toEqual('yes');
119
+ });
120
+ test('when applied to false evaluates the positive branch', () => {
121
+ expect(value_1.Value.bool(false).ifElse(fixed('yes'), fixed('no')).export()).toEqual('no');
122
+ });
123
+ test('errors if applied to a non-boolean', () => {
124
+ expect(() => value_1.Value.num(1).ifElse(fixed('yes'), fixed('no')).export()).toThrowError('expected bool but found 1');
125
+ });
126
+ });
127
+ describe('type erros', () => {
128
+ const five = value_1.Value.num(1);
129
+ const t = value_1.Value.bool(true);
130
+ const f = value_1.Value.bool(false);
131
+ const check = (a, b, f) => {
132
+ const arr = Array.isArray(b) ? b : [b];
133
+ const r = /(^value type error: expected)|(^Cannot compare a )/;
134
+ // /(^value type error: expected)|(^Type error: operator cannot be applied to operands of type)|(^Cannot compare when the left-hand-side value is of type)|(^Not a)/
135
+ for (const curr of arr) {
136
+ expect(() => f(a, curr)).toThrowError(r);
137
+ expect(() => f(curr, a)).toThrowError(r);
138
+ }
139
+ };
140
+ test('emits erros when numeric operations are applied to a boolean (either lhs or rhs)', () => {
141
+ check(five, t, (x, y) => x.plus(y));
142
+ check(five, t, (x, y) => x.minus(y));
143
+ check(five, t, (x, y) => x.times(y));
144
+ check(five, t, (x, y) => x.over(y));
145
+ check(five, t, (x, y) => x.power(y));
146
+ check(five, t, (x, y) => x.modulo(y));
147
+ check(five, t, (x, y) => x.order(y));
148
+ check(t, t, x => x.negate());
149
+ expect(1).toEqual(1); // make the linter happy
150
+ });
151
+ test('emits erros when boolean operations are applied to a number (either lhs or rhs)', () => {
152
+ check(five, f, (x, y) => x.or(() => y));
153
+ check(five, t, (x, y) => x.and(() => y));
154
+ check(five, five, x => x.not());
155
+ expect(1).toEqual(1); // make the linter happy
156
+ });
157
+ });
158
+ describe('foreign code calls', () => {
159
+ test('invokes the given function', () => {
160
+ const indexOf = value_1.Value.foreign(s => 'the quick brown fox jumps over the lazy dog'.indexOf(s.assertStr()));
161
+ expect(indexOf.call([value_1.Value.str('quick')], err).export()).toEqual(4);
162
+ });
163
+ });
164
+ describe('string operatios', () => {
165
+ test('.length', () => {
166
+ expect(value_1.Value.str('four scores AND seven').access('length', notFromHere).export()).toEqual(21);
167
+ });
168
+ test.each([
169
+ ['at', [value_1.Value.num(10)], 'e'],
170
+ ['at', [value_1.Value.num(-4)], 'v'],
171
+ ['charAt', [value_1.Value.num(10)], 'e'],
172
+ ['concat', [value_1.Value.str('years')], ' four scores AND seven years'],
173
+ ['endsWith', [value_1.Value.str('seven ')], true],
174
+ ['endsWith', [value_1.Value.str('years')], false],
175
+ ['includes', [value_1.Value.str('scores')], true],
176
+ ['includes', [value_1.Value.str('years')], false],
177
+ ['indexOf', [value_1.Value.str('e')], 10],
178
+ ['lastIndexOf', [value_1.Value.str('e')], 20],
179
+ ['match', [value_1.Value.str('r|f')], ['f']],
180
+ ['matchAll', [value_1.Value.str('r|f')], [['f'], ['r'], ['r']]],
181
+ ['padEnd', [value_1.Value.num(25), value_1.Value.str('#')], ' four scores AND seven ##'],
182
+ ['padStart', [value_1.Value.num(25), value_1.Value.str('#')], '## four scores AND seven '],
183
+ ['repeat', [value_1.Value.num(3)], ' four scores AND seven four scores AND seven four scores AND seven '],
184
+ ['replace', [value_1.Value.str('o'), value_1.Value.str('#')], ' f#ur scores AND seven '],
185
+ ['replaceAll', [value_1.Value.str('o'), value_1.Value.str('#')], ' f#ur sc#res AND seven '],
186
+ ['search', [value_1.Value.str('sco..s')], 6],
187
+ ['slice', [value_1.Value.num(13), value_1.Value.num(-7)], 'AND'],
188
+ ['split', [value_1.Value.str(' ')], ['', 'four', 'scores', 'AND', 'seven', '']],
189
+ ['startsWith', [value_1.Value.str(' four')], true],
190
+ ['startsWith', [value_1.Value.str('seven')], false],
191
+ ['substring', [value_1.Value.num(6), value_1.Value.num(12)], 'scores'],
192
+ ['substring', [value_1.Value.num(13), value_1.Value.num(-7)], ' four scores '],
193
+ ['toLowerCase', [], ' four scores and seven '],
194
+ ['toUpperCase', [], ' FOUR SCORES AND SEVEN '],
195
+ ['trim', [], 'four scores AND seven'],
196
+ ['trimEnd', [], ' four scores AND seven'],
197
+ ['trimStart', [], 'four scores AND seven '],
198
+ ])('provides the .%s() method', (name, args, expected) => {
199
+ const callee = value_1.Value.str(' four scores AND seven ').access(name, notFromHere);
200
+ const actual = callee.call(args, err);
201
+ expect(actual.export()).toEqual(expected);
202
+ });
203
+ });
204
+ describe('array operations', () => {
205
+ test('.length', () => {
206
+ expect(value_1.Value.arr([value_1.Value.str('foo'), value_1.Value.str('bar'), value_1.Value.str('foo'), value_1.Value.str('goo')])
207
+ .access('length', notFromHere)
208
+ .export()).toEqual(4);
209
+ });
210
+ test.each([
211
+ ['at', [value_1.Value.num(3)], 'goo'],
212
+ ['concat', [value_1.Value.arr([value_1.Value.str('boo'), value_1.Value.str('poo')])], ['foo', 'bar', 'foo', 'goo', 'boo', 'poo']],
213
+ [
214
+ 'entries',
215
+ [],
216
+ [
217
+ [0, 'foo'],
218
+ [1, 'bar'],
219
+ [2, 'foo'],
220
+ [3, 'goo'],
221
+ ],
222
+ ],
223
+ // TODO(imaman): ['find', [Value.foreign(v => v.assertStr() === 'lorem ipsum')], ??]"",
224
+ ['includes', [value_1.Value.str('bar')], true],
225
+ ['includes', [value_1.Value.str('lorem-ipsum')], false],
226
+ ['indexOf', [value_1.Value.str('goo')], 3],
227
+ ['join', [value_1.Value.str('; ')], 'foo; bar; foo; goo'],
228
+ ['lastIndexOf', [value_1.Value.str('foo')], 2],
229
+ ['lastIndexOf', [value_1.Value.str('lorem ipsum')], -1],
230
+ ['reverse', [], ['goo', 'foo', 'bar', 'foo']],
231
+ ['slice', [value_1.Value.num(1), value_1.Value.num(2)], ['bar']],
232
+ ['slice', [value_1.Value.num(1), value_1.Value.num(3)], ['bar', 'foo']],
233
+ ['slice', [value_1.Value.num(2), value_1.Value.num(4)], ['foo', 'goo']],
234
+ ])('provides the .%s() method', (name, args, expected) => {
235
+ const input = value_1.Value.arr([value_1.Value.str('foo'), value_1.Value.str('bar'), value_1.Value.str('foo'), value_1.Value.str('goo')]);
236
+ const before = JSON.parse(JSON.stringify(input));
237
+ const callee = input.access(name, notFromHere);
238
+ const actual = callee.call(args, err);
239
+ expect(actual.export()).toEqual(expected);
240
+ // Make sure the input array was not accidentally mutated.
241
+ expect(JSON.parse(JSON.stringify(input))).toEqual(before);
242
+ });
243
+ test('.flat() flattens', () => {
244
+ const input = value_1.Value.arr([value_1.Value.arr([value_1.Value.str('a'), value_1.Value.str('b')]), value_1.Value.str('c')]);
245
+ const callee = input.access('flat', notFromHere);
246
+ const actual = callee.call([], err);
247
+ expect(actual.export()).toEqual(['a', 'b', 'c']);
248
+ });
249
+ });
250
+ describe('undefined', () => {
251
+ test('can be constructed from either undefined or null', () => {
252
+ expect(value_1.Value.from(undefined).isUndefined()).toBe(true);
253
+ expect(value_1.Value.from(null).isUndefined()).toBe(true);
254
+ expect(value_1.Value.from(42).isUndefined()).toBe(false);
255
+ expect(value_1.Value.from('abc').isUndefined()).toBe(false);
256
+ });
257
+ });
258
+ test.todo('array.sort()');
259
+ test.todo('what happens when we get an undefined from a foreign call (like Array.get())');
260
+ test.todo('access to non-existing string method (a sad path test)');
261
+ test.todo('access to non-existing array method (a sad path test)');
262
+ });
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3RzL3ZhbHVlLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBb0M7QUFFcEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFO0lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ25DLENBQUMsQ0FBQTtBQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBRWpELE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRTtJQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFDeEQsQ0FBQyxDQUFBO0FBRUQsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7SUFDckIsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDdkIsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzRCxNQUFNLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzVELE1BQU0sQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDN0QsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM5RCxNQUFNLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2xELE1BQU0sQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDcEQsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM3RCxNQUFNLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hFLENBQUMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtRQUNsQyxNQUFNLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzVELE1BQU0sQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDNUQsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM1RCxNQUFNLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDN0QsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQy9ELENBQUMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7UUFDcEIsTUFBTSxDQUFDLGFBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0MsTUFBTSxDQUFDLGFBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDakQsTUFBTSxDQUFDLGFBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxF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QyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN0RSxNQUFNLENBQUMsYUFBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdEUsTUFBTSxDQUFDLGFBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyRSxNQUFNLENBQUMsYUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RFLENBQUMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7UUFDbkIsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEQsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDMUMsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsRSxNQUFNLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzlELE1BQU0sQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDcEUsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwRSxNQUFNLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzlFLENBQUMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtRQUNsQyxNQUFNLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2hFLE1BQU0sQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDaEUsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNoRSxNQUFNLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakUsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25FLENBQUMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDbEIsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGFBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDNUUsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDMUMsTUFBTSxDQUFDLGFBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUs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QUksR0FBRyxFQUFFO2dCQUN0QixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDeEMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDekM7UUFDSCxDQUFDLENBQUE7UUFFRCxJQUFJLENBQUMsa0ZBQWtGLEVBQUUsR0FBRyxFQUFFO1lBQzVGLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ25DLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3BDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3BDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ25DLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3BDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFD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
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/location.ts","../src/source-code.ts","../src/scanner.ts","../src/should-never-happen.ts","../src/switch-on.ts","../src/ast-node.ts","../src/extract-message.ts","../src/fail-me.ts","../src/find-string-method.ts","../src/symbol-table.ts","../src/value.ts","../src/find-array-method.ts","../src/parser.ts","../src/result.ts","../src/stack.ts","../src/runtime.ts","../src/septima.ts","../src/index.ts","../tests/parser.spec.ts","../tests/septima-compile.spec.ts","../tests/septima.spec.ts","../tests/value.spec.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@types/babel__core/node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__core/node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/jest/node_modules/jest-diff/build/cleanupsemantic.d.ts","../../../node_modules/@types/jest/node_modules/jest-diff/build/types.d.ts","../../../node_modules/@types/jest/node_modules/jest-diff/build/difflines.d.ts","../../../node_modules/@types/jest/node_modules/jest-diff/build/printdiffs.d.ts","../../../node_modules/@types/jest/node_modules/jest-diff/build/index.d.ts","../../../node_modules/@types/jest/node_modules/pretty-format/build/types.d.ts","../../../node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"ff667ee99e5a28c3dc5063a3cfd4d3436699e3fb035d4451037da7f567da542a","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},{"version":"e769287ad8aebdf50f715236f928dd7730aa31f764116a13460d811b411abb04","signature":"3c6c38fefba6b209adc8436f1c47141ad0743ab544617ad4235781c26a670341"},{"version":"f7b5cf0a469be03607dd5006579d32eace7e5b36cfd05a1db60e6749c3ca9a3a","signature":"3f578878e9f36ea62ec7356c5c92d158c9a14f2b88a09f78ca470c6ceba0f978"},{"version":"d38f24fc1eda34ec5d2c57629deb857e75d11dc0839c247040a2cba30bfa4000","signature":"b9d9b3e7ab5b15031d3fa61bae936761db572a6b76c61e7402297bfa3768d0d7"},{"version":"b3ac3d5f4525acf6c5c198995cc0f736f125bb68909d4a35f013679124caaf3c","signature":"924b17f73652b1bda1d0852b37f24678903b1e89a84133a7db767d4cd7a695d7"},{"version":"6e011da2d175ab6f8e70689168c0a0cb221d74f0ea90cde779beb71fd5f8555c","signature":"af25c97e277b80d8ac1e47e75c3b99532a355c764063ffc4ac793cd06a63e28c"},{"version":"46d00949bfbdb748e553c711c2ba5124bcc74b062f82c256aea553bccfa3462e","signature":"037a7666ea80b163573a235deaf41eed3ad09abee9c0aaf30cd90f03d998401f"},{"version":"fae7ac3c1425ba20b640480ff3111d6f6c7e3ba36ed1ac21ac519f56b1e7ca54","signature":"8339a0947050a82f6271d6446f34198c6a93c7477f48d320ff66cc10094f4808"},{"version":"7c16b91ff6af35831d025b98f72b2796c55efb109864e327fd22004c94de0dd9","signature":"cad5905e0f8c874a6fea195ab43dfbad55d98e61b9ac0789cc298124c5d055ef"},{"version":"b9311a1fa39a96eb80bc0c0114efa71df9007a6ccb02ff180370361ec3464e57","signature":"24204c3bb675f315b55777d4e018b34c5cbae664399bad12860ba67a7a946e9a"},{"version":"d26f5db617b18a6ad505fa73619e431e8861b9502c84e90f680f82f020f3a8cd","signature":"01d0f6f3376f1f8d8b5cbb707c2b55df538a1b355b0a582dcf364dd97f836fee"},{"version":"31a2c5b51002bc7d3b43fe9910e4944c9552b3d24b55c98846eaa83248bce87a","signature":"9084ef2e7ea0efdacfb4572a88aea3de7a5332eb388fbc58dd951d9d0f858908"},{"version":"2fe76babb272d940e921c1bb7bbc16beffb8b3ca002cf92cbaccb55832d51bae","signature":"3c2dec687c3e90dc006fd5a96da3a6566b23fe361f481ff5e279d96ef38ede36"},{"version":"71ccb90887e05351955f6087f74ba16ba5f41f8c877d0162a232eaa972680cbb","signature":"24066c876f33dbfcd08685cfb3d0aa22d12afff7e451c0c9c52c194d0b148606"},{"version":"e1221b864376292eacb6ea1182cdff172726f51d158fc7596d4188d0952892c7","signature":"361bffc9c424c7f11430afacbe31bf5310815d38b0f1eafb04adcc3cd3fcbd5a"},{"version":"035a1548ed2786de12670d63439a0b4ce9f3505ef920bf14b1117077aa8a92da","signature":"c8c1049f755ae60c4e73280f53f5d18c18eadc12b5064ddd8038237f3ea84ee5"},{"version":"f3330263ce250719df2480004c5b44f4c8335eec7f1da5348f636cc4fcabcdf0","signature":"7b3f7fad57269ee1f45b9aa7e5d95f96b8100540dbd50dd35a4ad53fefea0dea"},{"version":"0e192ee6c4bdf530fc36445e921c714f3caa98c8386d0a72dbf6c66d535c1251","signature":"b714b837f37deeab64c9f1cf43af2331da8f771f4fa57843de1879abcec7eef8"},{"version":"4a2907130ec37c26de13c9770686111adfb5160d8abf50cb47994beead92d9f3","signature":"f163a2967f13cc12e453b7e097ae04416c164bc525e11727e7fbd9acaf415551"},{"version":"8c979f1620e2af75c8a7917ceb51d16e2d0a62f231a0e468bbb77c2ebb534155","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"491a8aa87c7a985d8e22748785c75ee558b01bf8a2ffaf21d7e60aa8240c0e6b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"291d33ad0853257c9784d51869210b92adaad1c92ade8b9c24830dff0bacff7d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"63c1e912bfa6734bfba524a5db0c34130847b24cb0e7f3085b2150c4f7cf67db","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"27c5fdb2f0add8aa33d77fbdd11c0ca21d2d91b3fc59a61848f143ae51bce493","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","ac65f04c2df0218cb8e54f012745cbfcc3c0e67c1f6b1e557d88842bbb72e2db","a2e86df4db576d80704e25293cec6f20fc6101a11f4747440e2eef58fb3c860c","a46a2e69d12afe63876ec1e58d70e5dbee6d3e74132f4468f570c3d69f809f1c","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","fc72135da24040641388fb5f2c2a7a99aa5b962c0fa125bd96fabeec63dd2e63","9d255af1b09c6697089d3c9bf438292a298d8b7a95c68793c9aae80afc9e5ca7","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"3e4624c306340ad303cc536a07004e81336c3f088308a9e4a9f4c957a3cda2fd","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"249a2b90439cdfd51709539fbfa4dfe0791cbae6efce1e9b327ba8f8cd703f49","affectsGlobalScope":true},"2f60ac046e587e917d739f1edc77540eb0ec34f83090dae4ebd5f96c1c9578d4","a9b6b0f7b1e30359283b131ba6d1c51ee2d3601a2f12e1623141e6a1a60c92a5","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","7bac475dcdd9f7e4e9da934d32c305bc889c4ce3c8ac0ef45a93a8d670fff607","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"3b145a2351f5cf16abf999c8d5f4481c74dffdc54ec1e9a89992e2622e1226c5","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","d270fd4b565eda11a0a737c181892316b7a1ace06c7988d0246219c3df11db06","4275d5f964e7fc7afc18538e26b3748c207dd772998346d17f409749aa1f3a63",{"version":"59a638a504490fecaacf0020b9814b6abee37edb66047eb1ab9f7c2274bf1da0","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","8c4c1a64db28930732033c31418f817dcb9d09d706766707ae6d38f23faf0c53","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","d4fc97ea27a8226c5429b73efe7f0d9d78c0269e2995f6dba8bac64fc1b132dc","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","29d613c3964ea75b2b4e0d17098245c34529282e9cc72b7e4eeb2a7b12c27cb7",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2af17363f8a062e3a8cd1b26030af0058b3f86e783f4fc6aa9f57247f240ebaa","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","dfe08140492cdc135fb7fd9c4a652c05207b61a436906079b87da1d3111314bf","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","089e1f8603cbc35ab977c8dcc662eb754b82fca32ed1dfb16bd682726c2d5432","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"82fc37849846a3a0264047621d5beb6ce2ddeb2f83bdee2c79523af3c3282d97","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","bf88ef4208a770ca39a844b182b3695df536326ea566893fdc5b8418702a331e","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"516a426e3960379f310107635b8f3a7e8c307c6c665080b128039d9299ec4087","affectsGlobalScope":true},"f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","d88a5e779faf033be3d52142a04fbe1cb96009868e3bbdd296b2bc6c59e06c0e","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"esModuleInterop":true,"inlineSourceMap":true,"module":1,"newLine":1,"noImplicitAny":true,"outDir":"./","strict":true,"target":8},"fileIdsList":[[47,49,50,51,121],[121],[57,121],[63,121],[49,51,52,121],[47,52,54,63,121],[50,51,52,53,54,56,57,61,86,121],[47,48,121],[48,49,50,52,54,59,60,62,102,121],[47,52,121],[52,121],[50,51,52,54,55,56,58,121],[48,49,52,59,121],[50,63,121],[63,86,121],[69,121],[70,71,72,74,75,121],[71,121],[69,73,121],[92,93,121,128,129],[93,121,128],[121,132],[121,133],[121,139,141],[121,135,136],[121,135,136,137,138],[121,140],[77,121],[80,121],[81,86,121],[82,92,93,100,109,120,121],[82,83,92,100,121],[84,121],[85,86,93,101,121],[86,109,117,121],[87,89,92,100,121],[88,121],[89,90,121],[91,92,121],[92,121],[92,93,94,109,120,121],[92,93,94,109,112,121],[121,125],[95,100,109,120,121],[92,93,95,96,100,109,117,120,121],[95,97,109,117,120,121],[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],[92,98,121],[99,120,121],[89,92,100,109,121],[101,121],[102,121],[80,103,121],[104,119,121,125],[105,121],[106,121],[92,107,121],[107,108,121,123],[92,109,110,111,112,121],[109,111,121],[109,110,121],[112,121],[113,121],[92,115,116,121],[115,116,121],[86,100,109,117,121],[118,121],[100,119,121],[81,95,106,120,121],[86,121],[109,121,122],[121,123],[121,124],[81,86,92,94,103,109,120,121,123,125],[109,121,126],[121,147],[47,49],[57],[63],[49,52],[47,52,63],[52,57],[47,48],[48,52,60,62],[47,52],[52],[52,56,58]],"referencedMap":[[52,1],[53,2],[54,2],[58,3],[55,3],[64,4],[47,2],[59,5],[60,6],[62,7],[49,8],[63,9],[50,2],[48,10],[61,11],[51,2],[56,3],[57,12],[65,13],[66,14],[67,15],[68,3],[73,16],[69,2],[76,17],[72,18],[71,2],[70,16],[74,19],[75,16],[130,20],[131,21],[132,2],[133,22],[134,23],[142,24],[135,2],[137,25],[139,26],[138,25],[136,2],[141,27],[140,2],[143,2],[129,2],[77,28],[78,28],[80,29],[81,30],[82,31],[83,32],[84,33],[85,34],[86,35],[87,36],[88,37],[89,38],[90,38],[91,39],[92,40],[93,41],[94,42],[79,43],[127,2],[95,44],[96,45],[97,46],[128,47],[98,48],[99,49],[100,50],[101,51],[102,52],[103,53],[104,54],[105,55],[106,56],[107,57],[108,58],[109,59],[111,60],[110,61],[112,62],[113,63],[114,2],[115,64],[116,65],[117,66],[118,67],[119,68],[120,69],[121,70],[122,71],[123,72],[124,73],[125,74],[126,75],[144,2],[145,2],[146,2],[147,2],[148,76],[9,2],[11,2],[10,2],[2,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[3,2],[4,2],[23,2],[20,2],[21,2],[22,2],[24,2],[25,2],[26,2],[5,2],[27,2],[28,2],[29,2],[30,2],[6,2],[31,2],[32,2],[33,2],[34,2],[7,2],[35,2],[40,2],[41,2],[36,2],[37,2],[38,2],[39,2],[8,2],[45,2],[42,2],[43,2],[44,2],[1,2],[46,2]],"exportedModulesMap":[[52,77],[58,78],[55,78],[64,79],[59,80],[60,81],[62,82],[49,83],[63,84],[48,85],[61,86],[56,78],[57,87],[73,16],[69,2],[76,17],[72,18],[71,2],[70,16],[74,19],[75,16],[130,20],[131,21],[132,2],[133,22],[134,23],[142,24],[135,2],[137,25],[139,26],[138,25],[136,2],[141,27],[140,2],[143,2],[129,2],[77,28],[78,28],[80,29],[81,30],[82,31],[83,32],[84,33],[85,34],[86,35],[87,36],[88,37],[89,38],[90,38],[91,39],[92,40],[93,41],[94,42],[79,43],[127,2],[95,44],[96,45],[97,46],[128,47],[98,48],[99,49],[100,50],[101,51],[102,52],[103,53],[104,54],[105,55],[106,56],[107,57],[108,58],[109,59],[111,60],[110,61],[112,62],[113,63],[114,2],[115,64],[116,65],[117,66],[118,67],[119,68],[120,69],[121,70],[122,71],[123,72],[124,73],[125,74],[126,75],[144,2],[145,2],[146,2],[147,2],[148,76],[9,2],[11,2],[10,2],[2,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[3,2],[4,2],[23,2],[20,2],[21,2],[22,2],[24,2],[25,2],[26,2],[5,2],[27,2],[28,2],[29,2],[30,2],[6,2],[31,2],[32,2],[33,2],[34,2],[7,2],[35,2],[40,2],[41,2],[36,2],[37,2],[38,2],[39,2],[8,2],[45,2],[42,2],[43,2],[44,2],[1,2],[46,2]],"semanticDiagnosticsPerFile":[52,53,54,58,55,64,47,59,60,62,49,63,50,48,61,51,56,57,65,66,67,68,73,69,76,72,71,70,74,75,130,131,132,133,134,142,135,137,139,138,136,141,140,143,129,77,78,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,79,127,95,96,97,128,98,99,100,101,102,103,104,105,106,107,108,109,111,110,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,144,145,146,147,148,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,35,40,41,36,37,38,39,8,45,42,43,44,1,46]},"version":"4.7.4"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "septima-lang",
3
- "version": "0.0.21",
3
+ "version": "0.2.0",
4
+ "main": "dist/src/index.js",
4
5
  "description": "",
5
6
  "keywords": [],
6
- "license": "MIT",
7
7
  "author": "imaman",
8
- "main": "dist/src/index.js",
8
+ "license": "MIT",
9
9
  "scripts": {
10
10
  "build": "tsc -b",
11
11
  "test": "jest"
package/src/a.js ADDED
@@ -0,0 +1,66 @@
1
+ // something interesting goes in here.
2
+ let generation = 'prod'
3
+ let stackName = 'd'
4
+ let account = '091530143433'
5
+ let casPrefix = 'build-raptor/cache-v1/cas'
6
+ let codeBucket = 'moojo-dev-infra'
7
+
8
+ // options: {
9
+ // // size of the ephemeral storage allocated for the lambda function, in MB. Defaults to 512.
10
+ // storageInMb: number
11
+ // // size of the RAM allocated for the lambda function, in MB. Defaults to 128.
12
+ // ramInMb: number
13
+ // // max amount of time for handling a request, in seconds. Defaults to 3.
14
+ // timeoutInSeconds: number
15
+ // }
16
+ let lambda = (name, cas, options) => {
17
+ let roleName = name + 'Role'
18
+
19
+ return {
20
+ [name]: {
21
+ Type: 'AWS::Lambda::Function',
22
+ Properties: {
23
+ Code: {
24
+ S3Bucket: codeBucket,
25
+ S3Key: casPrefix + '/' + cas,
26
+ },
27
+ EphemeralStorage: { Size: options.storageInMb ?? 512 },
28
+ FunctionName: stackName + '-' + generation + '-' + name,
29
+ Handler: 'index.handler',
30
+ MemorySize: options.ramInMb ?? 128,
31
+ Role: 'arn:aws:iam::' + account + ':role/' + stackName + '-' + generation + '-' + roleName,
32
+ Runtime: 'nodejs16.x',
33
+ Timeout: options.timeoutInSeconds ?? 3,
34
+ },
35
+ DependsOn: [roleName],
36
+ },
37
+ [roleName]: {
38
+ Type: 'AWS::IAM::Role',
39
+ Properties: {
40
+ RoleName: stackName + '-' + generation + '-' + roleName,
41
+ AssumeRolePolicyDocument: {
42
+ Statement: [{ Action: 'sts:AssumeRole', Effect: 'Allow', Principal: { Service: 'lambda.amazonaws.com' } }],
43
+ Version: '2012-10-17',
44
+ },
45
+ ManagedPolicyArns: ['arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'],
46
+ Policies: [
47
+ {
48
+ PolicyName: 'computed-policy',
49
+ PolicyDocument: {
50
+ Version: '2012-10-17',
51
+ Statement: [{ Effect: 'Allow', Action: 's3:GetObject', Resource: 'arn:aws:s3:::prod-moojo-dev-infra' }],
52
+ },
53
+ },
54
+ ],
55
+ },
56
+ },
57
+ }
58
+ }
59
+
60
+ let template = resources => ({
61
+ Resources: {
62
+ ...Object.fromEntries(resources.flatMap(r => Object.entries(r))),
63
+ },
64
+ })
65
+
66
+ template([lambda('foo', '1b393be42ae91bf07cb367466bf1c61b171aa95555f2377955648ae4', {})])