astn-sealed 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.
Files changed (43) hide show
  1. package/dist/globals.d.ts +26 -0
  2. package/dist/globals.js +2 -0
  3. package/dist/implementation/parse/astn_parse_generic.d.ts +18 -0
  4. package/dist/implementation/parse/astn_parse_generic.js +42 -0
  5. package/dist/implementation/parse/token.d.ts +13 -0
  6. package/dist/implementation/parse/token.js +551 -0
  7. package/dist/implementation/schemas/astn_source/deserializers.d.ts +9 -0
  8. package/dist/implementation/schemas/astn_source/deserializers.js +53 -0
  9. package/dist/implementation/schemas/astn_target/serializers.d.ts +4 -0
  10. package/dist/implementation/schemas/astn_target/serializers.js +93 -0
  11. package/dist/implementation/schemas/deserialize_resolved_model/serializers.d.ts +2 -0
  12. package/dist/implementation/schemas/deserialize_resolved_model/serializers.js +39 -0
  13. package/dist/implementation/schemas/deserialize_unresolved_model/serializers.d.ts +2 -0
  14. package/dist/implementation/schemas/deserialize_unresolved_model/serializers.js +39 -0
  15. package/dist/implementation/schemas/parse_astn_source/serializers.d.ts +4 -0
  16. package/dist/implementation/schemas/parse_astn_source/serializers.js +82 -0
  17. package/dist/implementation/schemas/sealed_astn_source/productions/annotated_token.d.ts +10 -0
  18. package/dist/implementation/schemas/sealed_astn_source/productions/annotated_token.js +247 -0
  19. package/dist/implementation/temp/string_iterator.d.ts +42 -0
  20. package/dist/implementation/temp/string_iterator.js +112 -0
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.js +5 -0
  23. package/dist/interface/to_be_generated/astn_source.d.ts +124 -0
  24. package/dist/interface/to_be_generated/astn_source.js +3 -0
  25. package/dist/interface/to_be_generated/astn_target.d.ts +101 -0
  26. package/dist/interface/to_be_generated/astn_target.js +3 -0
  27. package/dist/interface/to_be_generated/deserialize_resolved_model.d.ts +3 -0
  28. package/dist/interface/to_be_generated/deserialize_resolved_model.js +3 -0
  29. package/dist/interface/to_be_generated/deserialize_unresolved_model.d.ts +3 -0
  30. package/dist/interface/to_be_generated/deserialize_unresolved_model.js +3 -0
  31. package/dist/interface/to_be_generated/parse_astn_source.d.ts +21 -0
  32. package/dist/interface/to_be_generated/parse_astn_source.js +3 -0
  33. package/dist/interface/to_be_generated/resolve.d.ts +11 -0
  34. package/dist/interface/to_be_generated/resolve.js +3 -0
  35. package/dist/interface/to_be_generated/resolved.d.ts +25 -0
  36. package/dist/interface/to_be_generated/resolved.js +3 -0
  37. package/dist/interface/to_be_generated/token.d.ts +51 -0
  38. package/dist/interface/to_be_generated/token.js +3 -0
  39. package/dist/interface/to_be_generated/unconstrained.d.ts +4 -0
  40. package/dist/interface/to_be_generated/unconstrained.js +3 -0
  41. package/dist/interface/to_be_generated/unresolved.d.ts +39 -0
  42. package/dist/interface/to_be_generated/unresolved.js +3 -0
  43. package/package.json +34 -0
@@ -0,0 +1,551 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Tokenizer_Result = exports.Delimited_String = exports.Annotated_Token = exports.Trivia = exports.Whitespace = exports.temp_throw_lexer_error = void 0;
27
+ const _pds = __importStar(require("pareto-core-deserializer"));
28
+ const _pinternals = __importStar(require("pareto-core-internals"));
29
+ const string_iterator_1 = require("../temp/string_iterator");
30
+ const hexadecimal_1 = require("pareto-standard-operations/dist/implementation/manual/primitives/integer/deserializers/hexadecimal");
31
+ //this file contains the tokenizer functionality, each functoin return a type from the 'token' schema
32
+ const WhitespaceChars = {
33
+ tab: 0x09, // \t
34
+ line_feed: 0x0A, // \n
35
+ carriage_return: 0x0D, // \r
36
+ space: 0x20, //
37
+ comma: 0x2C, // ,
38
+ };
39
+ const temp_throw_lexer_error = (type, range, abort) => {
40
+ return abort({
41
+ 'type': type,
42
+ 'range': range,
43
+ });
44
+ };
45
+ exports.temp_throw_lexer_error = temp_throw_lexer_error;
46
+ const Whitespace = (iterator, abort) => {
47
+ const start = iterator['create location info']();
48
+ return {
49
+ 'value': _pds.build_text(($i) => {
50
+ while (true) {
51
+ {
52
+ const $ = iterator['get current character']();
53
+ if ($ === null) {
54
+ return;
55
+ }
56
+ if ((0, string_iterator_1.is_control_character)($)) {
57
+ return (0, exports.temp_throw_lexer_error)(['unexpected control character', $], {
58
+ 'start': iterator['create location info'](),
59
+ 'end': iterator['create location info'](),
60
+ 'uri': iterator['get uri'](),
61
+ }, abort);
62
+ }
63
+ switch ($) {
64
+ case 0x09: // \t
65
+ iterator['consume character']();
66
+ $i['add character']($);
67
+ break;
68
+ case 0x0A: // \n
69
+ iterator['consume character']();
70
+ $i['add character']($);
71
+ break;
72
+ case 0x0D: // \r
73
+ iterator['consume character']();
74
+ $i['add character']($);
75
+ break;
76
+ case 0x20: // space
77
+ iterator['consume character']();
78
+ $i['add character']($);
79
+ break;
80
+ case 0x2C: // ,
81
+ iterator['consume character']();
82
+ $i['add character']($);
83
+ break;
84
+ default:
85
+ return;
86
+ }
87
+ }
88
+ }
89
+ }),
90
+ 'range': {
91
+ 'start': start,
92
+ 'end': iterator['create location info'](),
93
+ 'uri': iterator['get uri'](),
94
+ }
95
+ };
96
+ };
97
+ exports.Whitespace = Whitespace;
98
+ const Trivia = (iterator, abort) => {
99
+ return {
100
+ 'leading whitespace': (0, exports.Whitespace)(iterator, abort),
101
+ 'comments': _pds.build_list(($i) => {
102
+ while (true) {
103
+ const $ = iterator['get current character']();
104
+ if ($ === null) {
105
+ return; //normal end of input
106
+ }
107
+ switch ($) {
108
+ case 0x2F: // /
109
+ const start = iterator['create location info']();
110
+ const next_char = iterator['look ahead'](1);
111
+ if (next_char === null) {
112
+ const start = iterator['create location info']();
113
+ iterator['consume character']();
114
+ const end = iterator['create location info']();
115
+ return (0, exports.temp_throw_lexer_error)(['dangling slash', null], {
116
+ 'start': start,
117
+ 'end': end,
118
+ 'uri': iterator['get uri'](),
119
+ }, abort);
120
+ }
121
+ switch (next_char) {
122
+ case 0x2F: // /
123
+ iterator['consume character'](); // consume the first /
124
+ iterator['consume character'](); // consume the second /
125
+ const Character = {
126
+ line_feed: 0x0A, // \n
127
+ carriage_return: 0x0D, // \r
128
+ solidus: 0x2F, // /
129
+ };
130
+ $i['add element']({
131
+ 'type': ['line', null],
132
+ 'content': _pds.build_text(($i) => {
133
+ while (true) {
134
+ const $ = iterator['get current character']();
135
+ if ($ === null) {
136
+ return;
137
+ }
138
+ switch ($) {
139
+ case Character.line_feed:
140
+ return;
141
+ case Character.carriage_return:
142
+ return;
143
+ default:
144
+ iterator['consume character']();
145
+ $i['add character']($);
146
+ }
147
+ }
148
+ }),
149
+ 'range': {
150
+ 'start': start,
151
+ 'end': iterator['create location info'](),
152
+ 'uri': iterator['get uri'](),
153
+ },
154
+ 'trailing whitespace': (0, exports.Whitespace)(iterator, abort)
155
+ });
156
+ break;
157
+ case 0x2A: { // *
158
+ iterator['consume character'](); // consume the first /
159
+ iterator['consume character'](); // consume the asterisk
160
+ $i['add element']({
161
+ 'type': ['block', null],
162
+ 'content': _pds.build_text(($i) => {
163
+ let found_asterisk = false;
164
+ const Character = {
165
+ solidus: 0x2F, // /
166
+ asterisk: 0x2A, // *
167
+ };
168
+ while (true) {
169
+ const $ = iterator['get current character']();
170
+ if ($ === null) {
171
+ return (0, exports.temp_throw_lexer_error)(['unterminated block comment', null], {
172
+ 'start': start,
173
+ 'end': iterator['create location info'](),
174
+ 'uri': iterator['get uri'](),
175
+ }, abort);
176
+ }
177
+ if ($ === Character.solidus && found_asterisk) {
178
+ iterator['consume character'](); // consume the solidus
179
+ //found asterisk before solidus, so this is the end of the comment
180
+ return;
181
+ }
182
+ //not a solidus, so this is part of the comment
183
+ if (found_asterisk) {
184
+ $i['add character'](Character.asterisk); // add the asterisk that was found before but was not part of the end delimiter
185
+ }
186
+ if ($ === Character.asterisk) {
187
+ found_asterisk = true;
188
+ }
189
+ else {
190
+ $i['add character']($);
191
+ }
192
+ iterator['consume character']();
193
+ }
194
+ }),
195
+ 'range': {
196
+ 'start': start,
197
+ 'end': iterator['create location info'](),
198
+ 'uri': iterator['get uri'](),
199
+ },
200
+ 'trailing whitespace': (0, exports.Whitespace)(iterator, abort)
201
+ });
202
+ break;
203
+ }
204
+ default:
205
+ return (0, exports.temp_throw_lexer_error)(['dangling slash', null], {
206
+ 'start': start,
207
+ 'end': iterator['create location info'](),
208
+ 'uri': iterator['get uri'](),
209
+ }, abort);
210
+ }
211
+ break;
212
+ default:
213
+ return;
214
+ }
215
+ }
216
+ })
217
+ };
218
+ };
219
+ exports.Trivia = Trivia;
220
+ const Annotated_Token = (iterator, abort) => {
221
+ const $ = iterator['get current character']();
222
+ if ($ === null) {
223
+ return (0, exports.temp_throw_lexer_error)(['unexpected end of input', null], {
224
+ 'start': iterator['create location info'](),
225
+ 'end': iterator['create location info'](),
226
+ 'uri': iterator['get uri'](),
227
+ }, abort);
228
+ }
229
+ return {
230
+ 'start': iterator['create location info'](),
231
+ 'type': _pds.block(() => {
232
+ const Character = {
233
+ open_angle_bracket: 0x3C, // <
234
+ open_brace: 0x7B, // {
235
+ open_bracket: 0x5B, // [
236
+ open_paren: 0x28, // (
237
+ close_angle_bracket: 0x3E, // >
238
+ close_brace: 0x7D, // }
239
+ close_bracket: 0x5D, // ]
240
+ close_paren: 0x29, // )
241
+ apostrophe: 0x27, // '
242
+ asterisk: 0x2A, // *
243
+ at: 0x40, // @
244
+ backtick: 0x60, // `
245
+ bang: 0x21,
246
+ colon: 0x3A, // :
247
+ pipe: 0x7C, // |
248
+ quotation_mark: 0x22, // "
249
+ slash: 0x2F, // /
250
+ tilde: 0x7E, // ~
251
+ hash: 0x23, // #
252
+ space: 0x20, // space
253
+ tab: 0x09, // \t
254
+ };
255
+ switch ($) {
256
+ case Character.open_brace:
257
+ iterator['consume character']();
258
+ return ['{', null];
259
+ case Character.open_bracket:
260
+ iterator['consume character']();
261
+ return ['[', null];
262
+ case Character.open_angle_bracket:
263
+ iterator['consume character']();
264
+ return ['<', null];
265
+ case Character.open_paren:
266
+ iterator['consume character']();
267
+ return ['(', null];
268
+ case Character.close_brace:
269
+ iterator['consume character']();
270
+ return ['}', null];
271
+ case Character.close_bracket:
272
+ iterator['consume character']();
273
+ return [']', null];
274
+ case Character.close_angle_bracket:
275
+ iterator['consume character']();
276
+ return ['>', null];
277
+ case Character.close_paren:
278
+ iterator['consume character']();
279
+ return [')', null];
280
+ //individuals
281
+ case Character.hash:
282
+ iterator['consume character']();
283
+ return ['#', null];
284
+ case Character.pipe:
285
+ iterator['consume character']();
286
+ return ['|', null];
287
+ case Character.tilde:
288
+ iterator['consume character']();
289
+ return ['~', null];
290
+ case Character.asterisk:
291
+ iterator['consume character']();
292
+ return ['*', null];
293
+ case Character.at:
294
+ iterator['consume character']();
295
+ return ['@', null];
296
+ case Character.bang:
297
+ iterator['consume character']();
298
+ return ['!', null];
299
+ case Character.colon:
300
+ iterator['consume character']();
301
+ return [':', null];
302
+ case Character.quotation_mark:
303
+ iterator['consume character']();
304
+ return ['string', {
305
+ 'value': (0, exports.Delimited_String)(iterator, abort, {
306
+ 'allow_newlines': true,
307
+ 'is_end_character': ($) => $ === Character.quotation_mark
308
+ }),
309
+ 'type': ['quoted', null],
310
+ }];
311
+ case Character.backtick:
312
+ iterator['consume character']();
313
+ return ['string', {
314
+ 'value': (0, exports.Delimited_String)(iterator, abort, {
315
+ 'allow_newlines': false,
316
+ 'is_end_character': ($) => $ === Character.backtick
317
+ }),
318
+ 'type': ['backticked', null],
319
+ }];
320
+ case Character.apostrophe:
321
+ iterator['consume character']();
322
+ return ['string', {
323
+ 'value': (0, exports.Delimited_String)(iterator, abort, {
324
+ 'allow_newlines': false,
325
+ 'is_end_character': ($) => $ === Character.apostrophe
326
+ }),
327
+ 'type': ['apostrophed', null],
328
+ }];
329
+ default:
330
+ return ['string', {
331
+ 'type': ['undelimited', null],
332
+ 'value': _pds.build_text(($i) => {
333
+ while (true) {
334
+ const $ = iterator['get current character']();
335
+ if ($ === null) {
336
+ return;
337
+ }
338
+ if ((0, string_iterator_1.is_control_character)($)) {
339
+ (0, exports.temp_throw_lexer_error)(['unexpected control character', $], {
340
+ 'start': iterator['create location info'](),
341
+ 'end': iterator['create location info'](),
342
+ 'uri': iterator['get uri'](),
343
+ }, abort);
344
+ }
345
+ if ($ === Character.open_brace ||
346
+ $ === Character.close_brace ||
347
+ $ === Character.open_bracket ||
348
+ $ === Character.close_bracket ||
349
+ $ === Character.open_angle_bracket ||
350
+ $ === Character.close_angle_bracket ||
351
+ $ === Character.open_paren ||
352
+ $ === Character.close_paren ||
353
+ $ === Character.apostrophe ||
354
+ $ === Character.asterisk ||
355
+ $ === Character.at ||
356
+ $ === Character.backtick ||
357
+ $ === Character.bang ||
358
+ $ === Character.colon ||
359
+ $ === Character.pipe ||
360
+ $ === Character.quotation_mark ||
361
+ $ === Character.slash ||
362
+ $ === Character.tilde ||
363
+ $ === WhitespaceChars.comma ||
364
+ $ === WhitespaceChars.space ||
365
+ $ === WhitespaceChars.tab ||
366
+ $ === WhitespaceChars.line_feed ||
367
+ $ === WhitespaceChars.carriage_return) {
368
+ return;
369
+ }
370
+ iterator['consume character']();
371
+ $i['add character']($);
372
+ }
373
+ }),
374
+ }];
375
+ }
376
+ }),
377
+ 'end': iterator['create location info'](),
378
+ 'uri': iterator['get uri'](),
379
+ 'trailing trivia': (0, exports.Trivia)(iterator, abort),
380
+ };
381
+ };
382
+ exports.Annotated_Token = Annotated_Token;
383
+ const Delimited_String = (iterator, abort, $p) => {
384
+ const Character = {
385
+ backspace: 0x08, // \b
386
+ form_feed: 0x0C, // \f
387
+ tab: 0x09, // \t
388
+ line_feed: 0x0A, // \n
389
+ carriage_return: 0x0D, // \r
390
+ quotation_mark: 0x22, // "
391
+ backtick: 0x60, // `
392
+ apostrophe: 0x27, // '
393
+ reverse_solidus: 0x5C, // \
394
+ solidus: 0x2F, // /
395
+ a: 0x61, // a
396
+ b: 0x62, // b
397
+ f: 0x66, // f
398
+ n: 0x6E, // n
399
+ r: 0x72, // r
400
+ t: 0x74, // t
401
+ u: 0x75, // u
402
+ A: 0x41, // A
403
+ F: 0x46, // F
404
+ };
405
+ const start = iterator['create location info']();
406
+ const txt = _pds.build_text(($i) => {
407
+ while (true) {
408
+ const $ = iterator['get current character']();
409
+ if ($ === null) {
410
+ return (0, exports.temp_throw_lexer_error)(['unterminated string', null], {
411
+ 'start': start,
412
+ 'end': iterator['create location info'](),
413
+ 'uri': iterator['get uri'](),
414
+ }, abort);
415
+ }
416
+ if ((0, string_iterator_1.is_control_character)($)) {
417
+ (0, exports.temp_throw_lexer_error)(['unexpected control character', $], {
418
+ 'start': iterator['create location info'](),
419
+ 'end': iterator['create location info'](),
420
+ 'uri': iterator['get uri'](),
421
+ }, abort);
422
+ }
423
+ if ($p.is_end_character($)) {
424
+ iterator['consume character'](); // consume the end character
425
+ return;
426
+ }
427
+ switch ($) {
428
+ case Character.line_feed:
429
+ case Character.carriage_return:
430
+ if (!$p.allow_newlines) {
431
+ return (0, exports.temp_throw_lexer_error)(['unexpected end of line in delimited string', null], {
432
+ 'start': start,
433
+ 'end': iterator['create location info'](),
434
+ 'uri': iterator['get uri'](),
435
+ }, abort);
436
+ }
437
+ iterator['consume character']();
438
+ $i['add character']($);
439
+ break;
440
+ case Character.reverse_solidus: // \ (escape)
441
+ iterator['consume character']();
442
+ {
443
+ const $ = iterator['get current character']();
444
+ if ($ === null) {
445
+ return (0, exports.temp_throw_lexer_error)(['missing character after escape', null], {
446
+ 'start': start,
447
+ 'end': iterator['create location info'](),
448
+ 'uri': iterator['get uri'](),
449
+ }, abort);
450
+ }
451
+ switch ($) {
452
+ case Character.quotation_mark:
453
+ iterator['consume character']();
454
+ $i['add character'](Character.quotation_mark);
455
+ break;
456
+ case Character.apostrophe:
457
+ iterator['consume character']();
458
+ $i['add character'](Character.apostrophe);
459
+ break;
460
+ case Character.backtick:
461
+ iterator['consume character']();
462
+ $i['add character'](Character.backtick);
463
+ break;
464
+ case Character.reverse_solidus:
465
+ iterator['consume character']();
466
+ $i['add character'](Character.reverse_solidus);
467
+ break;
468
+ case Character.solidus:
469
+ iterator['consume character']();
470
+ $i['add character'](Character.solidus);
471
+ break;
472
+ case Character.b:
473
+ iterator['consume character']();
474
+ $i['add character'](Character.backspace);
475
+ break;
476
+ case Character.f:
477
+ iterator['consume character']();
478
+ $i['add character'](Character.form_feed);
479
+ break;
480
+ case Character.n:
481
+ iterator['consume character']();
482
+ $i['add character'](Character.line_feed);
483
+ break;
484
+ case Character.r:
485
+ iterator['consume character']();
486
+ $i['add character'](Character.carriage_return);
487
+ break;
488
+ case Character.t:
489
+ iterator['consume character']();
490
+ $i['add character'](Character.tab);
491
+ break;
492
+ case Character.u:
493
+ iterator['consume character']();
494
+ $i['add character']((0, hexadecimal_1.$$)(_pds.build_text(($i) => {
495
+ const get_char = () => {
496
+ const char = iterator['get current character']();
497
+ if (char === null) {
498
+ return (0, exports.temp_throw_lexer_error)(['unterminated unicode escape sequence', null], {
499
+ 'start': start,
500
+ 'end': iterator['create location info'](),
501
+ 'uri': iterator['get uri'](),
502
+ }, abort);
503
+ }
504
+ if (char < Character.a || (char > Character.f && char < Character.A) || char > Character.F || char < 0x30 || char > 0x39) {
505
+ return (0, exports.temp_throw_lexer_error)(['invalid unicode escape sequence', null], {
506
+ 'start': start,
507
+ 'end': iterator['create location info'](),
508
+ 'uri': iterator['get uri'](),
509
+ }, abort);
510
+ }
511
+ iterator['consume character']();
512
+ return char;
513
+ };
514
+ $i['add character'](get_char());
515
+ $i['add character'](get_char());
516
+ $i['add character'](get_char());
517
+ $i['add character'](get_char());
518
+ }), () => _pinternals.panic(`unreachable`)));
519
+ break;
520
+ default:
521
+ return (0, exports.temp_throw_lexer_error)(['unknown escape character', null], {
522
+ 'start': start,
523
+ 'end': iterator['create location info'](),
524
+ 'uri': iterator['get uri'](),
525
+ }, abort);
526
+ }
527
+ }
528
+ break;
529
+ default:
530
+ iterator['consume character']();
531
+ $i['add character']($);
532
+ }
533
+ }
534
+ });
535
+ return txt;
536
+ };
537
+ exports.Delimited_String = Delimited_String;
538
+ const Tokenizer_Result = (iterator, abort) => {
539
+ return {
540
+ 'leading trivia': (0, exports.Trivia)(iterator, abort),
541
+ 'tokens': _pds.build_list($i => {
542
+ while (iterator['get current character']() !== null) {
543
+ const token = (0, exports.Annotated_Token)(iterator, abort);
544
+ $i['add element'](token);
545
+ }
546
+ }),
547
+ 'end': iterator['create location info']()
548
+ };
549
+ };
550
+ exports.Tokenizer_Result = Tokenizer_Result;
551
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW1wbGVtZW50YXRpb24vcGFyc2UvdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrREFBZ0Q7QUFDaEQsbUVBQW9EO0FBUXBELDZEQUE4RDtBQUU5RCxvSUFBK0k7QUFFL0kscUdBQXFHO0FBRXJHLE1BQU0sZUFBZSxHQUFHO0lBQ3BCLEdBQUcsRUFBRSxJQUFJLEVBQW1CLEtBQUs7SUFDakMsU0FBUyxFQUFFLElBQUksRUFBYSxLQUFLO0lBQ2pDLGVBQWUsRUFBRSxJQUFJLEVBQU8sS0FBSztJQUNqQyxLQUFLLEVBQUUsSUFBSSxFQUFpQixFQUFFO0lBQzlCLEtBQUssRUFBRSxJQUFJLEVBQWlCLElBQUk7Q0FDbkMsQ0FBQTtBQUVNLE1BQU0sc0JBQXNCLEdBQUcsQ0FDbEMsSUFBdUMsRUFDdkMsS0FBb0IsRUFDcEIsS0FBbUMsRUFDOUIsRUFBRTtJQUNQLE9BQU8sS0FBSyxDQUFDO1FBQ1QsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFPLEVBQUUsS0FBSztLQUNqQixDQUFDLENBQUE7QUFDTixDQUFDLENBQUE7QUFUWSxRQUFBLHNCQUFzQiwwQkFTbEM7QUFHTSxNQUFNLFVBQVUsR0FBRyxDQUN0QixRQUFvQyxFQUNwQyxLQUFtQyxFQUNqQixFQUFFO0lBRXBCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUE7SUFDaEQsT0FBTztRQUNILE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDNUIsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFHVixDQUFDO29CQUNHLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUE7b0JBQzdDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO3dCQUNiLE9B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
@@ -0,0 +1,9 @@
1
+ import * as _pi from 'pareto-core-interface';
2
+ import * as _target from "../../../interface/to_be_generated/parse_astn_source";
3
+ import * as d_astn_source from "../../../interface/to_be_generated/astn_source";
4
+ export type Parameters = {
5
+ 'tab size': number;
6
+ 'uri': string;
7
+ };
8
+ export type Document = _pi.Deserializer_With_Parameters<d_astn_source.Document, _target.Error, Parameters>;
9
+ export declare const Document: Document;