@esgettext/tools 1.1.0 → 1.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.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/dist/command.js +0 -1
- package/dist/commands/convert.js +16 -14
- package/dist/commands/install.js +12 -4
- package/dist/commands/msgfmt-all.js +65 -46
- package/dist/commands/msgmerge-all.js +64 -46
- package/dist/commands/xgettext/file-resolver.js +0 -1
- package/dist/commands/xgettext/files-collector.js +1 -1
- package/dist/commands/xgettext.js +16 -7
- package/dist/configuration.js +172 -156
- package/dist/esgettext-package-json.js +0 -1
- package/dist/index.js +75 -24
- package/dist/package.js +1 -2
- package/dist/parser/javascript.js +2 -1
- package/dist/parser/parser.js +17 -2
- package/dist/parser/po.js +34 -1
- package/dist/parser/typescript.js +2 -1
- package/dist/pot/catalog.js +36 -1
- package/dist/pot/entry.js +71 -1
- package/dist/pot/keyword.js +10 -5
- package/package.json +5 -4
- package/dist/command.d.ts +0 -11
- package/dist/command.js.map +0 -1
- package/dist/commands/convert.d.ts +0 -24
- package/dist/commands/convert.js.map +0 -1
- package/dist/commands/install.d.ts +0 -22
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/msgfmt-all.d.ts +0 -20
- package/dist/commands/msgfmt-all.js.map +0 -1
- package/dist/commands/msgmerge-all.d.ts +0 -21
- package/dist/commands/msgmerge-all.js.map +0 -1
- package/dist/commands/xgettext/file-resolver.d.ts +0 -5
- package/dist/commands/xgettext/file-resolver.js.map +0 -1
- package/dist/commands/xgettext/file-resolver.spec.d.ts +0 -1
- package/dist/commands/xgettext/file-resolver.spec.js +0 -22
- package/dist/commands/xgettext/file-resolver.spec.js.map +0 -1
- package/dist/commands/xgettext/files-collector.d.ts +0 -5
- package/dist/commands/xgettext/files-collector.js.map +0 -1
- package/dist/commands/xgettext/files-collector.spec.d.ts +0 -1
- package/dist/commands/xgettext/files-collector.spec.js +0 -96
- package/dist/commands/xgettext/files-collector.spec.js.map +0 -1
- package/dist/commands/xgettext.d.ts +0 -29
- package/dist/commands/xgettext.js.map +0 -1
- package/dist/commands/xgettext.spec.d.ts +0 -1
- package/dist/commands/xgettext.spec.js +0 -897
- package/dist/commands/xgettext.spec.js.map +0 -1
- package/dist/configuration.d.ts +0 -36
- package/dist/configuration.js.map +0 -1
- package/dist/esgettext-package-json.d.ts +0 -15
- package/dist/esgettext-package-json.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js.map +0 -1
- package/dist/package.d.ts +0 -5
- package/dist/package.js.map +0 -1
- package/dist/parser/javascript.d.ts +0 -4
- package/dist/parser/javascript.js.map +0 -1
- package/dist/parser/javascript.spec.d.ts +0 -1
- package/dist/parser/javascript.spec.js +0 -535
- package/dist/parser/javascript.spec.js.map +0 -1
- package/dist/parser/parser.d.ts +0 -45
- package/dist/parser/parser.js.map +0 -1
- package/dist/parser/po.d.ts +0 -22
- package/dist/parser/po.js.map +0 -1
- package/dist/parser/po.spec.d.ts +0 -1
- package/dist/parser/po.spec.js +0 -486
- package/dist/parser/po.spec.js.map +0 -1
- package/dist/parser/typescript.d.ts +0 -4
- package/dist/parser/typescript.js.map +0 -1
- package/dist/parser/typescript.spec.d.ts +0 -1
- package/dist/parser/typescript.spec.js +0 -121
- package/dist/parser/typescript.spec.js.map +0 -1
- package/dist/pot/catalog.d.ts +0 -26
- package/dist/pot/catalog.js.map +0 -1
- package/dist/pot/catalog.spec.d.ts +0 -1
- package/dist/pot/catalog.spec.js +0 -244
- package/dist/pot/catalog.spec.js.map +0 -1
- package/dist/pot/entry.d.ts +0 -35
- package/dist/pot/entry.js.map +0 -1
- package/dist/pot/entry.spec.d.ts +0 -1
- package/dist/pot/entry.spec.js +0 -433
- package/dist/pot/entry.spec.js.map +0 -1
- package/dist/pot/keyword.d.ts +0 -17
- package/dist/pot/keyword.js.map +0 -1
- package/dist/pot/keyword.spec.d.ts +0 -1
- package/dist/pot/keyword.spec.js +0 -54
- package/dist/pot/keyword.spec.js.map +0 -1
|
@@ -1,535 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const catalog_1 = require("../pot/catalog");
|
|
4
|
-
const keyword_1 = require("../pot/keyword");
|
|
5
|
-
const javascript_1 = require("./javascript");
|
|
6
|
-
const warnSpy = jest.spyOn(global.console, 'warn').mockImplementation(() => {
|
|
7
|
-
});
|
|
8
|
-
const errorSpy = jest.spyOn(global.console, 'error').mockImplementation(() => {
|
|
9
|
-
});
|
|
10
|
-
describe('JavaScript parser', () => {
|
|
11
|
-
describe('strings', () => {
|
|
12
|
-
afterEach(() => {
|
|
13
|
-
warnSpy.mockClear();
|
|
14
|
-
errorSpy.mockClear();
|
|
15
|
-
});
|
|
16
|
-
it('should extract all kinds of strings', () => {
|
|
17
|
-
const catalog = new catalog_1.Catalog();
|
|
18
|
-
const p = new javascript_1.JavaScriptParser(catalog, { extractAll: true });
|
|
19
|
-
const code = `
|
|
20
|
-
// Directive.
|
|
21
|
-
_("double-quoted string");
|
|
22
|
-
|
|
23
|
-
// Function call.
|
|
24
|
-
_('single-quoted string');
|
|
25
|
-
|
|
26
|
-
// perl-brace-format.
|
|
27
|
-
_x('Hello, {name}!');
|
|
28
|
-
`;
|
|
29
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
30
|
-
expect(catalog.toString({ omitHeader: true })).toMatchSnapshot();
|
|
31
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
32
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
33
|
-
});
|
|
34
|
-
it('should extract concatenated strings', () => {
|
|
35
|
-
const catalog = new catalog_1.Catalog();
|
|
36
|
-
const p = new javascript_1.JavaScriptParser(catalog, { extractAll: true });
|
|
37
|
-
const code = '"concatenated" + " str" + "i" + "n" + "g";';
|
|
38
|
-
const buf = Buffer.from(code);
|
|
39
|
-
expect(p.parse(buf, 'example.js')).toBeTruthy();
|
|
40
|
-
const expected = `#: example.js:1
|
|
41
|
-
msgid "concatenated string"
|
|
42
|
-
msgstr ""
|
|
43
|
-
`;
|
|
44
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
45
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
46
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
47
|
-
});
|
|
48
|
-
it('should not extract concatenated strings with a leading variable', () => {
|
|
49
|
-
const catalog = new catalog_1.Catalog();
|
|
50
|
-
const p = new javascript_1.JavaScriptParser(catalog, { extractAll: true });
|
|
51
|
-
const code = 'prefix + "concatenated" + " string";';
|
|
52
|
-
const buf = Buffer.from(code);
|
|
53
|
-
expect(p.parse(buf, 'example.js')).toBeTruthy();
|
|
54
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
55
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
56
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
57
|
-
});
|
|
58
|
-
it('should not extract concatenated strings mixed with a variable', () => {
|
|
59
|
-
const catalog = new catalog_1.Catalog();
|
|
60
|
-
const p = new javascript_1.JavaScriptParser(catalog, { extractAll: true });
|
|
61
|
-
const code = '"concatenated" + sep + "string";';
|
|
62
|
-
const buf = Buffer.from(code);
|
|
63
|
-
expect(p.parse(buf, 'example.js')).toBeTruthy();
|
|
64
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
65
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
66
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
67
|
-
});
|
|
68
|
-
it('should not extract concatenated strings with a trailing variable', () => {
|
|
69
|
-
const catalog = new catalog_1.Catalog();
|
|
70
|
-
const p = new javascript_1.JavaScriptParser(catalog, { extractAll: true });
|
|
71
|
-
const code = '"concatenated" + " string" + suffix;';
|
|
72
|
-
const buf = Buffer.from(code);
|
|
73
|
-
expect(p.parse(buf, 'example.js')).toBeTruthy();
|
|
74
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
75
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
76
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
describe('comments', () => {
|
|
80
|
-
afterEach(() => {
|
|
81
|
-
warnSpy.mockClear();
|
|
82
|
-
errorSpy.mockClear();
|
|
83
|
-
});
|
|
84
|
-
it('should extract all kinds of comments', () => {
|
|
85
|
-
const catalog = new catalog_1.Catalog();
|
|
86
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
87
|
-
extractAll: true,
|
|
88
|
-
addAllComments: true,
|
|
89
|
-
});
|
|
90
|
-
const code = `
|
|
91
|
-
// Single-line comment.
|
|
92
|
-
_('single line');
|
|
93
|
-
|
|
94
|
-
/* Block comment. */
|
|
95
|
-
_('block');
|
|
96
|
-
|
|
97
|
-
// Single-line
|
|
98
|
-
/* and block combined. */
|
|
99
|
-
_('single + block');
|
|
100
|
-
|
|
101
|
-
/* Block */
|
|
102
|
-
// and single-line combined.
|
|
103
|
-
_('block + single');
|
|
104
|
-
|
|
105
|
-
// Skip this.
|
|
106
|
-
|
|
107
|
-
// But catch this.
|
|
108
|
-
_('only immediately preceding');
|
|
109
|
-
|
|
110
|
-
// Only for one string.
|
|
111
|
-
_('catcher'); _('loser');
|
|
112
|
-
|
|
113
|
-
// And this is ignored, too.
|
|
114
|
-
`;
|
|
115
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
116
|
-
expect(catalog.toString({ omitHeader: true })).toMatchSnapshot();
|
|
117
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
118
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
describe('messages', () => {
|
|
122
|
-
afterEach(() => {
|
|
123
|
-
warnSpy.mockClear();
|
|
124
|
-
errorSpy.mockClear();
|
|
125
|
-
});
|
|
126
|
-
it('should extract a single argument', () => {
|
|
127
|
-
const catalog = new catalog_1.Catalog();
|
|
128
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
129
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
130
|
-
});
|
|
131
|
-
const code = '_("Hello, world!")';
|
|
132
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
133
|
-
const expected = `#: example.js:1
|
|
134
|
-
msgid "Hello, world!"
|
|
135
|
-
msgstr ""
|
|
136
|
-
`;
|
|
137
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
138
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
139
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
140
|
-
});
|
|
141
|
-
it('should extract singular and plural form', () => {
|
|
142
|
-
const catalog = new catalog_1.Catalog();
|
|
143
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
144
|
-
keyword: [new keyword_1.Keyword('_n', ['1', '2'])],
|
|
145
|
-
});
|
|
146
|
-
const code = '_n("There was an error!", "There were errors!", n)';
|
|
147
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
148
|
-
const expected = `#: example.js:1
|
|
149
|
-
msgid "There was an error!"
|
|
150
|
-
msgid_plural "There were errors!"
|
|
151
|
-
msgstr[0] ""
|
|
152
|
-
msgstr[1] ""
|
|
153
|
-
`;
|
|
154
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
155
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
156
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
157
|
-
});
|
|
158
|
-
it('should extract context, singular and plural form', () => {
|
|
159
|
-
const catalog = new catalog_1.Catalog();
|
|
160
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
161
|
-
keyword: [new keyword_1.Keyword('_np', ['1c', '2', '3'])],
|
|
162
|
-
});
|
|
163
|
-
const code = '_np("context", "There was an error!", "There were errors!", n)';
|
|
164
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
165
|
-
const expected = `#: example.js:1
|
|
166
|
-
msgctxt "context"
|
|
167
|
-
msgid "There was an error!"
|
|
168
|
-
msgid_plural "There were errors!"
|
|
169
|
-
msgstr[0] ""
|
|
170
|
-
msgstr[1] ""
|
|
171
|
-
`;
|
|
172
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
173
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
174
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
175
|
-
});
|
|
176
|
-
it('should handle other callees', () => {
|
|
177
|
-
const catalog = new catalog_1.Catalog();
|
|
178
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
179
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
180
|
-
});
|
|
181
|
-
const code = '"string".trim()';
|
|
182
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
183
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
184
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
185
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
186
|
-
});
|
|
187
|
-
it('should not extract from unknown methods', () => {
|
|
188
|
-
const catalog = new catalog_1.Catalog();
|
|
189
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
190
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
191
|
-
});
|
|
192
|
-
const code = 'gettext("string")';
|
|
193
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
194
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
195
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
196
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
197
|
-
});
|
|
198
|
-
it('should honor the total arguments spec', () => {
|
|
199
|
-
const catalog = new catalog_1.Catalog();
|
|
200
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
201
|
-
keyword: [new keyword_1.Keyword('_', ['1t'])],
|
|
202
|
-
});
|
|
203
|
-
const code = '_("Hello", "world")';
|
|
204
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
205
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
206
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
207
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
208
|
-
});
|
|
209
|
-
it('should not extract non existing singular arguments', () => {
|
|
210
|
-
const catalog = new catalog_1.Catalog();
|
|
211
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
212
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
213
|
-
});
|
|
214
|
-
const code = '_()';
|
|
215
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
216
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
217
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
218
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
219
|
-
});
|
|
220
|
-
it('should not extract non existing plural arguments', () => {
|
|
221
|
-
const catalog = new catalog_1.Catalog();
|
|
222
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
223
|
-
keyword: [new keyword_1.Keyword('_n', ['1', '2'])],
|
|
224
|
-
});
|
|
225
|
-
const code = '_n("One universe")';
|
|
226
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
227
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
228
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
229
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
230
|
-
});
|
|
231
|
-
it('should not extract non existing context arguments', () => {
|
|
232
|
-
const catalog = new catalog_1.Catalog();
|
|
233
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
234
|
-
keyword: [new keyword_1.Keyword('_pn', ['1', '2', '3c'])],
|
|
235
|
-
});
|
|
236
|
-
const code = '_pn("one world", "many worlds")';
|
|
237
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
238
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
239
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
240
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
241
|
-
});
|
|
242
|
-
it('should reject variables as singular arguments', () => {
|
|
243
|
-
const catalog = new catalog_1.Catalog();
|
|
244
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
245
|
-
keyword: [new keyword_1.Keyword('_np', ['1c', '2', '3'])],
|
|
246
|
-
});
|
|
247
|
-
const code = '_np("world", earth, "many earths")';
|
|
248
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
249
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
250
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
251
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
252
|
-
});
|
|
253
|
-
it('should allow simple template literals as singular arguments', () => {
|
|
254
|
-
const catalog = new catalog_1.Catalog();
|
|
255
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
256
|
-
keyword: [new keyword_1.Keyword('_np', ['1c', '2', '3'])],
|
|
257
|
-
});
|
|
258
|
-
const code = '_np("world", `one earth`, "many earths")';
|
|
259
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
260
|
-
const expected = `#: example.js:1
|
|
261
|
-
msgctxt "world"
|
|
262
|
-
msgid "one earth"
|
|
263
|
-
msgid_plural "many earths"
|
|
264
|
-
msgstr[0] ""
|
|
265
|
-
msgstr[1] ""
|
|
266
|
-
`;
|
|
267
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
268
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
269
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
270
|
-
});
|
|
271
|
-
it('should reject template literals with embedded expressions as singular arguments', () => {
|
|
272
|
-
const catalog = new catalog_1.Catalog();
|
|
273
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
274
|
-
keyword: [new keyword_1.Keyword('_np', ['1c', '2', '3'])],
|
|
275
|
-
});
|
|
276
|
-
const code = '_np("world", `one ${planet}`, "many earths")';
|
|
277
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeFalsy();
|
|
278
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
279
|
-
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
280
|
-
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.js:1:13-1:28: Error: template literals with embedded' +
|
|
281
|
-
' expressions are not allowed as arguments to gettext' +
|
|
282
|
-
' functions because they are not constant');
|
|
283
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
284
|
-
});
|
|
285
|
-
it('should reject variables as plural arguments', () => {
|
|
286
|
-
const catalog = new catalog_1.Catalog();
|
|
287
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
288
|
-
keyword: [new keyword_1.Keyword('_np', ['1c', '2', '3'])],
|
|
289
|
-
});
|
|
290
|
-
const code = '_np("world", "earth", earths)';
|
|
291
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
292
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
293
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
294
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
295
|
-
});
|
|
296
|
-
it('should allow simple template literals as plural arguments', () => {
|
|
297
|
-
const catalog = new catalog_1.Catalog();
|
|
298
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
299
|
-
keyword: [new keyword_1.Keyword('_np', ['1c', '2', '3'])],
|
|
300
|
-
});
|
|
301
|
-
const code = '_np("world", "one earth", `many earths`)';
|
|
302
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
303
|
-
const expected = `#: example.js:1
|
|
304
|
-
msgctxt "world"
|
|
305
|
-
msgid "one earth"
|
|
306
|
-
msgid_plural "many earths"
|
|
307
|
-
msgstr[0] ""
|
|
308
|
-
msgstr[1] ""
|
|
309
|
-
`;
|
|
310
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
311
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
312
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
313
|
-
});
|
|
314
|
-
it('should reject template literals with embedded expressions as plural arguments', () => {
|
|
315
|
-
const catalog = new catalog_1.Catalog();
|
|
316
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
317
|
-
keyword: [new keyword_1.Keyword('_np', ['1c', '2', '3'])],
|
|
318
|
-
});
|
|
319
|
-
const code = '_np("world", "one earth", `many ${planets}`)';
|
|
320
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeFalsy();
|
|
321
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
322
|
-
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
323
|
-
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.js:1:26-1:43: Error: template literals with embedded' +
|
|
324
|
-
' expressions are not allowed as arguments to gettext' +
|
|
325
|
-
' functions because they are not constant');
|
|
326
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
327
|
-
});
|
|
328
|
-
it('should reject variables as msgctxt arguments', () => {
|
|
329
|
-
const catalog = new catalog_1.Catalog();
|
|
330
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
331
|
-
keyword: [new keyword_1.Keyword('_np', ['1c', '2', '3'])],
|
|
332
|
-
});
|
|
333
|
-
const code = '_np(world, "earth", "many earths")';
|
|
334
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
335
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
336
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
337
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
338
|
-
});
|
|
339
|
-
it('should allow simple template literals as msgctxt arguments', () => {
|
|
340
|
-
const catalog = new catalog_1.Catalog();
|
|
341
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
342
|
-
keyword: [new keyword_1.Keyword('_np', ['1c', '2', '3'])],
|
|
343
|
-
});
|
|
344
|
-
const code = '_np(`world`, "one earth", "many earths")';
|
|
345
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
346
|
-
const expected = `#: example.js:1
|
|
347
|
-
msgctxt "world"
|
|
348
|
-
msgid "one earth"
|
|
349
|
-
msgid_plural "many earths"
|
|
350
|
-
msgstr[0] ""
|
|
351
|
-
msgstr[1] ""
|
|
352
|
-
`;
|
|
353
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
354
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
355
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
356
|
-
});
|
|
357
|
-
it('should reject template literals with embedded expressions as msgctxt arguments', () => {
|
|
358
|
-
const catalog = new catalog_1.Catalog();
|
|
359
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
360
|
-
keyword: [new keyword_1.Keyword('_np', ['1c', '2', '3'])],
|
|
361
|
-
});
|
|
362
|
-
const code = '_np("world", "one earth", `many ${planets}`)';
|
|
363
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeFalsy();
|
|
364
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
365
|
-
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
366
|
-
expect(errorSpy).toHaveBeenNthCalledWith(1, 'example.js:1:26-1:43: Error: template literals with embedded' +
|
|
367
|
-
' expressions are not allowed as arguments to gettext' +
|
|
368
|
-
' functions because they are not constant');
|
|
369
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
370
|
-
});
|
|
371
|
-
});
|
|
372
|
-
describe('encoding', () => {
|
|
373
|
-
afterEach(() => {
|
|
374
|
-
warnSpy.mockClear();
|
|
375
|
-
errorSpy.mockClear();
|
|
376
|
-
});
|
|
377
|
-
it('should decode to JavaScript strings', () => {
|
|
378
|
-
const catalog = new catalog_1.Catalog();
|
|
379
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
380
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
381
|
-
});
|
|
382
|
-
const code = '_("Hello, world!")';
|
|
383
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
384
|
-
const expected = `#: example.js:1
|
|
385
|
-
msgid "Hello, world!"
|
|
386
|
-
msgstr ""
|
|
387
|
-
`;
|
|
388
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
389
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
390
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
391
|
-
});
|
|
392
|
-
});
|
|
393
|
-
describe('binary expressions', () => {
|
|
394
|
-
afterEach(() => {
|
|
395
|
-
warnSpy.mockClear();
|
|
396
|
-
errorSpy.mockClear();
|
|
397
|
-
});
|
|
398
|
-
it('should extract concatenated strings', () => {
|
|
399
|
-
const catalog = new catalog_1.Catalog();
|
|
400
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
401
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
402
|
-
});
|
|
403
|
-
const code = '_("It\'s a " + "sad" + " and beautiful world!")';
|
|
404
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
405
|
-
const expected = `#: example.js:1
|
|
406
|
-
msgid "It's a sad and beautiful world!"
|
|
407
|
-
msgstr ""
|
|
408
|
-
`;
|
|
409
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
410
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
411
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
412
|
-
});
|
|
413
|
-
it('should extract concatenated strings with simple template literals', () => {
|
|
414
|
-
const catalog = new catalog_1.Catalog();
|
|
415
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
416
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
417
|
-
});
|
|
418
|
-
const code = '_("It\'s a " + `sad` + " and beautiful world!")';
|
|
419
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
420
|
-
const expected = `#: example.js:1
|
|
421
|
-
msgid "It's a sad and beautiful world!"
|
|
422
|
-
msgstr ""
|
|
423
|
-
`;
|
|
424
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
425
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
426
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
427
|
-
});
|
|
428
|
-
it('should ignore concatenated strings with variables', () => {
|
|
429
|
-
const catalog = new catalog_1.Catalog();
|
|
430
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
431
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
432
|
-
});
|
|
433
|
-
const code = '_("It\'s a " + what + " and beautiful world!")';
|
|
434
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
435
|
-
expect(catalog.toString({ omitHeader: true })).toEqual('');
|
|
436
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
437
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
438
|
-
});
|
|
439
|
-
it('should report concatenated strings with interpolations', () => {
|
|
440
|
-
const catalog = new catalog_1.Catalog();
|
|
441
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
442
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
443
|
-
});
|
|
444
|
-
const code = '_("It\'s " + `a ${what}` + " and beautiful world!")';
|
|
445
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeFalsy();
|
|
446
|
-
expect(errorSpy).toHaveBeenCalledTimes(1);
|
|
447
|
-
expect(errorSpy).toHaveBeenCalledWith('example.js:1:12-1:23: Error:' +
|
|
448
|
-
' template literals with embedded expressions are not' +
|
|
449
|
-
' allowed as arguments to gettext functions because' +
|
|
450
|
-
' they are not constant');
|
|
451
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
452
|
-
});
|
|
453
|
-
});
|
|
454
|
-
describe('comments above calls', () => {
|
|
455
|
-
afterEach(() => {
|
|
456
|
-
warnSpy.mockClear();
|
|
457
|
-
errorSpy.mockClear();
|
|
458
|
-
});
|
|
459
|
-
it('should extract xgettext: comments', () => {
|
|
460
|
-
const catalog = new catalog_1.Catalog();
|
|
461
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
462
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
463
|
-
});
|
|
464
|
-
const code = `// xgettext: no-perl-brace-format
|
|
465
|
-
_("It's a {sad} and beautiful world!")
|
|
466
|
-
`;
|
|
467
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
468
|
-
const expected = `#: example.js:2
|
|
469
|
-
#, no-perl-brace-format
|
|
470
|
-
msgid "It's a {sad} and beautiful world!"
|
|
471
|
-
msgstr ""
|
|
472
|
-
`;
|
|
473
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
474
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
475
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
476
|
-
});
|
|
477
|
-
it('should ignore invalid xgettext: comments', () => {
|
|
478
|
-
const catalog = new catalog_1.Catalog();
|
|
479
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
480
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
481
|
-
});
|
|
482
|
-
const code = `// xgettext: down-by-law
|
|
483
|
-
_("It's a sad and beautiful world!")
|
|
484
|
-
`;
|
|
485
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
486
|
-
const expected = `#: example.js:2
|
|
487
|
-
msgid "It's a sad and beautiful world!"
|
|
488
|
-
msgstr ""
|
|
489
|
-
`;
|
|
490
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
491
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
492
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
493
|
-
});
|
|
494
|
-
it('should extract translator comments', () => {
|
|
495
|
-
const catalog = new catalog_1.Catalog();
|
|
496
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
497
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
498
|
-
addComments: ['TRANSLATORS:'],
|
|
499
|
-
});
|
|
500
|
-
const code = `// TRANSLATORS: Down by Law
|
|
501
|
-
_("It's a sad and beautiful world!")
|
|
502
|
-
`;
|
|
503
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
504
|
-
const expected = `#. TRANSLATORS: Down by Law
|
|
505
|
-
#: example.js:2
|
|
506
|
-
msgid "It's a sad and beautiful world!"
|
|
507
|
-
msgstr ""
|
|
508
|
-
`;
|
|
509
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
510
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
511
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
512
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
513
|
-
});
|
|
514
|
-
it('should ignore other comments', () => {
|
|
515
|
-
const catalog = new catalog_1.Catalog();
|
|
516
|
-
const p = new javascript_1.JavaScriptParser(catalog, {
|
|
517
|
-
keyword: [new keyword_1.Keyword('_')],
|
|
518
|
-
addComments: ['TRANSLATORS:'],
|
|
519
|
-
});
|
|
520
|
-
const code = `// TERMINATORS: Down by Law
|
|
521
|
-
_("It's a sad and beautiful world!")
|
|
522
|
-
`;
|
|
523
|
-
expect(p.parse(Buffer.from(code), 'example.js')).toBeTruthy();
|
|
524
|
-
const expected = `#: example.js:2
|
|
525
|
-
msgid "It's a sad and beautiful world!"
|
|
526
|
-
msgstr ""
|
|
527
|
-
`;
|
|
528
|
-
expect(catalog.toString({ omitHeader: true })).toEqual(expected);
|
|
529
|
-
expect(errorSpy).not.toHaveBeenCalled();
|
|
530
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
531
|
-
expect(warnSpy).not.toHaveBeenCalled();
|
|
532
|
-
});
|
|
533
|
-
});
|
|
534
|
-
});
|
|
535
|
-
//# sourceMappingURL=javascript.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"javascript.spec.js","sourceRoot":"","sources":["../../src/parser/javascript.spec.ts"],"names":[],"mappings":";;AAAA,4CAAyC;AACzC,4CAAyC;AACzC,6CAAgD;AAEhD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;AAE3E,CAAC,CAAC,CAAC;AACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;AAE7E,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,SAAS,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,QAAQ,CAAC,SAAS,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC9C,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG;;;;;;;;;CASf,CAAC;YACC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC9C,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,4CAA4C,CAAC;YAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YAC1E,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,sCAAsC,CAAC;YACpD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACxE,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,kCAAkC,CAAC;YAChD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;YAC3E,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,sCAAsC,CAAC;YACpD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACzB,SAAS,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,QAAQ,CAAC,SAAS,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC/C,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,UAAU,EAAE,IAAI;gBAChB,cAAc,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBf,CAAC;YACC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACzB,SAAS,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,QAAQ,CAAC,SAAS,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC3C,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,oBAAoB,CAAC;YAClC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YAClD,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aACxC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,oDAAoD,CAAC;YAClE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;;;CAKnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC3D,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GACT,gEAAgE,CAAC;YAClE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;;;;CAMnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,iBAAiB,CAAC;YAC/B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YAClD,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,mBAAmB,CAAC;YACjC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAChD,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;aACnC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,qBAAqB,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC7D,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC;YACnB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC3D,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aACxC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,oBAAoB,CAAC;YAClC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC5D,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,iCAAiC,CAAC;YAC/C,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACxD,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,oCAAoC,CAAC;YAClD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACtE,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,0CAA0C,CAAC;YACxD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;;;;CAMnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;YAC1F,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,8CAA8C,CAAC;YAC5D,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC7D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CACvC,CAAC,EACD,8DAA8D;gBAC7D,sDAAsD;gBACtD,0CAA0C,CAC3C,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACtD,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,+BAA+B,CAAC;YAC7C,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACpE,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,0CAA0C,CAAC;YACxD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;;;;CAMnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;YACxF,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,8CAA8C,CAAC;YAC5D,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC7D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CACvC,CAAC,EACD,8DAA8D;gBAC7D,sDAAsD;gBACtD,0CAA0C,CAC3C,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACvD,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,oCAAoC,CAAC;YAClD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACrE,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,0CAA0C,CAAC;YACxD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;;;;CAMnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;YACzF,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,8CAA8C,CAAC;YAC5D,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC7D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CACvC,CAAC,EACD,8DAA8D;gBAC7D,sDAAsD;gBACtD,0CAA0C,CAC3C,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACzB,SAAS,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,QAAQ,CAAC,SAAS,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC9C,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,oBAAoB,CAAC;YAClC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QACnC,SAAS,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,QAAQ,CAAC,SAAS,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC9C,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,iDAAiD,CAAC;YAC/D,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YAC5E,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,iDAAiD,CAAC;YAC/D,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC5D,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,gDAAgD,CAAC;YAC9D,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YACjE,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,qDAAqD,CAAC;YACnE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC7D,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CACpC,8BAA8B;gBAC7B,sDAAsD;gBACtD,oDAAoD;gBACpD,wBAAwB,CACzB,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACrC,SAAS,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,QAAQ,CAAC,SAAS,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG;;CAEf,CAAC;YACC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;;CAInB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACnD,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG;;CAEf,CAAC;YACC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC7C,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;gBAC3B,WAAW,EAAE,CAAC,cAAc,CAAC;aAC7B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG;;CAEf,CAAC;YACC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;;CAInB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACvC,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,6BAAgB,CAAC,OAAO,EAAE;gBACvC,OAAO,EAAE,CAAC,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;gBAC3B,WAAW,EAAE,CAAC,cAAc,CAAC;aAC7B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG;;CAEf,CAAC;YACC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;CAGnB,CAAC;YACC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/dist/parser/parser.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import * as t from '@babel/types';
|
|
3
|
-
import { Catalog } from '../pot/catalog';
|
|
4
|
-
import { Keyword } from '../pot/keyword';
|
|
5
|
-
export interface ParserOptions {
|
|
6
|
-
addAllComments?: boolean;
|
|
7
|
-
addComments?: Array<string>;
|
|
8
|
-
extractAll?: boolean;
|
|
9
|
-
keyword?: Array<Keyword>;
|
|
10
|
-
instance?: Array<string>;
|
|
11
|
-
fromCode?: string;
|
|
12
|
-
}
|
|
13
|
-
export declare abstract class Parser {
|
|
14
|
-
protected readonly catalog: Catalog;
|
|
15
|
-
protected readonly options: ParserOptions;
|
|
16
|
-
protected filename: string;
|
|
17
|
-
protected errors: number;
|
|
18
|
-
private comments;
|
|
19
|
-
private readonly instances;
|
|
20
|
-
private readonly keywords;
|
|
21
|
-
constructor(catalog: Catalog, options?: ParserOptions);
|
|
22
|
-
protected abstract doParse(input: string, filename: string): boolean;
|
|
23
|
-
parse(buf: Buffer, filename: string): boolean;
|
|
24
|
-
protected extract(filename: string, ast: t.File): boolean;
|
|
25
|
-
private extractStrings;
|
|
26
|
-
private extractAllStrings;
|
|
27
|
-
private checkPath;
|
|
28
|
-
private checkInstance;
|
|
29
|
-
private extractArguments;
|
|
30
|
-
private extractArgument;
|
|
31
|
-
private extractBinaryExpression;
|
|
32
|
-
private extractTemplateLiteral;
|
|
33
|
-
private concatStrings;
|
|
34
|
-
private addEntry;
|
|
35
|
-
private methodFromMemberExpression;
|
|
36
|
-
private literalValue;
|
|
37
|
-
private findPrecedingComments;
|
|
38
|
-
private filterComments;
|
|
39
|
-
private static cookedDefaultKeywords;
|
|
40
|
-
private static defaultKeywords;
|
|
41
|
-
protected warn(msg: string, loc: t.SourceLocation): void;
|
|
42
|
-
protected error(msg: string, loc: t.SourceLocation): void;
|
|
43
|
-
private canonicalizeEncoding;
|
|
44
|
-
private findNonUtf8;
|
|
45
|
-
}
|