typia 6.7.3-dev.20240808 → 6.8.0-dev.20240811

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 (109) hide show
  1. package/lib/factories/TypeFactory.d.ts +0 -2
  2. package/lib/factories/TypeFactory.js +4 -83
  3. package/lib/factories/TypeFactory.js.map +1 -1
  4. package/lib/factories/internal/metadata/emplace_metadata_array_type.js +1 -5
  5. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -1
  6. package/lib/factories/internal/metadata/emplace_metadata_object.js +3 -4
  7. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  8. package/lib/factories/internal/metadata/iterate_metadata.js +1 -2
  9. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  10. package/lib/factories/internal/metadata/iterate_metadata_array.js +1 -2
  11. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  12. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +1 -1
  13. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  14. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js +1 -1
  15. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js.map +1 -1
  16. package/lib/factories/internal/metadata/iterate_metadata_constant.js +2 -3
  17. package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -1
  18. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +2 -3
  19. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  20. package/lib/factories/internal/metadata/iterate_metadata_map.js +1 -1
  21. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  22. package/lib/factories/internal/metadata/iterate_metadata_native.js +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  24. package/lib/factories/internal/metadata/iterate_metadata_object.js +2 -3
  25. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  26. package/lib/factories/internal/metadata/iterate_metadata_set.js +1 -1
  27. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  28. package/lib/factories/internal/metadata/iterate_metadata_template.js +1 -1
  29. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  30. package/lib/factories/internal/metadata/iterate_metadata_union.js +1 -2
  31. package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
  32. package/lib/programmers/internal/application_bigint.d.ts +1 -0
  33. package/lib/programmers/internal/application_bigint.js +14 -0
  34. package/lib/programmers/internal/application_bigint.js.map +1 -0
  35. package/lib/programmers/internal/application_v30_schema.js +10 -12
  36. package/lib/programmers/internal/application_v30_schema.js.map +1 -1
  37. package/lib/programmers/internal/application_v31_constant.js +3 -1
  38. package/lib/programmers/internal/application_v31_constant.js.map +1 -1
  39. package/lib/programmers/internal/application_v31_schema.js +10 -12
  40. package/lib/programmers/internal/application_v31_schema.js.map +1 -1
  41. package/lib/tags/Constant.d.ts +2 -2
  42. package/lib/tags/Default.d.ts +5 -1
  43. package/lib/tags/ExclusiveMaximum.d.ts +9 -5
  44. package/lib/tags/ExclusiveMinimum.d.ts +9 -5
  45. package/lib/tags/JsonSchemaPlugin.d.ts +1 -1
  46. package/lib/tags/Maximum.d.ts +8 -5
  47. package/lib/tags/Minimum.d.ts +8 -5
  48. package/lib/tags/MultipleOf.d.ts +7 -4
  49. package/lib/transformers/features/CreateRandomTransformer.js +1 -2
  50. package/lib/transformers/features/CreateRandomTransformer.js.map +1 -1
  51. package/lib/transformers/features/RandomTransformer.js +1 -2
  52. package/lib/transformers/features/RandomTransformer.js.map +1 -1
  53. package/lib/transformers/features/json/JsonApplicationTransformer.js +4 -5
  54. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  55. package/lib/transformers/features/misc/MiscLiteralsTransformer.js +1 -2
  56. package/lib/transformers/features/misc/MiscLiteralsTransformer.js.map +1 -1
  57. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js +1 -2
  58. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js.map +1 -1
  59. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +1 -2
  60. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
  61. package/lib/transformers/internal/GenericTransformer.js +2 -3
  62. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  63. package/package.json +2 -2
  64. package/src/factories/CommentFactory.ts +79 -79
  65. package/src/factories/MetadataCollection.ts +274 -274
  66. package/src/factories/MetadataFactory.ts +272 -272
  67. package/src/factories/TypeFactory.ts +118 -190
  68. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +42 -42
  69. package/src/factories/internal/metadata/emplace_metadata_object.ts +176 -179
  70. package/src/factories/internal/metadata/iterate_metadata.ts +94 -96
  71. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -64
  72. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  73. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  74. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -77
  75. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +213 -214
  76. package/src/factories/internal/metadata/iterate_metadata_map.ts +50 -50
  77. package/src/factories/internal/metadata/iterate_metadata_native.ts +220 -217
  78. package/src/factories/internal/metadata/iterate_metadata_object.ts +33 -34
  79. package/src/factories/internal/metadata/iterate_metadata_set.ts +41 -41
  80. package/src/factories/internal/metadata/iterate_metadata_template.ts +44 -44
  81. package/src/factories/internal/metadata/iterate_metadata_union.ts +27 -29
  82. package/src/programmers/internal/application_bigint.ts +25 -0
  83. package/src/programmers/internal/application_v30_alias.ts +52 -52
  84. package/src/programmers/internal/application_v30_object.ts +149 -149
  85. package/src/programmers/internal/application_v30_schema.ts +162 -159
  86. package/src/programmers/internal/application_v30_tuple.ts +33 -33
  87. package/src/programmers/internal/application_v31_constant.ts +4 -1
  88. package/src/programmers/internal/application_v31_schema.ts +159 -157
  89. package/src/programmers/json/JsonApplicationProgrammer.ts +82 -82
  90. package/src/tags/Constant.ts +2 -2
  91. package/src/tags/Default.ts +7 -3
  92. package/src/tags/ExclusiveMaximum.ts +12 -6
  93. package/src/tags/ExclusiveMinimum.ts +12 -6
  94. package/src/tags/JsonSchemaPlugin.ts +1 -1
  95. package/src/tags/Maximum.ts +9 -8
  96. package/src/tags/Minimum.ts +9 -8
  97. package/src/tags/MultipleOf.ts +9 -8
  98. package/src/transformers/FileTransformer.ts +91 -91
  99. package/src/transformers/features/CreateRandomTransformer.ts +40 -42
  100. package/src/transformers/features/RandomTransformer.ts +44 -46
  101. package/src/transformers/features/json/JsonApplicationTransformer.ts +124 -126
  102. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +32 -34
  103. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +33 -35
  104. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +62 -64
  105. package/src/transformers/internal/GenericTransformer.ts +2 -4
  106. package/lib/utils/TypePredicator.d.ts +0 -10
  107. package/lib/utils/TypePredicator.js +0 -36
  108. package/lib/utils/TypePredicator.js.map +0 -1
  109. package/src/utils/TypePredicator.ts +0 -32
@@ -1,217 +1,220 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
-
5
- import { ArrayUtil } from "../../../utils/ArrayUtil";
6
-
7
- import { TypeFactory } from "../../TypeFactory";
8
-
9
- export const iterate_metadata_native =
10
- (checker: ts.TypeChecker) =>
11
- (meta: Metadata, type: ts.Type): boolean => {
12
- const validator = validate(checker)(type);
13
- const name: string = TypeFactory.getFullName(checker)(type, type.symbol);
14
-
15
- const simple = SIMPLES.get(name);
16
- if (simple && validator(simple)) {
17
- ArrayUtil.set(meta.natives, name, (str) => str);
18
- return true;
19
- }
20
-
21
- for (const generic of GENERICS)
22
- if (
23
- name.substring(0, generic.name.length) === generic.name &&
24
- validator(generic)
25
- ) {
26
- ArrayUtil.set(meta.natives, generic.name ?? name, (str) => str);
27
- return true;
28
- }
29
- return false;
30
- };
31
-
32
- const validate =
33
- (checker: ts.TypeChecker) => (type: ts.Type) => (info: IClassInfo) =>
34
- (info.methods ?? []).every((method) => {
35
- const returnType = TypeFactory.getReturnType(checker)(type)(method.name);
36
- return (
37
- returnType !== null &&
38
- checker.typeToString(returnType) === method.return
39
- );
40
- }) &&
41
- (info.properties ?? []).every((property) => {
42
- const prop = checker.getPropertyOfType(type, property.name);
43
- const propType = prop?.valueDeclaration
44
- ? checker.getTypeAtLocation(prop?.valueDeclaration)
45
- : undefined;
46
- return (
47
- propType !== undefined &&
48
- checker.typeToString(propType) === property.type
49
- );
50
- });
51
-
52
- const getBinaryProps = (className: string): IClassInfo => ({
53
- name: className,
54
- methods: [
55
- ...["indexOf", "lastIndexOf"].map((name) => ({
56
- name,
57
- return: "number",
58
- })),
59
- ...["some", "every"].map((name) => ({
60
- name,
61
- return: "boolean",
62
- })),
63
- ...["join", "toLocaleString"].map((name) => ({
64
- name,
65
- return: "string",
66
- })),
67
- ...["reverse", "slice", "subarray"].map((name) => ({
68
- name,
69
- return: className,
70
- })),
71
- ],
72
- properties: ["BYTES_PER_ELEMENT", "length", "byteLength", "byteOffset"].map(
73
- (name) => ({
74
- name,
75
- type: "number",
76
- }),
77
- ),
78
- });
79
- const SIMPLES: Map<string, IClassInfo> = new Map([
80
- [
81
- "Date",
82
- {
83
- methods: ["getTime", "getFullYear", "getMonth", "getMinutes"].map(
84
- (name) => ({
85
- name,
86
- return: "number",
87
- }),
88
- ),
89
- },
90
- ],
91
- [
92
- "Boolean",
93
- {
94
- methods: [
95
- {
96
- name: "valueOf",
97
- return: "boolean",
98
- },
99
- ],
100
- },
101
- ],
102
- [
103
- "Number",
104
- {
105
- methods: [
106
- ...["toFixed", "toExponential", "toPrecision"].map((name) => ({
107
- name,
108
- return: "string",
109
- })),
110
- { name: "valueOf", return: "number" },
111
- ],
112
- },
113
- ],
114
- [
115
- "String",
116
- {
117
- methods: [
118
- "charAt",
119
- "concat",
120
- "valueOf",
121
- "trim",
122
- "replace",
123
- "substring",
124
- ].map((name) => ({ name, return: "string" })),
125
- },
126
- ],
127
- ...[
128
- "Uint8Array",
129
- "Uint8ClampedArray",
130
- "Uint16Array",
131
- "Uint32Array",
132
- "BigUint64Array",
133
- "Int8Array",
134
- "Int16Array",
135
- "Int32Array",
136
- "BigInt64Array",
137
- "Float32Array",
138
- "Float64Array",
139
- ].map((name) => [name, getBinaryProps(name)] as const),
140
- ...["ArrayBuffer", "SharedArrayBuffer"].map((className) => {
141
- const info: IClassInfo = {
142
- methods: [{ name: "slice", return: className }],
143
- properties: [{ name: "byteLength", type: "number" }],
144
- };
145
- return [className, info] as const;
146
- }),
147
- ...["Blob", "File"].map(
148
- (className) =>
149
- [
150
- className,
151
- {
152
- methods: [
153
- { name: "arrayBuffer", return: "Promise<ArrayBuffer>" },
154
- { name: "slice", return: "Blob" },
155
- { name: "text", return: "Promise<string>" },
156
- ],
157
- properties: [
158
- { name: "size", type: "number" },
159
- { name: "type", type: "string" },
160
- ],
161
- },
162
- ] satisfies [string, IClassInfo],
163
- ),
164
- [
165
- "DataView",
166
- {
167
- methods: [
168
- "getFloat32",
169
- "getFloat64",
170
- "getInt8",
171
- "getInt16",
172
- "getInt32",
173
- "getUint8",
174
- "getUint16",
175
- "getUint32",
176
- ].map((name) => ({
177
- name,
178
- return: "number",
179
- })),
180
- },
181
- ],
182
- [
183
- "RegExp",
184
- {
185
- methods: [
186
- {
187
- name: "test",
188
- return: "boolean",
189
- },
190
- ],
191
- },
192
- ],
193
- ]);
194
- const GENERICS: Array<IClassInfo & { name: string }> = [
195
- "WeakMap",
196
- "WeakSet",
197
- ].map((name) => ({
198
- name,
199
- methods: ["has", "delete"].map((name) => ({
200
- name,
201
- return: "boolean",
202
- })),
203
- }));
204
-
205
- interface IClassInfo {
206
- name?: string;
207
- methods?: IMethod[];
208
- properties?: IProperty[];
209
- }
210
- interface IProperty {
211
- name: string;
212
- type: string;
213
- }
214
- interface IMethod {
215
- name: string;
216
- return: string;
217
- }
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../schemas/metadata/Metadata";
4
+
5
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
6
+
7
+ import { TypeFactory } from "../../TypeFactory";
8
+
9
+ export const iterate_metadata_native =
10
+ (checker: ts.TypeChecker) =>
11
+ (meta: Metadata, type: ts.Type): boolean => {
12
+ const validator = validate(checker)(type);
13
+ const name: string = TypeFactory.getFullName(checker)(
14
+ type,
15
+ type.getSymbol(),
16
+ );
17
+
18
+ const simple = SIMPLES.get(name);
19
+ if (simple && validator(simple)) {
20
+ ArrayUtil.set(meta.natives, name, (str) => str);
21
+ return true;
22
+ }
23
+
24
+ for (const generic of GENERICS)
25
+ if (
26
+ name.substring(0, generic.name.length) === generic.name &&
27
+ validator(generic)
28
+ ) {
29
+ ArrayUtil.set(meta.natives, generic.name ?? name, (str) => str);
30
+ return true;
31
+ }
32
+ return false;
33
+ };
34
+
35
+ const validate =
36
+ (checker: ts.TypeChecker) => (type: ts.Type) => (info: IClassInfo) =>
37
+ (info.methods ?? []).every((method) => {
38
+ const returnType = TypeFactory.getReturnType(checker)(type)(method.name);
39
+ return (
40
+ returnType !== null &&
41
+ checker.typeToString(returnType) === method.return
42
+ );
43
+ }) &&
44
+ (info.properties ?? []).every((property) => {
45
+ const prop = checker.getPropertyOfType(type, property.name);
46
+ const propType = prop?.valueDeclaration
47
+ ? checker.getTypeAtLocation(prop?.valueDeclaration)
48
+ : undefined;
49
+ return (
50
+ propType !== undefined &&
51
+ checker.typeToString(propType) === property.type
52
+ );
53
+ });
54
+
55
+ const getBinaryProps = (className: string): IClassInfo => ({
56
+ name: className,
57
+ methods: [
58
+ ...["indexOf", "lastIndexOf"].map((name) => ({
59
+ name,
60
+ return: "number",
61
+ })),
62
+ ...["some", "every"].map((name) => ({
63
+ name,
64
+ return: "boolean",
65
+ })),
66
+ ...["join", "toLocaleString"].map((name) => ({
67
+ name,
68
+ return: "string",
69
+ })),
70
+ ...["reverse", "slice", "subarray"].map((name) => ({
71
+ name,
72
+ return: className,
73
+ })),
74
+ ],
75
+ properties: ["BYTES_PER_ELEMENT", "length", "byteLength", "byteOffset"].map(
76
+ (name) => ({
77
+ name,
78
+ type: "number",
79
+ }),
80
+ ),
81
+ });
82
+ const SIMPLES: Map<string, IClassInfo> = new Map([
83
+ [
84
+ "Date",
85
+ {
86
+ methods: ["getTime", "getFullYear", "getMonth", "getMinutes"].map(
87
+ (name) => ({
88
+ name,
89
+ return: "number",
90
+ }),
91
+ ),
92
+ },
93
+ ],
94
+ [
95
+ "Boolean",
96
+ {
97
+ methods: [
98
+ {
99
+ name: "valueOf",
100
+ return: "boolean",
101
+ },
102
+ ],
103
+ },
104
+ ],
105
+ [
106
+ "Number",
107
+ {
108
+ methods: [
109
+ ...["toFixed", "toExponential", "toPrecision"].map((name) => ({
110
+ name,
111
+ return: "string",
112
+ })),
113
+ { name: "valueOf", return: "number" },
114
+ ],
115
+ },
116
+ ],
117
+ [
118
+ "String",
119
+ {
120
+ methods: [
121
+ "charAt",
122
+ "concat",
123
+ "valueOf",
124
+ "trim",
125
+ "replace",
126
+ "substring",
127
+ ].map((name) => ({ name, return: "string" })),
128
+ },
129
+ ],
130
+ ...[
131
+ "Uint8Array",
132
+ "Uint8ClampedArray",
133
+ "Uint16Array",
134
+ "Uint32Array",
135
+ "BigUint64Array",
136
+ "Int8Array",
137
+ "Int16Array",
138
+ "Int32Array",
139
+ "BigInt64Array",
140
+ "Float32Array",
141
+ "Float64Array",
142
+ ].map((name) => [name, getBinaryProps(name)] as const),
143
+ ...["ArrayBuffer", "SharedArrayBuffer"].map((className) => {
144
+ const info: IClassInfo = {
145
+ methods: [{ name: "slice", return: className }],
146
+ properties: [{ name: "byteLength", type: "number" }],
147
+ };
148
+ return [className, info] as const;
149
+ }),
150
+ ...["Blob", "File"].map(
151
+ (className) =>
152
+ [
153
+ className,
154
+ {
155
+ methods: [
156
+ { name: "arrayBuffer", return: "Promise<ArrayBuffer>" },
157
+ { name: "slice", return: "Blob" },
158
+ { name: "text", return: "Promise<string>" },
159
+ ],
160
+ properties: [
161
+ { name: "size", type: "number" },
162
+ { name: "type", type: "string" },
163
+ ],
164
+ },
165
+ ] satisfies [string, IClassInfo],
166
+ ),
167
+ [
168
+ "DataView",
169
+ {
170
+ methods: [
171
+ "getFloat32",
172
+ "getFloat64",
173
+ "getInt8",
174
+ "getInt16",
175
+ "getInt32",
176
+ "getUint8",
177
+ "getUint16",
178
+ "getUint32",
179
+ ].map((name) => ({
180
+ name,
181
+ return: "number",
182
+ })),
183
+ },
184
+ ],
185
+ [
186
+ "RegExp",
187
+ {
188
+ methods: [
189
+ {
190
+ name: "test",
191
+ return: "boolean",
192
+ },
193
+ ],
194
+ },
195
+ ],
196
+ ]);
197
+ const GENERICS: Array<IClassInfo & { name: string }> = [
198
+ "WeakMap",
199
+ "WeakSet",
200
+ ].map((name) => ({
201
+ name,
202
+ methods: ["has", "delete"].map((name) => ({
203
+ name,
204
+ return: "boolean",
205
+ })),
206
+ }));
207
+
208
+ interface IClassInfo {
209
+ name?: string;
210
+ methods?: IMethod[];
211
+ properties?: IProperty[];
212
+ }
213
+ interface IProperty {
214
+ name: string;
215
+ type: string;
216
+ }
217
+ interface IMethod {
218
+ name: string;
219
+ return: string;
220
+ }
@@ -1,34 +1,33 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
- import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
- import { TypePredicator } from "../../../utils/TypePredicator";
8
-
9
- import { MetadataCollection } from "../../MetadataCollection";
10
- import { MetadataFactory } from "../../MetadataFactory";
11
- import { emplace_metadata_object } from "./emplace_metadata_object";
12
-
13
- export const iterate_metadata_object =
14
- (checker: ts.TypeChecker) =>
15
- (options: MetadataFactory.IOptions) =>
16
- (collection: MetadataCollection) =>
17
- (errors: MetadataFactory.IError[]) =>
18
- (meta: Metadata, type: ts.Type, ensure: boolean = false): boolean => {
19
- if (ensure === false) {
20
- const filter = (flag: ts.TypeFlags) => (type.flags & flag) !== 0;
21
- if (
22
- !filter(ts.TypeFlags.Object) &&
23
- !TypePredicator.isIntersection(type) &&
24
- (type as any).intrinsicName !== "object"
25
- )
26
- return false;
27
- }
28
-
29
- const obj: MetadataObject = emplace_metadata_object(checker)(options)(
30
- collection,
31
- )(errors)(type, meta.nullable);
32
- ArrayUtil.add(meta.objects, obj, (elem) => elem.name === obj.name);
33
- return true;
34
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../schemas/metadata/Metadata";
4
+ import { MetadataObject } from "../../../schemas/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
+
12
+ export const iterate_metadata_object =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (errors: MetadataFactory.IError[]) =>
17
+ (meta: Metadata, type: ts.Type, ensure: boolean = false): boolean => {
18
+ if (ensure === false) {
19
+ const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
20
+ if (
21
+ !filter(ts.TypeFlags.Object) &&
22
+ !type.isIntersection() &&
23
+ (type as any).intrinsicName !== "object"
24
+ )
25
+ return false;
26
+ }
27
+
28
+ const obj: MetadataObject = emplace_metadata_object(checker)(options)(
29
+ collection,
30
+ )(errors)(type, meta.nullable);
31
+ ArrayUtil.add(meta.objects, obj, (elem) => elem.name === obj.name);
32
+ return true;
33
+ };
@@ -1,41 +1,41 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
-
5
- import { ArrayUtil } from "../../../utils/ArrayUtil";
6
-
7
- import { MetadataCollection } from "../../MetadataCollection";
8
- import { MetadataFactory } from "../../MetadataFactory";
9
- import { TypeFactory } from "../../TypeFactory";
10
- import { explore_metadata } from "./explore_metadata";
11
-
12
- export const iterate_metadata_set =
13
- (checker: ts.TypeChecker) =>
14
- (options: MetadataFactory.IOptions) =>
15
- (collection: MetadataCollection) =>
16
- (errors: MetadataFactory.IError[]) =>
17
- (
18
- meta: Metadata,
19
- type: ts.Type,
20
- explore: MetadataFactory.IExplore,
21
- ): boolean => {
22
- type = checker.getApparentType(type);
23
-
24
- const name = TypeFactory.getFullName(checker)(type, type.symbol);
25
- const generic = type.aliasSymbol
26
- ? type.aliasTypeArguments
27
- : checker.getTypeArguments(type as ts.TypeReference);
28
- if (name.substring(0, 4) !== "Set<" || generic?.length !== 1) return false;
29
-
30
- const key: ts.Type = generic[0]!;
31
- ArrayUtil.set(
32
- meta.sets,
33
- explore_metadata(checker)(options)(collection)(errors)(key, {
34
- ...explore,
35
- escaped: false,
36
- aliased: false,
37
- }),
38
- (elem) => elem.getName(),
39
- );
40
- return true;
41
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../schemas/metadata/Metadata";
4
+
5
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
6
+
7
+ import { MetadataCollection } from "../../MetadataCollection";
8
+ import { MetadataFactory } from "../../MetadataFactory";
9
+ import { TypeFactory } from "../../TypeFactory";
10
+ import { explore_metadata } from "./explore_metadata";
11
+
12
+ export const iterate_metadata_set =
13
+ (checker: ts.TypeChecker) =>
14
+ (options: MetadataFactory.IOptions) =>
15
+ (collection: MetadataCollection) =>
16
+ (errors: MetadataFactory.IError[]) =>
17
+ (
18
+ meta: Metadata,
19
+ type: ts.Type,
20
+ explore: MetadataFactory.IExplore,
21
+ ): boolean => {
22
+ type = checker.getApparentType(type);
23
+
24
+ const name = TypeFactory.getFullName(checker)(type, type.getSymbol());
25
+ const generic = type.aliasSymbol
26
+ ? type.aliasTypeArguments
27
+ : checker.getTypeArguments(type as ts.TypeReference);
28
+ if (name.substring(0, 4) !== "Set<" || generic?.length !== 1) return false;
29
+
30
+ const key: ts.Type = generic[0]!;
31
+ ArrayUtil.set(
32
+ meta.sets,
33
+ explore_metadata(checker)(options)(collection)(errors)(key, {
34
+ ...explore,
35
+ escaped: false,
36
+ aliased: false,
37
+ }),
38
+ (elem) => elem.getName(),
39
+ );
40
+ return true;
41
+ };