typia 4.0.0 → 4.0.1-dev.20230605

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.
Files changed (89) hide show
  1. package/lib/programmers/ApplicationProgrammer.js +1 -1
  2. package/lib/programmers/internal/application_alias.d.ts +5 -0
  3. package/lib/programmers/internal/{application_definition.js → application_alias.js} +10 -10
  4. package/lib/programmers/internal/application_alias.js.map +1 -0
  5. package/lib/programmers/internal/application_array.js +19 -41
  6. package/lib/programmers/internal/application_array.js.map +1 -1
  7. package/lib/programmers/internal/application_native.js +3 -3
  8. package/lib/programmers/internal/application_object.js +5 -5
  9. package/lib/programmers/internal/application_schema.js +4 -4
  10. package/lib/programmers/internal/application_schema.js.map +1 -1
  11. package/lib/programmers/internal/application_tuple.js +8 -30
  12. package/lib/programmers/internal/application_tuple.js.map +1 -1
  13. package/lib/schemas/IJsonComponents.d.ts +1 -12
  14. package/lib/schemas/IJsonSchema.d.ts +1 -1
  15. package/package.json +1 -1
  16. package/src/IRandomGenerator.ts +34 -34
  17. package/src/factories/IdentifierFactory.ts +65 -65
  18. package/src/factories/MetadataCollection.ts +254 -254
  19. package/src/factories/MetadataFactory.ts +40 -40
  20. package/src/factories/MetadataTagFactory.ts +300 -300
  21. package/src/factories/internal/metadata/emplace_metadata_array.ts +34 -34
  22. package/src/factories/internal/metadata/emplace_metadata_definition.ts +35 -35
  23. package/src/factories/internal/metadata/emplace_metadata_object.ts +142 -142
  24. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +50 -50
  25. package/src/factories/internal/metadata/explore_metadata.ts +66 -66
  26. package/src/factories/internal/metadata/iterate_metadata.ts +77 -77
  27. package/src/factories/internal/metadata/iterate_metadata_array.ts +25 -25
  28. package/src/factories/internal/metadata/iterate_metadata_collection.ts +130 -130
  29. package/src/factories/internal/metadata/iterate_metadata_definition.ts +30 -30
  30. package/src/factories/internal/metadata/iterate_metadata_object.ts +49 -49
  31. package/src/factories/internal/metadata/iterate_metadata_sort.ts +68 -68
  32. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +24 -24
  33. package/src/factories/internal/metadata/iterate_metadata_union.ts +68 -68
  34. package/src/metadata/IMetadata.ts +27 -27
  35. package/src/metadata/IMetadataAlias.ts +12 -12
  36. package/src/metadata/IMetadataApplication.ts +7 -7
  37. package/src/metadata/IMetadataArray.ts +10 -10
  38. package/src/metadata/IMetadataCollection.ts +11 -11
  39. package/src/metadata/IMetadataDictionary.ts +14 -14
  40. package/src/metadata/IMetadataObject.ts +18 -18
  41. package/src/metadata/IMetadataProperty.ts +11 -11
  42. package/src/metadata/IMetadataTuple.ts +10 -10
  43. package/src/metadata/Metadata.ts +585 -585
  44. package/src/metadata/MetadataAlias.ts +61 -61
  45. package/src/metadata/MetadataArray.ts +52 -52
  46. package/src/metadata/MetadataObject.ts +114 -114
  47. package/src/metadata/MetadataProperty.ts +64 -64
  48. package/src/metadata/MetadataTuple.ts +53 -53
  49. package/src/programmers/ApplicationProgrammer.ts +55 -55
  50. package/src/programmers/AssertProgrammer.ts +291 -291
  51. package/src/programmers/CheckerProgrammer.ts +1182 -1182
  52. package/src/programmers/CloneProgrammer.ts +595 -595
  53. package/src/programmers/FeatureProgrammer.ts +495 -495
  54. package/src/programmers/IsProgrammer.ts +250 -250
  55. package/src/programmers/LiteralsProgrammer.ts +66 -66
  56. package/src/programmers/PruneProgrammer.ts +550 -550
  57. package/src/programmers/RandomProgrammer.ts +589 -589
  58. package/src/programmers/StringifyProgrammer.ts +990 -990
  59. package/src/programmers/ValidateProgrammer.ts +313 -313
  60. package/src/programmers/helpers/FunctionImporeter.ts +78 -78
  61. package/src/programmers/helpers/RandomJoiner.ts +173 -173
  62. package/src/programmers/helpers/UnionExplorer.ts +301 -301
  63. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  64. package/src/programmers/helpers/disable_function_importer_declare.ts +26 -26
  65. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  66. package/src/programmers/internal/{application_definition.ts → application_alias.ts} +45 -45
  67. package/src/programmers/internal/application_array.ts +30 -64
  68. package/src/programmers/internal/application_boolean.ts +15 -15
  69. package/src/programmers/internal/application_constant.ts +26 -26
  70. package/src/programmers/internal/application_default.ts +17 -17
  71. package/src/programmers/internal/application_native.ts +39 -39
  72. package/src/programmers/internal/application_number.ts +74 -74
  73. package/src/programmers/internal/application_object.ts +167 -167
  74. package/src/programmers/internal/application_schema.ts +156 -164
  75. package/src/programmers/internal/application_tuple.ts +47 -77
  76. package/src/programmers/internal/check_union_array_like.ts +329 -329
  77. package/src/programmers/internal/feature_object_entries.ts +63 -63
  78. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +16 -16
  79. package/src/schemas/IJsonApplication.ts +8 -8
  80. package/src/schemas/IJsonComponents.ts +34 -45
  81. package/src/schemas/IJsonSchema.ts +134 -134
  82. package/src/transformers/CallExpressionTransformer.ts +179 -179
  83. package/src/transformers/FileTransformer.ts +47 -47
  84. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +104 -104
  85. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +53 -53
  86. package/src/utils/ArrayUtil.ts +45 -45
  87. package/src/utils/RandomGenerator.ts +81 -81
  88. package/lib/programmers/internal/application_definition.d.ts +0 -5
  89. package/lib/programmers/internal/application_definition.js.map +0 -1
@@ -1,77 +1,77 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
-
5
- // import { ArrayUtil } from "../../../utils/ArrayUtil";
6
- import { MetadataCollection } from "../../MetadataCollection";
7
- import { MetadataFactory } from "../../MetadataFactory";
8
- import { iterate_metadata_array } from "./iterate_metadata_array";
9
- import { iterate_metadata_atomic } from "./iterate_metadata_atomic";
10
- import { iterate_metadata_coalesce } from "./iterate_metadata_coalesce";
11
- import { iterate_metadata_constant } from "./iterate_metadata_constant";
12
- import { iterate_metadata_definition } from "./iterate_metadata_definition";
13
- import { iterate_metadata_map } from "./iterate_metadata_map";
14
- import { iterate_metadata_native } from "./iterate_metadata_native";
15
- import { iterate_metadata_object } from "./iterate_metadata_object";
16
- import { iterate_metadata_resolve } from "./iterate_metadata_resolve";
17
- import { iterate_metadata_set } from "./iterate_metadata_set";
18
- import { iterate_metadata_template } from "./iterate_metadata_template";
19
- import { iterate_metadata_tuple } from "./iterate_metadata_tuple";
20
- import { iterate_metadata_union } from "./iterate_metadata_union";
21
-
22
- export const iterate_metadata =
23
- (checker: ts.TypeChecker) =>
24
- (options: MetadataFactory.IOptions) =>
25
- (collection: MetadataCollection) =>
26
- (
27
- meta: Metadata,
28
- type: ts.Type,
29
- parentResolved: boolean,
30
- aliased: boolean,
31
- ): void => {
32
- if (type.isTypeParameter() === true)
33
- throw new Error(
34
- `Error on typia.MetadataFactory.generate(): non-specified generic argument on ${meta.getName()}.`,
35
- );
36
- // CHECK SPECIAL CASES
37
- if (
38
- (aliased !== true &&
39
- iterate_metadata_definition(checker)(options)(collection)(
40
- meta,
41
- type,
42
- )) ||
43
- iterate_metadata_union(checker)(options)(collection)(
44
- meta,
45
- type,
46
- parentResolved,
47
- ) ||
48
- iterate_metadata_resolve(checker)(options)(collection)(
49
- meta,
50
- type,
51
- parentResolved,
52
- )
53
- )
54
- return;
55
-
56
- // ITERATE CASES
57
- iterate_metadata_coalesce(meta, type) ||
58
- iterate_metadata_constant(checker)(options)(meta, type) ||
59
- iterate_metadata_template(checker)(options)(collection)(
60
- meta,
61
- type,
62
- ) ||
63
- iterate_metadata_atomic(meta, type) ||
64
- iterate_metadata_tuple(checker)(options)(collection)(
65
- meta,
66
- type as ts.TupleType,
67
- ) ||
68
- iterate_metadata_array(checker)(options)(collection)(meta, type) ||
69
- iterate_metadata_native(checker)(meta, type) ||
70
- iterate_metadata_map(checker)(options)(collection)(meta, type) ||
71
- iterate_metadata_set(checker)(options)(collection)(meta, type) ||
72
- iterate_metadata_object(checker)(options)(collection)(
73
- meta,
74
- type,
75
- parentResolved,
76
- );
77
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+
5
+ // import { ArrayUtil } from "../../../utils/ArrayUtil";
6
+ import { MetadataCollection } from "../../MetadataCollection";
7
+ import { MetadataFactory } from "../../MetadataFactory";
8
+ import { iterate_metadata_array } from "./iterate_metadata_array";
9
+ import { iterate_metadata_atomic } from "./iterate_metadata_atomic";
10
+ import { iterate_metadata_coalesce } from "./iterate_metadata_coalesce";
11
+ import { iterate_metadata_constant } from "./iterate_metadata_constant";
12
+ import { iterate_metadata_definition } from "./iterate_metadata_definition";
13
+ import { iterate_metadata_map } from "./iterate_metadata_map";
14
+ import { iterate_metadata_native } from "./iterate_metadata_native";
15
+ import { iterate_metadata_object } from "./iterate_metadata_object";
16
+ import { iterate_metadata_resolve } from "./iterate_metadata_resolve";
17
+ import { iterate_metadata_set } from "./iterate_metadata_set";
18
+ import { iterate_metadata_template } from "./iterate_metadata_template";
19
+ import { iterate_metadata_tuple } from "./iterate_metadata_tuple";
20
+ import { iterate_metadata_union } from "./iterate_metadata_union";
21
+
22
+ export const iterate_metadata =
23
+ (checker: ts.TypeChecker) =>
24
+ (options: MetadataFactory.IOptions) =>
25
+ (collection: MetadataCollection) =>
26
+ (
27
+ meta: Metadata,
28
+ type: ts.Type,
29
+ parentResolved: boolean,
30
+ aliased: boolean,
31
+ ): void => {
32
+ if (type.isTypeParameter() === true)
33
+ throw new Error(
34
+ `Error on typia.MetadataFactory.generate(): non-specified generic argument on ${meta.getName()}.`,
35
+ );
36
+ // CHECK SPECIAL CASES
37
+ if (
38
+ (aliased !== true &&
39
+ iterate_metadata_definition(checker)(options)(collection)(
40
+ meta,
41
+ type,
42
+ )) ||
43
+ iterate_metadata_union(checker)(options)(collection)(
44
+ meta,
45
+ type,
46
+ parentResolved,
47
+ ) ||
48
+ iterate_metadata_resolve(checker)(options)(collection)(
49
+ meta,
50
+ type,
51
+ parentResolved,
52
+ )
53
+ )
54
+ return;
55
+
56
+ // ITERATE CASES
57
+ iterate_metadata_coalesce(meta, type) ||
58
+ iterate_metadata_constant(checker)(options)(meta, type) ||
59
+ iterate_metadata_template(checker)(options)(collection)(
60
+ meta,
61
+ type,
62
+ ) ||
63
+ iterate_metadata_atomic(meta, type) ||
64
+ iterate_metadata_tuple(checker)(options)(collection)(
65
+ meta,
66
+ type as ts.TupleType,
67
+ ) ||
68
+ iterate_metadata_array(checker)(options)(collection)(meta, type) ||
69
+ iterate_metadata_native(checker)(meta, type) ||
70
+ iterate_metadata_map(checker)(options)(collection)(meta, type) ||
71
+ iterate_metadata_set(checker)(options)(collection)(meta, type) ||
72
+ iterate_metadata_object(checker)(options)(collection)(
73
+ meta,
74
+ type,
75
+ parentResolved,
76
+ );
77
+ };
@@ -1,25 +1,25 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
- import { MetadataArray } from "../../../metadata/MetadataArray";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- import { MetadataCollection } from "../../MetadataCollection";
9
- import { MetadataFactory } from "../../MetadataFactory";
10
- import { emplace_metadata_array } from "./emplace_metadata_array";
11
-
12
- export const iterate_metadata_array =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.Type): boolean => {
17
- if (!checker.isArrayType(type) && !checker.isArrayLikeType(type))
18
- return false;
19
-
20
- const array: MetadataArray = emplace_metadata_array(checker)(options)(
21
- collection,
22
- )(type, meta.nullable);
23
- ArrayUtil.add(meta.arrays, array, (elem) => elem.name === array.name);
24
- return true;
25
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+ import { MetadataArray } from "../../../metadata/MetadataArray";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ import { MetadataCollection } from "../../MetadataCollection";
9
+ import { MetadataFactory } from "../../MetadataFactory";
10
+ import { emplace_metadata_array } from "./emplace_metadata_array";
11
+
12
+ export const iterate_metadata_array =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (meta: Metadata, type: ts.Type): boolean => {
17
+ if (!checker.isArrayType(type) && !checker.isArrayLikeType(type))
18
+ return false;
19
+
20
+ const array: MetadataArray = emplace_metadata_array(checker)(options)(
21
+ collection,
22
+ )(type, meta.nullable);
23
+ ArrayUtil.add(meta.arrays, array, (elem) => elem.name === array.name);
24
+ return true;
25
+ };
@@ -1,130 +1,130 @@
1
- import { Metadata } from "../../../metadata/Metadata";
2
- import { MetadataArray } from "../../../metadata/MetadataArray";
3
- import { MetadataObject } from "../../../metadata/MetadataObject";
4
- import { MetadataTuple } from "../../../metadata/MetadataTuple";
5
-
6
- import { MetadataCollection } from "../../MetadataCollection";
7
-
8
- export const iterate_metadata_collection = (
9
- collection: MetadataCollection,
10
- ): void => {
11
- for (const array of collection.arrays())
12
- if (array.recursive === null)
13
- collection.setArrayRecursive(
14
- array,
15
- isArrayRecursive(new Set())(array)(array.value),
16
- );
17
- for (const tuple of collection.tuples())
18
- if (tuple.recursive === null) {
19
- const visited: Set<Metadata> = new Set();
20
- collection.setTupleRecursive(
21
- tuple,
22
- tuple.elements.some(isTupleRecursive(visited)(tuple)),
23
- );
24
- }
25
- for (const obj of collection.objects())
26
- if (obj.recursive === null) {
27
- const visited: Set<Metadata> = new Set();
28
- collection.setObjectRecursive(
29
- obj,
30
- obj.properties.some((p) =>
31
- isObjectRecursive(visited)(obj)(p.value),
32
- ),
33
- );
34
- }
35
- };
36
-
37
- const isArrayRecursive =
38
- (visited: Set<Metadata>) =>
39
- (array: MetadataArray) =>
40
- (meta: Metadata): boolean => {
41
- if (visited.has(meta)) return false;
42
- visited.add(meta);
43
-
44
- return (
45
- meta.arrays.some(
46
- (a) => a === array || isArrayRecursive(visited)(array)(a.value),
47
- ) ||
48
- meta.aliases.some((d) =>
49
- isArrayRecursive(visited)(array)(d.value),
50
- ) ||
51
- meta.tuples.some(
52
- (t) =>
53
- !t.recursive &&
54
- t.elements.some((e) => isArrayRecursive(visited)(array)(e)),
55
- ) ||
56
- meta.maps.some((m) => isArrayRecursive(visited)(array)(m.value)) ||
57
- meta.sets.some((s) => isArrayRecursive(visited)(array)(s)) ||
58
- (meta.resolved !== null &&
59
- isArrayRecursive(visited)(array)(meta.resolved)) ||
60
- (meta.rest !== null && isArrayRecursive(visited)(array)(meta.rest))
61
- );
62
- };
63
-
64
- const isTupleRecursive =
65
- (visited: Set<Metadata>) =>
66
- (tuple: MetadataTuple) =>
67
- (meta: Metadata): boolean => {
68
- if (visited.has(meta)) return false;
69
- visited.add(meta);
70
-
71
- return (
72
- meta.tuples.some(
73
- (t) =>
74
- t === tuple ||
75
- t.elements.some((e) => isTupleRecursive(visited)(tuple)(e)),
76
- ) ||
77
- meta.arrays.some(
78
- (a) =>
79
- !a.recursive && isTupleRecursive(visited)(tuple)(a.value),
80
- ) ||
81
- meta.maps.some((m) => isTupleRecursive(visited)(tuple)(m.value)) ||
82
- meta.sets.some((s) => isTupleRecursive(visited)(tuple)(s)) ||
83
- meta.aliases.some((d) =>
84
- isTupleRecursive(visited)(tuple)(d.value),
85
- ) ||
86
- (meta.resolved !== null &&
87
- isTupleRecursive(visited)(tuple)(meta.resolved)) ||
88
- (meta.rest !== null && isTupleRecursive(visited)(tuple)(meta.rest))
89
- );
90
- };
91
-
92
- const isObjectRecursive =
93
- (visited: Set<Metadata>) =>
94
- (obj: MetadataObject) =>
95
- (meta: Metadata): boolean => {
96
- if (visited.has(meta)) return false;
97
-
98
- visited.add(meta);
99
- return (
100
- meta.objects.some(
101
- (o) =>
102
- obj === o ||
103
- o.properties.some((prop) =>
104
- isObjectRecursive(visited)(obj)(prop.value),
105
- ),
106
- ) ||
107
- meta.aliases.some((alias) =>
108
- isObjectRecursive(visited)(obj)(alias.value),
109
- ) ||
110
- meta.arrays.some(
111
- (array) =>
112
- !array.recursive &&
113
- isObjectRecursive(visited)(obj)(array.value),
114
- ) ||
115
- meta.tuples.some(
116
- (tuple) =>
117
- !tuple.recursive &&
118
- tuple.elements.some((elem) =>
119
- isObjectRecursive(visited)(obj)(elem),
120
- ),
121
- ) ||
122
- meta.maps.some((map) =>
123
- isObjectRecursive(visited)(obj)(map.value),
124
- ) ||
125
- meta.sets.some((value) => isObjectRecursive(visited)(obj)(value)) ||
126
- (meta.resolved !== null &&
127
- isObjectRecursive(visited)(obj)(meta.resolved)) ||
128
- (meta.rest !== null && isObjectRecursive(visited)(obj)(meta.rest))
129
- );
130
- };
1
+ import { Metadata } from "../../../metadata/Metadata";
2
+ import { MetadataArray } from "../../../metadata/MetadataArray";
3
+ import { MetadataObject } from "../../../metadata/MetadataObject";
4
+ import { MetadataTuple } from "../../../metadata/MetadataTuple";
5
+
6
+ import { MetadataCollection } from "../../MetadataCollection";
7
+
8
+ export const iterate_metadata_collection = (
9
+ collection: MetadataCollection,
10
+ ): void => {
11
+ for (const array of collection.arrays())
12
+ if (array.recursive === null)
13
+ collection.setArrayRecursive(
14
+ array,
15
+ isArrayRecursive(new Set())(array)(array.value),
16
+ );
17
+ for (const tuple of collection.tuples())
18
+ if (tuple.recursive === null) {
19
+ const visited: Set<Metadata> = new Set();
20
+ collection.setTupleRecursive(
21
+ tuple,
22
+ tuple.elements.some(isTupleRecursive(visited)(tuple)),
23
+ );
24
+ }
25
+ for (const obj of collection.objects())
26
+ if (obj.recursive === null) {
27
+ const visited: Set<Metadata> = new Set();
28
+ collection.setObjectRecursive(
29
+ obj,
30
+ obj.properties.some((p) =>
31
+ isObjectRecursive(visited)(obj)(p.value),
32
+ ),
33
+ );
34
+ }
35
+ };
36
+
37
+ const isArrayRecursive =
38
+ (visited: Set<Metadata>) =>
39
+ (array: MetadataArray) =>
40
+ (meta: Metadata): boolean => {
41
+ if (visited.has(meta)) return false;
42
+ visited.add(meta);
43
+
44
+ return (
45
+ meta.arrays.some(
46
+ (a) => a === array || isArrayRecursive(visited)(array)(a.value),
47
+ ) ||
48
+ meta.aliases.some((d) =>
49
+ isArrayRecursive(visited)(array)(d.value),
50
+ ) ||
51
+ meta.tuples.some(
52
+ (t) =>
53
+ !t.recursive &&
54
+ t.elements.some((e) => isArrayRecursive(visited)(array)(e)),
55
+ ) ||
56
+ meta.maps.some((m) => isArrayRecursive(visited)(array)(m.value)) ||
57
+ meta.sets.some((s) => isArrayRecursive(visited)(array)(s)) ||
58
+ (meta.resolved !== null &&
59
+ isArrayRecursive(visited)(array)(meta.resolved)) ||
60
+ (meta.rest !== null && isArrayRecursive(visited)(array)(meta.rest))
61
+ );
62
+ };
63
+
64
+ const isTupleRecursive =
65
+ (visited: Set<Metadata>) =>
66
+ (tuple: MetadataTuple) =>
67
+ (meta: Metadata): boolean => {
68
+ if (visited.has(meta)) return false;
69
+ visited.add(meta);
70
+
71
+ return (
72
+ meta.tuples.some(
73
+ (t) =>
74
+ t === tuple ||
75
+ t.elements.some((e) => isTupleRecursive(visited)(tuple)(e)),
76
+ ) ||
77
+ meta.arrays.some(
78
+ (a) =>
79
+ !a.recursive && isTupleRecursive(visited)(tuple)(a.value),
80
+ ) ||
81
+ meta.maps.some((m) => isTupleRecursive(visited)(tuple)(m.value)) ||
82
+ meta.sets.some((s) => isTupleRecursive(visited)(tuple)(s)) ||
83
+ meta.aliases.some((d) =>
84
+ isTupleRecursive(visited)(tuple)(d.value),
85
+ ) ||
86
+ (meta.resolved !== null &&
87
+ isTupleRecursive(visited)(tuple)(meta.resolved)) ||
88
+ (meta.rest !== null && isTupleRecursive(visited)(tuple)(meta.rest))
89
+ );
90
+ };
91
+
92
+ const isObjectRecursive =
93
+ (visited: Set<Metadata>) =>
94
+ (obj: MetadataObject) =>
95
+ (meta: Metadata): boolean => {
96
+ if (visited.has(meta)) return false;
97
+
98
+ visited.add(meta);
99
+ return (
100
+ meta.objects.some(
101
+ (o) =>
102
+ obj === o ||
103
+ o.properties.some((prop) =>
104
+ isObjectRecursive(visited)(obj)(prop.value),
105
+ ),
106
+ ) ||
107
+ meta.aliases.some((alias) =>
108
+ isObjectRecursive(visited)(obj)(alias.value),
109
+ ) ||
110
+ meta.arrays.some(
111
+ (array) =>
112
+ !array.recursive &&
113
+ isObjectRecursive(visited)(obj)(array.value),
114
+ ) ||
115
+ meta.tuples.some(
116
+ (tuple) =>
117
+ !tuple.recursive &&
118
+ tuple.elements.some((elem) =>
119
+ isObjectRecursive(visited)(obj)(elem),
120
+ ),
121
+ ) ||
122
+ meta.maps.some((map) =>
123
+ isObjectRecursive(visited)(obj)(map.value),
124
+ ) ||
125
+ meta.sets.some((value) => isObjectRecursive(visited)(obj)(value)) ||
126
+ (meta.resolved !== null &&
127
+ isObjectRecursive(visited)(obj)(meta.resolved)) ||
128
+ (meta.rest !== null && isObjectRecursive(visited)(obj)(meta.rest))
129
+ );
130
+ };
@@ -1,30 +1,30 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
- import { MetadataAlias } from "../../../metadata/MetadataAlias";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- import { MetadataCollection } from "../../MetadataCollection";
9
- import { MetadataFactory } from "../../MetadataFactory";
10
- import { emplace_metadata_definition } from "./emplace_metadata_definition";
11
-
12
- export const iterate_metadata_definition =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (meta: Metadata, type: ts.Type): boolean => {
17
- if (options.absorb !== false || type.aliasSymbol === undefined)
18
- return false;
19
-
20
- const node: ts.Declaration | undefined =
21
- type.aliasSymbol.declarations?.[0];
22
- if (node === undefined) return false;
23
-
24
- // CONSTRUCT DEFINITION
25
- const alias: MetadataAlias = emplace_metadata_definition(checker)(
26
- options,
27
- )(collection)(type, meta.nullable);
28
- ArrayUtil.add(meta.aliases, alias, (elem) => elem.name === alias.name);
29
- return true;
30
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+ import { MetadataAlias } from "../../../metadata/MetadataAlias";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ import { MetadataCollection } from "../../MetadataCollection";
9
+ import { MetadataFactory } from "../../MetadataFactory";
10
+ import { emplace_metadata_definition } from "./emplace_metadata_definition";
11
+
12
+ export const iterate_metadata_definition =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (meta: Metadata, type: ts.Type): boolean => {
17
+ if (options.absorb !== false || type.aliasSymbol === undefined)
18
+ return false;
19
+
20
+ const node: ts.Declaration | undefined =
21
+ type.aliasSymbol.declarations?.[0];
22
+ if (node === undefined) return false;
23
+
24
+ // CONSTRUCT DEFINITION
25
+ const alias: MetadataAlias = emplace_metadata_definition(checker)(
26
+ options,
27
+ )(collection)(type, meta.nullable);
28
+ ArrayUtil.add(meta.aliases, alias, (elem) => elem.name === alias.name);
29
+ return true;
30
+ };
@@ -1,49 +1,49 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../metadata/Metadata";
4
- import { MetadataObject } from "../../../metadata/MetadataObject";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- import { MetadataCollection } from "../../MetadataCollection";
9
- import { MetadataFactory } from "../../MetadataFactory";
10
- import { emplace_metadata_object } from "./emplace_metadata_object";
11
- import { iterate_metadata } from "./iterate_metadata";
12
-
13
- export const iterate_metadata_object =
14
- (checker: ts.TypeChecker) =>
15
- (options: MetadataFactory.IOptions) =>
16
- (collection: MetadataCollection) =>
17
- (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
18
- const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
19
- if (
20
- !filter(ts.TypeFlags.Object) &&
21
- !type.isIntersection() &&
22
- (type as any).intrinsicName !== "object"
23
- )
24
- return false;
25
- else if (type.isIntersection()) {
26
- const fakeCollection = new MetadataCollection();
27
- const fakeSchema: Metadata = Metadata.initialize();
28
-
29
- type.types.forEach((t) =>
30
- iterate_metadata(checker)(options)(fakeCollection)(
31
- fakeSchema,
32
- t,
33
- parentResolved,
34
- false,
35
- ),
36
- );
37
- if (
38
- fakeSchema.objects.length === 0 ||
39
- fakeSchema.objects.length !== fakeSchema.size()
40
- )
41
- return true;
42
- }
43
-
44
- const obj: MetadataObject = emplace_metadata_object(checker)(options)(
45
- collection,
46
- )(type, meta.nullable);
47
- ArrayUtil.add(meta.objects, obj, (elem) => elem.name === obj.name);
48
- return true;
49
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../metadata/Metadata";
4
+ import { MetadataObject } from "../../../metadata/MetadataObject";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ import { MetadataCollection } from "../../MetadataCollection";
9
+ import { MetadataFactory } from "../../MetadataFactory";
10
+ import { emplace_metadata_object } from "./emplace_metadata_object";
11
+ import { iterate_metadata } from "./iterate_metadata";
12
+
13
+ export const iterate_metadata_object =
14
+ (checker: ts.TypeChecker) =>
15
+ (options: MetadataFactory.IOptions) =>
16
+ (collection: MetadataCollection) =>
17
+ (meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
18
+ const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
19
+ if (
20
+ !filter(ts.TypeFlags.Object) &&
21
+ !type.isIntersection() &&
22
+ (type as any).intrinsicName !== "object"
23
+ )
24
+ return false;
25
+ else if (type.isIntersection()) {
26
+ const fakeCollection = new MetadataCollection();
27
+ const fakeSchema: Metadata = Metadata.initialize();
28
+
29
+ type.types.forEach((t) =>
30
+ iterate_metadata(checker)(options)(fakeCollection)(
31
+ fakeSchema,
32
+ t,
33
+ parentResolved,
34
+ false,
35
+ ),
36
+ );
37
+ if (
38
+ fakeSchema.objects.length === 0 ||
39
+ fakeSchema.objects.length !== fakeSchema.size()
40
+ )
41
+ return true;
42
+ }
43
+
44
+ const obj: MetadataObject = emplace_metadata_object(checker)(options)(
45
+ collection,
46
+ )(type, meta.nullable);
47
+ ArrayUtil.add(meta.objects, obj, (elem) => elem.name === obj.name);
48
+ return true;
49
+ };