typia 7.0.0-dev.20240929 → 7.0.0-dev.20241001
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/index.mjs +25 -25
- package/lib/index.mjs.map +1 -1
- package/lib/programmers/AssertProgrammer.js +34 -27
- package/lib/programmers/AssertProgrammer.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.d.ts +5 -1
- package/lib/programmers/CheckerProgrammer.js +432 -348
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/FeatureProgrammer.d.ts +91 -28
- package/lib/programmers/FeatureProgrammer.js +165 -138
- package/lib/programmers/FeatureProgrammer.js.map +1 -1
- package/lib/programmers/IsProgrammer.d.ts +5 -1
- package/lib/programmers/IsProgrammer.js +87 -66
- package/lib/programmers/IsProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +83 -68
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/TypiaProgrammer.d.ts +2 -2
- package/lib/programmers/TypiaProgrammer.js +79 -75
- package/lib/programmers/TypiaProgrammer.js.map +1 -1
- package/lib/programmers/ValidateProgrammer.js +45 -19
- package/lib/programmers/ValidateProgrammer.js.map +1 -1
- package/lib/programmers/helpers/CloneJoiner.js +4 -1
- package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
- package/lib/programmers/helpers/NotationJoiner.d.ts +2 -1
- package/lib/programmers/helpers/NotationJoiner.js +34 -33
- package/lib/programmers/helpers/NotationJoiner.js.map +1 -1
- package/lib/programmers/helpers/PruneJoiner.js +4 -1
- package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
- package/lib/programmers/helpers/RandomJoiner.d.ts +1 -1
- package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
- package/lib/programmers/helpers/RandomRanger.js.map +1 -1
- package/lib/programmers/helpers/StringifyJoinder.js +4 -1
- package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
- package/lib/programmers/helpers/StringifyPredicator.d.ts +1 -1
- package/lib/programmers/helpers/StringifyPredicator.js +4 -3
- package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
- package/lib/programmers/helpers/UnionExplorer.d.ts +52 -12
- package/lib/programmers/helpers/UnionExplorer.js +184 -120
- package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
- package/lib/programmers/helpers/UnionPredicator.d.ts +1 -1
- package/lib/programmers/helpers/UnionPredicator.js +7 -7
- package/lib/programmers/http/HttpFormDataProgrammer.js +77 -70
- package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpHeadersProgrammer.js +69 -68
- package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpQueryProgrammer.js +69 -62
- package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
- package/lib/programmers/internal/application_escaped.js +4 -4
- package/lib/programmers/internal/application_escaped.js.map +1 -1
- package/lib/programmers/internal/application_templates.js +8 -2
- package/lib/programmers/internal/application_templates.js.map +1 -1
- package/lib/programmers/internal/application_union_discriminator.d.ts +1 -1
- package/lib/programmers/internal/application_union_discriminator.js +6 -6
- package/lib/programmers/internal/application_union_discriminator.js.map +1 -1
- package/lib/programmers/internal/application_v30_object.js +6 -3
- package/lib/programmers/internal/application_v30_object.js.map +1 -1
- package/lib/programmers/internal/application_v31_object.js +4 -1
- package/lib/programmers/internal/application_v31_object.js.map +1 -1
- package/lib/programmers/internal/check_array_length.js +21 -26
- package/lib/programmers/internal/check_array_length.js.map +1 -1
- package/lib/programmers/internal/check_bigint.js +18 -26
- package/lib/programmers/internal/check_bigint.js.map +1 -1
- package/lib/programmers/internal/check_dynamic_key.d.ts +1 -5
- package/lib/programmers/internal/check_dynamic_key.js +109 -91
- package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
- package/lib/programmers/internal/check_dynamic_properties.js +88 -90
- package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
- package/lib/programmers/internal/check_native.js +8 -5
- package/lib/programmers/internal/check_native.js.map +1 -1
- package/lib/programmers/internal/check_number.js +59 -65
- package/lib/programmers/internal/check_number.js.map +1 -1
- package/lib/programmers/internal/check_object.js +31 -22
- package/lib/programmers/internal/check_object.js.map +1 -1
- package/lib/programmers/internal/check_string.js +18 -26
- package/lib/programmers/internal/check_string.js.map +1 -1
- package/lib/programmers/internal/check_template.js +20 -21
- package/lib/programmers/internal/check_template.js.map +1 -1
- package/lib/programmers/internal/check_union_array_like.js +68 -53
- package/lib/programmers/internal/check_union_array_like.js.map +1 -1
- package/lib/programmers/internal/decode_union_object.js +59 -49
- package/lib/programmers/internal/decode_union_object.js.map +1 -1
- package/lib/programmers/internal/feature_object_entries.js +31 -33
- package/lib/programmers/internal/feature_object_entries.js.map +1 -1
- package/lib/programmers/internal/llm_schema_escaped.js +29 -11
- package/lib/programmers/internal/llm_schema_escaped.js.map +1 -1
- package/lib/programmers/internal/llm_schema_object.js +4 -1
- package/lib/programmers/internal/llm_schema_object.js.map +1 -1
- package/lib/programmers/internal/metadata_to_pattern.js +44 -41
- package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
- package/lib/programmers/internal/postfix_of_tuple.d.ts +1 -1
- package/lib/programmers/internal/postfix_of_tuple.js +3 -0
- package/lib/programmers/internal/postfix_of_tuple.js.map +1 -1
- package/lib/programmers/internal/prune_object_properties.js +6 -3
- package/lib/programmers/internal/prune_object_properties.js.map +1 -1
- package/lib/programmers/internal/random_custom.js +8 -14
- package/lib/programmers/internal/random_custom.js.map +1 -1
- package/lib/programmers/internal/stringify_dynamic_properties.js +4 -1
- package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
- package/lib/programmers/internal/stringify_regular_properties.js +4 -4
- package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
- package/lib/programmers/internal/template_to_pattern.js +10 -5
- package/lib/programmers/internal/template_to_pattern.js.map +1 -1
- package/lib/programmers/internal/wrap_metadata_rest_tuple.d.ts +1 -2
- package/lib/programmers/internal/wrap_metadata_rest_tuple.js +3 -0
- package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
- package/lib/programmers/json/JsonStringifyProgrammer.js +154 -91
- package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js +221 -154
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +139 -89
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +4 -1
- package/lib/programmers/notations/NotationGeneralProgrammer.js +257 -148
- package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +32 -24
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
- package/lib/utils/NamingConvention/NamingConvention.js +41 -47
- package/lib/utils/NamingConvention/NamingConvention.js.map +1 -1
- package/package.json +1 -1
- package/src/programmers/AssertProgrammer.ts +44 -37
- package/src/programmers/CheckerProgrammer.ts +394 -358
- package/src/programmers/FeatureProgrammer.ts +327 -267
- package/src/programmers/IsProgrammer.ts +93 -76
- package/src/programmers/RandomProgrammer.ts +18 -9
- package/src/programmers/TypiaProgrammer.ts +48 -34
- package/src/programmers/ValidateProgrammer.ts +56 -29
- package/src/programmers/helpers/CloneJoiner.ts +4 -1
- package/src/programmers/helpers/NotationJoiner.ts +85 -83
- package/src/programmers/helpers/ProtobufUtil.ts +2 -2
- package/src/programmers/helpers/PruneJoiner.ts +4 -1
- package/src/programmers/helpers/RandomJoiner.ts +5 -2
- package/src/programmers/helpers/RandomRanger.ts +8 -1
- package/src/programmers/helpers/StringifyJoinder.ts +4 -1
- package/src/programmers/helpers/StringifyPredicator.ts +4 -3
- package/src/programmers/helpers/UnionExplorer.ts +277 -179
- package/src/programmers/helpers/UnionPredicator.ts +5 -5
- package/src/programmers/http/HttpFormDataProgrammer.ts +135 -114
- package/src/programmers/http/HttpHeadersProgrammer.ts +145 -120
- package/src/programmers/http/HttpQueryProgrammer.ts +137 -116
- package/src/programmers/internal/application_escaped.ts +6 -6
- package/src/programmers/internal/application_templates.ts +8 -6
- package/src/programmers/internal/application_union_discriminator.ts +6 -6
- package/src/programmers/internal/application_v30_object.ts +6 -3
- package/src/programmers/internal/application_v31_object.ts +4 -1
- package/src/programmers/internal/application_v31_tuple.ts +1 -1
- package/src/programmers/internal/check_array_length.ts +31 -30
- package/src/programmers/internal/check_bigint.ts +31 -31
- package/src/programmers/internal/check_dynamic_key.ts +155 -126
- package/src/programmers/internal/check_dynamic_properties.ts +152 -154
- package/src/programmers/internal/check_native.ts +11 -5
- package/src/programmers/internal/check_number.ts +88 -84
- package/src/programmers/internal/check_object.ts +45 -31
- package/src/programmers/internal/check_string.ts +31 -30
- package/src/programmers/internal/check_template.ts +34 -32
- package/src/programmers/internal/check_union_array_like.ts +245 -228
- package/src/programmers/internal/decode_union_object.ts +92 -75
- package/src/programmers/internal/feature_object_entries.ts +36 -36
- package/src/programmers/internal/llm_schema_escaped.ts +36 -13
- package/src/programmers/internal/llm_schema_object.ts +4 -1
- package/src/programmers/internal/metadata_to_pattern.ts +31 -23
- package/src/programmers/internal/postfix_of_tuple.ts +3 -0
- package/src/programmers/internal/prune_object_properties.ts +6 -3
- package/src/programmers/internal/random_custom.ts +24 -23
- package/src/programmers/internal/stringify_dynamic_properties.ts +4 -1
- package/src/programmers/internal/stringify_regular_properties.ts +7 -7
- package/src/programmers/internal/template_to_pattern.ts +12 -4
- package/src/programmers/internal/wrap_metadata_rest_tuple.ts +3 -0
- package/src/programmers/json/JsonStringifyProgrammer.ts +151 -104
- package/src/programmers/misc/MiscCloneProgrammer.ts +255 -204
- package/src/programmers/misc/MiscPruneProgrammer.ts +149 -116
- package/src/programmers/notations/NotationGeneralProgrammer.ts +307 -211
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +25 -21
- package/src/utils/NamingConvention/NamingConvention.ts +40 -42
|
@@ -90,9 +90,11 @@ export namespace MiscCloneProgrammer {
|
|
|
90
90
|
ts.factory.createArrowFunction(
|
|
91
91
|
undefined,
|
|
92
92
|
undefined,
|
|
93
|
-
FeatureProgrammer.parameterDeclarations(
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
FeatureProgrammer.parameterDeclarations({
|
|
94
|
+
config: props.config,
|
|
95
|
+
type: TypeFactory.keyword("any"),
|
|
96
|
+
input: ts.factory.createIdentifier("input"),
|
|
97
|
+
}),
|
|
96
98
|
TypeFactory.keyword("any"),
|
|
97
99
|
undefined,
|
|
98
100
|
decode_array_inline({
|
|
@@ -129,9 +131,11 @@ export namespace MiscCloneProgrammer {
|
|
|
129
131
|
ts.factory.createArrowFunction(
|
|
130
132
|
undefined,
|
|
131
133
|
undefined,
|
|
132
|
-
FeatureProgrammer.parameterDeclarations(
|
|
133
|
-
|
|
134
|
-
|
|
134
|
+
FeatureProgrammer.parameterDeclarations({
|
|
135
|
+
config: props.config,
|
|
136
|
+
type: TypeFactory.keyword("any"),
|
|
137
|
+
input: ts.factory.createIdentifier("input"),
|
|
138
|
+
}),
|
|
135
139
|
TypeFactory.keyword("any"),
|
|
136
140
|
undefined,
|
|
137
141
|
decode_tuple_inline({
|
|
@@ -335,10 +339,16 @@ export namespace MiscCloneProgrammer {
|
|
|
335
339
|
explore: FeatureProgrammer.IExplore;
|
|
336
340
|
}) =>
|
|
337
341
|
FeatureProgrammer.decode_object({
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
+
config: {
|
|
343
|
+
trace: false,
|
|
344
|
+
path: false,
|
|
345
|
+
prefix: PREFIX,
|
|
346
|
+
},
|
|
347
|
+
importer: props.importer,
|
|
348
|
+
input: props.input,
|
|
349
|
+
object: props.object,
|
|
350
|
+
explore: props.explore,
|
|
351
|
+
});
|
|
342
352
|
|
|
343
353
|
const decode_array = (props: {
|
|
344
354
|
config: FeatureProgrammer.IConfig;
|
|
@@ -355,11 +365,15 @@ export namespace MiscCloneProgrammer {
|
|
|
355
365
|
),
|
|
356
366
|
),
|
|
357
367
|
undefined,
|
|
358
|
-
FeatureProgrammer.argumentsArray(
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
368
|
+
FeatureProgrammer.argumentsArray({
|
|
369
|
+
config: props.config,
|
|
370
|
+
explore: {
|
|
371
|
+
...props.explore,
|
|
372
|
+
source: "function",
|
|
373
|
+
from: "array",
|
|
374
|
+
},
|
|
375
|
+
input: props.input,
|
|
376
|
+
}),
|
|
363
377
|
)
|
|
364
378
|
: decode_array_inline(props);
|
|
365
379
|
|
|
@@ -370,9 +384,14 @@ export namespace MiscCloneProgrammer {
|
|
|
370
384
|
array: MetadataArray;
|
|
371
385
|
explore: FeatureProgrammer.IExplore;
|
|
372
386
|
}) =>
|
|
373
|
-
FeatureProgrammer.decode_array(
|
|
374
|
-
|
|
375
|
-
|
|
387
|
+
FeatureProgrammer.decode_array({
|
|
388
|
+
config: props.config,
|
|
389
|
+
importer: props.importer,
|
|
390
|
+
combiner: CloneJoiner.array,
|
|
391
|
+
array: props.array,
|
|
392
|
+
input: props.input,
|
|
393
|
+
explore: props.explore,
|
|
394
|
+
});
|
|
376
395
|
|
|
377
396
|
const decode_tuple = (props: {
|
|
378
397
|
context: ITypiaContext;
|
|
@@ -390,10 +409,14 @@ export namespace MiscCloneProgrammer {
|
|
|
390
409
|
),
|
|
391
410
|
),
|
|
392
411
|
undefined,
|
|
393
|
-
FeatureProgrammer.argumentsArray(
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
412
|
+
FeatureProgrammer.argumentsArray({
|
|
413
|
+
config: props.config,
|
|
414
|
+
explore: {
|
|
415
|
+
...props.explore,
|
|
416
|
+
source: "function",
|
|
417
|
+
},
|
|
418
|
+
input: props.input,
|
|
419
|
+
}),
|
|
397
420
|
)
|
|
398
421
|
: decode_tuple_inline({
|
|
399
422
|
...props,
|
|
@@ -558,41 +581,47 @@ export namespace MiscCloneProgrammer {
|
|
|
558
581
|
}): ts.Expression =>
|
|
559
582
|
ts.factory.createCallExpression(
|
|
560
583
|
UnionExplorer.set({
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
584
|
+
config: {
|
|
585
|
+
checker: (v) =>
|
|
586
|
+
IsProgrammer.decode({
|
|
587
|
+
context: props.context,
|
|
588
|
+
importer: props.importer,
|
|
589
|
+
input: v.input,
|
|
590
|
+
metadata: v.definition,
|
|
591
|
+
explore: v.explore,
|
|
592
|
+
}),
|
|
593
|
+
decoder: (v) =>
|
|
594
|
+
ts.factory.createNewExpression(
|
|
595
|
+
ts.factory.createIdentifier("Set"),
|
|
596
|
+
[TypeFactory.keyword("any")],
|
|
597
|
+
[
|
|
598
|
+
decode_array({
|
|
599
|
+
config: props.config,
|
|
600
|
+
importer: props.importer,
|
|
601
|
+
input: v.input,
|
|
602
|
+
array: v.definition,
|
|
603
|
+
explore: v.explore,
|
|
604
|
+
}),
|
|
605
|
+
],
|
|
606
|
+
),
|
|
607
|
+
empty: ts.factory.createNewExpression(
|
|
571
608
|
ts.factory.createIdentifier("Set"),
|
|
572
609
|
[TypeFactory.keyword("any")],
|
|
573
|
-
[
|
|
574
|
-
decode_array({
|
|
575
|
-
config: props.config,
|
|
576
|
-
importer: props.importer,
|
|
577
|
-
input,
|
|
578
|
-
array,
|
|
579
|
-
explore,
|
|
580
|
-
}),
|
|
581
|
-
],
|
|
610
|
+
[],
|
|
582
611
|
),
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
})
|
|
612
|
+
success: ts.factory.createTrue(),
|
|
613
|
+
failure: (v) =>
|
|
614
|
+
create_throw_error({
|
|
615
|
+
importer: props.importer,
|
|
616
|
+
expected: v.expected,
|
|
617
|
+
input: v.input,
|
|
618
|
+
}),
|
|
619
|
+
},
|
|
620
|
+
parameters: [],
|
|
621
|
+
input: props.input,
|
|
622
|
+
sets: props.sets,
|
|
623
|
+
explore: props.explore,
|
|
624
|
+
}),
|
|
596
625
|
undefined,
|
|
597
626
|
undefined,
|
|
598
627
|
);
|
|
@@ -607,56 +636,63 @@ export namespace MiscCloneProgrammer {
|
|
|
607
636
|
}): ts.Expression =>
|
|
608
637
|
ts.factory.createCallExpression(
|
|
609
638
|
UnionExplorer.map({
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
input: ts.factory.createElementAccessExpression(top, 0),
|
|
616
|
-
metadata: entry[0],
|
|
617
|
-
explore: {
|
|
618
|
-
...explore,
|
|
619
|
-
postfix: `${explore.postfix}[0]`,
|
|
620
|
-
},
|
|
621
|
-
}),
|
|
622
|
-
IsProgrammer.decode({
|
|
623
|
-
context: props.context,
|
|
624
|
-
importer: props.importer,
|
|
625
|
-
input: ts.factory.createElementAccessExpression(top, 1),
|
|
626
|
-
metadata: entry[1],
|
|
627
|
-
explore: {
|
|
628
|
-
...explore,
|
|
629
|
-
postfix: `${explore.postfix}[1]`,
|
|
630
|
-
},
|
|
631
|
-
}),
|
|
632
|
-
),
|
|
633
|
-
decoder: (input, array, explore) =>
|
|
634
|
-
ts.factory.createNewExpression(
|
|
635
|
-
ts.factory.createIdentifier("Map"),
|
|
636
|
-
[TypeFactory.keyword("any"), TypeFactory.keyword("any")],
|
|
637
|
-
[
|
|
638
|
-
decode_array({
|
|
639
|
-
config: props.config,
|
|
639
|
+
config: {
|
|
640
|
+
checker: (v) =>
|
|
641
|
+
ts.factory.createLogicalAnd(
|
|
642
|
+
IsProgrammer.decode({
|
|
643
|
+
context: props.context,
|
|
640
644
|
importer: props.importer,
|
|
641
|
-
input,
|
|
642
|
-
|
|
643
|
-
explore
|
|
645
|
+
input: ts.factory.createElementAccessExpression(v.input, 0),
|
|
646
|
+
metadata: v.definition[0],
|
|
647
|
+
explore: {
|
|
648
|
+
...v.explore,
|
|
649
|
+
postfix: `${v.explore.postfix}[0]`,
|
|
650
|
+
},
|
|
644
651
|
}),
|
|
645
|
-
|
|
652
|
+
IsProgrammer.decode({
|
|
653
|
+
context: props.context,
|
|
654
|
+
importer: props.importer,
|
|
655
|
+
input: ts.factory.createElementAccessExpression(v.input, 1),
|
|
656
|
+
metadata: v.definition[1],
|
|
657
|
+
explore: {
|
|
658
|
+
...v.explore,
|
|
659
|
+
postfix: `${v.explore.postfix}[1]`,
|
|
660
|
+
},
|
|
661
|
+
}),
|
|
662
|
+
),
|
|
663
|
+
decoder: (v) =>
|
|
664
|
+
ts.factory.createNewExpression(
|
|
665
|
+
ts.factory.createIdentifier("Map"),
|
|
666
|
+
[TypeFactory.keyword("any"), TypeFactory.keyword("any")],
|
|
667
|
+
[
|
|
668
|
+
decode_array({
|
|
669
|
+
config: props.config,
|
|
670
|
+
importer: props.importer,
|
|
671
|
+
input: v.input,
|
|
672
|
+
array: v.definition,
|
|
673
|
+
explore: v.explore,
|
|
674
|
+
}),
|
|
675
|
+
],
|
|
676
|
+
),
|
|
677
|
+
empty: ts.factory.createNewExpression(
|
|
678
|
+
ts.factory.createIdentifier("Map"),
|
|
679
|
+
[TypeFactory.keyword("any"), TypeFactory.keyword("any")],
|
|
680
|
+
[],
|
|
646
681
|
),
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
})
|
|
682
|
+
success: ts.factory.createTrue(),
|
|
683
|
+
failure: (v) =>
|
|
684
|
+
create_throw_error({
|
|
685
|
+
importer: props.importer,
|
|
686
|
+
expected: v.expected,
|
|
687
|
+
input: v.input,
|
|
688
|
+
}),
|
|
689
|
+
},
|
|
690
|
+
parameters: [],
|
|
691
|
+
input: props.input,
|
|
692
|
+
maps: props.maps,
|
|
693
|
+
explore: props.explore,
|
|
694
|
+
}),
|
|
695
|
+
// ([])(props.input, props.maps, props.explore),
|
|
660
696
|
undefined,
|
|
661
697
|
undefined,
|
|
662
698
|
);
|
|
@@ -678,9 +714,7 @@ export namespace MiscCloneProgrammer {
|
|
|
678
714
|
props.importer.useLocal(`${PREFIX}u${props.metadata.union_index!}`),
|
|
679
715
|
),
|
|
680
716
|
undefined,
|
|
681
|
-
FeatureProgrammer.argumentsArray(props
|
|
682
|
-
props.input,
|
|
683
|
-
),
|
|
717
|
+
FeatureProgrammer.argumentsArray(props),
|
|
684
718
|
);
|
|
685
719
|
|
|
686
720
|
const explore_arrays = (props: {
|
|
@@ -693,34 +727,40 @@ export namespace MiscCloneProgrammer {
|
|
|
693
727
|
}): ts.Expression =>
|
|
694
728
|
explore_array_like_union_types({
|
|
695
729
|
...props,
|
|
696
|
-
|
|
730
|
+
definitions: props.arrays,
|
|
697
731
|
factory: (next) =>
|
|
698
732
|
UnionExplorer.array({
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
733
|
+
config: {
|
|
734
|
+
checker: (v) =>
|
|
735
|
+
IsProgrammer.decode({
|
|
736
|
+
context: props.context,
|
|
737
|
+
importer: props.importer,
|
|
738
|
+
input: v.input,
|
|
739
|
+
metadata: v.definition,
|
|
740
|
+
explore: v.explore,
|
|
741
|
+
}),
|
|
742
|
+
decoder: (v) =>
|
|
743
|
+
decode_array({
|
|
744
|
+
config: props.config,
|
|
745
|
+
importer: props.importer,
|
|
746
|
+
input: v.input,
|
|
747
|
+
array: v.definition,
|
|
748
|
+
explore: v.explore,
|
|
749
|
+
}),
|
|
750
|
+
empty: ts.factory.createIdentifier("[]"),
|
|
751
|
+
success: ts.factory.createTrue(),
|
|
752
|
+
failure: (v) =>
|
|
753
|
+
create_throw_error({
|
|
754
|
+
importer: props.importer,
|
|
755
|
+
expected: v.expected,
|
|
756
|
+
input: v.input,
|
|
757
|
+
}),
|
|
758
|
+
},
|
|
759
|
+
parameters: next.parameters,
|
|
760
|
+
arrays: next.definitions,
|
|
761
|
+
input: next.input,
|
|
762
|
+
explore: next.explore,
|
|
763
|
+
}),
|
|
724
764
|
});
|
|
725
765
|
|
|
726
766
|
const explore_array_like_union_types = <
|
|
@@ -731,11 +771,11 @@ export namespace MiscCloneProgrammer {
|
|
|
731
771
|
factory: (next: {
|
|
732
772
|
parameters: ts.ParameterDeclaration[];
|
|
733
773
|
input: ts.Expression;
|
|
734
|
-
|
|
774
|
+
definitions: T[];
|
|
735
775
|
explore: FeatureProgrammer.IExplore;
|
|
736
776
|
}) => ts.ArrowFunction;
|
|
737
777
|
input: ts.Expression;
|
|
738
|
-
|
|
778
|
+
definitions: T[];
|
|
739
779
|
explore: FeatureProgrammer.IExplore;
|
|
740
780
|
}): ts.Expression => {
|
|
741
781
|
const arrow = (next: {
|
|
@@ -744,12 +784,12 @@ export namespace MiscCloneProgrammer {
|
|
|
744
784
|
input: ts.Expression;
|
|
745
785
|
}): ts.ArrowFunction =>
|
|
746
786
|
props.factory({
|
|
747
|
-
|
|
787
|
+
definitions: props.definitions,
|
|
748
788
|
parameters: next.parameters,
|
|
749
789
|
input: next.input,
|
|
750
790
|
explore: next.explore,
|
|
751
791
|
});
|
|
752
|
-
if (props.
|
|
792
|
+
if (props.definitions.every((e) => e.type.recursive === false))
|
|
753
793
|
ts.factory.createCallExpression(
|
|
754
794
|
arrow({
|
|
755
795
|
parameters: [],
|
|
@@ -769,12 +809,14 @@ export namespace MiscCloneProgrammer {
|
|
|
769
809
|
ts.factory.createIdentifier(
|
|
770
810
|
props.importer.emplaceUnion(
|
|
771
811
|
props.config.prefix,
|
|
772
|
-
props.
|
|
812
|
+
props.definitions.map((e) => e.type.name).join(" | "),
|
|
773
813
|
() =>
|
|
774
814
|
arrow({
|
|
775
|
-
parameters: FeatureProgrammer.parameterDeclarations(
|
|
776
|
-
|
|
777
|
-
|
|
815
|
+
parameters: FeatureProgrammer.parameterDeclarations({
|
|
816
|
+
config: props.config,
|
|
817
|
+
type: TypeFactory.keyword("any"),
|
|
818
|
+
input: ts.factory.createIdentifier("input"),
|
|
819
|
+
}),
|
|
778
820
|
explore: {
|
|
779
821
|
...arrayExplore,
|
|
780
822
|
postfix: "",
|
|
@@ -784,7 +826,11 @@ export namespace MiscCloneProgrammer {
|
|
|
784
826
|
),
|
|
785
827
|
),
|
|
786
828
|
undefined,
|
|
787
|
-
FeatureProgrammer.argumentsArray(
|
|
829
|
+
FeatureProgrammer.argumentsArray({
|
|
830
|
+
config: props.config,
|
|
831
|
+
input: props.input,
|
|
832
|
+
explore: arrayExplore,
|
|
833
|
+
}),
|
|
788
834
|
);
|
|
789
835
|
};
|
|
790
836
|
|
|
@@ -822,69 +868,75 @@ export namespace MiscCloneProgrammer {
|
|
|
822
868
|
trace: false,
|
|
823
869
|
path: false,
|
|
824
870
|
initializer,
|
|
825
|
-
decoder: () =>
|
|
871
|
+
decoder: (next) =>
|
|
826
872
|
decode({
|
|
827
873
|
context: props.context,
|
|
828
874
|
importer: props.importer,
|
|
829
875
|
config,
|
|
830
|
-
input,
|
|
831
|
-
metadata,
|
|
832
|
-
explore,
|
|
876
|
+
input: next.input,
|
|
877
|
+
metadata: next.metadata,
|
|
878
|
+
explore: next.explore,
|
|
833
879
|
}),
|
|
834
880
|
objector: {
|
|
835
|
-
checker: () =>
|
|
881
|
+
checker: (next) =>
|
|
836
882
|
IsProgrammer.decode({
|
|
837
883
|
context: props.context,
|
|
838
884
|
importer: props.importer,
|
|
839
|
-
input,
|
|
840
|
-
metadata,
|
|
841
|
-
explore,
|
|
885
|
+
input: next.input,
|
|
886
|
+
metadata: next.metadata,
|
|
887
|
+
explore: next.explore,
|
|
842
888
|
}),
|
|
843
|
-
decoder: () =>
|
|
889
|
+
decoder: (next) =>
|
|
844
890
|
decode_object({
|
|
845
891
|
importer: props.importer,
|
|
846
|
-
input,
|
|
847
|
-
object,
|
|
848
|
-
explore,
|
|
892
|
+
input: next.input,
|
|
893
|
+
object: next.object,
|
|
894
|
+
explore: next.explore,
|
|
849
895
|
}),
|
|
850
896
|
joiner: CloneJoiner.object,
|
|
851
|
-
unionizer:
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
897
|
+
unionizer: (next) =>
|
|
898
|
+
decode_union_object({
|
|
899
|
+
checker: (v) =>
|
|
900
|
+
IsProgrammer.decode_object({
|
|
901
|
+
context: props.context,
|
|
902
|
+
importer: props.importer,
|
|
903
|
+
input: v.input,
|
|
904
|
+
object: v.object,
|
|
905
|
+
explore: v.explore,
|
|
906
|
+
}),
|
|
907
|
+
decoder: (v) =>
|
|
908
|
+
decode_object({
|
|
909
|
+
importer: props.importer,
|
|
910
|
+
input: v.input,
|
|
911
|
+
object: v.object,
|
|
912
|
+
explore: v.explore,
|
|
913
|
+
}),
|
|
914
|
+
success: (exp) => exp,
|
|
915
|
+
escaper: (v) =>
|
|
916
|
+
create_throw_error({
|
|
917
|
+
importer: props.importer,
|
|
918
|
+
expected: v.expected,
|
|
919
|
+
input: v.input,
|
|
920
|
+
}),
|
|
921
|
+
input: next.input,
|
|
922
|
+
objects: next.objects,
|
|
923
|
+
explore: next.explore,
|
|
871
924
|
}),
|
|
872
|
-
)
|
|
873
|
-
failure: (input, expected) =>
|
|
925
|
+
failure: (next) =>
|
|
874
926
|
create_throw_error({
|
|
875
927
|
importer: props.importer,
|
|
876
|
-
expected,
|
|
877
|
-
input,
|
|
928
|
+
expected: next.expected,
|
|
929
|
+
input: next.input,
|
|
878
930
|
}),
|
|
879
931
|
},
|
|
880
932
|
generator: {
|
|
881
|
-
arrays: (
|
|
933
|
+
arrays: (collection) =>
|
|
882
934
|
write_array_functions({
|
|
883
935
|
importer: props.importer,
|
|
884
936
|
config,
|
|
885
937
|
collection,
|
|
886
938
|
}),
|
|
887
|
-
tuples: (
|
|
939
|
+
tuples: (collection) =>
|
|
888
940
|
write_tuple_functions({
|
|
889
941
|
context: props.context,
|
|
890
942
|
importer: props.importer,
|
|
@@ -896,34 +948,33 @@ export namespace MiscCloneProgrammer {
|
|
|
896
948
|
return config;
|
|
897
949
|
};
|
|
898
950
|
|
|
899
|
-
const initializer: FeatureProgrammer.IConfig["initializer"] =
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
return output;
|
|
916
|
-
},
|
|
951
|
+
const initializer: FeatureProgrammer.IConfig["initializer"] = (props) => {
|
|
952
|
+
const collection = new MetadataCollection();
|
|
953
|
+
const result = MetadataFactory.analyze({
|
|
954
|
+
checker: props.context.checker,
|
|
955
|
+
transformer: props.context.transformer,
|
|
956
|
+
options: {
|
|
957
|
+
escape: false,
|
|
958
|
+
constant: true,
|
|
959
|
+
absorb: true,
|
|
960
|
+
validate: (metadata) => {
|
|
961
|
+
const output: string[] = [];
|
|
962
|
+
if (metadata.natives.some((n) => n === "WeakSet"))
|
|
963
|
+
output.push("unable to clone WeakSet");
|
|
964
|
+
else if (metadata.natives.some((n) => n === "WeakMap"))
|
|
965
|
+
output.push("unable to clone WeakMap");
|
|
966
|
+
return output;
|
|
917
967
|
},
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
968
|
+
},
|
|
969
|
+
collection,
|
|
970
|
+
type: props.type,
|
|
971
|
+
});
|
|
972
|
+
if (result.success === false)
|
|
973
|
+
throw TransformerError.from(`typia.misc.${props.importer.method}`)(
|
|
974
|
+
result.errors,
|
|
975
|
+
);
|
|
976
|
+
return [collection, result.data];
|
|
977
|
+
};
|
|
927
978
|
|
|
928
979
|
const create_throw_error = (props: {
|
|
929
980
|
importer: FunctionImporter;
|