pareto 0.80.63 → 0.80.64
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/dist/modules/file_name/schemas/file_name/serializers.js +23 -0
- package/dist/modules/implementation_old/schemas/{resolved.d.ts → resolved/schema.d.ts} +1 -1
- package/dist/modules/implementation_old/schemas/resolved/schema.js +4 -0
- package/dist/{shorthands/implementation → modules/implementation_old/schemas/resolved/shorthands}/target.d.ts +2 -2
- package/dist/modules/implementation_old/schemas/resolved/shorthands/target.js +460 -0
- package/dist/modules/{interface_old/implementation/transformers/interface → implementation_old/schemas/resolved/transformers}/to_be_written_directory_content.d.ts +3 -3
- package/dist/modules/implementation_old/schemas/resolved/transformers/to_be_written_directory_content.js +9 -0
- package/dist/modules/implementation_old/{implementation/transformers/implementation → schemas/resolved/transformers}/typescript.d.ts +2 -2
- package/dist/modules/implementation_old/schemas/resolved/transformers/typescript.js +665 -0
- package/dist/modules/implementation_old/schemas/{unresolved.d.ts → unresolved/schema.d.ts} +2 -2
- package/dist/modules/implementation_old/schemas/unresolved/schema.js +4 -0
- package/dist/modules/interface_old/schemas/resolved/schema.js +3 -0
- package/dist/{shorthands/interface → modules/interface_old/schemas/resolved/shorthands}/target.d.ts +1 -1
- package/dist/modules/interface_old/schemas/resolved/shorthands/target.js +191 -0
- package/dist/modules/{implementation_old/implementation/transformers/implementation → interface_old/schemas/resolved/transformers}/to_be_written_directory_content.d.ts +3 -3
- package/dist/modules/interface_old/schemas/resolved/transformers/to_be_written_directory_content.js +9 -0
- package/dist/modules/interface_old/{implementation/transformers/interface → schemas/resolved/transformers}/typescript.d.ts +2 -2
- package/dist/modules/{pareto_old/interface/transformers/interface → interface_old/schemas/resolved/transformers}/typescript.js +3 -3
- package/dist/modules/interface_old/schemas/{unresolved.d.ts → unresolved/schema.d.ts} +1 -1
- package/dist/modules/interface_old/schemas/unresolved/schema.js +4 -0
- package/dist/modules/pareto_new/{implementation/queries → queries/implementations}/pareto_to_typescript.d.ts +3 -3
- package/dist/modules/pareto_new/queries/implementations/pareto_to_typescript.js +14 -0
- package/dist/modules/pareto_new/{interface/schemas → schemas/command}/schema.js +1 -1
- package/dist/modules/pareto_new/schemas/command/shorthands/target.d.ts +2 -0
- package/dist/modules/pareto_new/schemas/command/shorthands/target.js +2 -0
- package/dist/modules/pareto_new/{implementation/transformers/query → schemas/command/transformers}/typescript_light.d.ts +2 -2
- package/dist/modules/pareto_new/schemas/command/transformers/typescript_light.js +10 -0
- package/dist/modules/pareto_new/schemas/interface_command/schema.js +2 -0
- package/dist/modules/pareto_new/schemas/interface_command/shorthands/target.d.ts +2 -0
- package/dist/{shorthands/query → modules/pareto_new/schemas/interface_command/shorthands}/target.js +1 -1
- package/dist/modules/pareto_new/{implementation/transformers/interface_query → schemas/interface_command/transformers}/typescript_light.d.ts +2 -2
- package/dist/modules/pareto_new/schemas/interface_command/transformers/typescript_light.js +11 -0
- package/dist/modules/pareto_new/schemas/interface_query/schema.js +2 -0
- package/dist/modules/pareto_new/schemas/interface_query/shorthands/target.d.ts +2 -0
- package/dist/modules/pareto_new/schemas/interface_query/shorthands/target.js +2 -0
- package/dist/modules/pareto_new/{implementation/transformers/interface_command → schemas/interface_query/transformers}/typescript_light.d.ts +2 -2
- package/dist/modules/pareto_new/schemas/interface_query/transformers/typescript_light.js +8 -0
- package/dist/modules/pareto_new/{interface/schemas/module.d.ts → schemas/module/schema.d.ts} +7 -7
- package/dist/modules/pareto_new/schemas/module/schema.js +9 -0
- package/dist/{shorthands/module → modules/pareto_new/schemas/module/shorthands}/target.d.ts +1 -1
- package/dist/modules/pareto_new/schemas/module/shorthands/target.js +16 -0
- package/dist/modules/pareto_new/{implementation/transformers/module → schemas/module/transformers}/typescript_light.d.ts +2 -2
- package/dist/modules/pareto_new/schemas/module/transformers/typescript_light.js +30 -0
- package/dist/modules/pareto_new/schemas/query/schema.js +2 -0
- package/dist/modules/pareto_new/schemas/query/shorthands/target.d.ts +2 -0
- package/dist/modules/pareto_new/schemas/query/shorthands/target.js +2 -0
- package/dist/modules/pareto_new/{implementation/transformers/command → schemas/query/transformers}/typescript_light.d.ts +2 -2
- package/dist/modules/pareto_new/schemas/query/transformers/typescript_light.js +8 -0
- package/dist/modules/pareto_new/{interface/schemas/refiner.d.ts → schemas/refiner/schema.d.ts} +2 -2
- package/dist/modules/pareto_new/schemas/refiner/schema.js +5 -0
- package/dist/{shorthands/refiner → modules/pareto_new/schemas/refiner/shorthands}/target.d.ts +2 -2
- package/dist/modules/pareto_new/schemas/refiner/shorthands/target.js +23 -0
- package/dist/modules/pareto_new/{implementation/transformers/refiner → schemas/refiner/transformers}/typescript_light.d.ts +2 -2
- package/dist/modules/pareto_new/schemas/refiner/transformers/typescript_light.js +58 -0
- package/dist/modules/pareto_new/schemas/schema/schema.js +2 -0
- package/dist/{shorthands/schemas → modules/pareto_new/schemas/schema/shorthands}/target.d.ts +1 -1
- package/dist/modules/pareto_new/schemas/schema/shorthands/target.js +88 -0
- package/dist/modules/pareto_new/{implementation/transformers/schema → schemas/schema/transformers}/typescript_light.d.ts +2 -2
- package/dist/modules/pareto_new/schemas/schema/transformers/typescript_light.js +163 -0
- package/dist/modules/pareto_new/schemas/schema_reference/schema.js +2 -0
- package/dist/{shorthands/schema_reference → modules/pareto_new/schemas/schema_reference/shorthands}/target.d.ts +1 -1
- package/dist/modules/pareto_new/schemas/schema_reference/shorthands/target.js +5 -0
- package/dist/modules/pareto_new/{interface/schemas/transformer.d.ts → schemas/transformer/schema.d.ts} +2 -2
- package/dist/modules/pareto_new/schemas/transformer/schema.js +4 -0
- package/dist/{shorthands/transformer → modules/pareto_new/schemas/transformer/shorthands}/target.d.ts +1 -1
- package/dist/{shorthands/transformer → modules/pareto_new/schemas/transformer/shorthands}/target.js +1 -1
- package/dist/modules/pareto_new/{implementation/transformers/transformer → schemas/transformer/transformers}/typescript_light.d.ts +2 -2
- package/dist/modules/pareto_new/schemas/transformer/transformers/typescript_light.js +72 -0
- package/dist/modules/pareto_new/schemas/type_reference/schema.js +2 -0
- package/dist/{shorthands/type_reference → modules/pareto_new/schemas/type_reference/shorthands}/target.d.ts +1 -1
- package/dist/modules/pareto_new/schemas/type_reference/shorthands/target.js +8 -0
- package/dist/modules/pareto_new/schemas/value_reference/schema.js +3 -0
- package/dist/{shorthands/value_reference → modules/pareto_new/schemas/value_reference/shorthands}/target.d.ts +1 -1
- package/dist/modules/pareto_new/schemas/value_reference/shorthands/target.js +18 -0
- package/dist/modules/pareto_old/{implementation/transformers/library → schemas/library/transformers}/typescript_light.d.ts +3 -3
- package/dist/modules/pareto_old/schemas/library/transformers/typescript_light.js +13 -0
- package/dist/modules/typescript_light/schemas/{directory_content_writing.d.ts → directory_content_writing/schema.d.ts} +2 -2
- package/dist/modules/typescript_light/schemas/directory_content_writing/schema.js +3 -0
- package/dist/modules/typescript_light/{implementation/serializers/identifier.js → schemas/identifier/serializers.js} +1 -1
- package/dist/modules/typescript_light/{implementation/serializers/primitives.d.ts → schemas/primitives/serializers.d.ts} +1 -1
- package/dist/modules/typescript_light/schemas/primitives/serializers.js +257 -0
- package/dist/modules/typescript_light/schemas/serialization/schema.js +2 -0
- package/dist/modules/typescript_light/schemas/{typescript_light.js → typescript_light/schema.js} +1 -1
- package/dist/modules/typescript_light/{shorthands/typescript_light → schemas/typescript_light/shorthands}/target.d.ts +1 -1
- package/dist/modules/typescript_light/schemas/typescript_light/shorthands/target.js +266 -0
- package/dist/modules/typescript_light/{implementation/transformers/typescript_light → schemas/typescript_light/transformers}/paragraph.d.ts +3 -3
- package/dist/modules/typescript_light/schemas/typescript_light/transformers/paragraph.js +495 -0
- package/dist/modules/typescript_light/schemas/typescript_light/transformers/serialized.d.ts +5 -0
- package/dist/modules/typescript_light/schemas/typescript_light/transformers/serialized.js +10 -0
- package/dist/modules/typescript_light/{implementation/transformers/typescript_light → schemas/typescript_light/transformers}/to_be_written_directory_content.d.ts +3 -3
- package/dist/modules/typescript_light/schemas/typescript_light/transformers/to_be_written_directory_content.js +32 -0
- package/package.json +1 -1
- package/dist/modules/file_name/implementation/serializers/filename.js +0 -23
- package/dist/modules/implementation_old/implementation/transformers/implementation/to_be_written_directory_content.js +0 -9
- package/dist/modules/implementation_old/implementation/transformers/implementation/typescript.js +0 -665
- package/dist/modules/implementation_old/schemas/resolved.js +0 -4
- package/dist/modules/implementation_old/schemas/to_be_written_directory_content.d.ts +0 -1
- package/dist/modules/implementation_old/schemas/to_be_written_directory_content.js +0 -2
- package/dist/modules/implementation_old/schemas/typescript_light.d.ts +0 -1
- package/dist/modules/implementation_old/schemas/typescript_light.js +0 -2
- package/dist/modules/implementation_old/schemas/unresolved.js +0 -4
- package/dist/modules/interface_old/implementation/transformers/interface/to_be_written_directory_content.js +0 -9
- package/dist/modules/interface_old/implementation/transformers/interface/typescript.js +0 -267
- package/dist/modules/interface_old/schemas/location.d.ts +0 -1
- package/dist/modules/interface_old/schemas/location.js +0 -2
- package/dist/modules/interface_old/schemas/resolved.js +0 -3
- package/dist/modules/interface_old/schemas/to_be_written_directory_content.d.ts +0 -1
- package/dist/modules/interface_old/schemas/to_be_written_directory_content.js +0 -2
- package/dist/modules/interface_old/schemas/typescript_light.d.ts +0 -1
- package/dist/modules/interface_old/schemas/typescript_light.js +0 -2
- package/dist/modules/interface_old/schemas/unresolved.js +0 -4
- package/dist/modules/pareto_new/implementation/queries/pareto_to_typescript.js +0 -14
- package/dist/modules/pareto_new/implementation/transformers/command/typescript_light.js +0 -10
- package/dist/modules/pareto_new/implementation/transformers/interface_command/typescript_light.js +0 -11
- package/dist/modules/pareto_new/implementation/transformers/interface_query/typescript_light.js +0 -8
- package/dist/modules/pareto_new/implementation/transformers/module/typescript_light.js +0 -30
- package/dist/modules/pareto_new/implementation/transformers/query/typescript_light.js +0 -8
- package/dist/modules/pareto_new/implementation/transformers/refiner/typescript_light.js +0 -58
- package/dist/modules/pareto_new/implementation/transformers/schema/typescript_light.js +0 -163
- package/dist/modules/pareto_new/implementation/transformers/transformer/typescript_light.js +0 -72
- package/dist/modules/pareto_new/interface/schemas/command.js +0 -2
- package/dist/modules/pareto_new/interface/schemas/interface_command.js +0 -2
- package/dist/modules/pareto_new/interface/schemas/interface_query.js +0 -2
- package/dist/modules/pareto_new/interface/schemas/module.js +0 -9
- package/dist/modules/pareto_new/interface/schemas/query.js +0 -2
- package/dist/modules/pareto_new/interface/schemas/refiner.js +0 -5
- package/dist/modules/pareto_new/interface/schemas/schema_reference.js +0 -2
- package/dist/modules/pareto_new/interface/schemas/transformer.js +0 -4
- package/dist/modules/pareto_new/interface/schemas/type_reference.js +0 -2
- package/dist/modules/pareto_new/interface/schemas/value_reference.js +0 -3
- package/dist/modules/pareto_old/implementation/transformers/library/typescript_light.js +0 -13
- package/dist/modules/pareto_old/interface/transformers/interface/typescript.d.ts +0 -11
- package/dist/modules/pareto_old/schemas/typescript_light.d.ts +0 -1
- package/dist/modules/pareto_old/schemas/typescript_light.js +0 -2
- package/dist/modules/typescript_light/implementation/serializers/primitives.js +0 -257
- package/dist/modules/typescript_light/implementation/transformers/typescript_light/paragraph.js +0 -495
- package/dist/modules/typescript_light/implementation/transformers/typescript_light/serialized.d.ts +0 -5
- package/dist/modules/typescript_light/implementation/transformers/typescript_light/serialized.js +0 -10
- package/dist/modules/typescript_light/implementation/transformers/typescript_light/to_be_written_directory_content.js +0 -32
- package/dist/modules/typescript_light/schemas/directory_content_writing.js +0 -3
- package/dist/modules/typescript_light/schemas/paragraph.d.ts +0 -1
- package/dist/modules/typescript_light/schemas/paragraph.js +0 -2
- package/dist/modules/typescript_light/schemas/serialization.js +0 -2
- package/dist/modules/typescript_light/schemas/serialized.d.ts +0 -1
- package/dist/modules/typescript_light/schemas/serialized.js +0 -2
- package/dist/modules/typescript_light/shorthands/typescript_light/target.js +0 -266
- package/dist/shorthands/command/target.d.ts +0 -2
- package/dist/shorthands/command/target.js +0 -2
- package/dist/shorthands/implementation/target.js +0 -460
- package/dist/shorthands/interface/target.js +0 -191
- package/dist/shorthands/interface_command/target.d.ts +0 -2
- package/dist/shorthands/interface_command/target.js +0 -2
- package/dist/shorthands/interface_query/target.d.ts +0 -2
- package/dist/shorthands/interface_query/target.js +0 -2
- package/dist/shorthands/module/target.js +0 -16
- package/dist/shorthands/query/target.d.ts +0 -2
- package/dist/shorthands/refiner/target.js +0 -23
- package/dist/shorthands/schema_reference/target.js +0 -5
- package/dist/shorthands/schemas/target.js +0 -88
- package/dist/shorthands/type_reference/target.js +0 -8
- package/dist/shorthands/value_reference/target.js +0 -18
- /package/dist/modules/file_name/{implementation/serializers/filename.d.ts → schemas/file_name/serializers.d.ts} +0 -0
- /package/dist/modules/interface_old/schemas/{resolved.d.ts → resolved/schema.d.ts} +0 -0
- /package/dist/modules/pareto_new/{interface/schemas/command.d.ts → schemas/command/schema.d.ts} +0 -0
- /package/dist/modules/pareto_new/{interface/schemas/interface_command.d.ts → schemas/interface_command/schema.d.ts} +0 -0
- /package/dist/modules/pareto_new/{interface/schemas/interface_query.d.ts → schemas/interface_query/schema.d.ts} +0 -0
- /package/dist/modules/pareto_new/{interface/schemas/query.d.ts → schemas/query/schema.d.ts} +0 -0
- /package/dist/modules/pareto_new/{interface/schemas → schemas/schema}/schema.d.ts +0 -0
- /package/dist/modules/pareto_new/{interface/schemas/schema_reference.d.ts → schemas/schema_reference/schema.d.ts} +0 -0
- /package/dist/modules/pareto_new/{interface/schemas/type_reference.d.ts → schemas/type_reference/schema.d.ts} +0 -0
- /package/dist/modules/pareto_new/{interface/schemas/value_reference.d.ts → schemas/value_reference/schema.d.ts} +0 -0
- /package/dist/modules/typescript_light/{implementation/serializers/identifier.d.ts → schemas/identifier/serializers.d.ts} +0 -0
- /package/dist/modules/typescript_light/schemas/{serialization.d.ts → serialization/schema.d.ts} +0 -0
- /package/dist/modules/typescript_light/schemas/{typescript_light.d.ts → typescript_light/schema.d.ts} +0 -0
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
import * as p_ from 'pareto-core/implementation/transformer';
|
|
2
|
+
//shorthands
|
|
3
|
+
import * as sh from "pareto-fountain-pen/modules/paragraph/schemas/paragraph/shorthands/deprecated";
|
|
4
|
+
//dependencies
|
|
5
|
+
import * as ser_primitives from "../../primitives/serializers.js";
|
|
6
|
+
export const Source_File = ($, $p) => Statements($.statements, $p);
|
|
7
|
+
export const Identifier = ($) => {
|
|
8
|
+
return sh.ph.text($.value);
|
|
9
|
+
};
|
|
10
|
+
export const String_Literal_pseudo = ($, $p) => {
|
|
11
|
+
return sh.ph.text($p.delimiter === "quote"
|
|
12
|
+
? ser_primitives.Quoted_Text($)
|
|
13
|
+
: ser_primitives.Apostrophed_Text($));
|
|
14
|
+
};
|
|
15
|
+
export const String_Literal = ($) => {
|
|
16
|
+
return sh.ph.text($.delimiter[0] === "quote"
|
|
17
|
+
? ser_primitives.Quoted_Text($.value)
|
|
18
|
+
: ser_primitives.Apostrophed_Text($.value));
|
|
19
|
+
};
|
|
20
|
+
export const Statements = ($, $p) => sh.pg.deprecated_composed(p_.from.list($).map(($) => p_.from.state($).decide(($) => {
|
|
21
|
+
switch ($[0]) {
|
|
22
|
+
case 'block': return p_.option($, ($) => sh.pg.sentences([
|
|
23
|
+
sh.sentence([]),
|
|
24
|
+
sh.sentence([
|
|
25
|
+
sh.ph.text("{"),
|
|
26
|
+
sh.ph.indent(Statements($, $p)),
|
|
27
|
+
sh.ph.text("}"),
|
|
28
|
+
])
|
|
29
|
+
]));
|
|
30
|
+
case 'export': return p_.option($, ($) => sh.pg.sentences([
|
|
31
|
+
sh.sentence([]),
|
|
32
|
+
sh.sentence([
|
|
33
|
+
sh.ph.text("export "),
|
|
34
|
+
p_.from.state($.type).decide(($) => {
|
|
35
|
+
switch ($[0]) {
|
|
36
|
+
case 'named exports': return p_.option($, ($) => sh.ph.composed([
|
|
37
|
+
sh.ph.text("{ "),
|
|
38
|
+
sh.ph.indent(sh.pg.sentences(p_.from.list($.specifiers).map(($) => sh.sentence([
|
|
39
|
+
Identifier($.name),
|
|
40
|
+
p_.from.optional($.as).decide(($) => sh.ph.composed([
|
|
41
|
+
sh.ph.text(" as "),
|
|
42
|
+
Identifier($),
|
|
43
|
+
]), () => sh.ph.nothing()),
|
|
44
|
+
sh.ph.text(", ")
|
|
45
|
+
])))),
|
|
46
|
+
sh.ph.text("}"),
|
|
47
|
+
p_.from.optional($.from).decide(($) => sh.ph.composed([
|
|
48
|
+
sh.ph.text(" from "),
|
|
49
|
+
String_Literal($),
|
|
50
|
+
]), () => sh.ph.nothing())
|
|
51
|
+
]));
|
|
52
|
+
default: return p_.exhaustive($[0]);
|
|
53
|
+
}
|
|
54
|
+
}),
|
|
55
|
+
])
|
|
56
|
+
]));
|
|
57
|
+
case 'expression': return p_.option($, ($) => sh.pg.sentences([
|
|
58
|
+
sh.sentence(Expression($, {
|
|
59
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
60
|
+
'object literal needs parentheses': true,
|
|
61
|
+
}))
|
|
62
|
+
]));
|
|
63
|
+
case 'import': return p_.option($, ($) => sh.pg.sentences([
|
|
64
|
+
sh.sentence([]),
|
|
65
|
+
sh.sentence([
|
|
66
|
+
sh.ph.text("import "),
|
|
67
|
+
p_.from.state($.type).decide(($) => {
|
|
68
|
+
switch ($[0]) {
|
|
69
|
+
case 'default': return p_.option($, ($) => sh.ph.composed([
|
|
70
|
+
Identifier($),
|
|
71
|
+
]));
|
|
72
|
+
case 'named': return p_.option($, ($) => sh.ph.composed([
|
|
73
|
+
sh.ph.text("{"),
|
|
74
|
+
sh.ph.indent(sh.pg.sentences(p_.from.list($.specifiers).map(($) => sh.sentence([
|
|
75
|
+
Identifier($.name),
|
|
76
|
+
p_.from.optional($.as).decide(($) => sh.ph.composed([
|
|
77
|
+
sh.ph.text(" as "),
|
|
78
|
+
Identifier($),
|
|
79
|
+
]), () => sh.ph.nothing()),
|
|
80
|
+
sh.ph.text(",")
|
|
81
|
+
])))),
|
|
82
|
+
sh.ph.text("}"),
|
|
83
|
+
]));
|
|
84
|
+
case 'namespace': return p_.option($, ($) => sh.ph.composed([
|
|
85
|
+
sh.ph.text("* as "),
|
|
86
|
+
Identifier($),
|
|
87
|
+
]));
|
|
88
|
+
default: return p_.exhaustive($[0]);
|
|
89
|
+
}
|
|
90
|
+
}),
|
|
91
|
+
sh.ph.text(" from "),
|
|
92
|
+
String_Literal($.from),
|
|
93
|
+
])
|
|
94
|
+
]));
|
|
95
|
+
case 'module declaration': return p_.option($, ($) => sh.pg.sentences([
|
|
96
|
+
sh.sentence([]),
|
|
97
|
+
sh.sentence([
|
|
98
|
+
$.export ?
|
|
99
|
+
sh.ph.text("export ")
|
|
100
|
+
: sh.ph.nothing(),
|
|
101
|
+
sh.ph.text("namespace "),
|
|
102
|
+
Identifier($['name']),
|
|
103
|
+
sh.ph.text(" "),
|
|
104
|
+
sh.ph.composed([
|
|
105
|
+
sh.ph.text("{"),
|
|
106
|
+
sh.ph.indent(sh.pg.deprecated_composed([
|
|
107
|
+
Statements($.block, $p),
|
|
108
|
+
sh.pg.sentences([
|
|
109
|
+
sh.sentence([]),
|
|
110
|
+
])
|
|
111
|
+
])),
|
|
112
|
+
sh.ph.text("}"),
|
|
113
|
+
])
|
|
114
|
+
])
|
|
115
|
+
]));
|
|
116
|
+
case 'return': return p_.option($, ($) => sh.pg.sentences([
|
|
117
|
+
sh.sentence(p_.literal.segmented_list([
|
|
118
|
+
p_.literal.list([
|
|
119
|
+
sh.ph.text("return "),
|
|
120
|
+
]),
|
|
121
|
+
p_.from.optional($).decide(($) => Expression($, {
|
|
122
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
123
|
+
'object literal needs parentheses': false,
|
|
124
|
+
}), () => p_.literal.list([]))
|
|
125
|
+
])),
|
|
126
|
+
]));
|
|
127
|
+
case 'switch': return p_.option($, ($) => sh.pg.sentences([
|
|
128
|
+
sh.sentence(p_.literal.segmented_list([
|
|
129
|
+
p_.literal.list([
|
|
130
|
+
sh.ph.text("switch ("),
|
|
131
|
+
]),
|
|
132
|
+
Expression($.expression, {
|
|
133
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
134
|
+
'object literal needs parentheses': false,
|
|
135
|
+
}),
|
|
136
|
+
p_.literal.list([
|
|
137
|
+
sh.ph.text(") {"),
|
|
138
|
+
sh.ph.indent(sh.pg.sentences(p_.from.list($.clauses).map(($) => sh.sentence(p_.literal.segmented_list([
|
|
139
|
+
p_.from.state($.type).decide(($) => {
|
|
140
|
+
switch ($[0]) {
|
|
141
|
+
case 'case': return p_.option($, ($) => p_.literal.segmented_list([
|
|
142
|
+
p_.literal.list([
|
|
143
|
+
sh.ph.text("case "),
|
|
144
|
+
]),
|
|
145
|
+
Expression($, {
|
|
146
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
147
|
+
'object literal needs parentheses': true,
|
|
148
|
+
}),
|
|
149
|
+
p_.literal.list([
|
|
150
|
+
sh.ph.text(":"),
|
|
151
|
+
]),
|
|
152
|
+
]));
|
|
153
|
+
case 'default': return p_.option($, ($) => p_.literal.list([
|
|
154
|
+
sh.ph.text("default:")
|
|
155
|
+
]));
|
|
156
|
+
default: return p_.exhaustive($[0]);
|
|
157
|
+
}
|
|
158
|
+
}),
|
|
159
|
+
p_.literal.list([
|
|
160
|
+
sh.ph.indent(Statements($.statements, $p))
|
|
161
|
+
]),
|
|
162
|
+
]))))),
|
|
163
|
+
sh.ph.text("}"),
|
|
164
|
+
])
|
|
165
|
+
])),
|
|
166
|
+
]));
|
|
167
|
+
case 'type alias declaration': return p_.option($, ($) => sh.pg.sentences([
|
|
168
|
+
sh.sentence([]),
|
|
169
|
+
sh.sentence([
|
|
170
|
+
$.export ? sh.ph.text("export ") : sh.ph.nothing(),
|
|
171
|
+
sh.ph.text("type "),
|
|
172
|
+
Identifier($['name']),
|
|
173
|
+
sh.ph.rich_phrase(p_.from.list($['parameters']).map(($) => Identifier($)), sh.ph.nothing(), sh.ph.text("<"), sh.ph.text(", "), sh.ph.text(">")),
|
|
174
|
+
sh.ph.text(" = "),
|
|
175
|
+
Type($['type'], $p),
|
|
176
|
+
])
|
|
177
|
+
]));
|
|
178
|
+
case 'variable': return p_.option($, ($) => sh.pg.sentences([
|
|
179
|
+
sh.sentence([]),
|
|
180
|
+
sh.sentence([
|
|
181
|
+
$.export ? sh.ph.text("export ") : sh.ph.nothing(),
|
|
182
|
+
$.const ? sh.ph.text("const ") : sh.ph.text("let "),
|
|
183
|
+
Identifier($['name']),
|
|
184
|
+
p_.from.optional($.type).decide(($) => sh.ph.composed([
|
|
185
|
+
sh.ph.text(": "),
|
|
186
|
+
Type($, $p)
|
|
187
|
+
]), () => sh.ph.nothing()),
|
|
188
|
+
sh.ph.composed(p_.from.optional($.expression).decide(($) => p_.literal.segmented_list([
|
|
189
|
+
p_.literal.list([
|
|
190
|
+
sh.ph.text(" = "),
|
|
191
|
+
]),
|
|
192
|
+
Expression($, {
|
|
193
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
194
|
+
'object literal needs parentheses': false,
|
|
195
|
+
})
|
|
196
|
+
]), () => p_.literal.list([]))),
|
|
197
|
+
])
|
|
198
|
+
]));
|
|
199
|
+
default: return p_.exhaustive($[0]);
|
|
200
|
+
}
|
|
201
|
+
})));
|
|
202
|
+
export const Expression = ($, $p) => p_.from.state($).decide(($) => {
|
|
203
|
+
switch ($[0]) {
|
|
204
|
+
case 'assignment': return p_.option($, ($) => p_.literal.segmented_list([
|
|
205
|
+
Expression($.left, $p),
|
|
206
|
+
p_.literal.list([
|
|
207
|
+
sh.ph.text(" = "),
|
|
208
|
+
]),
|
|
209
|
+
Expression($.right, {
|
|
210
|
+
'object literal needs parentheses': false,
|
|
211
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
212
|
+
}),
|
|
213
|
+
]));
|
|
214
|
+
case 'array literal': return p_.option($, ($) => p_.literal.segmented_list([
|
|
215
|
+
p_.literal.list([
|
|
216
|
+
sh.ph.text("["),
|
|
217
|
+
sh.ph.rich_phrase(p_.from.list($).flatten(($) => Expression($, {
|
|
218
|
+
'object literal needs parentheses': false,
|
|
219
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
220
|
+
})), sh.ph.nothing(), sh.ph.nothing(), sh.ph.text(", "), sh.ph.nothing())
|
|
221
|
+
]),
|
|
222
|
+
p_.literal.list([
|
|
223
|
+
sh.ph.text("]"),
|
|
224
|
+
]),
|
|
225
|
+
]));
|
|
226
|
+
case 'arrow function': return p_.option($, ($) => p_.literal.segmented_list([
|
|
227
|
+
p_.literal.list([
|
|
228
|
+
sh.ph.text("("),
|
|
229
|
+
sh.ph.rich_phrase(p_.from.list($.parameters).map(($) => sh.ph.composed([
|
|
230
|
+
Identifier($.name),
|
|
231
|
+
p_.from.optional($.type).decide(($) => sh.ph.composed([
|
|
232
|
+
sh.ph.text(": "),
|
|
233
|
+
Type($, $p)
|
|
234
|
+
]), () => sh.ph.nothing()),
|
|
235
|
+
])), sh.ph.nothing(), sh.ph.nothing(), sh.ph.text(", "), sh.ph.nothing()),
|
|
236
|
+
sh.ph.text(")"),
|
|
237
|
+
]),
|
|
238
|
+
p_.from.optional($['return type']).decide(($) => p_.literal.segmented_list([
|
|
239
|
+
p_.literal.list([
|
|
240
|
+
sh.ph.text(": "),
|
|
241
|
+
]),
|
|
242
|
+
p_.literal.list([
|
|
243
|
+
Type($, $p)
|
|
244
|
+
])
|
|
245
|
+
]), () => p_.literal.list([])),
|
|
246
|
+
p_.literal.list([
|
|
247
|
+
sh.ph.text(" => "),
|
|
248
|
+
]),
|
|
249
|
+
p_.from.state($.body).decide(($) => {
|
|
250
|
+
switch ($[0]) {
|
|
251
|
+
case 'block': return p_.option($, ($) => p_.literal.list([
|
|
252
|
+
sh.ph.text("{"),
|
|
253
|
+
sh.ph.indent(Statements($, $p)),
|
|
254
|
+
sh.ph.text("}"),
|
|
255
|
+
]));
|
|
256
|
+
case 'expression': return p_.option($, ($) => Expression($, {
|
|
257
|
+
'object literal needs parentheses': true,
|
|
258
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
259
|
+
}));
|
|
260
|
+
default: return p_.exhaustive($[0]);
|
|
261
|
+
}
|
|
262
|
+
}),
|
|
263
|
+
]));
|
|
264
|
+
case 'call': return p_.option($, ($) => p_.literal.segmented_list([
|
|
265
|
+
Expression($['function selection'], $p),
|
|
266
|
+
p_.literal.list([
|
|
267
|
+
sh.ph.text("("),
|
|
268
|
+
sh.ph.indent(sh.pg.sentences(p_.from.list($['arguments']).map(($) => sh.sentence(p_.literal.segmented_list([
|
|
269
|
+
Expression($, {
|
|
270
|
+
'object literal needs parentheses': false,
|
|
271
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
272
|
+
}),
|
|
273
|
+
p_.literal.list([
|
|
274
|
+
sh.ph.text(",")
|
|
275
|
+
]),
|
|
276
|
+
]))))),
|
|
277
|
+
sh.ph.text(")"),
|
|
278
|
+
])
|
|
279
|
+
]));
|
|
280
|
+
case 'compare': return p_.option($, ($) => p_.literal.segmented_list([
|
|
281
|
+
Expression($.left, $p),
|
|
282
|
+
p_.literal.list([
|
|
283
|
+
sh.ph.text(" "),
|
|
284
|
+
p_.from.state($.operator).decide(($) => {
|
|
285
|
+
switch ($[0]) {
|
|
286
|
+
case 'loosely equal': return p_.option($, ($) => sh.ph.text("=="));
|
|
287
|
+
case 'strictly equal': return p_.option($, ($) => sh.ph.text("==="));
|
|
288
|
+
case 'loosely not equal': return p_.option($, ($) => sh.ph.text("!="));
|
|
289
|
+
case 'strictly not equal': return p_.option($, ($) => sh.ph.text("!=="));
|
|
290
|
+
case 'smaller than': return p_.option($, ($) => sh.ph.text("<"));
|
|
291
|
+
case 'smaller than or equal': return p_.option($, ($) => sh.ph.text("<="));
|
|
292
|
+
case 'greater than': return p_.option($, ($) => sh.ph.text(">"));
|
|
293
|
+
case 'greater than or equal': return p_.option($, ($) => sh.ph.text(">="));
|
|
294
|
+
default: return p_.exhaustive($[0]);
|
|
295
|
+
}
|
|
296
|
+
}),
|
|
297
|
+
sh.ph.text(" "),
|
|
298
|
+
]),
|
|
299
|
+
Expression($.right, {
|
|
300
|
+
'object literal needs parentheses': false,
|
|
301
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
302
|
+
}),
|
|
303
|
+
]));
|
|
304
|
+
case 'conditional': return p_.option($, ($) => p_.literal.segmented_list([
|
|
305
|
+
Expression($.condition, $p),
|
|
306
|
+
p_.literal.list([
|
|
307
|
+
sh.ph.indent(sh.pg.sentences(p_.literal.list([
|
|
308
|
+
sh.sentence(p_.literal.segmented_list([
|
|
309
|
+
p_.literal.list([
|
|
310
|
+
sh.ph.text("? "),
|
|
311
|
+
]),
|
|
312
|
+
Expression($['if true'], {
|
|
313
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
314
|
+
'object literal needs parentheses': false,
|
|
315
|
+
}),
|
|
316
|
+
])),
|
|
317
|
+
sh.sentence(p_.literal.segmented_list([
|
|
318
|
+
p_.literal.list([
|
|
319
|
+
sh.ph.text(": "),
|
|
320
|
+
]),
|
|
321
|
+
Expression($['if false'], {
|
|
322
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
323
|
+
'object literal needs parentheses': false,
|
|
324
|
+
}),
|
|
325
|
+
])),
|
|
326
|
+
]))),
|
|
327
|
+
])
|
|
328
|
+
]));
|
|
329
|
+
case 'element access': return p_.option($, ($) => p_.literal.segmented_list([
|
|
330
|
+
Expression($.collection, $p),
|
|
331
|
+
p_.literal.list([
|
|
332
|
+
sh.ph.text("["),
|
|
333
|
+
]),
|
|
334
|
+
Expression($.index, $p),
|
|
335
|
+
p_.literal.list([
|
|
336
|
+
sh.ph.text("]"),
|
|
337
|
+
])
|
|
338
|
+
]));
|
|
339
|
+
case 'false': return p_.option($, ($) => p_.literal.list([
|
|
340
|
+
sh.ph.text("false")
|
|
341
|
+
]));
|
|
342
|
+
case 'identifier': return p_.option($, ($) => p_.literal.list([
|
|
343
|
+
Identifier($)
|
|
344
|
+
]));
|
|
345
|
+
case 'null': return p_.option($, ($) => p_.literal.list([
|
|
346
|
+
sh.ph.text("null")
|
|
347
|
+
]));
|
|
348
|
+
case 'number literal': return p_.option($, ($) => p_.literal.list([
|
|
349
|
+
sh.ph.text(ser_primitives.Float($))
|
|
350
|
+
]));
|
|
351
|
+
case 'object literal': return p_.option($, ($) => p_.literal.list([
|
|
352
|
+
$p['object literal needs parentheses']
|
|
353
|
+
? sh.ph.text("(")
|
|
354
|
+
: sh.ph.nothing(),
|
|
355
|
+
sh.ph.text("{"),
|
|
356
|
+
sh.ph.indent(sh.pg.sentences(p_.from.list($.properties).map(($) => sh.sentence(p_.literal.segmented_list([
|
|
357
|
+
p_.literal.list([
|
|
358
|
+
p_.from.state($.key).decide(($) => {
|
|
359
|
+
switch ($[0]) {
|
|
360
|
+
case 'identifier': return p_.option($, ($) => Identifier($));
|
|
361
|
+
case 'string literal': return p_.option($, ($) => String_Literal($));
|
|
362
|
+
default: return p_.exhaustive($[0]);
|
|
363
|
+
}
|
|
364
|
+
}),
|
|
365
|
+
sh.ph.text(": ")
|
|
366
|
+
]),
|
|
367
|
+
Expression($.value, {
|
|
368
|
+
'object literal needs parentheses': false,
|
|
369
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
370
|
+
}),
|
|
371
|
+
p_.literal.list([
|
|
372
|
+
sh.ph.text(",")
|
|
373
|
+
])
|
|
374
|
+
]))))),
|
|
375
|
+
sh.ph.text("}"),
|
|
376
|
+
$p['object literal needs parentheses']
|
|
377
|
+
? sh.ph.text(")")
|
|
378
|
+
: sh.ph.nothing(),
|
|
379
|
+
]));
|
|
380
|
+
case 'parenthesized': return p_.option($, ($) => p_.literal.segmented_list([
|
|
381
|
+
p_.literal.list([
|
|
382
|
+
sh.ph.text("("),
|
|
383
|
+
]),
|
|
384
|
+
Expression($, {
|
|
385
|
+
'replace empty type literals by symbol': $p['replace empty type literals by symbol'],
|
|
386
|
+
'object literal needs parentheses': false,
|
|
387
|
+
}),
|
|
388
|
+
p_.literal.list([
|
|
389
|
+
sh.ph.text(")"),
|
|
390
|
+
])
|
|
391
|
+
]));
|
|
392
|
+
case 'property access': return p_.option($, ($) => p_.literal.segmented_list([
|
|
393
|
+
Expression($.object, $p),
|
|
394
|
+
p_.literal.list([
|
|
395
|
+
sh.ph.text("."),
|
|
396
|
+
Identifier($.property),
|
|
397
|
+
])
|
|
398
|
+
]));
|
|
399
|
+
case 'string literal': return p_.option($, ($) => p_.literal.list([
|
|
400
|
+
sh.ph.text($['delimiter'][0] === "quote"
|
|
401
|
+
? ser_primitives.Quoted_Text($['value'])
|
|
402
|
+
: ser_primitives.Apostrophed_Text($['value']))
|
|
403
|
+
]));
|
|
404
|
+
case 'true': return p_.option($, ($) => p_.literal.list([
|
|
405
|
+
sh.ph.text("true")
|
|
406
|
+
]));
|
|
407
|
+
case 'unary operation': return p_.option($, ($) => {
|
|
408
|
+
const operand = $.operand;
|
|
409
|
+
return p_.literal.segmented_list([
|
|
410
|
+
p_.literal.list([
|
|
411
|
+
p_.from.state($.operator).decide(($) => {
|
|
412
|
+
switch ($[0]) {
|
|
413
|
+
case 'negation': return p_.option($, ($) => sh.ph.text("-"));
|
|
414
|
+
case 'logical not': return p_.option($, ($) => sh.ph.text("!"));
|
|
415
|
+
default: return p_.exhaustive($[0]);
|
|
416
|
+
}
|
|
417
|
+
})
|
|
418
|
+
]),
|
|
419
|
+
Expression(operand, $p)
|
|
420
|
+
]);
|
|
421
|
+
});
|
|
422
|
+
default: return p_.exhaustive($[0]);
|
|
423
|
+
}
|
|
424
|
+
});
|
|
425
|
+
export const Type = ($, $p) => p_.from.state($).decide(($) => {
|
|
426
|
+
switch ($[0]) {
|
|
427
|
+
case 'boolean': return p_.option($, ($) => sh.ph.text("boolean"));
|
|
428
|
+
case 'function': return p_.option($, ($) => sh.ph.composed([
|
|
429
|
+
sh.ph.rich_phrase(p_.from.list($['type parameters']).map(($) => Type($, $p)), sh.ph.nothing(), sh.ph.text("<"), sh.ph.text(", "), sh.ph.text(">")),
|
|
430
|
+
sh.ph.text("("),
|
|
431
|
+
sh.ph.indent(sh.pg.sentences(p_.from.list($['parameters']).map(($) => sh.sentence(p_.literal.list([
|
|
432
|
+
Identifier($.name),
|
|
433
|
+
p_.from.optional($.type).decide(($) => sh.ph.composed([
|
|
434
|
+
sh.ph.text(": "),
|
|
435
|
+
Type($, $p)
|
|
436
|
+
]), () => sh.ph.nothing()),
|
|
437
|
+
sh.ph.text(",")
|
|
438
|
+
]))))),
|
|
439
|
+
sh.ph.text(") => "),
|
|
440
|
+
Type($['return'], $p)
|
|
441
|
+
]));
|
|
442
|
+
case 'literal type': return p_.option($, ($) => String_Literal($)); //FIX, implement a switch for the delimiter
|
|
443
|
+
case 'never': return p_.option($, ($) => sh.ph.text("never"));
|
|
444
|
+
case 'null': return p_.option($, ($) => sh.ph.text("null"));
|
|
445
|
+
case 'number': return p_.option($, ($) => sh.ph.text("number"));
|
|
446
|
+
case 'string': return p_.option($, ($) => sh.ph.text("string"));
|
|
447
|
+
case 'tuple': return p_.option($, ($) => sh.ph.composed([
|
|
448
|
+
$.readonly ? sh.ph.text("readonly ") : sh.ph.nothing(),
|
|
449
|
+
sh.ph.text("["),
|
|
450
|
+
sh.ph.rich_phrase(p_.from.list($.elements).map(($) => Type($, $p)), sh.ph.nothing(), sh.ph.nothing(), sh.ph.text(", "), sh.ph.nothing()),
|
|
451
|
+
sh.ph.text("]"),
|
|
452
|
+
]));
|
|
453
|
+
case 'type literal': return p_.option($, ($) => $p['replace empty type literals by symbol'] && p_.from.list($.properties).on_has_items(() => true, () => false)
|
|
454
|
+
? sh.ph.text("symbol")
|
|
455
|
+
: sh.ph.composed([
|
|
456
|
+
sh.ph.text("{"),
|
|
457
|
+
sh.ph.indent(sh.pg.sentences(p_.from.list($.properties).map(($) => sh.sentence([
|
|
458
|
+
sh.ph.composed([
|
|
459
|
+
$['readonly'] ? sh.ph.text("readonly ") : sh.ph.nothing(),
|
|
460
|
+
p_.from.state($.key).decide(($) => {
|
|
461
|
+
switch ($[0]) {
|
|
462
|
+
case 'identifier': return p_.option($, ($) => Identifier($));
|
|
463
|
+
case 'string literal': return p_.option($, ($) => String_Literal($));
|
|
464
|
+
default: return p_.exhaustive($[0]);
|
|
465
|
+
}
|
|
466
|
+
}),
|
|
467
|
+
sh.ph.text(": "),
|
|
468
|
+
Type($.type, $p),
|
|
469
|
+
])
|
|
470
|
+
])))),
|
|
471
|
+
sh.ph.text("}")
|
|
472
|
+
]));
|
|
473
|
+
case 'type reference': return p_.option($, ($) => sh.ph.composed([
|
|
474
|
+
Identifier($['start']),
|
|
475
|
+
sh.ph.composed(p_.from.list($['tail']).map(($) => sh.ph.composed([
|
|
476
|
+
sh.ph.text("."),
|
|
477
|
+
Identifier($),
|
|
478
|
+
]))),
|
|
479
|
+
p_.from.list($['type arguments']).on_has_items(($) => sh.ph.composed([
|
|
480
|
+
sh.ph.text("<"),
|
|
481
|
+
sh.ph.rich_paragraph(p_.from.list($).map(($) => sh.sentence(p_.literal.list([
|
|
482
|
+
Type($, $p)
|
|
483
|
+
]))), sh.ph.nothing(), sh.ph.nothing(), sh.ph.text(","), sh.ph.nothing()),
|
|
484
|
+
sh.ph.text(">"),
|
|
485
|
+
]), () => sh.ph.nothing()),
|
|
486
|
+
]));
|
|
487
|
+
case 'union': return p_.option($, ($) => sh.ph.indent(sh.pg.sentences(p_.from.list($).map(($) => sh.sentence(p_.literal.list([
|
|
488
|
+
sh.ph.text("| "),
|
|
489
|
+
Type($, $p),
|
|
490
|
+
]))))));
|
|
491
|
+
case 'void': return p_.option($, ($) => sh.ph.text("void"));
|
|
492
|
+
default: return p_.exhaustive($[0]);
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWdyYXBoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvdHlwZXNjcmlwdF9saWdodC9zY2hlbWFzL3R5cGVzY3JpcHRfbGlnaHQvdHJhbnNmb3JtZXJzL3BhcmFncmFwaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBUTVELFlBQVk7QUFDWixPQUFPLEtBQUssRUFBRSxNQUFNLCtFQUErRSxDQUFBO0FBRW5HLGNBQWM7QUFDZCxPQUFPLEtBQUssY0FBYyxNQUFNLGlDQUFpQyxDQUFBO0FBbURqRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQTZCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFHNUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUE0QixDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3JELE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzlCLENBQUMsQ0FBQTtBQUdELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUF1QyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUMvRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEtBQUssT0FBTztRQUNsQyxDQUFDLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2pELENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBZ0MsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUM3RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFB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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as p_ from 'pareto-core/implementation/transformer';
|
|
2
|
+
import type * as s_in from "../schema.js";
|
|
3
|
+
import type * as s_out from "pareto-fountain-pen/modules/paragraph/schemas/serialized/schema";
|
|
4
|
+
import type * as s_parameters from "../../serialization/schema.js";
|
|
5
|
+
export declare const Source_File: p_.Transformer_With_Parameter<s_in.Source_File, s_out.Lines, s_parameters.Source_File_Parameters>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as p_ from 'pareto-core/implementation/transformer';
|
|
2
|
+
//dependencies
|
|
3
|
+
import * as t_to_paragraph from "./paragraph.js";
|
|
4
|
+
import * as t_paragraph_to_serialized from "pareto-fountain-pen/modules/paragraph/schemas/paragraph/transformers/serialized";
|
|
5
|
+
export const Source_File = ($, $p) => {
|
|
6
|
+
return t_paragraph_to_serialized.Paragraph(t_to_paragraph.Source_File($, $p.typescript), {
|
|
7
|
+
'indentation': $p['indentation'],
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3R5cGVzY3JpcHRfbGlnaHQvc2NoZW1hcy90eXBlc2NyaXB0X2xpZ2h0L3RyYW5zZm9ybWVycy9zZXJpYWxpemVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFRNUQsY0FBYztBQUNkLE9BQU8sS0FBSyxjQUFjLE1BQU0sZ0JBQWdCLENBQUE7QUFDaEQsT0FBTyxLQUFLLHlCQUF5QixNQUFNLGlGQUFpRixDQUFBO0FBRzVILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FJcEIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDVixPQUFPLHlCQUF5QixDQUFDLFNBQVMsQ0FDdEMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUM1QztRQUNJLGFBQWEsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDO0tBQ25DLENBQ0osQ0FBQTtBQUNMLENBQUMsQ0FBQSJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as p_ from 'pareto-core/implementation/transformer';
|
|
2
|
-
import * as s_in from "
|
|
3
|
-
import * as s_out from "pareto-filesystem-unrestricted-api/modules/helpers/schemas/to_be_written_directory_content";
|
|
4
|
-
import * as s_parameters from "
|
|
2
|
+
import * as s_in from "../schema.js";
|
|
3
|
+
import * as s_out from "pareto-filesystem-unrestricted-api/modules/helpers/schemas/to_be_written_directory_content/schema";
|
|
4
|
+
import * as s_parameters from "../../directory_content_writing/schema.js";
|
|
5
5
|
export declare const Directory: p_.Transformer_With_Parameter<s_in.Directory, s_out.Directory, s_parameters.Parameters>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as p_ from 'pareto-core/implementation/transformer';
|
|
2
|
+
import p_add_id_suffix from 'pareto-core/implementation/transformer/specials/add_id_suffix';
|
|
3
|
+
import * as s_in from "../schema.js";
|
|
4
|
+
import * as s_out from "pareto-filesystem-unrestricted-api/modules/helpers/schemas/to_be_written_directory_content/schema";
|
|
5
|
+
import * as s_parameters from "../../directory_content_writing/schema.js";
|
|
6
|
+
//dependencies
|
|
7
|
+
import * as t_to_serialized from "./serialized.js";
|
|
8
|
+
export const Directory = ($, $p) => p_.from.state($.content).decide(($) => {
|
|
9
|
+
switch ($[0]) {
|
|
10
|
+
case 'files': return p_.ss($, ($) => p_.from.dictionary(p_add_id_suffix($, ".ts")).map(($, id) => ['file', {
|
|
11
|
+
'content': {
|
|
12
|
+
'lines': t_to_serialized.Source_File($, $p['serialization parameters']),
|
|
13
|
+
'parameters': $p['file write parameters']
|
|
14
|
+
}
|
|
15
|
+
}]));
|
|
16
|
+
case 'directories': return p_.ss($, ($) => p_.from.dictionary($).map(($, id) => ['directory', Directory($, $p)]));
|
|
17
|
+
case 'mixed': return p_.ss($, ($) => p_.from.dictionary($).map(($, id) => {
|
|
18
|
+
switch ($[0]) {
|
|
19
|
+
case 'file': return ['file', {
|
|
20
|
+
'content': {
|
|
21
|
+
'lines': t_to_serialized.Source_File($[1], $p['serialization parameters']),
|
|
22
|
+
'parameters': $p['file write parameters']
|
|
23
|
+
}
|
|
24
|
+
}];
|
|
25
|
+
case 'directory': return ['directory', Directory($[1], $p)];
|
|
26
|
+
default: return p_.au($[0]);
|
|
27
|
+
}
|
|
28
|
+
}));
|
|
29
|
+
default: return p_.au($[0]);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9fYmVfd3JpdHRlbl9kaXJlY3RvcnlfY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3R5cGVzY3JpcHRfbGlnaHQvc2NoZW1hcy90eXBlc2NyaXB0X2xpZ2h0L3RyYW5zZm9ybWVycy90b19iZV93cml0dGVuX2RpcmVjdG9yeV9jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDNUQsT0FBTyxlQUFlLE1BQU0sK0RBQStELENBQUE7QUFFM0YsT0FBTyxLQUFLLElBQUksTUFBTSxjQUFjLENBQUE7QUFDcEMsT0FBTyxLQUFLLEtBQUssTUFBTSxtR0FBbUcsQ0FBQTtBQUMxSCxPQUFPLEtBQUssWUFBWSxNQUFNLDJDQUEyQyxDQUFBO0FBRXpFLGNBQWM7QUFFZCxPQUFPLEtBQUssZUFBZSxNQUFNLGlCQUFpQixDQUFBO0FBRWxELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FJbEIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUMxQyxDQUFDLENBQUMsRUFBbUIsRUFBRTtJQUNuQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1gsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FDbkQsZUFBZSxDQUNYLENBQUMsRUFDRCxLQUFLLENBQ1IsQ0FDSixDQUFDLEdBQUcsQ0FDRCxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO2dCQUM1QixTQUFTLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQ2hDLENBQUMsRUFDRCxFQUFFLENBQUMsMEJBQTBCLENBQUMsQ0FDakM7b0JBQ0QsWUFBWSxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDNUM7YUFDSixDQUFDLENBQ0wsQ0FBQyxDQUFBO1FBQ0YsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQ2hFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBYyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUN6RCxDQUFDLENBQUE7UUFDRixLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDMUQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFjLEVBQUU7WUFDbEIsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxLQUFLLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7d0JBQ3pCLFNBQVMsRUFBRTs0QkFDUCxPQUFPLEVBQUUsZUFBZSxDQUFDLFdBQVcsQ0FDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNKLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxDQUNqQzs0QkFDRCxZQUFZLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixDQUFDO3lCQUM1QztxQkFDSixDQUFDLENBQUE7Z0JBQ0YsS0FBSyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtnQkFDM0QsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQy9CLENBQUM7UUFDTCxDQUFDLENBQ0osQ0FBQyxDQUFBO1FBQ0YsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQy9CLENBQUM7QUFDTCxDQUFDLENBQ0osQ0FBQSJ9
|