typia 7.0.0-dev.20241011-2 → 7.0.0-dev.20241012

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 (164) hide show
  1. package/lib/factories/MetadataCollection.d.ts +4 -4
  2. package/lib/factories/MetadataCollection.js +6 -4
  3. package/lib/factories/MetadataCollection.js.map +1 -1
  4. package/lib/factories/MetadataFactory.d.ts +2 -2
  5. package/lib/factories/MetadataFactory.js +8 -2
  6. package/lib/factories/MetadataFactory.js.map +1 -1
  7. package/lib/factories/MetadataTypeTagFactory.d.ts +2 -2
  8. package/lib/factories/MetadataTypeTagFactory.js +6 -6
  9. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  10. package/lib/factories/MetadataTypeTagSchemaFactory.d.ts +2 -2
  11. package/lib/factories/MetadataTypeTagSchemaFactory.js +1 -1
  12. package/lib/factories/MetadataTypeTagSchemaFactory.js.map +1 -1
  13. package/lib/factories/ProtobufFactory.js +12 -12
  14. package/lib/factories/ProtobufFactory.js.map +1 -1
  15. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +2 -2
  16. package/lib/factories/internal/metadata/iterate_metadata_collection.js +2 -1
  17. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  18. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -2
  19. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +5 -2
  20. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  21. package/lib/factories/internal/metadata/iterate_metadata_object.js +5 -1
  22. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata_sort.js +6 -2
  24. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  25. package/lib/programmers/CheckerProgrammer.d.ts +2 -2
  26. package/lib/programmers/CheckerProgrammer.js +5 -3
  27. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  28. package/lib/programmers/FeatureProgrammer.d.ts +5 -5
  29. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  30. package/lib/programmers/IsProgrammer.d.ts +2 -2
  31. package/lib/programmers/RandomProgrammer.js +1 -1
  32. package/lib/programmers/RandomProgrammer.js.map +1 -1
  33. package/lib/programmers/helpers/ProtobufUtil.d.ts +2 -2
  34. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  35. package/lib/programmers/helpers/PruneJoiner.d.ts +2 -2
  36. package/lib/programmers/helpers/RandomJoiner.d.ts +2 -2
  37. package/lib/programmers/helpers/UnionExplorer.d.ts +3 -3
  38. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  39. package/lib/programmers/helpers/UnionPredicator.d.ts +3 -3
  40. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  41. package/lib/programmers/http/HttpFormDataProgrammer.js +1 -1
  42. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  43. package/lib/programmers/http/HttpHeadersProgrammer.js +1 -1
  44. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  45. package/lib/programmers/http/HttpQueryProgrammer.js +2 -2
  46. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  47. package/lib/programmers/internal/application_union_discriminator.js +2 -2
  48. package/lib/programmers/internal/application_union_discriminator.js.map +1 -1
  49. package/lib/programmers/internal/application_v30_alias.js +1 -1
  50. package/lib/programmers/internal/application_v30_alias.js.map +1 -1
  51. package/lib/programmers/internal/application_v30_schema.js +1 -1
  52. package/lib/programmers/internal/application_v30_schema.js.map +1 -1
  53. package/lib/programmers/internal/application_v31_alias.js +1 -1
  54. package/lib/programmers/internal/application_v31_alias.js.map +1 -1
  55. package/lib/programmers/internal/application_v31_schema.js +1 -1
  56. package/lib/programmers/internal/application_v31_schema.js.map +1 -1
  57. package/lib/programmers/internal/llm_schema_station.js +2 -2
  58. package/lib/programmers/internal/llm_schema_station.js.map +1 -1
  59. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  60. package/lib/programmers/json/JsonApplicationProgrammer.js +6 -5
  61. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  62. package/lib/programmers/json/JsonStringifyProgrammer.js +3 -3
  63. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  64. package/lib/programmers/llm/LlmApplicationProgrammer.js +7 -6
  65. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
  66. package/lib/programmers/llm/LlmSchemaProgrammer.js +1 -1
  67. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  68. package/lib/programmers/misc/MiscCloneProgrammer.js +1 -1
  69. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  70. package/lib/programmers/misc/MiscPruneProgrammer.js +1 -1
  71. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  72. package/lib/programmers/notations/NotationGeneralProgrammer.js +1 -1
  73. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  74. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +6 -6
  75. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  76. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +1 -1
  77. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  78. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +3 -3
  79. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  80. package/lib/schemas/metadata/IMetadata.d.ts +4 -1
  81. package/lib/schemas/metadata/IMetadataArray.d.ts +1 -2
  82. package/lib/schemas/metadata/IMetadataComponents.d.ts +2 -2
  83. package/lib/schemas/metadata/IMetadataDictionary.d.ts +2 -2
  84. package/lib/schemas/metadata/IMetadataObject.d.ts +2 -8
  85. package/lib/schemas/metadata/IMetadataObjectType.d.ts +11 -0
  86. package/lib/schemas/metadata/IMetadataObjectType.js +3 -0
  87. package/lib/schemas/metadata/IMetadataObjectType.js.map +1 -0
  88. package/lib/schemas/metadata/IMetadataTuple.d.ts +1 -2
  89. package/lib/schemas/metadata/Metadata.js +14 -15
  90. package/lib/schemas/metadata/Metadata.js.map +1 -1
  91. package/lib/schemas/metadata/MetadataArray.js +1 -1
  92. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  93. package/lib/schemas/metadata/MetadataComponents.d.ts +2 -2
  94. package/lib/schemas/metadata/MetadataComponents.js +2 -2
  95. package/lib/schemas/metadata/MetadataComponents.js.map +1 -1
  96. package/lib/schemas/metadata/MetadataObject.d.ts +8 -12
  97. package/lib/schemas/metadata/MetadataObject.js +44 -82
  98. package/lib/schemas/metadata/MetadataObject.js.map +1 -1
  99. package/lib/schemas/metadata/MetadataObjectType.d.ts +20 -0
  100. package/lib/schemas/metadata/MetadataObjectType.js +106 -0
  101. package/lib/schemas/metadata/MetadataObjectType.js.map +1 -0
  102. package/lib/schemas/metadata/MetadataTuple.js +1 -1
  103. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  104. package/lib/transformers/TransformerError.js.map +1 -1
  105. package/package.json +1 -1
  106. package/src/factories/MetadataCollection.ts +12 -10
  107. package/src/factories/MetadataFactory.ts +11 -5
  108. package/src/factories/MetadataTypeTagFactory.ts +13 -12
  109. package/src/factories/MetadataTypeTagSchemaFactory.ts +4 -4
  110. package/src/factories/ProtobufFactory.ts +14 -14
  111. package/src/factories/internal/metadata/emplace_metadata_object.ts +2 -2
  112. package/src/factories/internal/metadata/iterate_metadata_collection.ts +4 -3
  113. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +2 -2
  114. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +5 -2
  115. package/src/factories/internal/metadata/iterate_metadata_object.ts +10 -2
  116. package/src/factories/internal/metadata/iterate_metadata_sort.ts +6 -2
  117. package/src/programmers/CheckerProgrammer.ts +7 -5
  118. package/src/programmers/FeatureProgrammer.ts +9 -6
  119. package/src/programmers/IsProgrammer.ts +2 -2
  120. package/src/programmers/RandomProgrammer.ts +3 -3
  121. package/src/programmers/helpers/ProtobufUtil.ts +2 -2
  122. package/src/programmers/helpers/PruneJoiner.ts +2 -2
  123. package/src/programmers/helpers/RandomJoiner.ts +2 -2
  124. package/src/programmers/helpers/UnionExplorer.ts +4 -4
  125. package/src/programmers/helpers/UnionPredicator.ts +5 -3
  126. package/src/programmers/http/HttpFormDataProgrammer.ts +3 -3
  127. package/src/programmers/http/HttpHeadersProgrammer.ts +3 -3
  128. package/src/programmers/http/HttpQueryProgrammer.ts +4 -4
  129. package/src/programmers/internal/application_union_discriminator.ts +2 -2
  130. package/src/programmers/internal/application_v30_alias.ts +1 -1
  131. package/src/programmers/internal/application_v30_object.ts +3 -3
  132. package/src/programmers/internal/application_v30_schema.ts +1 -1
  133. package/src/programmers/internal/application_v31_alias.ts +1 -1
  134. package/src/programmers/internal/application_v31_object.ts +3 -3
  135. package/src/programmers/internal/application_v31_schema.ts +1 -1
  136. package/src/programmers/internal/decode_union_object.ts +4 -4
  137. package/src/programmers/internal/feature_object_entries.ts +2 -2
  138. package/src/programmers/internal/llm_schema_object.ts +2 -2
  139. package/src/programmers/internal/llm_schema_station.ts +2 -2
  140. package/src/programmers/internal/prune_object_properties.ts +2 -2
  141. package/src/programmers/json/JsonApplicationProgrammer.ts +3 -3
  142. package/src/programmers/json/JsonStringifyProgrammer.ts +5 -5
  143. package/src/programmers/llm/LlmApplicationProgrammer.ts +4 -4
  144. package/src/programmers/llm/LlmSchemaProgrammer.ts +1 -1
  145. package/src/programmers/misc/MiscCloneProgrammer.ts +3 -3
  146. package/src/programmers/misc/MiscPruneProgrammer.ts +3 -3
  147. package/src/programmers/notations/NotationGeneralProgrammer.ts +3 -3
  148. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +11 -11
  149. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +8 -8
  150. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +8 -8
  151. package/src/schemas/metadata/IMetadata.ts +4 -1
  152. package/src/schemas/metadata/IMetadataArray.ts +1 -2
  153. package/src/schemas/metadata/IMetadataComponents.ts +2 -2
  154. package/src/schemas/metadata/IMetadataDictionary.ts +2 -2
  155. package/src/schemas/metadata/IMetadataObject.ts +6 -13
  156. package/src/schemas/metadata/IMetadataObjectType.ts +13 -0
  157. package/src/schemas/metadata/IMetadataTuple.ts +1 -2
  158. package/src/schemas/metadata/Metadata.ts +16 -16
  159. package/src/schemas/metadata/MetadataArray.ts +1 -1
  160. package/src/schemas/metadata/MetadataComponents.ts +3 -3
  161. package/src/schemas/metadata/MetadataObject.ts +26 -117
  162. package/src/schemas/metadata/MetadataObjectType.ts +149 -0
  163. package/src/schemas/metadata/MetadataTuple.ts +1 -1
  164. package/src/transformers/TransformerError.ts +8 -7
@@ -1,10 +1,10 @@
1
1
  import { Metadata } from "../schemas/metadata/Metadata";
2
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
2
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
3
3
 
4
4
  export namespace MetadataTypeTagSchemaFactory {
5
5
  export const object = (props: {
6
6
  report: (msg: string) => false;
7
- object: MetadataObject;
7
+ object: MetadataObjectType;
8
8
  }): object | undefined => {
9
9
  if (props.object.recursive) {
10
10
  props.report(`${props.object.name} has recursive type`);
@@ -31,7 +31,7 @@ export namespace MetadataTypeTagSchemaFactory {
31
31
 
32
32
  const iterate = (props: {
33
33
  report: (message: string) => false;
34
- object: MetadataObject;
34
+ object: MetadataObjectType;
35
35
  key: string;
36
36
  metadata: Metadata;
37
37
  }): any => {
@@ -75,7 +75,7 @@ export namespace MetadataTypeTagSchemaFactory {
75
75
  } else if (props.metadata.objects.length)
76
76
  return object({
77
77
  report: props.report,
78
- object: props.metadata.objects[0]!,
78
+ object: props.metadata.objects[0]!.type,
79
79
  });
80
80
  else props.report(`${props.object.name}.${props.key} has non-literal type`);
81
81
  };
@@ -1,7 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../schemas/metadata/Metadata";
4
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
4
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
5
5
 
6
6
  import { ProtobufUtil } from "../programmers/helpers/ProtobufUtil";
7
7
 
@@ -53,7 +53,7 @@ export namespace ProtobufFactory {
53
53
  const onlyObject: boolean =
54
54
  meta.size() === 1 &&
55
55
  meta.objects.length === 1 &&
56
- meta.objects[0]!.properties.every((p) => p.key.isSoleLiteral()) &&
56
+ meta.objects[0]!.type.properties.every((p) => p.key.isSoleLiteral()) &&
57
57
  meta.isRequired() === true &&
58
58
  meta.nullable === false;
59
59
  if (onlyObject === false)
@@ -133,7 +133,7 @@ export namespace ProtobufFactory {
133
133
  a.type.value.maps.length ||
134
134
  (a.type.value.objects.length &&
135
135
  a.type.value.objects.some(
136
- (o) => ProtobufUtil.isStaticObject(o) === false,
136
+ (o) => ProtobufUtil.isStaticObject(o.type) === false,
137
137
  )),
138
138
  )
139
139
  )
@@ -147,7 +147,7 @@ export namespace ProtobufFactory {
147
147
  // EMPTY PROPERTY
148
148
  if (
149
149
  meta.objects.length &&
150
- meta.objects.some((obj) => obj.properties.length === 0)
150
+ meta.objects.some((obj) => obj.type.properties.length === 0)
151
151
  )
152
152
  noSupport("empty object type");
153
153
  // MULTIPLE DYNAMIC KEY TYPED PROPERTIES
@@ -155,7 +155,7 @@ export namespace ProtobufFactory {
155
155
  meta.objects.length &&
156
156
  meta.objects.some(
157
157
  (obj) =>
158
- obj.properties.filter((p) => !p.key.isSoleLiteral()).length > 1,
158
+ obj.type.properties.filter((p) => !p.key.isSoleLiteral()).length > 1,
159
159
  )
160
160
  )
161
161
  noSupport(
@@ -166,8 +166,8 @@ export namespace ProtobufFactory {
166
166
  meta.objects.length &&
167
167
  meta.objects.some(
168
168
  (obj) =>
169
- obj.properties.some((p) => p.key.isSoleLiteral()) &&
170
- obj.properties.some((p) => !p.key.isSoleLiteral()),
169
+ obj.type.properties.some((p) => p.key.isSoleLiteral()) &&
170
+ obj.type.properties.some((p) => !p.key.isSoleLiteral()),
171
171
  )
172
172
  )
173
173
  noSupport(
@@ -176,15 +176,15 @@ export namespace ProtobufFactory {
176
176
  // DYNAMIC OBJECT, BUT PROPERTY VALUE TYPE IS ARRAY
177
177
  if (
178
178
  meta.objects.length &&
179
- isDynamicObject(meta.objects[0]!) &&
180
- meta.objects[0]!.properties.some((p) => !!p.value.arrays.length)
179
+ isDynamicObject(meta.objects[0]!.type) &&
180
+ meta.objects[0]!.type.properties.some((p) => !!p.value.arrays.length)
181
181
  )
182
182
  noSupport("dynamic object with array value type");
183
- // UNION WITH DYNAMIC OBJECT
183
+ // UNION WITH DYNAMIC OBJECTa
184
184
  if (
185
185
  meta.size() > 1 &&
186
186
  meta.objects.length &&
187
- isDynamicObject(meta.objects[0]!)
187
+ isDynamicObject(meta.objects[0]!.type)
188
188
  )
189
189
  noSupport("union type with dynamic object type");
190
190
  // UNION IN DYNAMIC PROPERTY VALUE
@@ -192,8 +192,8 @@ export namespace ProtobufFactory {
192
192
  meta.objects.length &&
193
193
  meta.objects.some(
194
194
  (obj) =>
195
- isDynamicObject(obj) &&
196
- obj.properties.some((p) => ProtobufUtil.isUnion(p.value)),
195
+ isDynamicObject(obj.type) &&
196
+ obj.type.properties.some((p) => ProtobufUtil.isUnion(p.value)),
197
197
  )
198
198
  )
199
199
  noSupport("union type in dynamic property");
@@ -231,7 +231,7 @@ export namespace ProtobufFactory {
231
231
  };
232
232
  }
233
233
 
234
- const isDynamicObject = (obj: MetadataObject): boolean =>
234
+ const isDynamicObject = (obj: MetadataObjectType): boolean =>
235
235
  obj.properties[0]!.key.isSoleLiteral() === false;
236
236
 
237
237
  const BANNED_NATIVE_TYPES: Map<string, string | null> = new Map([
@@ -1,7 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../../../schemas/metadata/Metadata";
4
- import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
4
+ import { MetadataObjectType } from "../../../schemas/metadata/MetadataObjectType";
5
5
  import { MetadataProperty } from "../../../schemas/metadata/MetadataProperty";
6
6
 
7
7
  import { Writable } from "../../../typings/Writable";
@@ -16,7 +16,7 @@ import { iterate_metadata_coalesce } from "./iterate_metadata_coalesce";
16
16
 
17
17
  export const emplace_metadata_object = (
18
18
  props: IMetadataIteratorProps,
19
- ): MetadataObject => {
19
+ ): MetadataObjectType => {
20
20
  // EMPLACE OBJECT
21
21
  const [obj, newbie] = props.collection.emplace(props.checker, props.type);
22
22
  ArrayUtil.add(
@@ -1,6 +1,6 @@
1
1
  import { Metadata } from "../../../schemas/metadata/Metadata";
2
2
  import { MetadataArrayType } from "../../../schemas/metadata/MetadataArrayType";
3
- import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
3
+ import { MetadataObjectType } from "../../../schemas/metadata/MetadataObjectType";
4
4
  import { MetadataTupleType } from "../../../schemas/metadata/MetadataTupleType";
5
5
 
6
6
  import { MetadataCollection } from "../../MetadataCollection";
@@ -114,7 +114,7 @@ const isTupleRecursive = (props: {
114
114
 
115
115
  const isObjectRecursive = (props: {
116
116
  visited: Set<Metadata>;
117
- object: MetadataObject;
117
+ object: MetadataObjectType;
118
118
  metadata: Metadata;
119
119
  }): boolean => {
120
120
  if (props.visited.has(props.metadata)) return false;
@@ -128,7 +128,8 @@ const isObjectRecursive = (props: {
128
128
  return (
129
129
  props.metadata.objects.some(
130
130
  (o) =>
131
- props.object === o || o.properties.some((prop) => next(prop.value)),
131
+ props.object === o.type ||
132
+ o.type.properties.some((prop) => next(prop.value)),
132
133
  ) ||
133
134
  props.metadata.aliases.some((alias) => next(alias.value)) ||
134
135
  props.metadata.arrays.some(
@@ -1,11 +1,11 @@
1
- import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
1
+ import { MetadataObjectType } from "../../../schemas/metadata/MetadataObjectType";
2
2
 
3
3
  import { MetadataCommentTagFactory } from "../../MetadataCommentTagFactory";
4
4
  import { MetadataFactory } from "../../MetadataFactory";
5
5
 
6
6
  export const iterate_metadata_comment_tags = (props: {
7
7
  errors: MetadataFactory.IError[];
8
- object: MetadataObject;
8
+ object: MetadataObjectType;
9
9
  }) => {
10
10
  if (props.object.tagged_ === true) return;
11
11
  props.object.tagged_ = true;
@@ -99,7 +99,7 @@ export const iterate_metadata_intersection = (
99
99
  c.isRequired() === true &&
100
100
  c.objects.length &&
101
101
  c.objects.length === c.size() &&
102
- c.objects.every((o) => o.properties.every((p) => p.value.optional)),
102
+ c.objects.every((o) => o.type.properties.every((p) => p.value.optional)),
103
103
  );
104
104
  const arrays: Set<string> = new Set(
105
105
  individuals.map(([c]) => c.arrays.map((a) => a.type.name)).flat(),
@@ -188,7 +188,10 @@ export const iterate_metadata_intersection = (
188
188
  const tags: IMetadataTypeTag[] = MetadataTypeTagFactory.analyze({
189
189
  errors: props.errors,
190
190
  type: target,
191
- objects: objects.map((om) => om.objects).flat(),
191
+ objects: objects
192
+ .map((om) => om.objects)
193
+ .flat()
194
+ .map((om) => om.type),
192
195
  explore: props.explore,
193
196
  });
194
197
  if (tags.length)
@@ -1,6 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
4
+ import { MetadataObjectType } from "../../../schemas/metadata/MetadataObjectType";
4
5
 
5
6
  import { ArrayUtil } from "../../../utils/ArrayUtil";
6
7
 
@@ -21,7 +22,14 @@ export const iterate_metadata_object = (
21
22
  return false;
22
23
  }
23
24
 
24
- const obj: MetadataObject = emplace_metadata_object(props);
25
- ArrayUtil.add(props.metadata.objects, obj, (elem) => elem.name === obj.name);
25
+ const obj: MetadataObjectType = emplace_metadata_object(props);
26
+ ArrayUtil.add(
27
+ props.metadata.objects,
28
+ MetadataObject.create({
29
+ type: obj,
30
+ tags: [],
31
+ }),
32
+ (elem) => elem.type.name === obj.name,
33
+ );
26
34
  return true;
27
35
  };
@@ -1,5 +1,5 @@
1
1
  import { Metadata } from "../../../schemas/metadata/Metadata";
2
- import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
2
+ import { MetadataObjectType } from "../../../schemas/metadata/MetadataObjectType";
3
3
 
4
4
  import { MetadataCollection } from "../../MetadataCollection";
5
5
 
@@ -45,7 +45,11 @@ const iterate = (props: {
45
45
  // SORT OBJECTS
46
46
  if (props.metadata.objects.length > 1) {
47
47
  props.metadata.objects.sort((x, y) =>
48
- MetadataObject.covers(x, y) ? -1 : MetadataObject.covers(y, x) ? 1 : 0,
48
+ MetadataObjectType.covers(x.type, y.type)
49
+ ? -1
50
+ : MetadataObjectType.covers(y.type, x.type)
51
+ ? 1
52
+ : 0,
49
53
  );
50
54
  props.metadata.union_index = props.collection.getUnionIndex(props.metadata);
51
55
  }
@@ -11,7 +11,7 @@ import { ValueFactory } from "../factories/ValueFactory";
11
11
  import { Metadata } from "../schemas/metadata/Metadata";
12
12
  import { MetadataArray } from "../schemas/metadata/MetadataArray";
13
13
  import { MetadataConstant } from "../schemas/metadata/MetadataConstant";
14
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
14
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
15
15
  import { MetadataTuple } from "../schemas/metadata/MetadataTuple";
16
16
  import { MetadataTupleType } from "../schemas/metadata/MetadataTupleType";
17
17
 
@@ -810,13 +810,15 @@ export namespace CheckerProgrammer {
810
810
  head: ExpressionFactory.isObject({
811
811
  checkNull: true,
812
812
  checkArray: props.metadata.objects.some((obj) =>
813
- obj.properties.every(
813
+ obj.type.properties.every(
814
814
  (prop) => !prop.key.isSoleLiteral() || !prop.value.isRequired(),
815
815
  ),
816
816
  ),
817
817
  input: props.input,
818
818
  }),
819
- expected: props.metadata.objects.map((obj) => obj.name).join(" | "),
819
+ expected: props.metadata.objects
820
+ .map((obj) => obj.type.name)
821
+ .join(" | "),
820
822
  body: explore_objects({
821
823
  config: props.config,
822
824
  functor: props.functor,
@@ -944,7 +946,7 @@ export namespace CheckerProgrammer {
944
946
  export const decode_object = (props: {
945
947
  config: IConfig;
946
948
  functor: FunctionProgrammer;
947
- object: MetadataObject;
949
+ object: MetadataObjectType;
948
950
  input: ts.Expression;
949
951
  explore: IExplore;
950
952
  }) => {
@@ -1581,7 +1583,7 @@ export namespace CheckerProgrammer {
1581
1583
  ? decode_object({
1582
1584
  config: props.config,
1583
1585
  functor: props.functor,
1584
- object: props.metadata.objects[0]!,
1586
+ object: props.metadata.objects[0]!.type,
1585
1587
  input: props.input,
1586
1588
  explore: props.explore,
1587
1589
  })
@@ -8,7 +8,7 @@ import { ValueFactory } from "../factories/ValueFactory";
8
8
 
9
9
  import { Metadata } from "../schemas/metadata/Metadata";
10
10
  import { MetadataArray } from "../schemas/metadata/MetadataArray";
11
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
11
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
12
12
 
13
13
  import { ITypiaContext } from "../transformers/ITypiaContext";
14
14
 
@@ -94,7 +94,7 @@ export namespace FeatureProgrammer {
94
94
  */
95
95
  decoder: (props: {
96
96
  input: ts.Expression;
97
- object: MetadataObject;
97
+ object: MetadataObjectType;
98
98
  explore: IExplore;
99
99
  }) => ts.Expression;
100
100
 
@@ -104,7 +104,7 @@ export namespace FeatureProgrammer {
104
104
  joiner(props: {
105
105
  entries: IExpressionEntry<Output>[];
106
106
  input?: ts.Expression;
107
- object?: MetadataObject;
107
+ object?: MetadataObjectType;
108
108
  }): ts.ConciseBody;
109
109
 
110
110
  /**
@@ -114,7 +114,7 @@ export namespace FeatureProgrammer {
114
114
  * the `decoder` function of the specified object type.
115
115
  */
116
116
  unionizer: (props: {
117
- objects: MetadataObject[];
117
+ objects: MetadataObjectType[];
118
118
  input: ts.Expression;
119
119
  explore: IExplore;
120
120
  }) => ts.Expression;
@@ -440,7 +440,10 @@ export namespace FeatureProgrammer {
440
440
  }),
441
441
  );
442
442
 
443
- const write_union = (props: { config: IConfig; objects: MetadataObject[] }) =>
443
+ const write_union = (props: {
444
+ config: IConfig;
445
+ objects: MetadataObjectType[];
446
+ }) =>
444
447
  ts.factory.createArrowFunction(
445
448
  undefined,
446
449
  undefined,
@@ -521,7 +524,7 @@ export namespace FeatureProgrammer {
521
524
  export const decode_object = (props: {
522
525
  config: Pick<IConfig, "trace" | "path" | "prefix">;
523
526
  functor: FunctionProgrammer;
524
- object: MetadataObject;
527
+ object: MetadataObjectType;
525
528
  input: ts.Expression;
526
529
  explore: IExplore;
527
530
  }) =>
@@ -6,7 +6,7 @@ import { MetadataCollection } from "../factories/MetadataCollection";
6
6
  import { ValueFactory } from "../factories/ValueFactory";
7
7
 
8
8
  import { Metadata } from "../schemas/metadata/Metadata";
9
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
9
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
10
10
 
11
11
  import { IProgrammerProps } from "../transformers/IProgrammerProps";
12
12
  import { ITypiaContext } from "../transformers/ITypiaContext";
@@ -237,7 +237,7 @@ export namespace IsProgrammer {
237
237
  export const decode_object = (props: {
238
238
  context: ITypiaContext;
239
239
  functor: FunctionProgrammer;
240
- object: MetadataObject;
240
+ object: MetadataObjectType;
241
241
  input: ts.Expression;
242
242
  explore: FeatureProgrammer.IExplore;
243
243
  }) =>
@@ -15,7 +15,7 @@ import { Metadata } from "../schemas/metadata/Metadata";
15
15
  import { MetadataArray } from "../schemas/metadata/MetadataArray";
16
16
  import { MetadataArrayType } from "../schemas/metadata/MetadataArrayType";
17
17
  import { MetadataAtomic } from "../schemas/metadata/MetadataAtomic";
18
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
18
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
19
19
  import { MetadataTemplate } from "../schemas/metadata/MetadataTemplate";
20
20
  import { MetadataTuple } from "../schemas/metadata/MetadataTuple";
21
21
  import { MetadataTupleType } from "../schemas/metadata/MetadataTupleType";
@@ -408,7 +408,7 @@ export namespace RandomProgrammer {
408
408
  expressions.push(
409
409
  decode_object({
410
410
  ...props,
411
- object,
411
+ object: object.type,
412
412
  }),
413
413
  );
414
414
  for (const name of props.metadata.natives)
@@ -661,7 +661,7 @@ export namespace RandomProgrammer {
661
661
  const decode_object = (props: {
662
662
  functor: FunctionProgrammer;
663
663
  explore: IExplore;
664
- object: MetadataObject;
664
+ object: MetadataObjectType;
665
665
  }) =>
666
666
  ts.factory.createCallExpression(
667
667
  ts.factory.createIdentifier(
@@ -1,11 +1,11 @@
1
1
  import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
2
2
  import { Metadata } from "../../schemas/metadata/Metadata";
3
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
3
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
4
4
 
5
5
  import { ProtobufAtomic } from "../../typings/ProtobufAtomic";
6
6
 
7
7
  export namespace ProtobufUtil {
8
- export const isStaticObject = (obj: MetadataObject): boolean =>
8
+ export const isStaticObject = (obj: MetadataObjectType): boolean =>
9
9
  obj.properties.length >= 1 &&
10
10
  obj.properties.every((p) => p.key.isSoleLiteral());
11
11
 
@@ -2,7 +2,7 @@ import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
4
 
5
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
5
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
6
6
 
7
7
  import { metadata_to_pattern } from "../internal/metadata_to_pattern";
8
8
  import { prune_object_properties } from "../internal/prune_object_properties";
@@ -12,7 +12,7 @@ export namespace PruneJoiner {
12
12
  export const object = (props: {
13
13
  input: ts.Expression;
14
14
  entries: IExpressionEntry[];
15
- object: MetadataObject;
15
+ object: MetadataObjectType;
16
16
  }): ts.ConciseBody => {
17
17
  // PREPARE ASSETS
18
18
  const regular = props.entries.filter((entry) => entry.key.isSoleLiteral());
@@ -8,7 +8,7 @@ import { LiteralFactory } from "../../factories/LiteralFactory";
8
8
  import { Metadata } from "../../schemas/metadata/Metadata";
9
9
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
10
10
  import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
11
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
11
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
12
12
  import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
13
13
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
14
14
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
@@ -88,7 +88,7 @@ export namespace RandomJoiner {
88
88
 
89
89
  export const object = (props: {
90
90
  decode: Decoder;
91
- object: MetadataObject;
91
+ object: MetadataObjectType;
92
92
  }): ts.ConciseBody => {
93
93
  if (props.object.properties.length === 0) return LiteralFactory.write({});
94
94
 
@@ -6,7 +6,7 @@ import { IdentifierFactory } from "../../factories/IdentifierFactory";
6
6
  import { Metadata } from "../../schemas/metadata/Metadata";
7
7
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
8
8
  import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
9
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
9
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
10
10
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
11
11
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
12
12
 
@@ -22,7 +22,7 @@ export namespace UnionExplorer {
22
22
  explore: FeatureProgrammer.IExplore;
23
23
  }): ts.Expression;
24
24
  }
25
- export type ObjectCombiner = Decoder<MetadataObject[]>;
25
+ export type ObjectCombiner = Decoder<MetadataObjectType[]>;
26
26
 
27
27
  /* -----------------------------------------------------------
28
28
  OBJECT
@@ -30,7 +30,7 @@ export namespace UnionExplorer {
30
30
  export const object = (props: {
31
31
  config: FeatureProgrammer.IConfig;
32
32
  level?: number;
33
- objects: MetadataObject[];
33
+ objects: MetadataObjectType[];
34
34
  input: ts.Expression;
35
35
  explore: FeatureProgrammer.IExplore;
36
36
  }): ts.Expression => {
@@ -64,7 +64,7 @@ export namespace UnionExplorer {
64
64
  })
65
65
  : condition;
66
66
  }
67
- const remained: MetadataObject[] = props.objects.filter(
67
+ const remained: MetadataObjectType[] = props.objects.filter(
68
68
  (t) => specList.find((s) => s.object === t) === undefined,
69
69
  );
70
70
 
@@ -1,5 +1,5 @@
1
1
  import { Metadata } from "../../schemas/metadata/Metadata";
2
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
2
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
3
3
  import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
4
4
 
5
5
  import { ArrayUtil } from "../../utils/ArrayUtil";
@@ -8,12 +8,14 @@ import { MapUtil } from "../../utils/MapUtil";
8
8
  export namespace UnionPredicator {
9
9
  export interface ISpecialized {
10
10
  index: number;
11
- object: MetadataObject;
11
+ object: MetadataObjectType;
12
12
  property: MetadataProperty;
13
13
  neighbour: boolean;
14
14
  }
15
15
 
16
- export const object = (objects: MetadataObject[]): Array<ISpecialized> => {
16
+ export const object = (
17
+ objects: MetadataObjectType[],
18
+ ): Array<ISpecialized> => {
17
19
  // PROPERTY MATRIX
18
20
  const matrix: Map<string, Array<MetadataProperty | null>> = new Map();
19
21
  for (const obj of objects)
@@ -8,7 +8,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
8
8
 
9
9
  import { Metadata } from "../../schemas/metadata/Metadata";
10
10
  import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
11
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
11
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
12
12
  import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
13
13
 
14
14
  import { IProgrammerProps } from "../../transformers/IProgrammerProps";
@@ -52,7 +52,7 @@ export namespace HttpFormDataProgrammer {
52
52
  });
53
53
 
54
54
  // DO TRANSFORM
55
- const object: MetadataObject = result.data.objects[0]!;
55
+ const object: MetadataObjectType = result.data.objects[0]!.type;
56
56
  const statements: ts.Statement[] = decode_object({
57
57
  context: props.context,
58
58
  object,
@@ -160,7 +160,7 @@ export namespace HttpFormDataProgrammer {
160
160
 
161
161
  const decode_object = (props: {
162
162
  context: ITypiaContext;
163
- object: MetadataObject;
163
+ object: MetadataObjectType;
164
164
  }): ts.Statement[] => {
165
165
  // const input: ts.Identifier = ts.factory.createIdentifier("input");
166
166
  const output: ts.Identifier = ts.factory.createIdentifier("output");
@@ -9,7 +9,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
9
9
 
10
10
  import { Metadata } from "../../schemas/metadata/Metadata";
11
11
  import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
12
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
12
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
13
13
  import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
14
14
 
15
15
  import { IProgrammerProps } from "../../transformers/IProgrammerProps";
@@ -56,7 +56,7 @@ export namespace HttpHeadersProgrammer {
56
56
  });
57
57
 
58
58
  // DO TRANSFORM
59
- const object: MetadataObject = result.data.objects[0]!;
59
+ const object: MetadataObjectType = result.data.objects[0]!.type;
60
60
  const statements: ts.Statement[] = decode_object({
61
61
  context: props.context,
62
62
  object,
@@ -204,7 +204,7 @@ export namespace HttpHeadersProgrammer {
204
204
 
205
205
  const decode_object = (props: {
206
206
  context: ITypiaContext;
207
- object: MetadataObject;
207
+ object: MetadataObjectType;
208
208
  }): ts.Statement[] => {
209
209
  const output: ts.Identifier = ts.factory.createIdentifier("output");
210
210
  const optionals: string[] = [];
@@ -8,7 +8,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
8
8
 
9
9
  import { Metadata } from "../../schemas/metadata/Metadata";
10
10
  import { MetadataArrayType } from "../../schemas/metadata/MetadataArrayType";
11
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
11
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
12
12
  import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
13
13
 
14
14
  import { IProgrammerProps } from "../../transformers/IProgrammerProps";
@@ -60,7 +60,7 @@ export namespace HttpQueryProgrammer {
60
60
  });
61
61
 
62
62
  // DO TRANSFORM
63
- const object: MetadataObject = result.data.objects[0]!;
63
+ const object: MetadataObjectType = result.data.objects[0]!.type;
64
64
  const statements: ts.Statement[] = decode_object({
65
65
  context: props.context,
66
66
  object,
@@ -130,7 +130,7 @@ export namespace HttpQueryProgrammer {
130
130
  const everyPropertiesAreOptional: boolean =
131
131
  meta.size() === 1 &&
132
132
  meta.objects.length === 1 &&
133
- meta.objects[0]!.properties.every(
133
+ meta.objects[0]!.type.properties.every(
134
134
  (p) => p.value.isRequired() === false,
135
135
  );
136
136
  if (everyPropertiesAreOptional === false)
@@ -179,7 +179,7 @@ export namespace HttpQueryProgrammer {
179
179
 
180
180
  const decode_object = (props: {
181
181
  context: ITypiaContext;
182
- object: MetadataObject;
182
+ object: MetadataObjectType;
183
183
  }): ts.Statement[] => {
184
184
  const input: ts.Identifier = ts.factory.createIdentifier("input");
185
185
  const output: ts.Identifier = ts.factory.createIdentifier("output");
@@ -10,11 +10,11 @@ export const application_union_discriminator = (
10
10
  if (
11
11
  metadata.size() === 0 ||
12
12
  metadata.size() !== metadata.objects.length ||
13
- metadata.objects.some((o) => o.isLiteral()) === true
13
+ metadata.objects.some((o) => o.type.isLiteral()) === true
14
14
  )
15
15
  return undefined;
16
16
  const specialized: UnionPredicator.ISpecialized[] = UnionPredicator.object(
17
- metadata.objects,
17
+ metadata.objects.map((o) => o.type),
18
18
  );
19
19
  const meet: boolean =
20
20
  specialized.length === metadata.objects.length &&
@@ -20,7 +20,7 @@ export const application_v30_alias = <BlockNever extends boolean>(props: {
20
20
  }): OpenApiV3.IJsonSchema.IReference => {
21
21
  if (props.alias.value.size() === 1 && props.alias.value.objects.length === 1)
22
22
  return application_v30_object({
23
- object: props.alias.value.objects[0]!,
23
+ object: props.alias.value.objects[0]!.type,
24
24
  components: props.components,
25
25
  nullable: props.nullable,
26
26
  }) as OpenApiV3.IJsonSchema.IReference;