flow-lang 0.1.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 +21 -0
- package/README.md +256 -0
- package/dist/analyzer/index.d.ts +3 -0
- package/dist/analyzer/index.d.ts.map +1 -0
- package/dist/analyzer/index.js +268 -0
- package/dist/analyzer/index.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +241 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/errors/index.d.ts +40 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +110 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/lexer/index.d.ts +7 -0
- package/dist/lexer/index.d.ts.map +1 -0
- package/dist/lexer/index.js +443 -0
- package/dist/lexer/index.js.map +1 -0
- package/dist/parser/index.d.ts +11 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +942 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/runtime/index.d.ts +92 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +972 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/types/index.d.ts +269 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +29 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
import { TokenType } from "../types/index.js";
|
|
2
|
+
import { createError } from "../errors/index.js";
|
|
3
|
+
// ============================================================
|
|
4
|
+
// Keyword tables
|
|
5
|
+
// ============================================================
|
|
6
|
+
// Multi-word keywords, sorted longest-first for greedy matching
|
|
7
|
+
const COMPOUND_KEYWORDS = [
|
|
8
|
+
"does not exist",
|
|
9
|
+
"is not empty",
|
|
10
|
+
"otherwise if",
|
|
11
|
+
"divided by",
|
|
12
|
+
"rounded to",
|
|
13
|
+
"on failure",
|
|
14
|
+
"on timeout",
|
|
15
|
+
"if still failing",
|
|
16
|
+
"is at least",
|
|
17
|
+
"is at most",
|
|
18
|
+
"is not",
|
|
19
|
+
"is above",
|
|
20
|
+
"is below",
|
|
21
|
+
"is empty",
|
|
22
|
+
"for each",
|
|
23
|
+
"save the result as",
|
|
24
|
+
"save the confidence as",
|
|
25
|
+
];
|
|
26
|
+
const SINGLE_KEYWORDS = new Set([
|
|
27
|
+
"workflow",
|
|
28
|
+
"config",
|
|
29
|
+
"services",
|
|
30
|
+
"trigger",
|
|
31
|
+
"step",
|
|
32
|
+
"if",
|
|
33
|
+
"otherwise",
|
|
34
|
+
"for",
|
|
35
|
+
"each",
|
|
36
|
+
"in",
|
|
37
|
+
"set",
|
|
38
|
+
"to",
|
|
39
|
+
"ask",
|
|
40
|
+
"save",
|
|
41
|
+
"the",
|
|
42
|
+
"result",
|
|
43
|
+
"as",
|
|
44
|
+
"confidence",
|
|
45
|
+
"using",
|
|
46
|
+
"with",
|
|
47
|
+
"at",
|
|
48
|
+
"on",
|
|
49
|
+
"is",
|
|
50
|
+
"contains",
|
|
51
|
+
"exists",
|
|
52
|
+
"and",
|
|
53
|
+
"or",
|
|
54
|
+
"not",
|
|
55
|
+
"complete",
|
|
56
|
+
"reject",
|
|
57
|
+
"log",
|
|
58
|
+
"skip",
|
|
59
|
+
"retry",
|
|
60
|
+
"times",
|
|
61
|
+
"waiting",
|
|
62
|
+
"every",
|
|
63
|
+
"when",
|
|
64
|
+
"manual",
|
|
65
|
+
"plus",
|
|
66
|
+
"minus",
|
|
67
|
+
"env",
|
|
68
|
+
]);
|
|
69
|
+
// ============================================================
|
|
70
|
+
// Lexer error class
|
|
71
|
+
// ============================================================
|
|
72
|
+
export class LexerError extends Error {
|
|
73
|
+
flowError;
|
|
74
|
+
constructor(flowError) {
|
|
75
|
+
super(flowError.message);
|
|
76
|
+
this.name = "LexerError";
|
|
77
|
+
this.flowError = flowError;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// ============================================================
|
|
81
|
+
// Tokenizer
|
|
82
|
+
// ============================================================
|
|
83
|
+
export function tokenize(source, fileName = "<input>") {
|
|
84
|
+
const tokens = [];
|
|
85
|
+
const indentStack = [0];
|
|
86
|
+
let pos = 0;
|
|
87
|
+
let line = 1;
|
|
88
|
+
let column = 1;
|
|
89
|
+
// Whether we're at the start of a line (need to check indentation)
|
|
90
|
+
let atLineStart = true;
|
|
91
|
+
function peek() {
|
|
92
|
+
return source[pos] ?? "\0";
|
|
93
|
+
}
|
|
94
|
+
function peekAt(offset) {
|
|
95
|
+
return source[pos + offset] ?? "\0";
|
|
96
|
+
}
|
|
97
|
+
function advance() {
|
|
98
|
+
const ch = source[pos] ?? "\0";
|
|
99
|
+
pos++;
|
|
100
|
+
if (ch === "\n") {
|
|
101
|
+
line++;
|
|
102
|
+
column = 1;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
column++;
|
|
106
|
+
}
|
|
107
|
+
return ch;
|
|
108
|
+
}
|
|
109
|
+
function makeToken(type, value, startLine, startCol) {
|
|
110
|
+
return { type, value, line: startLine, column: startCol };
|
|
111
|
+
}
|
|
112
|
+
function error(message, suggestion, hint) {
|
|
113
|
+
return new LexerError(createError(fileName, line, column, message, source, { suggestion, hint }));
|
|
114
|
+
}
|
|
115
|
+
// Check if the rest of the line (from pos) matches a string (case-insensitive for keywords)
|
|
116
|
+
function matchAhead(text) {
|
|
117
|
+
for (let i = 0; i < text.length; i++) {
|
|
118
|
+
const srcChar = source[pos + i];
|
|
119
|
+
if (srcChar === undefined)
|
|
120
|
+
return false;
|
|
121
|
+
if (srcChar.toLowerCase() !== text[i].toLowerCase())
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
// The character after the match must be non-alphanumeric (word boundary)
|
|
125
|
+
const afterChar = source[pos + text.length];
|
|
126
|
+
if (afterChar !== undefined && /[a-zA-Z0-9_]/.test(afterChar))
|
|
127
|
+
return false;
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
// --------------------------------------------------------
|
|
131
|
+
// Indentation handling
|
|
132
|
+
// --------------------------------------------------------
|
|
133
|
+
function handleIndentation() {
|
|
134
|
+
let spaces = 0;
|
|
135
|
+
const indentStartLine = line;
|
|
136
|
+
const indentStartCol = column;
|
|
137
|
+
while (pos < source.length && peek() === " ") {
|
|
138
|
+
advance();
|
|
139
|
+
spaces++;
|
|
140
|
+
}
|
|
141
|
+
// Check for tabs
|
|
142
|
+
if (peek() === "\t") {
|
|
143
|
+
throw error("Tabs are not allowed in Flow. Please use spaces (4 per indent level).", "Replace all tabs with 4 spaces.", "Most editors can convert tabs to spaces automatically.\nLook for \"Convert Indentation to Spaces\" in your editor's command palette.");
|
|
144
|
+
}
|
|
145
|
+
// Skip blank lines and comment-only lines
|
|
146
|
+
if (peek() === "\n" || peek() === "\r" || peek() === "\0" || peek() === "#") {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const currentIndent = indentStack[indentStack.length - 1] ?? 0;
|
|
150
|
+
if (spaces > currentIndent) {
|
|
151
|
+
// Increased indentation
|
|
152
|
+
if ((spaces - currentIndent) !== 4) {
|
|
153
|
+
throw error(`Unexpected indentation. I expected ${currentIndent + 4} spaces but found ${spaces}.`, "Flow uses exactly 4 spaces for each indent level.", "Make sure each nested block is indented exactly 4 more spaces than its parent.");
|
|
154
|
+
}
|
|
155
|
+
indentStack.push(spaces);
|
|
156
|
+
tokens.push(makeToken(TokenType.INDENT, "INDENT", indentStartLine, indentStartCol));
|
|
157
|
+
}
|
|
158
|
+
else if (spaces < currentIndent) {
|
|
159
|
+
// Decreased indentation — may need multiple DEDENTs
|
|
160
|
+
while (indentStack.length > 1 && (indentStack[indentStack.length - 1] ?? 0) > spaces) {
|
|
161
|
+
indentStack.pop();
|
|
162
|
+
tokens.push(makeToken(TokenType.DEDENT, "DEDENT", indentStartLine, indentStartCol));
|
|
163
|
+
}
|
|
164
|
+
if ((indentStack[indentStack.length - 1] ?? 0) !== spaces) {
|
|
165
|
+
throw error(`Indentation doesn't match any outer block. Found ${spaces} spaces.`, "Make sure your indentation lines up with a previous block.", "Each indent level in Flow is exactly 4 spaces.");
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// If spaces === currentIndent, no INDENT/DEDENT needed
|
|
169
|
+
}
|
|
170
|
+
// --------------------------------------------------------
|
|
171
|
+
// String scanning (with interpolation support)
|
|
172
|
+
// --------------------------------------------------------
|
|
173
|
+
function scanString() {
|
|
174
|
+
const startLine = line;
|
|
175
|
+
const startCol = column;
|
|
176
|
+
advance(); // consume opening "
|
|
177
|
+
let textBuffer = "";
|
|
178
|
+
let hasInterpolation = false;
|
|
179
|
+
while (pos < source.length && peek() !== '"') {
|
|
180
|
+
if (peek() === "\n" || peek() === "\r") {
|
|
181
|
+
throw error("This string is missing its closing quote.", 'Add a " at the end of the string.', 'Strings in Flow must be on a single line: "like this"');
|
|
182
|
+
}
|
|
183
|
+
if (peek() === "{" && peekAt(1) !== "{") {
|
|
184
|
+
// Start of interpolation
|
|
185
|
+
hasInterpolation = true;
|
|
186
|
+
// Emit accumulated text as STRING_PART
|
|
187
|
+
if (textBuffer.length > 0 || !hasInterpolation) {
|
|
188
|
+
tokens.push(makeToken(TokenType.STRING_PART, textBuffer, startLine, startCol));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
tokens.push(makeToken(TokenType.STRING_PART, textBuffer, startLine, startCol));
|
|
192
|
+
}
|
|
193
|
+
textBuffer = "";
|
|
194
|
+
tokens.push(makeToken(TokenType.INTERP_START, "{", line, column));
|
|
195
|
+
advance(); // consume {
|
|
196
|
+
// Tokenize the expression inside the interpolation
|
|
197
|
+
scanInterpolationExpression();
|
|
198
|
+
if (peek() !== "}") {
|
|
199
|
+
throw error("Missing closing } in string interpolation.", "Add a } to close the interpolation expression.", 'Example: "Hello, {name}"');
|
|
200
|
+
}
|
|
201
|
+
tokens.push(makeToken(TokenType.INTERP_END, "}", line, column));
|
|
202
|
+
advance(); // consume }
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
if (peek() === "{" && peekAt(1) === "{") {
|
|
206
|
+
// Escaped brace: {{ → literal {
|
|
207
|
+
textBuffer += "{";
|
|
208
|
+
advance();
|
|
209
|
+
advance();
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
if (peek() === "}" && peekAt(1) === "}") {
|
|
213
|
+
// Escaped brace: }} → literal }
|
|
214
|
+
textBuffer += "}";
|
|
215
|
+
advance();
|
|
216
|
+
advance();
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
if (peek() === "\\") {
|
|
220
|
+
advance(); // consume backslash
|
|
221
|
+
const escaped = advance();
|
|
222
|
+
switch (escaped) {
|
|
223
|
+
case "n":
|
|
224
|
+
textBuffer += "\n";
|
|
225
|
+
break;
|
|
226
|
+
case "t":
|
|
227
|
+
textBuffer += "\t";
|
|
228
|
+
break;
|
|
229
|
+
case '"':
|
|
230
|
+
textBuffer += '"';
|
|
231
|
+
break;
|
|
232
|
+
case "\\":
|
|
233
|
+
textBuffer += "\\";
|
|
234
|
+
break;
|
|
235
|
+
default: textBuffer += "\\" + escaped;
|
|
236
|
+
}
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
textBuffer += advance();
|
|
240
|
+
}
|
|
241
|
+
if (pos >= source.length) {
|
|
242
|
+
throw error("This string is missing its closing quote.", 'Add a " at the end of the string.', 'Strings in Flow must be on a single line: "like this"');
|
|
243
|
+
}
|
|
244
|
+
advance(); // consume closing "
|
|
245
|
+
if (hasInterpolation) {
|
|
246
|
+
// Emit final STRING_PART
|
|
247
|
+
tokens.push(makeToken(TokenType.STRING_PART, textBuffer, line, column));
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
// Plain string, no interpolation
|
|
251
|
+
tokens.push(makeToken(TokenType.STRING, textBuffer, startLine, startCol));
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function scanInterpolationExpression() {
|
|
255
|
+
// Inside {}, we scan identifiers and dots
|
|
256
|
+
skipSpaces();
|
|
257
|
+
if (peek() === "}") {
|
|
258
|
+
throw error("Empty interpolation expression.", "Put a variable name inside the braces.", 'Example: "Hello, {name}"');
|
|
259
|
+
}
|
|
260
|
+
const startLine = line;
|
|
261
|
+
const startCol = column;
|
|
262
|
+
let name = "";
|
|
263
|
+
while (pos < source.length && /[a-zA-Z0-9_\-]/.test(peek())) {
|
|
264
|
+
name += advance();
|
|
265
|
+
}
|
|
266
|
+
if (name.length === 0) {
|
|
267
|
+
throw error("Empty interpolation expression.", "Put a variable name inside the braces.", 'Example: "Hello, {name}"');
|
|
268
|
+
}
|
|
269
|
+
tokens.push(makeToken(TokenType.IDENTIFIER, name, startLine, startCol));
|
|
270
|
+
// Handle dot access chains: {order.items.length}
|
|
271
|
+
while (peek() === ".") {
|
|
272
|
+
tokens.push(makeToken(TokenType.DOT, ".", line, column));
|
|
273
|
+
advance(); // consume .
|
|
274
|
+
const propLine = line;
|
|
275
|
+
const propCol = column;
|
|
276
|
+
let prop = "";
|
|
277
|
+
while (pos < source.length && /[a-zA-Z0-9_\-]/.test(peek())) {
|
|
278
|
+
prop += advance();
|
|
279
|
+
}
|
|
280
|
+
if (prop.length === 0) {
|
|
281
|
+
throw error("Expected a property name after the dot.", "Add a property name.", 'Example: {order.total}');
|
|
282
|
+
}
|
|
283
|
+
tokens.push(makeToken(TokenType.IDENTIFIER, prop, propLine, propCol));
|
|
284
|
+
}
|
|
285
|
+
skipSpaces();
|
|
286
|
+
}
|
|
287
|
+
// --------------------------------------------------------
|
|
288
|
+
// Number scanning
|
|
289
|
+
// --------------------------------------------------------
|
|
290
|
+
function scanNumber() {
|
|
291
|
+
const startLine = line;
|
|
292
|
+
const startCol = column;
|
|
293
|
+
let num = "";
|
|
294
|
+
while (pos < source.length && /[0-9]/.test(peek())) {
|
|
295
|
+
num += advance();
|
|
296
|
+
}
|
|
297
|
+
if (peek() === "." && /[0-9]/.test(peekAt(1))) {
|
|
298
|
+
num += advance(); // consume .
|
|
299
|
+
while (pos < source.length && /[0-9]/.test(peek())) {
|
|
300
|
+
num += advance();
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
tokens.push(makeToken(TokenType.NUMBER, num, startLine, startCol));
|
|
304
|
+
}
|
|
305
|
+
// --------------------------------------------------------
|
|
306
|
+
// Word scanning (identifiers and keywords)
|
|
307
|
+
// --------------------------------------------------------
|
|
308
|
+
function scanWord() {
|
|
309
|
+
const startLine = line;
|
|
310
|
+
const startCol = column;
|
|
311
|
+
// Try to match compound keywords first (longest match)
|
|
312
|
+
for (const compound of COMPOUND_KEYWORDS) {
|
|
313
|
+
if (matchAhead(compound)) {
|
|
314
|
+
// Consume the compound keyword
|
|
315
|
+
for (let i = 0; i < compound.length; i++) {
|
|
316
|
+
advance();
|
|
317
|
+
}
|
|
318
|
+
tokens.push(makeToken(TokenType.KEYWORD_COMPOUND, compound, startLine, startCol));
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// Read the full word
|
|
323
|
+
let word = "";
|
|
324
|
+
while (pos < source.length && /[a-zA-Z0-9_\-]/.test(peek())) {
|
|
325
|
+
word += advance();
|
|
326
|
+
}
|
|
327
|
+
// Check for boolean literals
|
|
328
|
+
if (word === "true" || word === "false") {
|
|
329
|
+
tokens.push(makeToken(TokenType.BOOLEAN, word, startLine, startCol));
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
// Check for single keywords
|
|
333
|
+
if (SINGLE_KEYWORDS.has(word)) {
|
|
334
|
+
tokens.push(makeToken(TokenType.KEYWORD, word, startLine, startCol));
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
// Otherwise it's an identifier
|
|
338
|
+
tokens.push(makeToken(TokenType.IDENTIFIER, word, startLine, startCol));
|
|
339
|
+
}
|
|
340
|
+
// --------------------------------------------------------
|
|
341
|
+
// Helpers
|
|
342
|
+
// --------------------------------------------------------
|
|
343
|
+
function skipSpaces() {
|
|
344
|
+
while (pos < source.length && peek() === " ") {
|
|
345
|
+
advance();
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
function skipComment() {
|
|
349
|
+
while (pos < source.length && peek() !== "\n") {
|
|
350
|
+
advance();
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
// --------------------------------------------------------
|
|
354
|
+
// Main loop
|
|
355
|
+
// --------------------------------------------------------
|
|
356
|
+
while (pos < source.length) {
|
|
357
|
+
// Handle start of line (indentation)
|
|
358
|
+
if (atLineStart) {
|
|
359
|
+
handleIndentation();
|
|
360
|
+
atLineStart = false;
|
|
361
|
+
// After indentation, if we hit end of line or comment, skip
|
|
362
|
+
if (peek() === "\n" || peek() === "\r") {
|
|
363
|
+
if (peek() === "\r")
|
|
364
|
+
advance();
|
|
365
|
+
if (peek() === "\n")
|
|
366
|
+
advance();
|
|
367
|
+
atLineStart = true;
|
|
368
|
+
continue;
|
|
369
|
+
}
|
|
370
|
+
if (peek() === "#") {
|
|
371
|
+
skipComment();
|
|
372
|
+
continue;
|
|
373
|
+
}
|
|
374
|
+
if (peek() === "\0") {
|
|
375
|
+
break;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
const ch = peek();
|
|
379
|
+
// Whitespace (within a line)
|
|
380
|
+
if (ch === " ") {
|
|
381
|
+
skipSpaces();
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
384
|
+
// Newlines
|
|
385
|
+
if (ch === "\n" || ch === "\r") {
|
|
386
|
+
const newlineLine = line;
|
|
387
|
+
const newlineCol = column;
|
|
388
|
+
if (ch === "\r")
|
|
389
|
+
advance();
|
|
390
|
+
if (peek() === "\n")
|
|
391
|
+
advance();
|
|
392
|
+
// Only emit NEWLINE if the last token isn't already NEWLINE
|
|
393
|
+
const lastToken = tokens[tokens.length - 1];
|
|
394
|
+
if (lastToken && lastToken.type !== TokenType.NEWLINE && lastToken.type !== TokenType.INDENT) {
|
|
395
|
+
tokens.push(makeToken(TokenType.NEWLINE, "\\n", newlineLine, newlineCol));
|
|
396
|
+
}
|
|
397
|
+
atLineStart = true;
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
// Comments
|
|
401
|
+
if (ch === "#") {
|
|
402
|
+
skipComment();
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
// Strings
|
|
406
|
+
if (ch === '"') {
|
|
407
|
+
scanString();
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
// Numbers
|
|
411
|
+
if (/[0-9]/.test(ch)) {
|
|
412
|
+
scanNumber();
|
|
413
|
+
continue;
|
|
414
|
+
}
|
|
415
|
+
// Colon
|
|
416
|
+
if (ch === ":") {
|
|
417
|
+
tokens.push(makeToken(TokenType.COLON, ":", line, column));
|
|
418
|
+
advance();
|
|
419
|
+
continue;
|
|
420
|
+
}
|
|
421
|
+
// Dot (standalone, not in a number)
|
|
422
|
+
if (ch === ".") {
|
|
423
|
+
tokens.push(makeToken(TokenType.DOT, ".", line, column));
|
|
424
|
+
advance();
|
|
425
|
+
continue;
|
|
426
|
+
}
|
|
427
|
+
// Words (identifiers, keywords, booleans)
|
|
428
|
+
if (/[a-zA-Z_]/.test(ch)) {
|
|
429
|
+
scanWord();
|
|
430
|
+
continue;
|
|
431
|
+
}
|
|
432
|
+
// Unknown character
|
|
433
|
+
throw error(`Unexpected character "${ch}".`, "Remove this character or check for typos.", "Flow only uses letters, numbers, spaces, quotes, colons, dots, and # for comments.");
|
|
434
|
+
}
|
|
435
|
+
// Emit remaining DEDENTs at end of file
|
|
436
|
+
while (indentStack.length > 1) {
|
|
437
|
+
indentStack.pop();
|
|
438
|
+
tokens.push(makeToken(TokenType.DEDENT, "DEDENT", line, column));
|
|
439
|
+
}
|
|
440
|
+
tokens.push(makeToken(TokenType.EOF, "", line, column));
|
|
441
|
+
return tokens;
|
|
442
|
+
}
|
|
443
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lexer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,SAAS,EAAa,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAE/D,gEAAgE;AAChE,MAAM,iBAAiB,GAAG;IACtB,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,kBAAkB;IAClB,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,oBAAoB;IACpB,wBAAwB;CAClB,CAAC;AAEX,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC5B,UAAU;IACV,QAAQ;IACR,UAAU;IACV,SAAS;IACT,MAAM;IACN,IAAI;IACJ,WAAW;IACX,KAAK;IACL,MAAM;IACN,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,MAAM;IACN,KAAK;IACL,QAAQ;IACR,IAAI;IACJ,YAAY;IACZ,OAAO;IACP,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,UAAU;IACV,QAAQ;IACR,KAAK;IACL,IAAI;IACJ,KAAK;IACL,UAAU;IACV,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;IACP,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;CACR,CAAC,CAAC;AAEH,+DAA+D;AAC/D,oBAAoB;AACpB,+DAA+D;AAE/D,MAAM,OAAO,UAAW,SAAQ,KAAK;IACjB,SAAS,CAAY;IAErC,YAAY,SAAoB;QAC5B,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;CACJ;AAED,+DAA+D;AAC/D,YAAY;AACZ,+DAA+D;AAE/D,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,WAAmB,SAAS;IACjE,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAa,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,mEAAmE;IACnE,IAAI,WAAW,GAAG,IAAI,CAAC;IAEvB,SAAS,IAAI;QACT,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAC/B,CAAC;IAED,SAAS,MAAM,CAAC,MAAc;QAC1B,OAAO,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,SAAS,OAAO;QACZ,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QAC/B,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACd,IAAI,EAAE,CAAC;YACP,MAAM,GAAG,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACJ,MAAM,EAAE,CAAC;QACb,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,SAAS,SAAS,CAAC,IAAe,EAAE,KAAa,EAAE,SAAiB,EAAE,QAAgB;QAClF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9D,CAAC;IAED,SAAS,KAAK,CAAC,OAAe,EAAE,UAAmB,EAAE,IAAa;QAC9D,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,4FAA4F;IAC5F,SAAS,UAAU,CAAC,IAAY;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAChC,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YACxC,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE;gBAAE,OAAO,KAAK,CAAC;QACvE,CAAC;QACD,yEAAyE;QACzE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,SAAS,KAAK,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5E,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,2DAA2D;IAC3D,uBAAuB;IACvB,2DAA2D;IAE3D,SAAS,iBAAiB;QACtB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,MAAM,cAAc,GAAG,MAAM,CAAC;QAE9B,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;QACb,CAAC;QAED,iBAAiB;QACjB,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,CACP,uEAAuE,EACvE,iCAAiC,EACjC,sIAAsI,CACzI,CAAC;QACN,CAAC;QAED,0CAA0C;QAC1C,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC1E,OAAO;QACX,CAAC;QAED,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,MAAM,GAAG,aAAa,EAAE,CAAC;YACzB,wBAAwB;YACxB,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,CACP,sCAAsC,aAAa,GAAG,CAAC,qBAAqB,MAAM,GAAG,EACrF,mDAAmD,EACnD,gFAAgF,CACnF,CAAC;YACN,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,IAAI,MAAM,GAAG,aAAa,EAAE,CAAC;YAChC,oDAAoD;YACpD,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;gBACnF,WAAW,CAAC,GAAG,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;YACxF,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBACxD,MAAM,KAAK,CACP,oDAAoD,MAAM,UAAU,EACpE,4DAA4D,EAC5D,gDAAgD,CACnD,CAAC;YACN,CAAC;QACL,CAAC;QACD,uDAAuD;IAC3D,CAAC;IAED,2DAA2D;IAC3D,+CAA+C;IAC/C,2DAA2D;IAE3D,SAAS,UAAU;QACf,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC;QACxB,OAAO,EAAE,CAAC,CAAC,oBAAoB;QAE/B,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC3C,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACrC,MAAM,KAAK,CACP,2CAA2C,EAC3C,mCAAmC,EACnC,uDAAuD,CAC1D,CAAC;YACN,CAAC;YAED,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACtC,yBAAyB;gBACzB,gBAAgB,GAAG,IAAI,CAAC;gBAExB,uCAAuC;gBACvC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC7C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACnF,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACnF,CAAC;gBACD,UAAU,GAAG,EAAE,CAAC;gBAEhB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBAClE,OAAO,EAAE,CAAC,CAAC,YAAY;gBAEvB,mDAAmD;gBACnD,2BAA2B,EAAE,CAAC;gBAE9B,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;oBACjB,MAAM,KAAK,CACP,4CAA4C,EAC5C,gDAAgD,EAChD,0BAA0B,CAC7B,CAAC;gBACN,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChE,OAAO,EAAE,CAAC,CAAC,YAAY;gBACvB,SAAS;YACb,CAAC;YAED,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACtC,gCAAgC;gBAChC,UAAU,IAAI,GAAG,CAAC;gBAClB,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,SAAS;YACb,CAAC;YAED,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACtC,gCAAgC;gBAChC,UAAU,IAAI,GAAG,CAAC;gBAClB,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,SAAS;YACb,CAAC;YAED,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,EAAE,CAAC,CAAC,oBAAoB;gBAC/B,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;gBAC1B,QAAQ,OAAO,EAAE,CAAC;oBACd,KAAK,GAAG;wBAAE,UAAU,IAAI,IAAI,CAAC;wBAAC,MAAM;oBACpC,KAAK,GAAG;wBAAE,UAAU,IAAI,IAAI,CAAC;wBAAC,MAAM;oBACpC,KAAK,GAAG;wBAAE,UAAU,IAAI,GAAG,CAAC;wBAAC,MAAM;oBACnC,KAAK,IAAI;wBAAE,UAAU,IAAI,IAAI,CAAC;wBAAC,MAAM;oBACrC,OAAO,CAAC,CAAC,UAAU,IAAI,IAAI,GAAG,OAAO,CAAC;gBAC1C,CAAC;gBACD,SAAS;YACb,CAAC;YAED,UAAU,IAAI,OAAO,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,CACP,2CAA2C,EAC3C,mCAAmC,EACnC,uDAAuD,CAC1D,CAAC;QACN,CAAC;QAED,OAAO,EAAE,CAAC,CAAC,oBAAoB;QAE/B,IAAI,gBAAgB,EAAE,CAAC;YACnB,yBAAyB;YACzB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACJ,iCAAiC;YACjC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IAED,SAAS,2BAA2B;QAChC,0CAA0C;QAC1C,UAAU,EAAE,CAAC;QACb,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,KAAK,CACP,iCAAiC,EACjC,wCAAwC,EACxC,0BAA0B,CAC7B,CAAC;QACN,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC;QACxB,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1D,IAAI,IAAI,OAAO,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,KAAK,CACP,iCAAiC,EACjC,wCAAwC,EACxC,0BAA0B,CAC7B,CAAC;QACN,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAExE,iDAAiD;QACjD,OAAO,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,OAAO,EAAE,CAAC,CAAC,YAAY;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC;YACtB,MAAM,OAAO,GAAG,MAAM,CAAC;YACvB,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC1D,IAAI,IAAI,OAAO,EAAE,CAAC;YACtB,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,KAAK,CACP,yCAAyC,EACzC,sBAAsB,EACtB,wBAAwB,CAC3B,CAAC;YACN,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,UAAU,EAAE,CAAC;IACjB,CAAC;IAED,2DAA2D;IAC3D,kBAAkB;IAClB,2DAA2D;IAE3D,SAAS,UAAU;QACf,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC;QACxB,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACjD,GAAG,IAAI,OAAO,EAAE,CAAC;QACrB,CAAC;QAED,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC,YAAY;YAC9B,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACjD,GAAG,IAAI,OAAO,EAAE,CAAC;YACrB,CAAC;QACL,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,2DAA2D;IAC3D,2CAA2C;IAC3C,2DAA2D;IAE3D,SAAS,QAAQ;QACb,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC;QAExB,uDAAuD;QACvD,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;YACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvB,+BAA+B;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,OAAO,EAAE,CAAC;gBACd,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAClF,OAAO;YACX,CAAC;QACL,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1D,IAAI,IAAI,OAAO,EAAE,CAAC;QACtB,CAAC;QAED,6BAA6B;QAC7B,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YACrE,OAAO;QACX,CAAC;QAED,4BAA4B;QAC5B,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YACrE,OAAO;QACX,CAAC;QAED,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,2DAA2D;IAC3D,UAAU;IACV,2DAA2D;IAE3D,SAAS,UAAU;QACf,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED,SAAS,WAAW;QAChB,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED,2DAA2D;IAC3D,YAAY;IACZ,2DAA2D;IAE3D,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,qCAAqC;QACrC,IAAI,WAAW,EAAE,CAAC;YACd,iBAAiB,EAAE,CAAC;YACpB,WAAW,GAAG,KAAK,CAAC;YAEpB,4DAA4D;YAC5D,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACrC,IAAI,IAAI,EAAE,KAAK,IAAI;oBAAE,OAAO,EAAE,CAAC;gBAC/B,IAAI,IAAI,EAAE,KAAK,IAAI;oBAAE,OAAO,EAAE,CAAC;gBAC/B,WAAW,GAAG,IAAI,CAAC;gBACnB,SAAS;YACb,CAAC;YACD,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACjB,WAAW,EAAE,CAAC;gBACd,SAAS;YACb,CAAC;YACD,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM;YACV,CAAC;QACL,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;QAElB,6BAA6B;QAC7B,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACb,UAAU,EAAE,CAAC;YACb,SAAS;QACb,CAAC;QAED,WAAW;QACX,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,IAAI,CAAC;YACzB,MAAM,UAAU,GAAG,MAAM,CAAC;YAC1B,IAAI,EAAE,KAAK,IAAI;gBAAE,OAAO,EAAE,CAAC;YAC3B,IAAI,IAAI,EAAE,KAAK,IAAI;gBAAE,OAAO,EAAE,CAAC;YAE/B,4DAA4D;YAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5C,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC3F,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;YAC9E,CAAC;YACD,WAAW,GAAG,IAAI,CAAC;YACnB,SAAS;QACb,CAAC;QAED,WAAW;QACX,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,SAAS;QACb,CAAC;QAED,UAAU;QACV,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACb,UAAU,EAAE,CAAC;YACb,SAAS;QACb,CAAC;QAED,UAAU;QACV,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACnB,UAAU,EAAE,CAAC;YACb,SAAS;QACb,CAAC;QAED,QAAQ;QACR,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YAC3D,OAAO,EAAE,CAAC;YACV,SAAS;QACb,CAAC;QAED,oCAAoC;QACpC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,OAAO,EAAE,CAAC;YACV,SAAS;QACb,CAAC;QAED,0CAA0C;QAC1C,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,QAAQ,EAAE,CAAC;YACX,SAAS;QACb,CAAC;QAED,oBAAoB;QACpB,MAAM,KAAK,CACP,yBAAyB,EAAE,IAAI,EAC/B,2CAA2C,EAC3C,oFAAoF,CACvF,CAAC;IACN,CAAC;IAED,wCAAwC;IACxC,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,WAAW,CAAC,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAExD,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Token, FlowError, Program } from "../types/index.js";
|
|
2
|
+
export declare class ParserError extends Error {
|
|
3
|
+
readonly flowError: FlowError;
|
|
4
|
+
constructor(flowError: FlowError);
|
|
5
|
+
}
|
|
6
|
+
export interface ParseResult {
|
|
7
|
+
program: Program;
|
|
8
|
+
errors: FlowError[];
|
|
9
|
+
}
|
|
10
|
+
export declare function parse(tokens: Token[], source: string, fileName?: string): ParseResult;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EAAa,SAAS,EAC3B,OAAO,EAYV,MAAM,mBAAmB,CAAC;AAO3B,qBAAa,WAAY,SAAQ,KAAK;IAClC,SAAgB,SAAS,EAAE,SAAS,CAAC;gBAEzB,SAAS,EAAE,SAAS;CAKnC;AAMD,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,CAAC;CACvB;AAwBD,wBAAgB,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,GAAG,WAAW,CA0kChG"}
|