exupery 0.1.7 → 0.1.9

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 (47) hide show
  1. package/dist/generated/implementation/generic/resolve.d.ts +81 -0
  2. package/dist/generated/implementation/generic/resolve.js +251 -0
  3. package/dist/generated/implementation/schemas/implementation/resolve.d.ts +1 -1
  4. package/dist/generated/implementation/schemas/implementation/resolve.js +12 -2
  5. package/dist/generated/implementation/schemas/implementation/serializer.d.ts +8 -0
  6. package/dist/generated/implementation/schemas/implementation/serializer.js +484 -0
  7. package/dist/generated/implementation/schemas/interface/resolve.d.ts +1 -1
  8. package/dist/generated/implementation/schemas/interface/resolve.js +2 -2
  9. package/dist/generated/implementation/schemas/interface/serializer.d.ts +8 -0
  10. package/dist/generated/implementation/schemas/interface/serializer.js +287 -0
  11. package/dist/generated/implementation/schemas/typescript_light/serializer.d.ts +11 -0
  12. package/dist/generated/implementation/schemas/typescript_light/serializer.js +409 -0
  13. package/dist/generated/interface/core/astn_target.d.ts +186 -0
  14. package/dist/generated/interface/core/astn_target.js +3 -0
  15. package/dist/generated/interface/core/resolve.d.ts +11 -0
  16. package/dist/generated/interface/core/resolve.js +3 -0
  17. package/dist/generated/interface/generic/resolve.d.ts +11 -0
  18. package/dist/generated/interface/generic/resolve.js +3 -0
  19. package/dist/generated/interface/schemas/implementation/resolve.d.ts +22 -22
  20. package/dist/generated/interface/schemas/implementation/resolved.d.ts +27 -0
  21. package/dist/generated/interface/schemas/implementation/serializer.d.ts +156 -0
  22. package/dist/generated/interface/schemas/implementation/serializer.js +3 -0
  23. package/dist/generated/interface/schemas/implementation/unresolved.d.ts +27 -0
  24. package/dist/generated/interface/schemas/interface/resolve.d.ts +22 -22
  25. package/dist/generated/interface/schemas/interface/serializer.d.ts +156 -0
  26. package/dist/generated/interface/schemas/interface/serializer.js +3 -0
  27. package/dist/generated/interface/schemas/typescript_light/migration_boilerplate.d.ts +132 -0
  28. package/dist/generated/interface/schemas/typescript_light/serializer.d.ts +222 -0
  29. package/dist/generated/interface/schemas/typescript_light/serializer.js +3 -0
  30. package/dist/generated/interface/schemas/typescript_light/unconstrained.d.ts +135 -0
  31. package/dist/shorthands/implementation.d.ts +1 -1
  32. package/dist/shorthands/implementation.js +4 -2
  33. package/dist/transformations/implementation/typescript_light.d.ts +24 -0
  34. package/dist/transformations/implementation/typescript_light.js +564 -0
  35. package/dist/transformations/implementation/typescript_temp.d.ts +1 -1
  36. package/dist/transformations/implementation/typescript_temp.js +2 -2
  37. package/dist/transformations/interface/typescript_light.d.ts +23 -0
  38. package/dist/transformations/interface/typescript_light.js +524 -0
  39. package/dist/transformations/interface/typescript_temp.d.ts +1 -1
  40. package/dist/transformations/library/typescript_light.d.ts +10 -0
  41. package/dist/transformations/library/typescript_light.js +42 -0
  42. package/dist/transformations/library/typescript_temp.d.ts +1 -1
  43. package/dist/transformations/library/typescript_temp.js +3 -3
  44. package/dist/transformations/typescript_light/fountain_pen_block.d.ts +1 -0
  45. package/dist/transformations/typescript_light/fountain_pen_block.js +6 -2
  46. package/dist/transformations/typescript_temp/fountain_pen_block.d.ts +1 -1
  47. package/package.json +4 -4
@@ -0,0 +1,564 @@
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.Literal = exports.Variables = exports.Initialization = exports.Selection = exports.String_Literal = exports.Module_Set = void 0;
27
+ exports.line_dictionary = line_dictionary;
28
+ const pa = __importStar(require("exupery-core-alg"));
29
+ const create_identifier_1 = require("../typescript_light/operations/create_identifier");
30
+ const _interface = __importStar(require("../interface/typescript_light"));
31
+ const fountain_pen_block_1 = require("../typescript_light/fountain_pen_block");
32
+ const pareto_standard_operations_1 = require("pareto-standard-operations");
33
+ const block_1 = require("pareto-fountain-pen/dist/shorthands/block");
34
+ const op = {
35
+ 'join list of texts': pareto_standard_operations_1.pure.text['join list of texts'],
36
+ 'dictionary to list, sorted by code point': pareto_standard_operations_1.impure.dictionary['to list, sorted by code point'],
37
+ 'dictionary is empty': pareto_standard_operations_1.impure.dictionary['is empty'],
38
+ 'serialize with apostrophe delimiter': pareto_standard_operations_1.impure.text['serialize with apostrophe delimiter'],
39
+ 'serialize with quote delimiter': pareto_standard_operations_1.impure.text['serialize with quote delimiter'],
40
+ 'serialize with grave delimiter': pareto_standard_operations_1.impure.text['serialize with grave delimiter'],
41
+ 'repeat text': pareto_standard_operations_1.impure.text.repeat,
42
+ 'create valid file name': pareto_standard_operations_1.impure.text['create valid file name'],
43
+ 'create identifier': create_identifier_1.$$
44
+ };
45
+ const Module_Set = ($, $p) => {
46
+ return $.map(($, key) => pa.cc($, ($) => {
47
+ switch ($[0]) {
48
+ case 'module': return pa.ss($, ($) => {
49
+ const type_imports = $['type imports'];
50
+ const valid_file_name = ($) => {
51
+ return op['create valid file name']($, { 'replace spaces with underscores': true });
52
+ };
53
+ const x = (0, block_1.block)([
54
+ block_1.b.simple_line("import * as _pa from 'exupery-core-alg'"),
55
+ $p.phase === 'development' ? block_1.b.simple_line("import * as _pd from 'exupery-core-dev'") : block_1.b.nothing(),
56
+ block_1.b.simple_line(""),
57
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($['type imports']).map(($) => block_1.b.sub([
58
+ block_1.b.nested_line([
59
+ block_1.l.snippet("import * as "),
60
+ block_1.l.snippet(op['create identifier']([" i ", $.key])),
61
+ block_1.l.snippet(" from "),
62
+ (0, exports.String_Literal)(pa.cc($.value.type, ($) => {
63
+ switch ($[0]) {
64
+ case 'external': return pa.ss($, ($) => valid_file_name($));
65
+ case 'ancestor': return pa.ss($, ($) => `${op['repeat text']("../", { 'count': $['number of steps'] })}${valid_file_name($.dependency)}`);
66
+ case 'sibling': return pa.ss($, ($) => `./${valid_file_name($)}`);
67
+ default: return pa.au($[0]);
68
+ }
69
+ })
70
+ + op['join list of texts']($.value.tail.map(($) => `/${valid_file_name($)}`)), {
71
+ 'delimiter': "quote"
72
+ }),
73
+ ])
74
+ ]))),
75
+ block_1.b.simple_line(""),
76
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($['variable imports']).map(($) => block_1.b.sub([
77
+ block_1.b.nested_line([
78
+ block_1.l.snippet("import * as "),
79
+ block_1.l.snippet(op['create identifier']([" i var ", $.key])),
80
+ block_1.l.snippet(" from "),
81
+ (0, exports.String_Literal)(pa.cc($.value.type, ($) => {
82
+ switch ($[0]) {
83
+ case 'external': return pa.ss($, ($) => valid_file_name($));
84
+ case 'ancestor': return pa.ss($, ($) => `${op['repeat text']("../", { 'count': $['number of steps'] })}${valid_file_name($.dependency)}`);
85
+ case 'sibling': return pa.ss($, ($) => `./${valid_file_name($)}`);
86
+ default: return pa.au($[0]);
87
+ }
88
+ })
89
+ + op['join list of texts']($.value.tail.map(($) => `/${valid_file_name($)}`)), {
90
+ 'delimiter': "quote"
91
+ }),
92
+ ])
93
+ ]))),
94
+ block_1.b.simple_line(""),
95
+ (0, exports.Variables)($.variables, {
96
+ 'type imports': type_imports,
97
+ 'export': true,
98
+ }),
99
+ ]);
100
+ return ['file', x];
101
+ });
102
+ case 'set': return pa.ss($, ($) => ['directory', (0, exports.Module_Set)($, $p)]);
103
+ default: return pa.au($[0]);
104
+ }
105
+ }));
106
+ };
107
+ exports.Module_Set = Module_Set;
108
+ function line_dictionary($, if_empty, prefix, suffix, add_commas) {
109
+ let is_empty = true;
110
+ $.map(($) => {
111
+ is_empty = false;
112
+ });
113
+ if (is_empty) {
114
+ return if_empty;
115
+ }
116
+ else {
117
+ let is_first = true;
118
+ const x = block_1.l.sub([
119
+ prefix,
120
+ block_1.l.sub_decorated(op['dictionary to list, sorted by code point']($).map(($) => {
121
+ const out = block_1.l.sub([
122
+ is_first ?
123
+ block_1.l.nothing()
124
+ : add_commas
125
+ ? block_1.l.snippet(", ")
126
+ : block_1.l.nothing(),
127
+ $.value,
128
+ ]);
129
+ is_first = false;
130
+ return out;
131
+ })),
132
+ suffix,
133
+ ]);
134
+ return x;
135
+ }
136
+ }
137
+ const String_Literal = ($, $p) => {
138
+ return block_1.l.snippet($p.delimiter === "quote" ? op['serialize with quote delimiter']($) : op['serialize with apostrophe delimiter']($));
139
+ };
140
+ exports.String_Literal = String_Literal;
141
+ const Selection = ($, $p) => {
142
+ return block_1.l.sub([
143
+ pa.cc($.start, ($) => {
144
+ switch ($[0]) {
145
+ case 'abort': return pa.ss($, ($) => block_1.l.snippet("_pa.panic('ABORT SELECTION')"));
146
+ case 'transform optional value': return pa.ss($, ($) => block_1.l.sub([
147
+ (0, exports.Selection)($.source, $p),
148
+ block_1.l.snippet(".transform("),
149
+ block_1.l.indent([
150
+ block_1.b.nested_line([
151
+ block_1.l.snippet("($) => "),
152
+ (0, exports.Selection)($['if set'], $p),
153
+ block_1.l.snippet(","),
154
+ ]),
155
+ block_1.b.nested_line([
156
+ block_1.l.snippet("() => "),
157
+ (0, exports.Selection)($['if not set'], $p),
158
+ ]),
159
+ ]),
160
+ block_1.l.snippet(")"),
161
+ ]));
162
+ case 'call': return pa.ss($, ($) => block_1.l.sub([
163
+ (0, exports.Selection)($.source, $p),
164
+ block_1.l.snippet("("),
165
+ block_1.l.indent([
166
+ block_1.b.nested_line([
167
+ (0, exports.Selection)($.context, $p), $.arguments.transform(($) => block_1.l.snippet(","), () => block_1.l.nothing()),
168
+ ]),
169
+ $.arguments.transform(($) => block_1.b.nested_line([
170
+ op['dictionary is empty']($)
171
+ ? block_1.l.snippet("null")
172
+ : block_1.l.sub([
173
+ block_1.l.snippet("{"),
174
+ block_1.l.indent([
175
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($).map(($) => block_1.b.sub([
176
+ block_1.b.nested_line([
177
+ (0, exports.String_Literal)($.key, { 'delimiter': "apostrophe" }),
178
+ block_1.l.snippet(": "),
179
+ (0, exports.Initialization)($.value, $p),
180
+ block_1.l.snippet(","),
181
+ ]),
182
+ ]))),
183
+ ]),
184
+ block_1.l.snippet("}")
185
+ ]),
186
+ ]), () => block_1.b.nothing()),
187
+ ]),
188
+ block_1.l.snippet(")"),
189
+ ]));
190
+ case 'implement me': return pa.ss($, ($) => block_1.l.snippet("_pd.implement_me()"));
191
+ case 'argument': return pa.ss($, ($) => block_1.l.snippet(op['create identifier'](["FOOO FIX ARGUMENT"])));
192
+ case 'context': return pa.ss($, ($) => block_1.l.snippet("$"));
193
+ case 'variable': return pa.ss($, ($) => block_1.l.snippet(op['create identifier']([$])));
194
+ case 'parameter': return pa.ss($, ($) => block_1.l.sub([
195
+ block_1.l.snippet("$p["),
196
+ (0, exports.String_Literal)($, { 'delimiter': "apostrophe" }),
197
+ block_1.l.snippet("]"),
198
+ ]));
199
+ case 'imported variable': return pa.ss($, ($) => block_1.l.sub([
200
+ block_1.l.snippet(op['create identifier']([$.import])),
201
+ block_1.l.snippet("."),
202
+ block_1.l.snippet(op['create identifier']([$.variable])),
203
+ ]));
204
+ default: return pa.au($[0]);
205
+ }
206
+ }),
207
+ block_1.l.sub_decorated($.tail.map(($) => block_1.l.sub([
208
+ block_1.l.snippet("["),
209
+ (0, exports.String_Literal)($, { 'delimiter': "apostrophe" }),
210
+ block_1.l.snippet("]"),
211
+ ]))),
212
+ ]);
213
+ };
214
+ exports.Selection = Selection;
215
+ const Initialization = ($, $p) => {
216
+ return pa.cc($, ($) => {
217
+ switch ($[0]) {
218
+ case 'block': return pa.ss($, ($) => block_1.l.sub([
219
+ block_1.l.snippet("_pa.block("),
220
+ block_1.l.snippet("() => {"),
221
+ block_1.l.indent([
222
+ //temp variables
223
+ block_1.b.sub_decorated($['temp ordered variables'].map(($) => block_1.b.nested_line([
224
+ block_1.l.snippet("const "),
225
+ block_1.l.snippet(op['create identifier']([$.name])),
226
+ $.type.transform(($) => block_1.l.sub([
227
+ block_1.l.snippet(": "),
228
+ (0, fountain_pen_block_1.Type)(_interface.Type_to_Type($, {
229
+ 'global type parameters': pa.not_set(),
230
+ 'temp imports': pa.set($p['temp imports']),
231
+ }), {
232
+ 'replace empty type literals by null': true
233
+ }),
234
+ ]), () => block_1.l.nothing()),
235
+ block_1.l.snippet(" = "),
236
+ (0, exports.Initialization)($.initialization, {
237
+ 'temp imports': $p['temp imports']
238
+ })
239
+ ]))),
240
+ (0, exports.Variables)($.variables, {
241
+ 'type imports': $p['temp imports'],
242
+ 'export': false,
243
+ }),
244
+ block_1.b.nested_line([
245
+ block_1.l.snippet("return "),
246
+ (0, exports.Initialization)($.initialization, $p),
247
+ ])
248
+ ]),
249
+ block_1.l.snippet("})"),
250
+ ]));
251
+ case 'change context': return pa.ss($, ($) => block_1.l.sub([
252
+ block_1.l.snippet("_pa.cc("),
253
+ (0, exports.Selection)($['new context'], $p),
254
+ block_1.l.snippet(", ($) => "),
255
+ (0, exports.Initialization)($.initialization, $p),
256
+ block_1.l.snippet(")"),
257
+ ]));
258
+ case 'literal': return pa.ss($, ($) => (0, exports.Literal)($.value, $p));
259
+ case 'selection': return pa.ss($, ($) => (0, exports.Selection)($, $p));
260
+ case 'transformation': return pa.ss($, ($) => {
261
+ const p_source = $.source;
262
+ return block_1.l.sub([
263
+ pa.cc($.type, ($) => {
264
+ switch ($[0]) {
265
+ case 'array': return pa.ss($, ($) => pa.cc($, ($) => {
266
+ switch ($[0]) {
267
+ case 'map': return pa.ss($, ($) => block_1.l.sub([
268
+ (0, exports.Selection)(p_source, $p),
269
+ block_1.l.snippet(".map(($) => "),
270
+ (0, exports.Initialization)($, $p),
271
+ block_1.l.snippet(")"),
272
+ ]));
273
+ default: return pa.au($[0]);
274
+ }
275
+ }));
276
+ case 'boolean': return pa.ss($, ($) => pa.cc($, ($) => {
277
+ switch ($[0]) {
278
+ case 'not': return pa.ss($, ($) => block_1.l.sub([block_1.l.snippet("FIXME BOOLEAN NOT")]));
279
+ case 'transform': return pa.ss($, ($) => block_1.l.sub([
280
+ (0, exports.Selection)(p_source, $p),
281
+ block_1.l.indent([
282
+ block_1.b.nested_line([
283
+ block_1.l.snippet("? "),
284
+ (0, exports.Initialization)($['if true'], $p),
285
+ ]),
286
+ block_1.b.nested_line([
287
+ block_1.l.snippet(": "),
288
+ (0, exports.Initialization)($['if false'], $p),
289
+ ]),
290
+ ])
291
+ ]));
292
+ default: return pa.au($[0]);
293
+ }
294
+ }));
295
+ case 'dictionary': return pa.ss($, ($) => pa.cc($, ($) => {
296
+ switch ($[0]) {
297
+ case 'map': return pa.ss($, ($) => block_1.l.sub([
298
+ (0, exports.Selection)(p_source, $p),
299
+ block_1.l.snippet(".map(($) => "),
300
+ (0, exports.Initialization)($, $p),
301
+ block_1.l.snippet(")"),
302
+ ]));
303
+ default: return pa.au($[0]);
304
+ }
305
+ }));
306
+ case 'function': return pa.ss($, ($) => pa.cc($, ($) => {
307
+ switch ($[0]) {
308
+ case 'call': return pa.ss($, ($) => block_1.l.sub([
309
+ (0, exports.Selection)(p_source, $p),
310
+ block_1.l.snippet("("),
311
+ block_1.l.indent([
312
+ block_1.b.nested_line([
313
+ (0, exports.Initialization)($.context, $p), $.arguments.transform(($) => block_1.l.snippet(","), () => block_1.l.nothing()),
314
+ ]),
315
+ $.arguments.transform(($) => block_1.b.nested_line([
316
+ op['dictionary is empty']($)
317
+ ? block_1.l.snippet("null")
318
+ : block_1.l.sub([
319
+ block_1.l.snippet("{"),
320
+ block_1.l.indent([
321
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($).map(($) => block_1.b.sub([
322
+ block_1.b.nested_line([
323
+ (0, exports.String_Literal)($.key, { 'delimiter': "apostrophe" }),
324
+ block_1.l.snippet(": "),
325
+ (0, exports.Initialization)($.value, $p),
326
+ block_1.l.snippet(","),
327
+ ]),
328
+ ]))),
329
+ ]),
330
+ block_1.l.snippet("}")
331
+ ]),
332
+ ]), () => block_1.b.nothing()),
333
+ ]),
334
+ block_1.l.snippet(")"),
335
+ ]));
336
+ default: return pa.au($[0]);
337
+ }
338
+ }));
339
+ case 'optional': return pa.ss($, ($) => pa.cc($, ($) => {
340
+ switch ($[0]) {
341
+ case 'map': return pa.ss($, ($) => block_1.l.sub([
342
+ (0, exports.Selection)(p_source, $p),
343
+ block_1.l.snippet(".map(($) => "),
344
+ (0, exports.Initialization)($, $p),
345
+ block_1.l.snippet(")"),
346
+ ]));
347
+ case 'transform': return pa.ss($, ($) => block_1.l.sub([
348
+ (0, exports.Selection)(p_source, $p),
349
+ block_1.l.snippet(".transform("),
350
+ block_1.l.indent([
351
+ block_1.b.nested_line([
352
+ block_1.l.snippet("($)"),
353
+ $['resulting node'].transform(($) => block_1.l.sub([
354
+ block_1.l.snippet(": "),
355
+ (0, fountain_pen_block_1.Type)(_interface.Type_to_Type($, {
356
+ 'global type parameters': pa.not_set(),
357
+ 'temp imports': pa.set($p['temp imports']),
358
+ }), {
359
+ 'replace empty type literals by null': true
360
+ }),
361
+ ]), () => block_1.l.nothing()),
362
+ block_1.l.snippet(" => "),
363
+ (0, exports.Initialization)($['if set'], $p),
364
+ block_1.l.snippet(","),
365
+ ]),
366
+ block_1.b.nested_line([
367
+ block_1.l.snippet("() => "),
368
+ (0, exports.Initialization)($['if not set'], $p),
369
+ ]),
370
+ ]),
371
+ block_1.l.snippet(")"),
372
+ ]));
373
+ default: return pa.au($[0]);
374
+ }
375
+ }));
376
+ case 'tagged union': return pa.ss($, ($) => pa.cc($, ($) => {
377
+ switch ($[0]) {
378
+ case 'switch': return pa.ss($, ($) => block_1.l.sub([
379
+ block_1.l.snippet("_pa.cc("),
380
+ (0, exports.Selection)(p_source, $p),
381
+ block_1.l.snippet(", ($)"),
382
+ $['resulting node'].transform(($) => block_1.l.sub([
383
+ block_1.l.snippet(": "),
384
+ (0, fountain_pen_block_1.Type)(_interface.Type_to_Type($, {
385
+ 'global type parameters': pa.not_set(),
386
+ 'temp imports': pa.set($p['temp imports']),
387
+ }), {
388
+ 'replace empty type literals by null': true
389
+ }),
390
+ ]), () => block_1.l.nothing()),
391
+ block_1.l.snippet(" => {"),
392
+ block_1.l.indent([
393
+ block_1.b.nested_line([
394
+ pa.cc($.type, ($) => {
395
+ switch ($[0]) {
396
+ case 'full': return pa.ss($, ($) => block_1.l.sub([
397
+ block_1.l.snippet("switch ($[0]) {"),
398
+ block_1.l.indent([
399
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($.cases).map(($) => block_1.b.sub([
400
+ block_1.b.nested_line([
401
+ block_1.l.snippet("case "),
402
+ (0, exports.String_Literal)($.key, { 'delimiter': "apostrophe" }),
403
+ block_1.l.snippet(": return _pa.ss($, ($) => "),
404
+ (0, exports.Initialization)($.value, $p),
405
+ block_1.l.snippet(")"),
406
+ ])
407
+ ]))),
408
+ block_1.b.simple_line("default: return _pa.au($[0])")
409
+ ]),
410
+ block_1.l.snippet("}"),
411
+ ]));
412
+ case 'partial': return pa.ss($, ($) => block_1.l.sub([
413
+ block_1.l.snippet("switch ($[0]) {"),
414
+ block_1.l.indent([
415
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($.cases).map(($) => block_1.b.sub([
416
+ block_1.b.nested_line([
417
+ block_1.l.snippet("case "),
418
+ (0, exports.String_Literal)($.key, { 'delimiter': "apostrophe" }),
419
+ block_1.l.snippet(": return _pa.ss($, ($) => "),
420
+ (0, exports.Initialization)($.value, $p),
421
+ block_1.l.snippet(")"),
422
+ ])
423
+ ]))),
424
+ block_1.b.nested_line([
425
+ block_1.l.snippet("default: return "),
426
+ //Expression($.default, $p),
427
+ ])
428
+ ]),
429
+ block_1.l.snippet("}"),
430
+ ]));
431
+ default: return pa.au($[0]);
432
+ }
433
+ }),
434
+ ]),
435
+ ]),
436
+ block_1.l.snippet("})"),
437
+ ]));
438
+ default: return pa.au($[0]);
439
+ }
440
+ }));
441
+ default: return pa.au($[0]);
442
+ }
443
+ })
444
+ ]);
445
+ });
446
+ default: return pa.au($[0]);
447
+ }
448
+ });
449
+ };
450
+ exports.Initialization = Initialization;
451
+ const Variables = ($, $p) => {
452
+ return block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($).map(($) => block_1.b.sub([
453
+ block_1.b.nested_line([
454
+ $p.export ? block_1.l.snippet("export ") : block_1.l.nothing(),
455
+ block_1.l.snippet("const "),
456
+ block_1.l.snippet(op['create identifier']([$.key])),
457
+ $.value.type.transform(($) => block_1.l.sub([
458
+ block_1.l.snippet(": "),
459
+ (0, fountain_pen_block_1.Type)(_interface.Type_to_Type($, {
460
+ 'global type parameters': pa.not_set(),
461
+ 'temp imports': pa.set($p['type imports']),
462
+ }), {
463
+ 'replace empty type literals by null': true
464
+ }),
465
+ ]), () => block_1.l.nothing()),
466
+ block_1.l.snippet(" = "),
467
+ (0, exports.Initialization)($.value.initialization, {
468
+ 'temp imports': $p['type imports']
469
+ })
470
+ ])
471
+ ])));
472
+ };
473
+ exports.Variables = Variables;
474
+ const Literal = ($, $p) => {
475
+ return block_1.l.sub([
476
+ pa.cc($, ($) => {
477
+ switch ($[0]) {
478
+ case 'boolean': return pa.ss($, ($) => pa.cc($, ($) => {
479
+ switch ($[0]) {
480
+ case 'true': return block_1.l.snippet("true");
481
+ case 'false': return block_1.l.snippet("false");
482
+ default: return pa.au($[0]);
483
+ }
484
+ }));
485
+ case 'dictionary': return pa.ss($, ($) => block_1.l.sub([
486
+ block_1.l.snippet("_pa.dictionary_literal({"),
487
+ block_1.l.indent([
488
+ block_1.b.sub_decorated(op['dictionary to list, sorted by code point']($).map(($) => block_1.b.nested_line([
489
+ (0, exports.String_Literal)($.key, { 'delimiter': "apostrophe" }),
490
+ block_1.l.snippet(": "),
491
+ (0, exports.Initialization)($.value, $p),
492
+ block_1.l.snippet(","),
493
+ ]))),
494
+ ]),
495
+ block_1.l.snippet("})"),
496
+ ]));
497
+ case 'function': return pa.ss($, ($) => block_1.l.sub([
498
+ block_1.l.snippet("($"),
499
+ $['temp has parameters'] ? block_1.l.snippet(", $p") : block_1.l.nothing(),
500
+ block_1.l.snippet(") => "),
501
+ (0, exports.Initialization)($.initialization, $p),
502
+ ]));
503
+ case 'group': return pa.ss($, ($) => line_dictionary($.map(($, key) => block_1.l.indent([
504
+ block_1.b.nested_line([
505
+ (0, exports.String_Literal)(key, { 'delimiter': "apostrophe" }),
506
+ block_1.l.snippet(": "),
507
+ (0, exports.Initialization)($, $p),
508
+ block_1.l.snippet(","),
509
+ ])
510
+ ])), block_1.l.snippet("null"), block_1.l.snippet("({"), block_1.l.snippet("})"), false));
511
+ case 'array': return pa.ss($, ($) => block_1.l.sub([
512
+ block_1.l.snippet("_pa.array_literal(["),
513
+ block_1.l.indent([
514
+ block_1.b.sub_decorated($.map(($) => block_1.b.nested_line([
515
+ (0, exports.Initialization)($, $p),
516
+ block_1.l.snippet(","),
517
+ ]))),
518
+ ]),
519
+ block_1.l.snippet("])"),
520
+ ]));
521
+ case 'null': return pa.ss($, ($) => block_1.l.snippet("null"));
522
+ case 'number': return pa.ss($, ($) => pa.cc($, ($) => {
523
+ switch ($[0]) {
524
+ case 'floting point': return pa.ss($, ($) => block_1.l.snippet(pa.impure['approximate number'].serialize($)));
525
+ case 'integer': return pa.ss($, ($) => block_1.l.snippet(pa.impure.integer.serialize($)));
526
+ case 'signed integer': return pa.ss($, ($) => block_1.l.snippet(pa.impure.integer.serialize($)));
527
+ default: return pa.au($[0]);
528
+ }
529
+ }));
530
+ case 'optional': return pa.ss($, ($) => pa.cc($, ($) => {
531
+ switch ($[0]) {
532
+ case 'not set': return block_1.l.snippet("_pa.not_set()");
533
+ case 'set': return pa.ss($, ($) => block_1.l.sub([
534
+ block_1.l.snippet("_pa.set("),
535
+ (0, exports.Initialization)($, $p),
536
+ block_1.l.snippet(")"),
537
+ ]));
538
+ default: return pa.au($[0]);
539
+ }
540
+ }));
541
+ case 'tagged union': return pa.ss($, ($) => block_1.l.sub([
542
+ block_1.l.snippet("["),
543
+ (0, exports.String_Literal)($.case, { 'delimiter': "apostrophe" }),
544
+ block_1.l.snippet(", "),
545
+ (0, exports.Initialization)($.value, $p),
546
+ block_1.l.snippet("]"),
547
+ ]));
548
+ case 'string': return pa.ss($, ($) => {
549
+ const value = $.value;
550
+ return pa.cc($.delimiter, ($) => {
551
+ switch ($[0]) {
552
+ case 'quote': return pa.ss($, ($) => (0, exports.String_Literal)(value, { 'delimiter': "quote" }));
553
+ case 'backtick': return pa.ss($, ($) => block_1.l.snippet(op['serialize with grave delimiter'](value)));
554
+ default: return pa.au($[0]);
555
+ }
556
+ });
557
+ });
558
+ default: return pa.au($[0]);
559
+ }
560
+ })
561
+ ]);
562
+ };
563
+ exports.Literal = Literal;
564
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdF9saWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1hdGlvbnMvaW1wbGVtZW50YXRpb24vdHlwZXNjcmlwdF9saWdodC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9IQSwwQ0FvQ0M7QUF4SkQscURBQXNDO0FBT3RDLHdGQUEwRTtBQUUxRSwwRUFBMkQ7QUFFM0QsK0VBQTZEO0FBRTdELDJFQUF5RDtBQUV6RCxxRUFFa0Q7QUFFbEQsTUFBTSxFQUFFLEdBQUc7SUFDUCxvQkFBb0IsRUFBRSxpQ0FBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNyRCwwQ0FBMEMsRUFBRSxtQ0FBTSxDQUFDLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQztJQUM5RixxQkFBcUIsRUFBRSxtQ0FBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7SUFDcEQscUNBQXFDLEVBQUUsbUNBQU0sQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUM7SUFDekYsZ0NBQWdDLEVBQUUsbUNBQU0sQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLENBQUM7SUFDL0UsZ0NBQWdDLEVBQUUsbUNBQU0sQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLENBQUM7SUFDL0UsYUFBYSxFQUFFLG1DQUFNLENBQUMsSUFBSSxDQUFDLE1BQU07SUFDakMsd0JBQXdCLEVBQUUsbUNBQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDL0QsbUJBQW1CLEVBQUUsc0JBQUM7Q0FDekIsQ0FBQTtBQUVNLE1BQU0sVUFBVSxHQUFHLENBQ3RCLENBQWtCLEVBQ2xCLEVBRUMsRUFDYyxFQUFFO0lBQ2pCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFD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