typia 3.8.9 → 3.9.0-dev.20230604
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/lib/IRandomGenerator.d.ts +1 -0
- package/lib/factories/IdentifierFactory.js +2 -1
- package/lib/factories/IdentifierFactory.js.map +1 -1
- package/lib/factories/MetadataCollection.d.ts +22 -4
- package/lib/factories/MetadataCollection.js +121 -28
- package/lib/factories/MetadataCollection.js.map +1 -1
- package/lib/factories/MetadataFactory.d.ts +1 -0
- package/lib/factories/MetadataFactory.js +6 -48
- package/lib/factories/MetadataFactory.js.map +1 -1
- package/lib/factories/MetadataTagFactory.js +5 -3
- package/lib/factories/MetadataTagFactory.js.map +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_array.d.ts +5 -0
- package/lib/factories/internal/metadata/emplace_metadata_array.js +38 -0
- package/lib/factories/internal/metadata/emplace_metadata_array.js.map +1 -0
- package/lib/factories/internal/metadata/emplace_metadata_definition.d.ts +5 -0
- package/lib/factories/internal/metadata/emplace_metadata_definition.js +38 -0
- package/lib/factories/internal/metadata/emplace_metadata_definition.js.map +1 -0
- package/lib/factories/internal/metadata/emplace_metadata_object.js +4 -4
- package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +5 -0
- package/lib/factories/internal/metadata/emplace_metadata_tuple.js +58 -0
- package/lib/factories/internal/metadata/emplace_metadata_tuple.js.map +1 -0
- package/lib/factories/internal/metadata/explore_metadata.d.ts +1 -1
- package/lib/factories/internal/metadata/explore_metadata.js +11 -34
- package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata.d.ts +1 -1
- package/lib/factories/internal/metadata/iterate_metadata.js +5 -2
- package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_array.js +4 -5
- package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_collection.d.ts +2 -0
- package/lib/factories/internal/metadata/iterate_metadata_collection.js +151 -0
- package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -0
- package/lib/factories/internal/metadata/iterate_metadata_definition.d.ts +5 -0
- package/lib/factories/internal/metadata/iterate_metadata_definition.js +24 -0
- package/lib/factories/internal/metadata/iterate_metadata_definition.js.map +1 -0
- package/lib/factories/internal/metadata/iterate_metadata_object.js +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_sort.d.ts +3 -0
- package/lib/factories/internal/metadata/iterate_metadata_sort.js +156 -0
- package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -0
- package/lib/factories/internal/metadata/iterate_metadata_tuple.js +3 -26
- package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_union.js +3 -3
- package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
- package/lib/metadata/IMetadata.d.ts +3 -2
- package/lib/metadata/IMetadataAlias.d.ts +10 -0
- package/lib/metadata/IMetadataAlias.js +3 -0
- package/lib/metadata/IMetadataAlias.js.map +1 -0
- package/lib/metadata/IMetadataApplication.d.ts +2 -2
- package/lib/metadata/IMetadataArray.d.ts +8 -0
- package/lib/metadata/IMetadataArray.js +3 -0
- package/lib/metadata/IMetadataArray.js.map +1 -0
- package/lib/metadata/IMetadataCollection.d.ts +10 -0
- package/lib/metadata/IMetadataCollection.js +3 -0
- package/lib/metadata/IMetadataCollection.js.map +1 -0
- package/lib/metadata/IMetadataDictionary.js +3 -0
- package/lib/metadata/IMetadataDictionary.js.map +1 -0
- package/lib/metadata/IMetadataObject.d.ts +3 -0
- package/lib/metadata/IMetadataProperty.d.ts +1 -1
- package/lib/metadata/IMetadataTuple.d.ts +8 -0
- package/lib/metadata/IMetadataTuple.js +3 -0
- package/lib/metadata/IMetadataTuple.js.map +1 -0
- package/lib/metadata/Metadata.d.ts +24 -21
- package/lib/metadata/Metadata.js +323 -262
- package/lib/metadata/Metadata.js.map +1 -1
- package/lib/metadata/MetadataAlias.d.ts +16 -0
- package/lib/metadata/MetadataAlias.js +39 -0
- package/lib/metadata/MetadataAlias.js.map +1 -0
- package/lib/metadata/MetadataArray.d.ts +12 -0
- package/lib/metadata/MetadataArray.js +36 -0
- package/lib/metadata/MetadataArray.js.map +1 -0
- package/lib/metadata/MetadataObject.d.ts +4 -0
- package/lib/metadata/MetadataObject.js +3 -5
- package/lib/metadata/MetadataObject.js.map +1 -1
- package/lib/metadata/MetadataProperty.d.ts +1 -1
- package/lib/metadata/MetadataProperty.js +3 -3
- package/lib/metadata/MetadataProperty.js.map +1 -1
- package/lib/metadata/MetadataTuple.d.ts +12 -0
- package/lib/metadata/MetadataTuple.js +36 -0
- package/lib/metadata/MetadataTuple.js.map +1 -0
- package/lib/programmers/ApplicationProgrammer.js +3 -3
- package/lib/programmers/ApplicationProgrammer.js.map +1 -1
- package/lib/programmers/AssertProgrammer.js +13 -21
- package/lib/programmers/AssertProgrammer.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.d.ts +6 -7
- package/lib/programmers/CheckerProgrammer.js +276 -185
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/CloneProgrammer.js +312 -204
- package/lib/programmers/CloneProgrammer.js.map +1 -1
- package/lib/programmers/FeatureProgrammer.d.ts +21 -27
- package/lib/programmers/FeatureProgrammer.js +60 -63
- package/lib/programmers/FeatureProgrammer.js.map +1 -1
- package/lib/programmers/IsProgrammer.d.ts +3 -3
- package/lib/programmers/IsProgrammer.js +43 -28
- package/lib/programmers/IsProgrammer.js.map +1 -1
- package/lib/programmers/LiteralsProgrammer.js +1 -0
- package/lib/programmers/LiteralsProgrammer.js.map +1 -1
- package/lib/programmers/PruneProgrammer.js +270 -176
- package/lib/programmers/PruneProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +124 -32
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/StringifyProgrammer.js +462 -356
- package/lib/programmers/StringifyProgrammer.js.map +1 -1
- package/lib/programmers/ValidateProgrammer.js +9 -9
- package/lib/programmers/ValidateProgrammer.js.map +1 -1
- package/lib/programmers/helpers/FunctionImporeter.d.ts +2 -0
- package/lib/programmers/helpers/FunctionImporeter.js +17 -2
- package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
- package/lib/programmers/helpers/RandomJoiner.d.ts +6 -1
- package/lib/programmers/helpers/RandomJoiner.js +11 -14
- package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
- package/lib/programmers/helpers/UnionExplorer.d.ts +12 -10
- package/lib/programmers/helpers/UnionExplorer.js +47 -12
- package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
- package/lib/programmers/helpers/UnionPredicator.js +1 -1
- package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
- package/lib/programmers/helpers/disable_function_importer_declare.js +1 -0
- package/lib/programmers/helpers/disable_function_importer_declare.js.map +1 -1
- package/lib/programmers/internal/JSON_SCHEMA_PREFIX.d.ts +1 -1
- package/lib/programmers/internal/JSON_SCHEMA_PREFIX.js +2 -2
- package/lib/programmers/internal/JSON_SCHEMA_PREFIX.js.map +1 -1
- package/lib/programmers/internal/application_array.js +41 -21
- package/lib/programmers/internal/application_array.js.map +1 -1
- package/lib/programmers/internal/application_boolean.js +1 -1
- package/lib/programmers/internal/application_boolean.js.map +1 -1
- package/lib/programmers/internal/application_constant.js +2 -2
- package/lib/programmers/internal/application_constant.js.map +1 -1
- package/lib/programmers/internal/application_default.js +3 -3
- package/lib/programmers/internal/application_default.js.map +1 -1
- package/lib/programmers/internal/application_definition.d.ts +5 -0
- package/lib/programmers/internal/application_definition.js +45 -0
- package/lib/programmers/internal/application_definition.js.map +1 -0
- package/lib/programmers/internal/application_native.js +14 -11
- package/lib/programmers/internal/application_native.js.map +1 -1
- package/lib/programmers/internal/application_object.js +19 -14
- package/lib/programmers/internal/application_object.js.map +1 -1
- package/lib/programmers/internal/application_schema.js +28 -31
- package/lib/programmers/internal/application_schema.js.map +1 -1
- package/lib/programmers/internal/application_tuple.js +34 -5
- package/lib/programmers/internal/application_tuple.js.map +1 -1
- package/lib/programmers/internal/check_union_array_like.js +54 -63
- package/lib/programmers/internal/check_union_array_like.js.map +1 -1
- package/lib/programmers/internal/feature_object_entries.js +2 -2
- package/lib/programmers/internal/feature_object_entries.js.map +1 -1
- package/lib/programmers/internal/wrap_metadata_rest_tuple.d.ts +2 -0
- package/lib/programmers/internal/wrap_metadata_rest_tuple.js +18 -0
- package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -0
- package/lib/schemas/IJsonApplication.d.ts +0 -4
- package/lib/schemas/IJsonComponents.d.ts +16 -4
- package/lib/schemas/IJsonSchema.d.ts +1 -1
- package/lib/transformers/CallExpressionTransformer.js.map +1 -1
- package/lib/transformers/FileTransformer.js +3 -3
- package/lib/transformers/FileTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/ApplicationTransformer.js +1 -0
- package/lib/transformers/features/miscellaneous/ApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/MetadataTransformer.js +2 -1
- package/lib/transformers/features/miscellaneous/MetadataTransformer.js.map +1 -1
- package/lib/utils/ArrayUtil.d.ts +1 -1
- package/lib/utils/ArrayUtil.js +2 -1
- package/lib/utils/ArrayUtil.js.map +1 -1
- package/lib/utils/RandomGenerator.js +2 -3
- package/lib/utils/RandomGenerator.js.map +1 -1
- package/package.json +6 -1
- package/src/IRandomGenerator.ts +1 -0
- package/src/factories/IdentifierFactory.ts +3 -1
- package/src/factories/MetadataCollection.ts +170 -34
- package/src/factories/MetadataFactory.ts +7 -29
- package/src/factories/MetadataTagFactory.ts +6 -3
- package/src/factories/internal/metadata/emplace_metadata_array.ts +34 -0
- package/src/factories/internal/metadata/emplace_metadata_definition.ts +35 -0
- package/src/factories/internal/metadata/emplace_metadata_object.ts +4 -4
- package/src/factories/internal/metadata/emplace_metadata_tuple.ts +50 -0
- package/src/factories/internal/metadata/explore_metadata.ts +18 -44
- package/src/factories/internal/metadata/iterate_metadata.ts +13 -3
- package/src/factories/internal/metadata/iterate_metadata_array.ts +7 -11
- package/src/factories/internal/metadata/iterate_metadata_collection.ts +130 -0
- package/src/factories/internal/metadata/iterate_metadata_definition.ts +30 -0
- package/src/factories/internal/metadata/iterate_metadata_object.ts +1 -0
- package/src/factories/internal/metadata/iterate_metadata_sort.ts +68 -0
- package/src/factories/internal/metadata/iterate_metadata_tuple.ts +7 -31
- package/src/factories/internal/metadata/iterate_metadata_union.ts +13 -2
- package/src/metadata/IMetadata.ts +3 -2
- package/src/metadata/IMetadataAlias.ts +12 -0
- package/src/metadata/IMetadataApplication.ts +2 -2
- package/src/metadata/IMetadataArray.ts +10 -0
- package/src/metadata/IMetadataCollection.ts +11 -0
- package/src/metadata/IMetadataDictionary.ts +14 -0
- package/src/metadata/IMetadataObject.ts +2 -13
- package/src/metadata/IMetadataProperty.ts +1 -1
- package/src/metadata/IMetadataTuple.ts +10 -0
- package/src/metadata/Metadata.ts +180 -134
- package/src/metadata/MetadataAlias.ts +61 -0
- package/src/metadata/MetadataArray.ts +52 -0
- package/src/metadata/MetadataObject.ts +7 -20
- package/src/metadata/MetadataProperty.ts +5 -5
- package/src/metadata/MetadataTuple.ts +53 -0
- package/src/programmers/ApplicationProgrammer.ts +1 -2
- package/src/programmers/AssertProgrammer.ts +45 -39
- package/src/programmers/CheckerProgrammer.ts +612 -331
- package/src/programmers/CloneProgrammer.ts +344 -138
- package/src/programmers/FeatureProgrammer.ts +110 -115
- package/src/programmers/IsProgrammer.ts +86 -52
- package/src/programmers/LiteralsProgrammer.ts +1 -0
- package/src/programmers/PruneProgrammer.ts +304 -101
- package/src/programmers/RandomProgrammer.ts +227 -61
- package/src/programmers/StringifyProgrammer.ts +374 -182
- package/src/programmers/ValidateProgrammer.ts +41 -44
- package/src/programmers/helpers/FunctionImporeter.ts +35 -11
- package/src/programmers/helpers/RandomJoiner.ts +25 -13
- package/src/programmers/helpers/UnionExplorer.ts +76 -50
- package/src/programmers/helpers/UnionPredicator.ts +1 -1
- package/src/programmers/helpers/disable_function_importer_declare.ts +5 -0
- package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
- package/src/programmers/internal/application_array.ts +48 -16
- package/src/programmers/internal/application_boolean.ts +1 -1
- package/src/programmers/internal/application_constant.ts +2 -2
- package/src/programmers/internal/application_default.ts +3 -3
- package/src/programmers/internal/application_definition.ts +45 -0
- package/src/programmers/internal/application_native.ts +15 -12
- package/src/programmers/internal/application_object.ts +17 -12
- package/src/programmers/internal/application_schema.ts +31 -65
- package/src/programmers/internal/application_tuple.ts +63 -13
- package/src/programmers/internal/check_union_array_like.ts +249 -191
- package/src/programmers/internal/feature_object_entries.ts +2 -2
- package/src/programmers/internal/wrap_metadata_rest_tuple.ts +16 -0
- package/src/schemas/IJsonApplication.ts +0 -5
- package/src/schemas/IJsonComponents.ts +17 -5
- package/src/schemas/IJsonSchema.ts +1 -1
- package/src/transformers/CallExpressionTransformer.ts +2 -0
- package/src/transformers/FileTransformer.ts +8 -8
- package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +1 -0
- package/src/transformers/features/miscellaneous/MetadataTransformer.ts +2 -1
- package/src/utils/ArrayUtil.ts +3 -2
- package/src/utils/RandomGenerator.ts +3 -3
- package/lib/programmers/internal/check_union_tuple.js +0 -15
- package/lib/programmers/internal/check_union_tuple.js.map +0 -1
- package/src/programmers/internal/check_union_tuple.ts +0 -33
- /package/lib/{programmers/internal/check_union_tuple.d.ts → metadata/IMetadataDictionary.d.ts} +0 -0
|
@@ -56,6 +56,7 @@ var ExpressionFactory_1 = require("../factories/ExpressionFactory");
|
|
|
56
56
|
var IdentifierFactory_1 = require("../factories/IdentifierFactory");
|
|
57
57
|
var MetadataCollection_1 = require("../factories/MetadataCollection");
|
|
58
58
|
var MetadataFactory_1 = require("../factories/MetadataFactory");
|
|
59
|
+
var StatementFactory_1 = require("../factories/StatementFactory");
|
|
59
60
|
var TypeFactory_1 = require("../factories/TypeFactory");
|
|
60
61
|
var ValueFactory_1 = require("../factories/ValueFactory");
|
|
61
62
|
var Metadata_1 = require("../metadata/Metadata");
|
|
@@ -71,6 +72,7 @@ var UnionExplorer_1 = require("./helpers/UnionExplorer");
|
|
|
71
72
|
var check_native_1 = require("./internal/check_native");
|
|
72
73
|
var decode_union_object_1 = require("./internal/decode_union_object");
|
|
73
74
|
var feature_object_entries_1 = require("./internal/feature_object_entries");
|
|
75
|
+
var wrap_metadata_rest_tuple_1 = require("./internal/wrap_metadata_rest_tuple");
|
|
74
76
|
var StringifyProgrammer;
|
|
75
77
|
(function (StringifyProgrammer) {
|
|
76
78
|
StringifyProgrammer.generate = function (project, modulo) {
|
|
@@ -80,338 +82,396 @@ var StringifyProgrammer;
|
|
|
80
82
|
};
|
|
81
83
|
StringifyProgrammer.write = function (project) { return function (modulo) {
|
|
82
84
|
var importer = new FunctionImporeter_1.FunctionImporter();
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
var isUnioners = IsProgrammer_1.IsProgrammer.write_unioners(project)(importer)(collection);
|
|
86
|
-
return __spreadArray(__spreadArray(__spreadArray([], __read(importer.declare(modulo)), false), __read(isFunctors.filter(function (_, i) {
|
|
87
|
-
return importer.hasLocal("$io".concat(i));
|
|
88
|
-
})), false), __read(isUnioners.filter(function (_, i) {
|
|
89
|
-
return importer.hasLocal("$iu".concat(i));
|
|
90
|
-
})), false);
|
|
91
|
-
} }))(importer);
|
|
85
|
+
var config = configure(project)(importer);
|
|
86
|
+
return FeatureProgrammer_1.FeatureProgrammer.write(project)(__assign(__assign({}, config), { addition: function (collection) { return __spreadArray(__spreadArray([], __read(IsProgrammer_1.IsProgrammer.write_function_statements(project)(importer)(collection)), false), __read(importer.declare(modulo)), false); } }))(importer);
|
|
92
87
|
}; };
|
|
93
|
-
var
|
|
94
|
-
return function (
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
:
|
|
105
|
-
|
|
106
|
-
return explore.from === "array"
|
|
107
|
-
? typescript_1.default.factory.createStringLiteral("null")
|
|
108
|
-
: typescript_1.default.factory.createIdentifier("undefined");
|
|
109
|
-
else
|
|
110
|
-
return typescript_1.default.factory.createStringLiteral("null");
|
|
111
|
-
}
|
|
112
|
-
var unions = [];
|
|
113
|
-
if (meta.resolved !== null)
|
|
114
|
-
if (size === 1)
|
|
115
|
-
return decode_to_json(project, importer)(input, meta.resolved, explore, tags);
|
|
116
|
-
else
|
|
117
|
-
unions.push({
|
|
118
|
-
type: "resolved",
|
|
119
|
-
is: function () { return IsProgrammer_1.IsProgrammer.decode_to_json(false)(input); },
|
|
120
|
-
value: function () {
|
|
121
|
-
return decode_to_json(project, importer)(input, meta.resolved, explore, tags);
|
|
122
|
-
},
|
|
123
|
-
});
|
|
124
|
-
else if (meta.functional === true)
|
|
125
|
-
unions.push({
|
|
126
|
-
type: "functional",
|
|
127
|
-
is: function () { return IsProgrammer_1.IsProgrammer.decode_functional(input); },
|
|
128
|
-
value: function () { return decode_functional(explore); },
|
|
88
|
+
var write_array_functions = function (config) {
|
|
89
|
+
return function (importer) {
|
|
90
|
+
return function (collection) {
|
|
91
|
+
return collection
|
|
92
|
+
.arrays()
|
|
93
|
+
.filter(function (a) { return a.recursive; })
|
|
94
|
+
.map(function (array, i) {
|
|
95
|
+
return StatementFactory_1.StatementFactory.constant("".concat(config.prefix, "a").concat(i), typescript_1.default.factory.createArrowFunction(undefined, undefined, FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations(config)(TypeFactory_1.TypeFactory.keyword("any"))(typescript_1.default.factory.createIdentifier("input")), TypeFactory_1.TypeFactory.keyword("any"), undefined, decode_array_inline(config)(importer)(typescript_1.default.factory.createIdentifier("input"), array, {
|
|
96
|
+
tracable: config.trace,
|
|
97
|
+
source: "function",
|
|
98
|
+
from: "array",
|
|
99
|
+
postfix: "",
|
|
100
|
+
})));
|
|
129
101
|
});
|
|
130
|
-
if (meta.templates.length ||
|
|
131
|
-
ArrayUtil_1.ArrayUtil.has(meta.constants, function (c) { return c.type === "string"; }))
|
|
132
|
-
if (AtomicPredicator_1.AtomicPredicator.template(meta)) {
|
|
133
|
-
var partial_1 = Metadata_1.Metadata.initialize();
|
|
134
|
-
partial_1.atomics.push("string"),
|
|
135
|
-
unions.push({
|
|
136
|
-
type: "template literal",
|
|
137
|
-
is: function () {
|
|
138
|
-
return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, partial_1, explore, [], []);
|
|
139
|
-
},
|
|
140
|
-
value: function () {
|
|
141
|
-
return decode_atomic(project)(importer)(input, "string", explore, tags);
|
|
142
|
-
},
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
var _loop_1 = function (constant) {
|
|
146
|
-
if (AtomicPredicator_1.AtomicPredicator.constant(meta)(constant.type) === false)
|
|
147
|
-
return "continue";
|
|
148
|
-
else if (constant.type !== "string")
|
|
149
|
-
unions.push({
|
|
150
|
-
type: "atomic",
|
|
151
|
-
is: function () {
|
|
152
|
-
return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, (function () {
|
|
153
|
-
var partial = Metadata_1.Metadata.initialize();
|
|
154
|
-
partial.atomics.push(constant.type);
|
|
155
|
-
return partial;
|
|
156
|
-
})(), explore, [], []);
|
|
157
|
-
},
|
|
158
|
-
value: function () {
|
|
159
|
-
return decode_atomic(project)(importer)(input, constant.type, explore, tags);
|
|
160
|
-
},
|
|
161
|
-
});
|
|
162
|
-
else if (meta.templates.length === 0)
|
|
163
|
-
unions.push({
|
|
164
|
-
type: "const string",
|
|
165
|
-
is: function () {
|
|
166
|
-
return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, (function () {
|
|
167
|
-
var partial = Metadata_1.Metadata.initialize();
|
|
168
|
-
partial.atomics.push("string");
|
|
169
|
-
return partial;
|
|
170
|
-
})(), explore, [], []);
|
|
171
|
-
},
|
|
172
|
-
value: function () {
|
|
173
|
-
return decode_constant_string(project)(importer)(input, __spreadArray([], __read(constant.values), false), explore);
|
|
174
|
-
},
|
|
175
|
-
});
|
|
176
102
|
};
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
type: "atomic",
|
|
194
|
-
is: function () {
|
|
195
|
-
return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, (function () {
|
|
196
|
-
var partial = Metadata_1.Metadata.initialize();
|
|
197
|
-
partial.atomics.push(type);
|
|
198
|
-
return partial;
|
|
199
|
-
})(), explore, [], []);
|
|
200
|
-
},
|
|
201
|
-
value: function () {
|
|
202
|
-
return decode_atomic(project)(importer)(input, type, explore, tags);
|
|
203
|
-
},
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
var write_tuple_functions = function (project) {
|
|
106
|
+
return function (config) {
|
|
107
|
+
return function (importer) {
|
|
108
|
+
return function (collection) {
|
|
109
|
+
return collection
|
|
110
|
+
.tuples()
|
|
111
|
+
.filter(function (t) { return t.recursive; })
|
|
112
|
+
.map(function (tuple, i) {
|
|
113
|
+
return StatementFactory_1.StatementFactory.constant("".concat(config.prefix, "t").concat(i), typescript_1.default.factory.createArrowFunction(undefined, undefined, FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations(config)(TypeFactory_1.TypeFactory.keyword("any"))(typescript_1.default.factory.createIdentifier("input")), TypeFactory_1.TypeFactory.keyword("any"), undefined, decode_tuple_inline(project)(config)(importer)(typescript_1.default.factory.createIdentifier("input"), tuple, {
|
|
114
|
+
tracable: config.trace,
|
|
115
|
+
source: "function",
|
|
116
|
+
from: "array",
|
|
117
|
+
postfix: "",
|
|
118
|
+
})));
|
|
204
119
|
});
|
|
120
|
+
};
|
|
205
121
|
};
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
var decode = function (project) {
|
|
125
|
+
return function (config) {
|
|
126
|
+
return function (importer) {
|
|
127
|
+
return function (input, meta, explore) {
|
|
128
|
+
var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e;
|
|
129
|
+
if (meta.any === true)
|
|
130
|
+
return wrap_required(input, meta, explore)(wrap_functional(input, meta, explore)(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("JSON.stringify"), undefined, [input])));
|
|
131
|
+
var size = meta.size();
|
|
132
|
+
if (size === 0 &&
|
|
133
|
+
(meta.required === false || meta.nullable === true)) {
|
|
134
|
+
if (meta.required === false && meta.nullable === true)
|
|
135
|
+
return explore.from === "array"
|
|
136
|
+
? typescript_1.default.factory.createStringLiteral("null")
|
|
137
|
+
: typescript_1.default.factory.createConditionalExpression(typescript_1.default.factory.createStrictEquality(typescript_1.default.factory.createNull(), input), undefined, typescript_1.default.factory.createStringLiteral("null"), undefined, typescript_1.default.factory.createIdentifier("undefined"));
|
|
138
|
+
else if (meta.required === false)
|
|
139
|
+
return explore.from === "array"
|
|
140
|
+
? typescript_1.default.factory.createStringLiteral("null")
|
|
141
|
+
: typescript_1.default.factory.createIdentifier("undefined");
|
|
142
|
+
else
|
|
143
|
+
return typescript_1.default.factory.createStringLiteral("null");
|
|
226
144
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
145
|
+
var unions = [];
|
|
146
|
+
if (meta.resolved !== null)
|
|
147
|
+
if (size === 1)
|
|
148
|
+
return decode_to_json(project)(config)(importer)(input, meta.resolved, explore);
|
|
149
|
+
else
|
|
150
|
+
unions.push({
|
|
151
|
+
type: "resolved",
|
|
152
|
+
is: function () { return IsProgrammer_1.IsProgrammer.decode_to_json(false)(input); },
|
|
153
|
+
value: function () {
|
|
154
|
+
return decode_to_json(project)(config)(importer)(input, meta.resolved, explore);
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
else if (meta.functional === true)
|
|
158
|
+
unions.push({
|
|
159
|
+
type: "functional",
|
|
160
|
+
is: function () { return IsProgrammer_1.IsProgrammer.decode_functional(input); },
|
|
161
|
+
value: function () { return decode_functional(explore); },
|
|
162
|
+
});
|
|
163
|
+
if (meta.templates.length ||
|
|
164
|
+
ArrayUtil_1.ArrayUtil.has(meta.constants, function (c) { return c.type === "string"; }))
|
|
165
|
+
if (AtomicPredicator_1.AtomicPredicator.template(meta)) {
|
|
166
|
+
var partial_1 = Metadata_1.Metadata.initialize();
|
|
167
|
+
partial_1.atomics.push("string"),
|
|
168
|
+
unions.push({
|
|
169
|
+
type: "template literal",
|
|
170
|
+
is: function () {
|
|
171
|
+
return IsProgrammer_1.IsProgrammer.decode(project)(importer)(input, partial_1, explore, [], []);
|
|
172
|
+
},
|
|
173
|
+
value: function () {
|
|
174
|
+
return decode_atomic(project)(importer)(input, "string", explore);
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
var _loop_1 = function (constant) {
|
|
179
|
+
if (AtomicPredicator_1.AtomicPredicator.constant(meta)(constant.type) === false)
|
|
180
|
+
return "continue";
|
|
181
|
+
else if (constant.type !== "string")
|
|
182
|
+
unions.push({
|
|
183
|
+
type: "atomic",
|
|
184
|
+
is: function () {
|
|
185
|
+
return IsProgrammer_1.IsProgrammer.decode(project)(importer)(input, (function () {
|
|
186
|
+
var partial = Metadata_1.Metadata.initialize();
|
|
187
|
+
partial.atomics.push(constant.type);
|
|
188
|
+
return partial;
|
|
189
|
+
})(), explore, [], []);
|
|
190
|
+
},
|
|
191
|
+
value: function () {
|
|
192
|
+
return decode_atomic(project)(importer)(input, constant.type, explore);
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
else if (meta.templates.length === 0)
|
|
196
|
+
unions.push({
|
|
197
|
+
type: "const string",
|
|
198
|
+
is: function () {
|
|
199
|
+
return IsProgrammer_1.IsProgrammer.decode(project)(importer)(input, (function () {
|
|
200
|
+
var partial = Metadata_1.Metadata.initialize();
|
|
201
|
+
partial.atomics.push("string");
|
|
202
|
+
return partial;
|
|
203
|
+
})(), explore, [], []);
|
|
204
|
+
},
|
|
205
|
+
value: function () {
|
|
206
|
+
return decode_constant_string(project)(importer)(input, __spreadArray([], __read(constant.values), false), explore);
|
|
207
|
+
},
|
|
208
|
+
});
|
|
209
|
+
};
|
|
230
210
|
try {
|
|
231
|
-
|
|
211
|
+
for (var _f = __values(meta.constants), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
212
|
+
var constant = _g.value;
|
|
213
|
+
_loop_1(constant);
|
|
214
|
+
}
|
|
232
215
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
var partial = Metadata_1.Metadata.initialize();
|
|
240
|
-
partial.tuples.push(tuple);
|
|
241
|
-
return partial;
|
|
242
|
-
})(), explore, [], []);
|
|
243
|
-
},
|
|
244
|
-
value: function () {
|
|
245
|
-
return decode_tuple(project)(importer)(input, tuple, explore, tags);
|
|
246
|
-
},
|
|
247
|
-
});
|
|
248
|
-
};
|
|
249
|
-
try {
|
|
250
|
-
for (var _k = __values(meta.tuples), _l = _k.next(); !_l.done; _l = _k.next()) {
|
|
251
|
-
var tuple = _l.value;
|
|
252
|
-
_loop_3(tuple);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
256
|
-
finally {
|
|
257
|
-
try {
|
|
258
|
-
if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
|
|
259
|
-
}
|
|
260
|
-
finally { if (e_3) throw e_3.error; }
|
|
261
|
-
}
|
|
262
|
-
if (meta.arrays.length) {
|
|
263
|
-
try {
|
|
264
|
-
for (var _m = __values(meta.arrays), _o = _m.next(); !_o.done; _o = _m.next()) {
|
|
265
|
-
var child = _o.value;
|
|
266
|
-
if (StringifyPredicator_1.StringifyPredicator.undefindable(child))
|
|
267
|
-
throw new Error("Error on typia.stringify(): array cannot contain undefined value (".concat(child.getName(), ")."));
|
|
216
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
217
|
+
finally {
|
|
218
|
+
try {
|
|
219
|
+
if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
|
|
220
|
+
}
|
|
221
|
+
finally { if (e_1) throw e_1.error; }
|
|
268
222
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
223
|
+
var _loop_2 = function (type) {
|
|
224
|
+
if (AtomicPredicator_1.AtomicPredicator.atomic(meta)(type))
|
|
225
|
+
unions.push({
|
|
226
|
+
type: "atomic",
|
|
227
|
+
is: function () {
|
|
228
|
+
return IsProgrammer_1.IsProgrammer.decode(project)(importer)(input, (function () {
|
|
229
|
+
var partial = Metadata_1.Metadata.initialize();
|
|
230
|
+
partial.atomics.push(type);
|
|
231
|
+
return partial;
|
|
232
|
+
})(), explore, [], []);
|
|
233
|
+
},
|
|
234
|
+
value: function () {
|
|
235
|
+
return decode_atomic(project)(importer)(input, type, explore);
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
};
|
|
272
239
|
try {
|
|
273
|
-
|
|
240
|
+
for (var _h = __values(meta.atomics), _j = _h.next(); !_j.done; _j = _h.next()) {
|
|
241
|
+
var type = _j.value;
|
|
242
|
+
_loop_2(type);
|
|
243
|
+
}
|
|
274
244
|
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
245
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
246
|
+
finally {
|
|
247
|
+
try {
|
|
248
|
+
if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
|
|
249
|
+
}
|
|
250
|
+
finally { if (e_2) throw e_2.error; }
|
|
280
251
|
}
|
|
281
|
-
|
|
282
|
-
|
|
252
|
+
var _loop_3 = function (tuple) {
|
|
253
|
+
var e_6, _r;
|
|
254
|
+
try {
|
|
255
|
+
for (var _s = (e_6 = void 0, __values(tuple.elements)), _t = _s.next(); !_t.done; _t = _s.next()) {
|
|
256
|
+
var child = _t.value;
|
|
257
|
+
if (StringifyPredicator_1.StringifyPredicator.undefindable(meta))
|
|
258
|
+
throw new Error("Error on typia.stringify(): tuple cannot contain undefined value - (".concat(child.getName(), ")."));
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
262
|
+
finally {
|
|
263
|
+
try {
|
|
264
|
+
if (_t && !_t.done && (_r = _s.return)) _r.call(_s);
|
|
265
|
+
}
|
|
266
|
+
finally { if (e_6) throw e_6.error; }
|
|
267
|
+
}
|
|
268
|
+
unions.push({
|
|
269
|
+
type: "tuple",
|
|
270
|
+
is: function () {
|
|
271
|
+
return IsProgrammer_1.IsProgrammer.decode(project)(importer)(input, (function () {
|
|
272
|
+
var partial = Metadata_1.Metadata.initialize();
|
|
273
|
+
partial.tuples.push(tuple);
|
|
274
|
+
return partial;
|
|
275
|
+
})(), explore, [], []);
|
|
276
|
+
},
|
|
277
|
+
value: function () {
|
|
278
|
+
return decode_tuple(project)(config)(importer)(input, tuple, explore);
|
|
279
|
+
},
|
|
280
|
+
});
|
|
283
281
|
};
|
|
284
|
-
unions.push({
|
|
285
|
-
type: "array",
|
|
286
|
-
is: function () { return ExpressionFactory_1.ExpressionFactory.isArray(input); },
|
|
287
|
-
value: value,
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
if (meta.natives.length) {
|
|
291
|
-
var _loop_4 = function (native) {
|
|
292
|
-
unions.push({
|
|
293
|
-
type: "object",
|
|
294
|
-
is: function () { return (0, check_native_1.check_native)(native)(input); },
|
|
295
|
-
value: function () {
|
|
296
|
-
return AtomicPredicator_1.AtomicPredicator.native(native)
|
|
297
|
-
? decode_atomic(project)(importer)(input, native.toLowerCase(), explore, tags)
|
|
298
|
-
: typescript_1.default.factory.createStringLiteral("{}");
|
|
299
|
-
},
|
|
300
|
-
});
|
|
301
|
-
};
|
|
302
|
-
try {
|
|
303
|
-
for (var _p = __values(meta.natives), _q = _p.next(); !_q.done; _q = _p.next()) {
|
|
304
|
-
var native = _q.value;
|
|
305
|
-
_loop_4(native);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
309
|
-
finally {
|
|
310
282
|
try {
|
|
311
|
-
|
|
283
|
+
for (var _k = __values(meta.tuples), _l = _k.next(); !_l.done; _l = _k.next()) {
|
|
284
|
+
var tuple = _l.value;
|
|
285
|
+
_loop_3(tuple);
|
|
286
|
+
}
|
|
312
287
|
}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
})
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
288
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
289
|
+
finally {
|
|
290
|
+
try {
|
|
291
|
+
if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
|
|
292
|
+
}
|
|
293
|
+
finally { if (e_3) throw e_3.error; }
|
|
294
|
+
}
|
|
295
|
+
if (meta.arrays.length) {
|
|
296
|
+
try {
|
|
297
|
+
for (var _m = __values(meta.arrays), _o = _m.next(); !_o.done; _o = _m.next()) {
|
|
298
|
+
var child = _o.value;
|
|
299
|
+
if (StringifyPredicator_1.StringifyPredicator.undefindable(child.value))
|
|
300
|
+
throw new Error("Error on typia.stringify(): array cannot contain undefined value (".concat(child.value.getName(), ")."));
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
304
|
+
finally {
|
|
305
|
+
try {
|
|
306
|
+
if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
|
|
307
|
+
}
|
|
308
|
+
finally { if (e_4) throw e_4.error; }
|
|
309
|
+
}
|
|
310
|
+
var value = meta.arrays.length === 1
|
|
311
|
+
? function () {
|
|
312
|
+
return decode_array(config)(importer)(input, meta.arrays[0], __assign(__assign({}, explore), { from: "array" }));
|
|
313
|
+
}
|
|
314
|
+
: meta.arrays.some(function (elem) { return elem.value.any; })
|
|
315
|
+
? function () {
|
|
316
|
+
return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("JSON.stringify"), undefined, [input]);
|
|
317
|
+
}
|
|
318
|
+
: function () {
|
|
319
|
+
return explore_arrays(project)(config)(importer)(input, meta.arrays, __assign(__assign({}, explore), { from: "array" }));
|
|
320
|
+
};
|
|
321
|
+
unions.push({
|
|
322
|
+
type: "array",
|
|
323
|
+
is: function () { return ExpressionFactory_1.ExpressionFactory.isArray(input); },
|
|
324
|
+
value: value,
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
if (meta.natives.length) {
|
|
328
|
+
var _loop_4 = function (native) {
|
|
329
|
+
unions.push({
|
|
330
|
+
type: "object",
|
|
331
|
+
is: function () { return (0, check_native_1.check_native)(native)(input); },
|
|
332
|
+
value: function () {
|
|
333
|
+
return AtomicPredicator_1.AtomicPredicator.native(native)
|
|
334
|
+
? decode_atomic(project)(importer)(input, native.toLowerCase(), explore)
|
|
335
|
+
: typescript_1.default.factory.createStringLiteral("{}");
|
|
336
|
+
},
|
|
337
|
+
});
|
|
338
|
+
};
|
|
339
|
+
try {
|
|
340
|
+
for (var _p = __values(meta.natives), _q = _p.next(); !_q.done; _q = _p.next()) {
|
|
341
|
+
var native = _q.value;
|
|
342
|
+
_loop_4(native);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
346
|
+
finally {
|
|
347
|
+
try {
|
|
348
|
+
if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
|
|
349
|
+
}
|
|
350
|
+
finally { if (e_5) throw e_5.error; }
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
if (meta.sets.length)
|
|
354
|
+
unions.push({
|
|
355
|
+
type: "object",
|
|
356
|
+
is: function () { return ExpressionFactory_1.ExpressionFactory.isInstanceOf("Set")(input); },
|
|
357
|
+
value: function () { return typescript_1.default.factory.createStringLiteral("{}"); },
|
|
358
|
+
});
|
|
359
|
+
if (meta.maps.length)
|
|
360
|
+
unions.push({
|
|
361
|
+
type: "object",
|
|
362
|
+
is: function () { return ExpressionFactory_1.ExpressionFactory.isInstanceOf("Map")(input); },
|
|
363
|
+
value: function () { return typescript_1.default.factory.createStringLiteral("{}"); },
|
|
364
|
+
});
|
|
365
|
+
if (meta.objects.length)
|
|
366
|
+
unions.push({
|
|
367
|
+
type: "object",
|
|
368
|
+
is: function () {
|
|
369
|
+
return ExpressionFactory_1.ExpressionFactory.isObject({
|
|
370
|
+
checkNull: true,
|
|
371
|
+
checkArray: meta.objects.some(function (obj) {
|
|
372
|
+
return obj.properties.every(function (prop) {
|
|
373
|
+
return !prop.key.isSoleLiteral() ||
|
|
374
|
+
!prop.value.required;
|
|
375
|
+
});
|
|
376
|
+
}),
|
|
377
|
+
})(input);
|
|
378
|
+
},
|
|
379
|
+
value: function () {
|
|
380
|
+
return meta.isParentResolved() === false &&
|
|
381
|
+
meta.objects.length === 1 &&
|
|
382
|
+
meta.objects[0]._Is_simple()
|
|
383
|
+
? (function () {
|
|
384
|
+
var obj = meta.objects[0];
|
|
385
|
+
var entries = (0, feature_object_entries_1.feature_object_entries)({
|
|
386
|
+
decoder: function () {
|
|
387
|
+
return decode(project)(config)(importer);
|
|
388
|
+
},
|
|
389
|
+
trace: false,
|
|
390
|
+
path: false,
|
|
391
|
+
})(importer)(obj)(typescript_1.default.factory.createAsExpression(input, TypeFactory_1.TypeFactory.keyword("any")));
|
|
392
|
+
return StringifyJoinder_1.StringifyJoiner.object(importer)(typescript_1.default.factory.createAsExpression(input, TypeFactory_1.TypeFactory.keyword("any")), entries);
|
|
393
|
+
})()
|
|
394
|
+
: explore_objects(config)(importer)(input, meta, __assign(__assign({}, explore), { from: "object" }));
|
|
395
|
+
},
|
|
396
|
+
});
|
|
397
|
+
var wrapper = function (output) {
|
|
398
|
+
return wrap_required(input, meta, explore)(wrap_nullable(input, meta)(output));
|
|
399
|
+
};
|
|
400
|
+
if (unions.length === 0)
|
|
401
|
+
return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("JSON.stringify"), undefined, [input]);
|
|
402
|
+
else if (unions.length === 1)
|
|
403
|
+
return wrapper(unions[0].value());
|
|
404
|
+
return wrapper(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createArrowFunction(undefined, undefined, [], undefined, undefined, iterate(importer, input, unions, meta.getName())), undefined, undefined));
|
|
405
|
+
};
|
|
360
406
|
};
|
|
361
|
-
if (unions.length === 0)
|
|
362
|
-
return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("JSON.stringify"), undefined, [input]);
|
|
363
|
-
else if (unions.length === 1)
|
|
364
|
-
return wrapper(unions[0].value());
|
|
365
|
-
return wrapper(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createArrowFunction(undefined, undefined, [], undefined, undefined, iterate(importer, input, unions, meta.getName())), undefined, undefined));
|
|
366
407
|
};
|
|
367
408
|
};
|
|
368
|
-
var decode_array = function (project) { return function (importer) {
|
|
369
|
-
return FeatureProgrammer_1.FeatureProgrammer.decode_array(configure(project)(importer))(importer)(StringifyJoinder_1.StringifyJoiner.array);
|
|
370
|
-
}; };
|
|
371
409
|
var decode_object = function (importer) {
|
|
372
410
|
return FeatureProgrammer_1.FeatureProgrammer.decode_object({
|
|
373
411
|
trace: false,
|
|
374
412
|
path: false,
|
|
375
|
-
|
|
413
|
+
prefix: PREFIX,
|
|
376
414
|
})(importer);
|
|
377
415
|
};
|
|
378
|
-
var
|
|
416
|
+
var decode_array = function (config) {
|
|
379
417
|
return function (importer) {
|
|
380
|
-
return function (input,
|
|
381
|
-
|
|
382
|
-
.
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
418
|
+
return function (input, array, explore) {
|
|
419
|
+
return array.recursive
|
|
420
|
+
? typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(importer.useLocal("".concat(config.prefix, "a").concat(array.index))), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(config)(__assign(__assign({}, explore), { source: "function", from: "array" }))(input))
|
|
421
|
+
: decode_array_inline(config)(importer)(input, array, explore);
|
|
422
|
+
};
|
|
423
|
+
};
|
|
424
|
+
};
|
|
425
|
+
var decode_array_inline = function (config) {
|
|
426
|
+
return function (importer) {
|
|
427
|
+
return function (input, array, explore) {
|
|
428
|
+
return FeatureProgrammer_1.FeatureProgrammer.decode_array(config)(importer)(StringifyJoinder_1.StringifyJoiner.array)(input, array, explore, [], []);
|
|
429
|
+
};
|
|
430
|
+
};
|
|
431
|
+
};
|
|
432
|
+
var decode_tuple = function (project) {
|
|
433
|
+
return function (config) {
|
|
434
|
+
return function (importer) {
|
|
435
|
+
return function (input, tuple, explore) {
|
|
436
|
+
return tuple.recursive
|
|
437
|
+
? typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(importer.useLocal("".concat(config.prefix, "t").concat(tuple.index))), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(config)(__assign(__assign({}, explore), { source: "function" }))(input))
|
|
438
|
+
: decode_tuple_inline(project)(config)(importer)(input, tuple, explore);
|
|
439
|
+
};
|
|
440
|
+
};
|
|
441
|
+
};
|
|
442
|
+
};
|
|
443
|
+
var decode_tuple_inline = function (project) {
|
|
444
|
+
return function (config) {
|
|
445
|
+
return function (importer) {
|
|
446
|
+
return function (input, tuple, explore) {
|
|
447
|
+
var children = tuple.elements
|
|
448
|
+
.filter(function (elem) { return elem.rest === null; })
|
|
449
|
+
.map(function (elem, index) {
|
|
450
|
+
return decode(project)(config)(importer)(typescript_1.default.factory.createElementAccessExpression(input, index), elem, __assign(__assign({}, explore), { from: "array", postfix: explore.postfix.length
|
|
451
|
+
? "".concat(explore.postfix.slice(0, -1), "[").concat(index, "]\"")
|
|
452
|
+
: "\"[".concat(index, "]\"") }));
|
|
453
|
+
});
|
|
454
|
+
var rest = (function () {
|
|
455
|
+
if (tuple.elements.length === 0)
|
|
456
|
+
return null;
|
|
457
|
+
var last = tuple.elements.at(-1);
|
|
458
|
+
if (last.rest === null)
|
|
459
|
+
return null;
|
|
460
|
+
var code = decode(project)(config)(importer)(typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(input)("slice"), undefined, [
|
|
461
|
+
typescript_1.default.factory.createNumericLiteral(tuple.elements.length - 1),
|
|
462
|
+
]), (0, wrap_metadata_rest_tuple_1.wrap_metadata_rest_tuple)(tuple.elements.at(-1).rest), __assign(__assign({}, explore), { start: tuple.elements.length - 1 }));
|
|
463
|
+
return typescript_1.default.factory.createCallExpression(importer.use("rest"), undefined, [code]);
|
|
464
|
+
})();
|
|
465
|
+
return StringifyJoinder_1.StringifyJoiner.tuple(children, rest);
|
|
466
|
+
};
|
|
400
467
|
};
|
|
401
468
|
};
|
|
402
469
|
};
|
|
403
470
|
var decode_atomic = function (project) {
|
|
404
471
|
return function (importer) {
|
|
405
|
-
return function (input, type, explore
|
|
472
|
+
return function (input, type, explore) {
|
|
406
473
|
if (type === "string")
|
|
407
|
-
|
|
408
|
-
return [
|
|
409
|
-
typescript_1.default.factory.createStringLiteral('"'),
|
|
410
|
-
input,
|
|
411
|
-
typescript_1.default.factory.createStringLiteral('"'),
|
|
412
|
-
].reduce(function (x, y) { return typescript_1.default.factory.createAdd(x, y); });
|
|
413
|
-
else
|
|
414
|
-
return typescript_1.default.factory.createCallExpression(importer.use("string"), undefined, [input]);
|
|
474
|
+
return typescript_1.default.factory.createCallExpression(importer.use("string"), undefined, [input]);
|
|
415
475
|
else if (type === "number" &&
|
|
416
476
|
OptionPredicator_1.OptionPredicator.numeric(project.options))
|
|
417
477
|
input = typescript_1.default.factory.createCallExpression(importer.use("number"), undefined, [input]);
|
|
@@ -431,13 +491,17 @@ var StringifyProgrammer;
|
|
|
431
491
|
typescript_1.default.factory.createStringLiteral('"'),
|
|
432
492
|
].reduce(function (x, y) { return typescript_1.default.factory.createAdd(x, y); });
|
|
433
493
|
else
|
|
434
|
-
return decode_atomic(project)(importer)(input, "string", explore
|
|
494
|
+
return decode_atomic(project)(importer)(input, "string", explore);
|
|
435
495
|
};
|
|
436
496
|
};
|
|
437
497
|
};
|
|
438
|
-
var decode_to_json = function (project
|
|
439
|
-
return function (
|
|
440
|
-
return
|
|
498
|
+
var decode_to_json = function (project) {
|
|
499
|
+
return function (config) {
|
|
500
|
+
return function (importer) {
|
|
501
|
+
return function (input, resolved, explore) {
|
|
502
|
+
return decode(project)(config)(importer)(typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(input)("toJSON"), undefined, []), resolved, explore);
|
|
503
|
+
};
|
|
504
|
+
};
|
|
441
505
|
};
|
|
442
506
|
};
|
|
443
507
|
var decode_functional = function (explore) {
|
|
@@ -445,22 +509,51 @@ var StringifyProgrammer;
|
|
|
445
509
|
? typescript_1.default.factory.createStringLiteral("null")
|
|
446
510
|
: typescript_1.default.factory.createIdentifier("undefined");
|
|
447
511
|
};
|
|
448
|
-
var
|
|
449
|
-
return
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
512
|
+
var explore_objects = function (config) {
|
|
513
|
+
return function (importer) {
|
|
514
|
+
return function (input, meta, explore) {
|
|
515
|
+
return meta.objects.length === 1
|
|
516
|
+
? decode_object(importer)(input, meta.objects[0], explore)
|
|
517
|
+
: typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(importer.useLocal("".concat(PREFIX, "u").concat(meta.union_index))), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(config)(explore)(input));
|
|
518
|
+
};
|
|
519
|
+
};
|
|
520
|
+
};
|
|
521
|
+
var explore_arrays = function (project) {
|
|
522
|
+
return function (config) {
|
|
523
|
+
return function (importer) {
|
|
524
|
+
return function (input, elements, explore) {
|
|
525
|
+
return explore_array_like_union_types(config)(importer)(UnionExplorer_1.UnionExplorer.array({
|
|
526
|
+
checker: IsProgrammer_1.IsProgrammer.decode(project)(importer),
|
|
527
|
+
decoder: decode_array(config)(importer),
|
|
528
|
+
empty: typescript_1.default.factory.createStringLiteral("[]"),
|
|
529
|
+
success: typescript_1.default.factory.createTrue(),
|
|
530
|
+
failure: function (input, expected) {
|
|
531
|
+
return create_throw_error(importer)(expected)(input);
|
|
532
|
+
},
|
|
533
|
+
}))(input, elements, explore);
|
|
534
|
+
};
|
|
535
|
+
};
|
|
536
|
+
};
|
|
537
|
+
};
|
|
538
|
+
var explore_array_like_union_types = function (config) {
|
|
539
|
+
return function (importer) {
|
|
540
|
+
return function (factory) {
|
|
541
|
+
return function (input, elements, explore) {
|
|
542
|
+
var arrow = function (parameters) {
|
|
543
|
+
return function (explore) {
|
|
544
|
+
return function (input) {
|
|
545
|
+
return factory(parameters)(input, elements, explore, [], []);
|
|
546
|
+
};
|
|
547
|
+
};
|
|
548
|
+
};
|
|
549
|
+
if (elements.every(function (e) { return e.recursive === false; }))
|
|
550
|
+
typescript_1.default.factory.createCallExpression(arrow([])(explore)(input), undefined, []);
|
|
551
|
+
explore = __assign(__assign({}, explore), { source: "function", from: "array" });
|
|
552
|
+
return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(importer.emplaceUnion(config.prefix, elements.map(function (e) { return e.name; }).join(" | "), function () {
|
|
553
|
+
return arrow(FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations(config)(TypeFactory_1.TypeFactory.keyword("any"))(typescript_1.default.factory.createIdentifier("input")))(__assign(__assign({}, explore), { postfix: "" }))(typescript_1.default.factory.createIdentifier("input"));
|
|
554
|
+
})), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(config)(explore)(input));
|
|
555
|
+
};
|
|
556
|
+
};
|
|
464
557
|
};
|
|
465
558
|
};
|
|
466
559
|
var wrap_required = function (input, meta, explore) {
|
|
@@ -490,27 +583,46 @@ var StringifyProgrammer;
|
|
|
490
583
|
return typescript_1.default.factory.createBlock(__spreadArray(__spreadArray([], __read(unions.map(function (u) {
|
|
491
584
|
return typescript_1.default.factory.createIfStatement(u.is(), typescript_1.default.factory.createReturnStatement(u.value()));
|
|
492
585
|
})), false), [
|
|
493
|
-
create_throw_error(importer
|
|
586
|
+
create_throw_error(importer)(expected)(input),
|
|
494
587
|
], false), true);
|
|
495
588
|
};
|
|
496
|
-
var
|
|
497
|
-
var UNIONERS = "$su";
|
|
589
|
+
var PREFIX = "$s";
|
|
498
590
|
var configure = function (project) {
|
|
499
|
-
return function (importer) {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
591
|
+
return function (importer) {
|
|
592
|
+
var config = {
|
|
593
|
+
types: {
|
|
594
|
+
input: function (type, name) {
|
|
595
|
+
return typescript_1.default.factory.createTypeReferenceNode(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type));
|
|
596
|
+
},
|
|
597
|
+
output: function () { return TypeFactory_1.TypeFactory.keyword("string"); },
|
|
503
598
|
},
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
599
|
+
prefix: PREFIX,
|
|
600
|
+
trace: false,
|
|
601
|
+
path: false,
|
|
602
|
+
initializer: initializer,
|
|
603
|
+
decoder: function () { return decode(project)(config)(importer); },
|
|
604
|
+
objector: {
|
|
605
|
+
checker: function () { return function (input, meta, explore) {
|
|
606
|
+
return IsProgrammer_1.IsProgrammer.decode(project)(importer)(input, meta, explore, [], []);
|
|
607
|
+
}; },
|
|
608
|
+
decoder: function () { return decode_object(importer); },
|
|
609
|
+
joiner: StringifyJoinder_1.StringifyJoiner.object(importer),
|
|
610
|
+
unionizer: (0, decode_union_object_1.decode_union_object)(IsProgrammer_1.IsProgrammer.decode_object(importer))(decode_object(importer))(function (exp) { return exp; })(function (value, expected) {
|
|
611
|
+
return create_throw_error(importer)(expected)(value);
|
|
612
|
+
}),
|
|
613
|
+
failure: function (input, expected) {
|
|
614
|
+
return create_throw_error(importer)(expected)(input);
|
|
615
|
+
},
|
|
616
|
+
},
|
|
617
|
+
generator: {
|
|
618
|
+
arrays: function () { return write_array_functions(config)(importer); },
|
|
619
|
+
tuples: function () {
|
|
620
|
+
return write_tuple_functions(project)(config)(importer);
|
|
621
|
+
},
|
|
622
|
+
},
|
|
623
|
+
};
|
|
624
|
+
return config;
|
|
625
|
+
};
|
|
514
626
|
};
|
|
515
627
|
var initializer = function (_a) {
|
|
516
628
|
var checker = _a.checker;
|
|
@@ -519,6 +631,7 @@ var StringifyProgrammer;
|
|
|
519
631
|
var meta = MetadataFactory_1.MetadataFactory.analyze(checker)({
|
|
520
632
|
resolve: true,
|
|
521
633
|
constant: true,
|
|
634
|
+
absorb: true,
|
|
522
635
|
validate: function (meta) {
|
|
523
636
|
if (meta.atomics.find(function (str) { return str === "bigint"; }))
|
|
524
637
|
throw new Error(NO_BIGINT);
|
|
@@ -527,24 +640,17 @@ var StringifyProgrammer;
|
|
|
527
640
|
return [collection, meta];
|
|
528
641
|
};
|
|
529
642
|
};
|
|
530
|
-
var
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
var create_throw_error = function (importer, value, expected) {
|
|
542
|
-
return typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createCallExpression(importer.use("throws"), [], [
|
|
543
|
-
typescript_1.default.factory.createObjectLiteralExpression([
|
|
544
|
-
typescript_1.default.factory.createPropertyAssignment("expected", typescript_1.default.factory.createStringLiteral(expected)),
|
|
545
|
-
typescript_1.default.factory.createPropertyAssignment("value", value),
|
|
546
|
-
], true),
|
|
547
|
-
]));
|
|
643
|
+
var create_throw_error = function (importer) {
|
|
644
|
+
return function (expected) {
|
|
645
|
+
return function (value) {
|
|
646
|
+
return typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createCallExpression(importer.use("throws"), [], [
|
|
647
|
+
typescript_1.default.factory.createObjectLiteralExpression([
|
|
648
|
+
typescript_1.default.factory.createPropertyAssignment("expected", typescript_1.default.factory.createStringLiteral(expected)),
|
|
649
|
+
typescript_1.default.factory.createPropertyAssignment("value", value),
|
|
650
|
+
], true),
|
|
651
|
+
]));
|
|
652
|
+
};
|
|
653
|
+
};
|
|
548
654
|
};
|
|
549
655
|
})(StringifyProgrammer = exports.StringifyProgrammer || (exports.StringifyProgrammer = {}));
|
|
550
656
|
var NO_BIGINT = "Error on typia.stringify(): does not allow bigint type.";
|