typia 5.0.0-dev.20230823 → 5.0.0-dev.20230823-2
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/Primitive.d.ts +14 -12
- package/lib/Resolved.d.ts +46 -0
- package/lib/{schemas/metadata/IMetadataResolved.js → Resolved.js} +1 -1
- package/lib/Resolved.js.map +1 -0
- package/lib/factories/MetadataFactory.d.ts +1 -1
- package/lib/factories/MetadataTagFactory.js +6 -6
- package/lib/factories/MetadataTagFactory.js.map +1 -1
- package/lib/factories/ProtobufFactory.js +2 -2
- package/lib/factories/ProtobufFactory.js.map +1 -1
- package/lib/factories/internal/metadata/explore_metadata.js +3 -3
- package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_collection.js +6 -6
- package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_native.js +2 -10
- package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_resolve.js +6 -6
- package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_sort.js +2 -2
- package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
- package/lib/functional/$ProtobufWriter.js.map +1 -1
- package/lib/json.d.ts +15 -15
- package/lib/misc.d.ts +42 -42
- package/lib/module.d.ts +18 -17
- package/lib/module.js +1 -0
- package/lib/module.js.map +1 -1
- package/lib/programmers/AssertProgrammer.js +1 -1
- package/lib/programmers/AssertProgrammer.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.js +1 -1
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/IsProgrammer.js +2 -2
- package/lib/programmers/IsProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +307 -132
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/ValidateProgrammer.js +1 -1
- package/lib/programmers/ValidateProgrammer.js.map +1 -1
- package/lib/programmers/helpers/FunctionImporeter.d.ts +2 -0
- package/lib/programmers/helpers/FunctionImporeter.js +2 -1
- package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
- package/lib/programmers/helpers/StringifyPredicator.js +1 -2
- package/lib/programmers/helpers/StringifyPredicator.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/application_resolved.d.ts +2 -2
- package/lib/programmers/internal/application_resolved.js.map +1 -1
- package/lib/programmers/internal/application_schema.js +2 -2
- package/lib/programmers/internal/application_schema.js.map +1 -1
- package/lib/programmers/json/JsonStringifyProgrammer.js +4 -4
- package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscAssertCloneProgrammer.js +1 -1
- package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js +114 -33
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscIsCloneProgrammer.js +1 -1
- package/lib/programmers/misc/MiscIsCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscLiteralsProgrammer.js +1 -1
- package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +2 -2
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscValidateCloneProgrammer.js +1 -1
- package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +3 -3
- package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +2 -2
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +1 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +2 -2
- package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +1 -1
- package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
- package/lib/protobuf.d.ts +631 -10
- package/lib/protobuf.js +13 -13
- package/lib/protobuf.js.map +1 -1
- package/lib/schemas/metadata/IMetadata.d.ts +2 -2
- package/lib/schemas/metadata/{IMetadataResolved.d.ts → IMetadataEscaped.d.ts} +1 -1
- package/lib/schemas/metadata/IMetadataEscaped.js +3 -0
- package/lib/schemas/metadata/IMetadataEscaped.js.map +1 -0
- package/lib/schemas/metadata/Metadata.d.ts +2 -2
- package/lib/schemas/metadata/Metadata.js +15 -15
- package/lib/schemas/metadata/Metadata.js.map +1 -1
- package/lib/schemas/metadata/{MetadataResolved.d.ts → MetadataEscaped.d.ts} +3 -3
- package/lib/schemas/metadata/{MetadataResolved.js → MetadataEscaped.js} +11 -11
- package/lib/schemas/metadata/MetadataEscaped.js.map +1 -0
- package/lib/transformers/features/json/JsonApplicationTransformer.js +1 -1
- package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MetadataTransformer.js +1 -1
- package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
- package/lib/utils/RandomGenerator.js +3 -2
- package/lib/utils/RandomGenerator.js.map +1 -1
- package/package.json +2 -1
- package/src/Primitive.ts +19 -15
- package/src/Resolved.ts +116 -0
- package/src/factories/MetadataFactory.ts +1 -1
- package/src/factories/MetadataTagFactory.ts +6 -6
- package/src/factories/ProtobufFactory.ts +2 -2
- package/src/factories/internal/metadata/explore_metadata.ts +3 -3
- package/src/factories/internal/metadata/iterate_metadata_collection.ts +6 -6
- package/src/factories/internal/metadata/iterate_metadata_native.ts +0 -9
- package/src/factories/internal/metadata/iterate_metadata_resolve.ts +6 -6
- package/src/factories/internal/metadata/iterate_metadata_sort.ts +2 -2
- package/src/json.ts +15 -15
- package/src/misc.ts +42 -42
- package/src/module.ts +18 -17
- package/src/programmers/AssertProgrammer.ts +3 -1
- package/src/programmers/CheckerProgrammer.ts +1 -1
- package/src/programmers/IsProgrammer.ts +4 -2
- package/src/programmers/RandomProgrammer.ts +322 -26
- package/src/programmers/ValidateProgrammer.ts +3 -1
- package/src/programmers/helpers/FunctionImporeter.ts +2 -0
- package/src/programmers/helpers/StringifyPredicator.ts +1 -2
- package/src/programmers/helpers/disable_function_importer_declare.ts +6 -1
- package/src/programmers/internal/application_resolved.ts +2 -2
- package/src/programmers/internal/application_schema.ts +2 -2
- package/src/programmers/json/JsonStringifyProgrammer.ts +6 -4
- package/src/programmers/misc/MiscAssertCloneProgrammer.ts +1 -1
- package/src/programmers/misc/MiscCloneProgrammer.ts +229 -41
- package/src/programmers/misc/MiscIsCloneProgrammer.ts +1 -1
- package/src/programmers/misc/MiscLiteralsProgrammer.ts +1 -1
- package/src/programmers/misc/MiscPruneProgrammer.ts +4 -2
- package/src/programmers/misc/MiscValidateCloneProgrammer.ts +1 -1
- package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +18 -9
- package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +6 -2
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +1 -1
- package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +12 -2
- package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +2 -2
- package/src/protobuf.ts +663 -31
- package/src/schemas/metadata/IMetadata.ts +2 -2
- package/src/schemas/metadata/{IMetadataResolved.ts → IMetadataEscaped.ts} +1 -1
- package/src/schemas/metadata/Metadata.ts +17 -20
- package/src/schemas/metadata/{MetadataResolved.ts → MetadataEscaped.ts} +9 -9
- package/src/transformers/features/json/JsonApplicationTransformer.ts +1 -1
- package/src/transformers/features/misc/MetadataTransformer.ts +1 -1
- package/src/utils/RandomGenerator.ts +4 -2
- package/lib/schemas/metadata/IMetadataResolved.js.map +0 -1
- package/lib/schemas/metadata/MetadataResolved.js.map +0 -1
|
@@ -42,7 +42,9 @@ export namespace JsonStringifyProgrammer {
|
|
|
42
42
|
|
|
43
43
|
export const write =
|
|
44
44
|
(project: IProject) => (modulo: ts.LeftHandSideExpression) => {
|
|
45
|
-
const importer: FunctionImporter = new FunctionImporter(
|
|
45
|
+
const importer: FunctionImporter = new FunctionImporter(
|
|
46
|
+
modulo.getText(),
|
|
47
|
+
);
|
|
46
48
|
const config: FeatureProgrammer.IConfig =
|
|
47
49
|
configure(project)(importer);
|
|
48
50
|
|
|
@@ -186,14 +188,14 @@ export namespace JsonStringifyProgrammer {
|
|
|
186
188
|
const unions: IUnion[] = [];
|
|
187
189
|
|
|
188
190
|
// toJSON() METHOD
|
|
189
|
-
if (meta.
|
|
191
|
+
if (meta.escaped !== null)
|
|
190
192
|
unions.push({
|
|
191
193
|
type: "resolved",
|
|
192
194
|
is: () => IsProgrammer.decode_to_json(false)(input),
|
|
193
195
|
value: () =>
|
|
194
196
|
decode_to_json(project)(config)(importer)(
|
|
195
197
|
input,
|
|
196
|
-
meta.
|
|
198
|
+
meta.escaped!.returns,
|
|
197
199
|
explore,
|
|
198
200
|
),
|
|
199
201
|
});
|
|
@@ -931,7 +933,7 @@ export namespace JsonStringifyProgrammer {
|
|
|
931
933
|
(type) => {
|
|
932
934
|
const collection: MetadataCollection = new MetadataCollection();
|
|
933
935
|
const meta: Metadata = MetadataFactory.analyze(checker)({
|
|
934
|
-
|
|
936
|
+
escape: true,
|
|
935
937
|
constant: true,
|
|
936
938
|
absorb: true,
|
|
937
939
|
validate: (meta) => {
|
|
@@ -26,7 +26,9 @@ import { wrap_metadata_rest_tuple } from "../internal/wrap_metadata_rest_tuple";
|
|
|
26
26
|
export namespace MiscCloneProgrammer {
|
|
27
27
|
export const write =
|
|
28
28
|
(project: IProject) => (modulo: ts.LeftHandSideExpression) => {
|
|
29
|
-
const importer: FunctionImporter = new FunctionImporter(
|
|
29
|
+
const importer: FunctionImporter = new FunctionImporter(
|
|
30
|
+
modulo.getText(),
|
|
31
|
+
);
|
|
30
32
|
return FeatureProgrammer.write(project)({
|
|
31
33
|
...configure(project)(importer),
|
|
32
34
|
addition: (collection) => [
|
|
@@ -137,19 +139,6 @@ export namespace MiscCloneProgrammer {
|
|
|
137
139
|
//----
|
|
138
140
|
// LIST UP UNION TYPES
|
|
139
141
|
//----
|
|
140
|
-
// toJSON() METHOD
|
|
141
|
-
if (meta.resolved !== null)
|
|
142
|
-
unions.push({
|
|
143
|
-
type: "resolved",
|
|
144
|
-
is: () => IsProgrammer.decode_to_json(true)(input),
|
|
145
|
-
value: () =>
|
|
146
|
-
decode_to_json(project)(config)(importer)(
|
|
147
|
-
input,
|
|
148
|
-
meta.resolved!.returns,
|
|
149
|
-
explore,
|
|
150
|
-
),
|
|
151
|
-
});
|
|
152
|
-
|
|
153
142
|
// TUPLES
|
|
154
143
|
for (const tuple of meta.tuples)
|
|
155
144
|
unions.push({
|
|
@@ -195,13 +184,26 @@ export namespace MiscCloneProgrammer {
|
|
|
195
184
|
unions.push({
|
|
196
185
|
type: "set",
|
|
197
186
|
is: () => ExpressionFactory.isInstanceOf("Set")(input),
|
|
198
|
-
value: () =>
|
|
187
|
+
value: () =>
|
|
188
|
+
explore_sets(project)(config)(importer)(
|
|
189
|
+
input,
|
|
190
|
+
meta.sets,
|
|
191
|
+
{ ...explore, from: "array" },
|
|
192
|
+
),
|
|
199
193
|
});
|
|
200
194
|
if (meta.maps.length)
|
|
201
195
|
unions.push({
|
|
202
196
|
type: "map",
|
|
203
197
|
is: () => ExpressionFactory.isInstanceOf("Map")(input),
|
|
204
|
-
value: () =>
|
|
198
|
+
value: () =>
|
|
199
|
+
explore_maps(project)(config)(importer)(
|
|
200
|
+
input,
|
|
201
|
+
meta.maps,
|
|
202
|
+
{
|
|
203
|
+
...explore,
|
|
204
|
+
from: "array",
|
|
205
|
+
},
|
|
206
|
+
),
|
|
205
207
|
});
|
|
206
208
|
for (const native of meta.natives)
|
|
207
209
|
unions.push({
|
|
@@ -216,7 +218,7 @@ export namespace MiscCloneProgrammer {
|
|
|
216
218
|
undefined,
|
|
217
219
|
undefined,
|
|
218
220
|
)
|
|
219
|
-
:
|
|
221
|
+
: decode_native(native)(input),
|
|
220
222
|
});
|
|
221
223
|
|
|
222
224
|
// OBJECTS
|
|
@@ -251,26 +253,6 @@ export namespace MiscCloneProgrammer {
|
|
|
251
253
|
);
|
|
252
254
|
};
|
|
253
255
|
|
|
254
|
-
const decode_to_json =
|
|
255
|
-
(project: IProject) =>
|
|
256
|
-
(config: FeatureProgrammer.IConfig) =>
|
|
257
|
-
(importer: FunctionImporter) =>
|
|
258
|
-
(
|
|
259
|
-
input: ts.Expression,
|
|
260
|
-
resolved: Metadata,
|
|
261
|
-
explore: FeatureProgrammer.IExplore,
|
|
262
|
-
): ts.Expression => {
|
|
263
|
-
return decode(project)(config)(importer)(
|
|
264
|
-
ts.factory.createCallExpression(
|
|
265
|
-
IdentifierFactory.access(input)("toJSON"),
|
|
266
|
-
undefined,
|
|
267
|
-
[],
|
|
268
|
-
),
|
|
269
|
-
resolved,
|
|
270
|
-
explore,
|
|
271
|
-
);
|
|
272
|
-
};
|
|
273
|
-
|
|
274
256
|
const decode_object = (importer: FunctionImporter) =>
|
|
275
257
|
FeatureProgrammer.decode_object({
|
|
276
258
|
trace: false,
|
|
@@ -393,9 +375,204 @@ export namespace MiscCloneProgrammer {
|
|
|
393
375
|
return CloneJoiner.tuple(children, rest);
|
|
394
376
|
};
|
|
395
377
|
|
|
378
|
+
/* -----------------------------------------------------------
|
|
379
|
+
NATIVE CLASSES
|
|
380
|
+
----------------------------------------------------------- */
|
|
381
|
+
const decode_native = (type: string) => (input: ts.Expression) =>
|
|
382
|
+
type === "Date" ||
|
|
383
|
+
type === "Uint8Array" ||
|
|
384
|
+
type === "Uint8ClampedArray" ||
|
|
385
|
+
type === "Uint16Array" ||
|
|
386
|
+
type === "Uint32Array" ||
|
|
387
|
+
type === "BigUint64Array" ||
|
|
388
|
+
type === "Int8Array" ||
|
|
389
|
+
type === "Int16Array" ||
|
|
390
|
+
type === "Int32Array" ||
|
|
391
|
+
type === "BigInt64Array" ||
|
|
392
|
+
type === "Float32Array" ||
|
|
393
|
+
type === "Float64Array"
|
|
394
|
+
? decode_native_copyable(type)(input)
|
|
395
|
+
: type === "ArrayBuffer" || type === "SharedArrayBuffer"
|
|
396
|
+
? decode_native_buffer(type)(input)
|
|
397
|
+
: type === "DataView"
|
|
398
|
+
? decode_native_data_view(input)
|
|
399
|
+
: ts.factory.createCallExpression(
|
|
400
|
+
ts.factory.createIdentifier(type),
|
|
401
|
+
undefined,
|
|
402
|
+
[],
|
|
403
|
+
);
|
|
404
|
+
|
|
405
|
+
const decode_native_copyable = (type: string) => (input: ts.Expression) =>
|
|
406
|
+
ts.factory.createNewExpression(
|
|
407
|
+
ts.factory.createIdentifier(type),
|
|
408
|
+
undefined,
|
|
409
|
+
[input],
|
|
410
|
+
);
|
|
411
|
+
|
|
412
|
+
const decode_native_buffer =
|
|
413
|
+
(type: "ArrayBuffer" | "SharedArrayBuffer") => (input: ts.Expression) =>
|
|
414
|
+
ExpressionFactory.selfCall(
|
|
415
|
+
ts.factory.createBlock(
|
|
416
|
+
[
|
|
417
|
+
StatementFactory.constant(
|
|
418
|
+
"buffer",
|
|
419
|
+
ts.factory.createNewExpression(
|
|
420
|
+
ts.factory.createIdentifier(type),
|
|
421
|
+
undefined,
|
|
422
|
+
[IdentifierFactory.access(input)("byteLength")],
|
|
423
|
+
),
|
|
424
|
+
),
|
|
425
|
+
ts.factory.createExpressionStatement(
|
|
426
|
+
ts.factory.createCallExpression(
|
|
427
|
+
IdentifierFactory.access(
|
|
428
|
+
ts.factory.createNewExpression(
|
|
429
|
+
ts.factory.createIdentifier(
|
|
430
|
+
"Uint8Array",
|
|
431
|
+
),
|
|
432
|
+
undefined,
|
|
433
|
+
[ts.factory.createIdentifier("buffer")],
|
|
434
|
+
),
|
|
435
|
+
)("set"),
|
|
436
|
+
undefined,
|
|
437
|
+
[
|
|
438
|
+
ts.factory.createNewExpression(
|
|
439
|
+
ts.factory.createIdentifier(
|
|
440
|
+
"Uint8Array",
|
|
441
|
+
),
|
|
442
|
+
undefined,
|
|
443
|
+
[input],
|
|
444
|
+
),
|
|
445
|
+
],
|
|
446
|
+
),
|
|
447
|
+
),
|
|
448
|
+
ts.factory.createReturnStatement(
|
|
449
|
+
ts.factory.createIdentifier("buffer"),
|
|
450
|
+
),
|
|
451
|
+
],
|
|
452
|
+
true,
|
|
453
|
+
),
|
|
454
|
+
);
|
|
455
|
+
|
|
456
|
+
const decode_native_data_view = (input: ts.Expression) =>
|
|
457
|
+
ts.factory.createNewExpression(
|
|
458
|
+
ts.factory.createIdentifier("DataView"),
|
|
459
|
+
undefined,
|
|
460
|
+
[IdentifierFactory.access(input)("buffer")],
|
|
461
|
+
);
|
|
462
|
+
|
|
396
463
|
/* -----------------------------------------------------------
|
|
397
464
|
EXPLORERS FOR UNION TYPES
|
|
398
465
|
----------------------------------------------------------- */
|
|
466
|
+
const explore_sets =
|
|
467
|
+
(project: IProject) =>
|
|
468
|
+
(config: FeatureProgrammer.IConfig) =>
|
|
469
|
+
(importer: FunctionImporter) =>
|
|
470
|
+
(
|
|
471
|
+
input: ts.Expression,
|
|
472
|
+
sets: Metadata[],
|
|
473
|
+
explore: FeatureProgrammer.IExplore,
|
|
474
|
+
): ts.Expression =>
|
|
475
|
+
ts.factory.createCallExpression(
|
|
476
|
+
UnionExplorer.set({
|
|
477
|
+
checker: IsProgrammer.decode(project)(importer),
|
|
478
|
+
decoder: (input, array, explore) =>
|
|
479
|
+
ts.factory.createNewExpression(
|
|
480
|
+
ts.factory.createIdentifier("Set"),
|
|
481
|
+
[TypeFactory.keyword("any")],
|
|
482
|
+
[
|
|
483
|
+
decode_array(config)(importer)(
|
|
484
|
+
input,
|
|
485
|
+
array,
|
|
486
|
+
explore,
|
|
487
|
+
),
|
|
488
|
+
],
|
|
489
|
+
),
|
|
490
|
+
empty: ts.factory.createNewExpression(
|
|
491
|
+
ts.factory.createIdentifier("Set"),
|
|
492
|
+
[TypeFactory.keyword("any")],
|
|
493
|
+
[],
|
|
494
|
+
),
|
|
495
|
+
success: ts.factory.createTrue(),
|
|
496
|
+
failure: (input, expected) =>
|
|
497
|
+
create_throw_error(importer)(expected)(input),
|
|
498
|
+
})([])(input, sets, explore, [], []),
|
|
499
|
+
undefined,
|
|
500
|
+
undefined,
|
|
501
|
+
);
|
|
502
|
+
|
|
503
|
+
const explore_maps =
|
|
504
|
+
(project: IProject) =>
|
|
505
|
+
(config: FeatureProgrammer.IConfig) =>
|
|
506
|
+
(importer: FunctionImporter) =>
|
|
507
|
+
(
|
|
508
|
+
input: ts.Expression,
|
|
509
|
+
maps: Metadata.Entry[],
|
|
510
|
+
explore: FeatureProgrammer.IExplore,
|
|
511
|
+
): ts.Expression =>
|
|
512
|
+
ts.factory.createCallExpression(
|
|
513
|
+
UnionExplorer.map({
|
|
514
|
+
checker: (top, entry, explore) => {
|
|
515
|
+
const func = IsProgrammer.decode(project)(importer);
|
|
516
|
+
return ts.factory.createLogicalAnd(
|
|
517
|
+
func(
|
|
518
|
+
ts.factory.createElementAccessExpression(
|
|
519
|
+
top,
|
|
520
|
+
0,
|
|
521
|
+
),
|
|
522
|
+
entry[0],
|
|
523
|
+
{
|
|
524
|
+
...explore,
|
|
525
|
+
postfix: `${explore.postfix}[0]`,
|
|
526
|
+
},
|
|
527
|
+
[],
|
|
528
|
+
[],
|
|
529
|
+
),
|
|
530
|
+
func(
|
|
531
|
+
ts.factory.createElementAccessExpression(
|
|
532
|
+
top,
|
|
533
|
+
1,
|
|
534
|
+
),
|
|
535
|
+
entry[1],
|
|
536
|
+
{
|
|
537
|
+
...explore,
|
|
538
|
+
postfix: `${explore.postfix}[1]`,
|
|
539
|
+
},
|
|
540
|
+
[],
|
|
541
|
+
[],
|
|
542
|
+
),
|
|
543
|
+
);
|
|
544
|
+
},
|
|
545
|
+
decoder: (input, array, explore) =>
|
|
546
|
+
ts.factory.createNewExpression(
|
|
547
|
+
ts.factory.createIdentifier("Map"),
|
|
548
|
+
[
|
|
549
|
+
TypeFactory.keyword("any"),
|
|
550
|
+
TypeFactory.keyword("any"),
|
|
551
|
+
],
|
|
552
|
+
[
|
|
553
|
+
decode_array(config)(importer)(
|
|
554
|
+
input,
|
|
555
|
+
array,
|
|
556
|
+
explore,
|
|
557
|
+
),
|
|
558
|
+
],
|
|
559
|
+
),
|
|
560
|
+
empty: ts.factory.createNewExpression(
|
|
561
|
+
ts.factory.createIdentifier("Map"),
|
|
562
|
+
[
|
|
563
|
+
TypeFactory.keyword("any"),
|
|
564
|
+
TypeFactory.keyword("any"),
|
|
565
|
+
],
|
|
566
|
+
[],
|
|
567
|
+
),
|
|
568
|
+
success: ts.factory.createTrue(),
|
|
569
|
+
failure: (input, expected) =>
|
|
570
|
+
create_throw_error(importer)(expected)(input),
|
|
571
|
+
})([])(input, maps, explore, [], []),
|
|
572
|
+
undefined,
|
|
573
|
+
undefined,
|
|
574
|
+
);
|
|
575
|
+
|
|
399
576
|
const explore_objects =
|
|
400
577
|
(config: FeatureProgrammer.IConfig) =>
|
|
401
578
|
(importer: FunctionImporter) =>
|
|
@@ -514,7 +691,7 @@ export namespace MiscCloneProgrammer {
|
|
|
514
691
|
),
|
|
515
692
|
output: (type, name) =>
|
|
516
693
|
ts.factory.createTypeReferenceNode(
|
|
517
|
-
`typia.
|
|
694
|
+
`typia.Resolved<${
|
|
518
695
|
name ??
|
|
519
696
|
TypeFactory.getFullName(project.checker)(type)
|
|
520
697
|
}>`,
|
|
@@ -523,7 +700,7 @@ export namespace MiscCloneProgrammer {
|
|
|
523
700
|
prefix: PREFIX,
|
|
524
701
|
trace: false,
|
|
525
702
|
path: false,
|
|
526
|
-
initializer,
|
|
703
|
+
initializer: initializer(importer.method),
|
|
527
704
|
decoder: () => decode(project)(config)(importer),
|
|
528
705
|
objector: {
|
|
529
706
|
checker: () => IsProgrammer.decode(project)(importer),
|
|
@@ -547,14 +724,25 @@ export namespace MiscCloneProgrammer {
|
|
|
547
724
|
return config;
|
|
548
725
|
};
|
|
549
726
|
|
|
550
|
-
const initializer
|
|
727
|
+
const initializer =
|
|
728
|
+
(method: string): FeatureProgrammer.IConfig["initializer"] =>
|
|
551
729
|
({ checker }) =>
|
|
552
730
|
(type) => {
|
|
553
731
|
const collection = new MetadataCollection();
|
|
554
732
|
const meta = MetadataFactory.analyze(checker)({
|
|
555
|
-
|
|
733
|
+
escape: false,
|
|
556
734
|
constant: true,
|
|
557
735
|
absorb: true,
|
|
736
|
+
validate: (meta) => {
|
|
737
|
+
if (meta.natives.some((n) => n === "WeakSet"))
|
|
738
|
+
throw new Error(
|
|
739
|
+
`Error on ${method}(): WeakSet is not supported.`,
|
|
740
|
+
);
|
|
741
|
+
else if (meta.natives.some((n) => n === "WeakMap"))
|
|
742
|
+
throw new Error(
|
|
743
|
+
`Error on ${method}(): WeakMap is not supported.`,
|
|
744
|
+
);
|
|
745
|
+
},
|
|
558
746
|
})(collection)(type);
|
|
559
747
|
return [collection, meta];
|
|
560
748
|
};
|
|
@@ -15,7 +15,7 @@ import { ArrayUtil } from "../../utils/ArrayUtil";
|
|
|
15
15
|
export namespace MiscLiteralsProgrammer {
|
|
16
16
|
export const write = (project: IProject) => (type: ts.Type) => {
|
|
17
17
|
const meta: Metadata = MetadataFactory.analyze(project.checker)({
|
|
18
|
-
|
|
18
|
+
escape: true,
|
|
19
19
|
constant: true,
|
|
20
20
|
absorb: true,
|
|
21
21
|
validate: (meta) => {
|
|
@@ -26,7 +26,9 @@ import { wrap_metadata_rest_tuple } from "../internal/wrap_metadata_rest_tuple";
|
|
|
26
26
|
export namespace MiscPruneProgrammer {
|
|
27
27
|
export const write =
|
|
28
28
|
(project: IProject) => (modulo: ts.LeftHandSideExpression) => {
|
|
29
|
-
const importer: FunctionImporter = new FunctionImporter(
|
|
29
|
+
const importer: FunctionImporter = new FunctionImporter(
|
|
30
|
+
modulo.getText(),
|
|
31
|
+
);
|
|
30
32
|
return FeatureProgrammer.write(project)({
|
|
31
33
|
...configure(project)(importer),
|
|
32
34
|
addition: (collection) => [
|
|
@@ -507,7 +509,7 @@ export namespace MiscPruneProgrammer {
|
|
|
507
509
|
(type) => {
|
|
508
510
|
const collection = new MetadataCollection();
|
|
509
511
|
const meta = MetadataFactory.analyze(checker)({
|
|
510
|
-
|
|
512
|
+
escape: false,
|
|
511
513
|
constant: true,
|
|
512
514
|
absorb: true,
|
|
513
515
|
})(collection)(type);
|
|
@@ -24,7 +24,9 @@ export namespace ProtobufAssertDecodeProgrammer {
|
|
|
24
24
|
),
|
|
25
25
|
],
|
|
26
26
|
ts.factory.createTypeReferenceNode(
|
|
27
|
-
|
|
27
|
+
`typia.Resolved<${
|
|
28
|
+
name ?? TypeFactory.getFullName(project.checker)(type)
|
|
29
|
+
}>`,
|
|
28
30
|
),
|
|
29
31
|
undefined,
|
|
30
32
|
ts.factory.createBlock([
|
|
@@ -41,10 +43,14 @@ export namespace ProtobufAssertDecodeProgrammer {
|
|
|
41
43
|
),
|
|
42
44
|
StatementFactory.constant(
|
|
43
45
|
"assert",
|
|
44
|
-
AssertProgrammer.write(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
AssertProgrammer.write({
|
|
47
|
+
...project,
|
|
48
|
+
options: {
|
|
49
|
+
...project.options,
|
|
50
|
+
functional: false,
|
|
51
|
+
numeric: false,
|
|
52
|
+
},
|
|
53
|
+
})(modulo)(false)(type, name),
|
|
48
54
|
),
|
|
49
55
|
StatementFactory.constant(
|
|
50
56
|
"output",
|
|
@@ -55,10 +61,13 @@ export namespace ProtobufAssertDecodeProgrammer {
|
|
|
55
61
|
),
|
|
56
62
|
),
|
|
57
63
|
ts.factory.createReturnStatement(
|
|
58
|
-
ts.factory.
|
|
59
|
-
ts.factory.
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
ts.factory.createAsExpression(
|
|
65
|
+
ts.factory.createCallExpression(
|
|
66
|
+
ts.factory.createIdentifier("assert"),
|
|
67
|
+
undefined,
|
|
68
|
+
[ts.factory.createIdentifier("output")],
|
|
69
|
+
),
|
|
70
|
+
TypeFactory.keyword("any"),
|
|
62
71
|
),
|
|
63
72
|
),
|
|
64
73
|
]),
|
|
@@ -26,7 +26,9 @@ export namespace ProtobufDecodeProgrammer {
|
|
|
26
26
|
(project: IProject) =>
|
|
27
27
|
(modulo: ts.LeftHandSideExpression) =>
|
|
28
28
|
(type: ts.Type, name?: string): ts.ArrowFunction => {
|
|
29
|
-
const importer: FunctionImporter = new FunctionImporter(
|
|
29
|
+
const importer: FunctionImporter = new FunctionImporter(
|
|
30
|
+
modulo.getText(),
|
|
31
|
+
);
|
|
30
32
|
const collection: MetadataCollection = new MetadataCollection();
|
|
31
33
|
const meta: Metadata = ProtobufFactory.metadata(modulo.getText())(
|
|
32
34
|
project.checker,
|
|
@@ -60,7 +62,9 @@ export namespace ProtobufDecodeProgrammer {
|
|
|
60
62
|
),
|
|
61
63
|
],
|
|
62
64
|
ts.factory.createTypeReferenceNode(
|
|
63
|
-
|
|
65
|
+
`typia.Resolved<${
|
|
66
|
+
name ?? TypeFactory.getFullName(project.checker)(type)
|
|
67
|
+
}>`,
|
|
64
68
|
),
|
|
65
69
|
undefined,
|
|
66
70
|
ts.factory.createBlock(
|
|
@@ -30,7 +30,7 @@ export namespace ProtobufEncodeProgrammer {
|
|
|
30
30
|
(project: IProject) =>
|
|
31
31
|
(modulo: ts.LeftHandSideExpression) =>
|
|
32
32
|
(type: ts.Type, name?: string): ts.ArrowFunction => {
|
|
33
|
-
const importer = new FunctionImporter();
|
|
33
|
+
const importer = new FunctionImporter(modulo.getText());
|
|
34
34
|
const collection = new MetadataCollection();
|
|
35
35
|
const meta: Metadata = ProtobufFactory.metadata(modulo.getText())(
|
|
36
36
|
project.checker,
|
|
@@ -25,7 +25,10 @@ export namespace ProtobufIsDecodeProgrammer {
|
|
|
25
25
|
],
|
|
26
26
|
ts.factory.createUnionTypeNode([
|
|
27
27
|
ts.factory.createTypeReferenceNode(
|
|
28
|
-
|
|
28
|
+
`typia.Resolved<${
|
|
29
|
+
name ??
|
|
30
|
+
TypeFactory.getFullName(project.checker)(type)
|
|
31
|
+
}>`,
|
|
29
32
|
),
|
|
30
33
|
ts.factory.createLiteralTypeNode(ts.factory.createNull()),
|
|
31
34
|
]),
|
|
@@ -33,7 +36,14 @@ export namespace ProtobufIsDecodeProgrammer {
|
|
|
33
36
|
ts.factory.createBlock([
|
|
34
37
|
StatementFactory.constant(
|
|
35
38
|
"is",
|
|
36
|
-
IsProgrammer.write(
|
|
39
|
+
IsProgrammer.write({
|
|
40
|
+
...project,
|
|
41
|
+
options: {
|
|
42
|
+
...project.options,
|
|
43
|
+
functional: false,
|
|
44
|
+
numeric: false,
|
|
45
|
+
},
|
|
46
|
+
})(modulo)(false)(type, name),
|
|
37
47
|
),
|
|
38
48
|
StatementFactory.constant(
|
|
39
49
|
"decode",
|
|
@@ -24,9 +24,9 @@ export namespace ProtobufValidateDecodeProgrammer {
|
|
|
24
24
|
),
|
|
25
25
|
],
|
|
26
26
|
ts.factory.createTypeReferenceNode(
|
|
27
|
-
`typia.IValidation<${
|
|
27
|
+
`typia.IValidation<typia.Resolved<${
|
|
28
28
|
name ?? TypeFactory.getFullName(project.checker)(type)
|
|
29
|
-
}
|
|
29
|
+
}>>`,
|
|
30
30
|
),
|
|
31
31
|
undefined,
|
|
32
32
|
ts.factory.createBlock([
|