typia 7.0.0-dev.20240928 → 7.0.0-dev.20240930
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/factories/internal/metadata/emplace_metadata_object.js +2 -1
- package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
- package/lib/programmers/AssertProgrammer.js +14 -10
- package/lib/programmers/AssertProgrammer.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.d.ts +5 -1
- package/lib/programmers/CheckerProgrammer.js +161 -135
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/FeatureProgrammer.d.ts +91 -28
- package/lib/programmers/FeatureProgrammer.js +158 -139
- package/lib/programmers/FeatureProgrammer.js.map +1 -1
- package/lib/programmers/IsProgrammer.d.ts +5 -1
- package/lib/programmers/IsProgrammer.js +70 -67
- package/lib/programmers/IsProgrammer.js.map +1 -1
- package/lib/programmers/ValidateProgrammer.js +7 -3
- package/lib/programmers/ValidateProgrammer.js.map +1 -1
- package/lib/programmers/helpers/UnionExplorer.js +31 -6
- package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
- package/lib/programmers/internal/feature_object_entries.js +18 -14
- package/lib/programmers/internal/feature_object_entries.js.map +1 -1
- package/lib/programmers/json/JsonStringifyProgrammer.js +101 -62
- package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js +101 -62
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +97 -62
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationGeneralProgrammer.js +118 -60
- package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
- package/package.json +1 -1
- package/src/factories/internal/metadata/emplace_metadata_object.ts +2 -1
- package/src/programmers/AssertProgrammer.ts +14 -10
- package/src/programmers/CheckerProgrammer.ts +139 -134
- package/src/programmers/FeatureProgrammer.ts +324 -266
- package/src/programmers/IsProgrammer.ts +80 -77
- package/src/programmers/ValidateProgrammer.ts +7 -3
- package/src/programmers/helpers/UnionExplorer.ts +33 -12
- package/src/programmers/internal/feature_object_entries.ts +18 -15
- package/src/programmers/json/JsonStringifyProgrammer.ts +103 -76
- package/src/programmers/misc/MiscCloneProgrammer.ts +122 -95
- package/src/programmers/misc/MiscPruneProgrammer.ts +111 -90
- package/src/programmers/notations/NotationGeneralProgrammer.ts +138 -91
|
@@ -9,6 +9,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
|
|
|
9
9
|
|
|
10
10
|
import { Metadata } from "../../schemas/metadata/Metadata";
|
|
11
11
|
import { MetadataArray } from "../../schemas/metadata/MetadataArray";
|
|
12
|
+
import { MetadataObject } from "../../schemas/metadata/MetadataObject";
|
|
12
13
|
import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
|
|
13
14
|
import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
|
|
14
15
|
|
|
@@ -105,9 +106,11 @@ export namespace NotationGeneralProgrammer {
|
|
|
105
106
|
ts.factory.createArrowFunction(
|
|
106
107
|
undefined,
|
|
107
108
|
undefined,
|
|
108
|
-
FeatureProgrammer.parameterDeclarations(
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
FeatureProgrammer.parameterDeclarations({
|
|
110
|
+
config: props.config,
|
|
111
|
+
type: TypeFactory.keyword("any"),
|
|
112
|
+
input: ts.factory.createIdentifier("input"),
|
|
113
|
+
}),
|
|
111
114
|
TypeFactory.keyword("any"),
|
|
112
115
|
undefined,
|
|
113
116
|
decode_array_inline({
|
|
@@ -143,9 +146,11 @@ export namespace NotationGeneralProgrammer {
|
|
|
143
146
|
ts.factory.createArrowFunction(
|
|
144
147
|
undefined,
|
|
145
148
|
undefined,
|
|
146
|
-
FeatureProgrammer.parameterDeclarations(
|
|
147
|
-
|
|
148
|
-
|
|
149
|
+
FeatureProgrammer.parameterDeclarations({
|
|
150
|
+
config: props.config,
|
|
151
|
+
type: TypeFactory.keyword("any"),
|
|
152
|
+
input: ts.factory.createIdentifier("input"),
|
|
153
|
+
}),
|
|
149
154
|
TypeFactory.keyword("any"),
|
|
150
155
|
undefined,
|
|
151
156
|
decode_tuple_inline({
|
|
@@ -342,12 +347,23 @@ export namespace NotationGeneralProgrammer {
|
|
|
342
347
|
}
|
|
343
348
|
};
|
|
344
349
|
|
|
345
|
-
const decode_object = (
|
|
350
|
+
const decode_object = (props: {
|
|
351
|
+
importer: FunctionImporter;
|
|
352
|
+
object: MetadataObject;
|
|
353
|
+
input: ts.Expression;
|
|
354
|
+
explore: FeatureProgrammer.IExplore;
|
|
355
|
+
}) =>
|
|
346
356
|
FeatureProgrammer.decode_object({
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
357
|
+
config: {
|
|
358
|
+
trace: false,
|
|
359
|
+
path: false,
|
|
360
|
+
prefix: PREFIX,
|
|
361
|
+
},
|
|
362
|
+
importer: props.importer,
|
|
363
|
+
object: props.object,
|
|
364
|
+
input: props.input,
|
|
365
|
+
explore: props.explore,
|
|
366
|
+
});
|
|
351
367
|
|
|
352
368
|
const decode_array = (props: {
|
|
353
369
|
config: FeatureProgrammer.IConfig;
|
|
@@ -364,11 +380,15 @@ export namespace NotationGeneralProgrammer {
|
|
|
364
380
|
),
|
|
365
381
|
),
|
|
366
382
|
undefined,
|
|
367
|
-
FeatureProgrammer.argumentsArray(
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
383
|
+
FeatureProgrammer.argumentsArray({
|
|
384
|
+
config: props.config,
|
|
385
|
+
explore: {
|
|
386
|
+
...props.explore,
|
|
387
|
+
source: "function",
|
|
388
|
+
from: "array",
|
|
389
|
+
},
|
|
390
|
+
input: props.input,
|
|
391
|
+
}),
|
|
372
392
|
)
|
|
373
393
|
: decode_array_inline(props);
|
|
374
394
|
|
|
@@ -379,9 +399,14 @@ export namespace NotationGeneralProgrammer {
|
|
|
379
399
|
array: MetadataArray;
|
|
380
400
|
explore: FeatureProgrammer.IExplore;
|
|
381
401
|
}) =>
|
|
382
|
-
FeatureProgrammer.decode_array(
|
|
383
|
-
|
|
384
|
-
|
|
402
|
+
FeatureProgrammer.decode_array({
|
|
403
|
+
config: props.config,
|
|
404
|
+
importer: props.importer,
|
|
405
|
+
combiner: NotationJoiner.array,
|
|
406
|
+
array: props.array,
|
|
407
|
+
input: props.input,
|
|
408
|
+
explore: props.explore,
|
|
409
|
+
});
|
|
385
410
|
|
|
386
411
|
const decode_tuple = (props: {
|
|
387
412
|
context: ITypiaContext;
|
|
@@ -399,10 +424,14 @@ export namespace NotationGeneralProgrammer {
|
|
|
399
424
|
),
|
|
400
425
|
),
|
|
401
426
|
undefined,
|
|
402
|
-
FeatureProgrammer.argumentsArray(
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
427
|
+
FeatureProgrammer.argumentsArray({
|
|
428
|
+
config: props.config,
|
|
429
|
+
explore: {
|
|
430
|
+
...props.explore,
|
|
431
|
+
source: "function",
|
|
432
|
+
},
|
|
433
|
+
input: props.input,
|
|
434
|
+
}),
|
|
406
435
|
)
|
|
407
436
|
: decode_tuple_inline({
|
|
408
437
|
...props,
|
|
@@ -588,19 +617,18 @@ export namespace NotationGeneralProgrammer {
|
|
|
588
617
|
explore: FeatureProgrammer.IExplore;
|
|
589
618
|
}) => {
|
|
590
619
|
if (props.metadata.objects.length === 1)
|
|
591
|
-
return decode_object(
|
|
592
|
-
props.
|
|
593
|
-
props.metadata.objects[0]!,
|
|
594
|
-
props.
|
|
595
|
-
|
|
620
|
+
return decode_object({
|
|
621
|
+
importer: props.importer,
|
|
622
|
+
object: props.metadata.objects[0]!,
|
|
623
|
+
input: props.input,
|
|
624
|
+
explore: props.explore,
|
|
625
|
+
});
|
|
596
626
|
return ts.factory.createCallExpression(
|
|
597
627
|
ts.factory.createIdentifier(
|
|
598
628
|
props.importer.useLocal(`${PREFIX}u${props.metadata.union_index!}`),
|
|
599
629
|
),
|
|
600
630
|
undefined,
|
|
601
|
-
FeatureProgrammer.argumentsArray(props
|
|
602
|
-
props.input,
|
|
603
|
-
),
|
|
631
|
+
FeatureProgrammer.argumentsArray(props),
|
|
604
632
|
);
|
|
605
633
|
};
|
|
606
634
|
|
|
@@ -682,9 +710,11 @@ export namespace NotationGeneralProgrammer {
|
|
|
682
710
|
props.elements.map((e) => e.type.name).join(" | "),
|
|
683
711
|
() =>
|
|
684
712
|
arrow(
|
|
685
|
-
FeatureProgrammer.parameterDeclarations(
|
|
686
|
-
|
|
687
|
-
|
|
713
|
+
FeatureProgrammer.parameterDeclarations({
|
|
714
|
+
config: props.config,
|
|
715
|
+
type: TypeFactory.keyword("any"),
|
|
716
|
+
input: ts.factory.createIdentifier("input"),
|
|
717
|
+
}),
|
|
688
718
|
)({
|
|
689
719
|
...arrayExplore,
|
|
690
720
|
postfix: "",
|
|
@@ -692,7 +722,11 @@ export namespace NotationGeneralProgrammer {
|
|
|
692
722
|
),
|
|
693
723
|
),
|
|
694
724
|
undefined,
|
|
695
|
-
FeatureProgrammer.argumentsArray(
|
|
725
|
+
FeatureProgrammer.argumentsArray({
|
|
726
|
+
config: props.config,
|
|
727
|
+
explore: arrayExplore,
|
|
728
|
+
input: props.input,
|
|
729
|
+
}),
|
|
696
730
|
);
|
|
697
731
|
};
|
|
698
732
|
|
|
@@ -723,56 +757,70 @@ export namespace NotationGeneralProgrammer {
|
|
|
723
757
|
trace: false,
|
|
724
758
|
path: false,
|
|
725
759
|
initializer,
|
|
726
|
-
decoder: () =>
|
|
760
|
+
decoder: (next) =>
|
|
727
761
|
decode({
|
|
728
762
|
context: props.context,
|
|
729
763
|
config,
|
|
730
764
|
importer: props.importer,
|
|
731
|
-
metadata,
|
|
732
|
-
explore,
|
|
733
|
-
input,
|
|
765
|
+
metadata: next.metadata,
|
|
766
|
+
explore: next.explore,
|
|
767
|
+
input: next.input,
|
|
734
768
|
}),
|
|
735
769
|
objector: {
|
|
736
|
-
checker: () =>
|
|
770
|
+
checker: (next) =>
|
|
737
771
|
IsProgrammer.decode({
|
|
738
772
|
context: props.context,
|
|
739
773
|
importer: props.importer,
|
|
740
|
-
input,
|
|
741
|
-
metadata,
|
|
742
|
-
explore,
|
|
774
|
+
input: next.input,
|
|
775
|
+
metadata: next.metadata,
|
|
776
|
+
explore: next.explore,
|
|
743
777
|
}),
|
|
744
|
-
decoder: () =>
|
|
745
|
-
|
|
746
|
-
unionizer: decode_union_object((input, object, explore) =>
|
|
747
|
-
IsProgrammer.decode_object({
|
|
748
|
-
context: props.context,
|
|
778
|
+
decoder: (next) =>
|
|
779
|
+
decode_object({
|
|
749
780
|
importer: props.importer,
|
|
750
|
-
object,
|
|
751
|
-
input,
|
|
752
|
-
explore,
|
|
781
|
+
object: next.object,
|
|
782
|
+
input: next.input,
|
|
783
|
+
explore: next.explore,
|
|
753
784
|
}),
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
785
|
+
joiner: NotationJoiner.object(props.rename),
|
|
786
|
+
unionizer: (next) =>
|
|
787
|
+
decode_union_object((input, object, explore) =>
|
|
788
|
+
IsProgrammer.decode_object({
|
|
789
|
+
context: props.context,
|
|
790
|
+
importer: props.importer,
|
|
791
|
+
object,
|
|
792
|
+
input,
|
|
793
|
+
explore,
|
|
794
|
+
}),
|
|
795
|
+
)((input, object, explore) =>
|
|
796
|
+
decode_object({
|
|
797
|
+
importer: props.importer,
|
|
798
|
+
object,
|
|
799
|
+
input,
|
|
800
|
+
explore,
|
|
801
|
+
}),
|
|
802
|
+
)((exp) => exp)((input, expected) =>
|
|
803
|
+
create_throw_error({
|
|
804
|
+
importer: props.importer,
|
|
805
|
+
expected,
|
|
806
|
+
input,
|
|
807
|
+
}),
|
|
808
|
+
)(next.input, next.objects, next.explore),
|
|
809
|
+
failure: (next) =>
|
|
762
810
|
create_throw_error({
|
|
763
811
|
importer: props.importer,
|
|
764
|
-
expected,
|
|
765
|
-
input,
|
|
812
|
+
expected: next.expected,
|
|
813
|
+
input: next.input,
|
|
766
814
|
}),
|
|
767
815
|
},
|
|
768
816
|
generator: {
|
|
769
|
-
arrays: (
|
|
817
|
+
arrays: (collection) =>
|
|
770
818
|
write_array_functions({
|
|
771
819
|
importer: props.importer,
|
|
772
820
|
config,
|
|
773
821
|
collection,
|
|
774
822
|
}),
|
|
775
|
-
tuples: (
|
|
823
|
+
tuples: (collection) =>
|
|
776
824
|
write_tuple_functions({
|
|
777
825
|
context: props.context,
|
|
778
826
|
importer: props.importer,
|
|
@@ -784,26 +832,25 @@ export namespace NotationGeneralProgrammer {
|
|
|
784
832
|
return config;
|
|
785
833
|
};
|
|
786
834
|
|
|
787
|
-
const initializer: FeatureProgrammer.IConfig["initializer"] =
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
};
|
|
835
|
+
const initializer: FeatureProgrammer.IConfig["initializer"] = (props) => {
|
|
836
|
+
const collection = new MetadataCollection();
|
|
837
|
+
const result = MetadataFactory.analyze({
|
|
838
|
+
checker: props.context.checker,
|
|
839
|
+
transformer: props.context.transformer,
|
|
840
|
+
options: {
|
|
841
|
+
escape: false,
|
|
842
|
+
constant: true,
|
|
843
|
+
absorb: true,
|
|
844
|
+
},
|
|
845
|
+
collection,
|
|
846
|
+
type: props.type,
|
|
847
|
+
});
|
|
848
|
+
if (result.success === false)
|
|
849
|
+
throw TransformerError.from(`typia.misc.${props.importer.method}`)(
|
|
850
|
+
result.errors,
|
|
851
|
+
);
|
|
852
|
+
return [collection, result.data];
|
|
853
|
+
};
|
|
807
854
|
|
|
808
855
|
const create_throw_error = (props: {
|
|
809
856
|
importer: FunctionImporter;
|
|
@@ -829,12 +876,12 @@ export namespace NotationGeneralProgrammer {
|
|
|
829
876
|
),
|
|
830
877
|
);
|
|
831
878
|
|
|
832
|
-
const is_instance = (
|
|
833
|
-
!!
|
|
834
|
-
!!
|
|
835
|
-
!!
|
|
836
|
-
!!
|
|
837
|
-
!!
|
|
838
|
-
!!
|
|
839
|
-
(
|
|
879
|
+
const is_instance = (metadata: Metadata): boolean =>
|
|
880
|
+
!!metadata.objects.length ||
|
|
881
|
+
!!metadata.arrays.length ||
|
|
882
|
+
!!metadata.tuples.length ||
|
|
883
|
+
!!metadata.sets.length ||
|
|
884
|
+
!!metadata.maps.length ||
|
|
885
|
+
!!metadata.natives.length ||
|
|
886
|
+
(metadata.rest !== null && is_instance(metadata.rest));
|
|
840
887
|
}
|