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
@@ -4,7 +4,7 @@ import { CommentFactory } from "../../factories/CommentFactory";
4
4
 
5
5
  import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
6
6
  import { Metadata } from "../../schemas/metadata/Metadata";
7
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
7
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
8
8
 
9
9
  import { PatternUtil } from "../../utils/PatternUtil";
10
10
 
@@ -17,7 +17,7 @@ import { metadata_to_pattern } from "./metadata_to_pattern";
17
17
  */
18
18
  export const application_v30_object = (props: {
19
19
  components: OpenApiV3.IComponents;
20
- object: MetadataObject;
20
+ object: MetadataObjectType;
21
21
  nullable: boolean;
22
22
  }): OpenApiV3.IJsonSchema.IReference | OpenApiV3.IJsonSchema.IObject => {
23
23
  if (props.object.isLiteral() === true) return create_object_schema(props);
@@ -38,7 +38,7 @@ export const application_v30_object = (props: {
38
38
  */
39
39
  const create_object_schema = (props: {
40
40
  components: OpenApiV3.IComponents;
41
- object: MetadataObject;
41
+ object: MetadataObjectType;
42
42
  nullable: boolean;
43
43
  }): OpenApiV3.IJsonSchema.IObject => {
44
44
  // ITERATE PROPERTIES
@@ -180,7 +180,7 @@ export const application_v30_schema = <BlockNever extends boolean>(props: {
180
180
  for (const object of props.metadata.objects)
181
181
  insert(
182
182
  application_v30_object({
183
- object,
183
+ object: object.type,
184
184
  components: props.components,
185
185
  nullable: props.metadata.nullable,
186
186
  }),
@@ -18,7 +18,7 @@ export const application_v31_alias = <BlockNever extends boolean>(props: {
18
18
  if (props.alias.value.size() === 1 && props.alias.value.objects.length === 1)
19
19
  return application_v31_object({
20
20
  components: props.components,
21
- object: props.alias.value.objects[0]!,
21
+ object: props.alias.value.objects[0]!.type,
22
22
  }) as OpenApi.IJsonSchema.IReference;
23
23
 
24
24
  const $ref: string = `#/components/schemas/${props.alias.name}`;
@@ -4,7 +4,7 @@ import { CommentFactory } from "../../factories/CommentFactory";
4
4
 
5
5
  import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
6
6
  import { Metadata } from "../../schemas/metadata/Metadata";
7
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
7
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
8
8
 
9
9
  import { PatternUtil } from "../../utils/PatternUtil";
10
10
 
@@ -18,7 +18,7 @@ import { metadata_to_pattern } from "./metadata_to_pattern";
18
18
  */
19
19
  export const application_v31_object = (props: {
20
20
  components: OpenApi.IComponents;
21
- object: MetadataObject;
21
+ object: MetadataObjectType;
22
22
  }): OpenApi.IJsonSchema.IReference | OpenApi.IJsonSchema.IObject => {
23
23
  if (props.object.isLiteral() === true) return create_object_schema(props);
24
24
 
@@ -38,7 +38,7 @@ export const application_v31_object = (props: {
38
38
  */
39
39
  const create_object_schema = (props: {
40
40
  components: OpenApi.IComponents;
41
- object: MetadataObject;
41
+ object: MetadataObjectType;
42
42
  }): OpenApi.IJsonSchema.IObject => {
43
43
  // ITERATE PROPERTIES
44
44
  const properties: Record<string, any> = {};
@@ -178,7 +178,7 @@ export const application_v31_schema = <BlockNever extends boolean>(props: {
178
178
  insert(
179
179
  application_v31_object({
180
180
  components: props.components,
181
- object,
181
+ object: object.type,
182
182
  }),
183
183
  );
184
184
 
@@ -1,6 +1,6 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
3
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
4
4
 
5
5
  import { FeatureProgrammer } from "../FeatureProgrammer";
6
6
 
@@ -10,17 +10,17 @@ import { FeatureProgrammer } from "../FeatureProgrammer";
10
10
  export const decode_union_object = (props: {
11
11
  checker: (next: {
12
12
  input: ts.Expression;
13
- object: MetadataObject;
13
+ object: MetadataObjectType;
14
14
  explore: FeatureProgrammer.IExplore;
15
15
  }) => ts.Expression;
16
16
  decoder: (next: {
17
17
  input: ts.Expression;
18
- object: MetadataObject;
18
+ object: MetadataObjectType;
19
19
  explore: FeatureProgrammer.IExplore;
20
20
  }) => ts.Expression;
21
21
  success: (exp: ts.Expression) => ts.Expression;
22
22
  escaper: (next: { input: ts.Expression; expected: string }) => ts.Statement;
23
- objects: MetadataObject[];
23
+ objects: MetadataObjectType[];
24
24
  input: ts.Expression;
25
25
  explore: FeatureProgrammer.IExplore;
26
26
  }): ts.CallExpression =>
@@ -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 { ITypiaContext } from "../../transformers/ITypiaContext";
8
8
 
@@ -16,7 +16,7 @@ import { FeatureProgrammer } from "../FeatureProgrammer";
16
16
  export const feature_object_entries = <Output extends ts.ConciseBody>(props: {
17
17
  config: Pick<FeatureProgrammer.IConfig<Output>, "decoder" | "path" | "trace">;
18
18
  context: ITypiaContext;
19
- object: MetadataObject;
19
+ object: MetadataObjectType;
20
20
  input: ts.Expression;
21
21
  from?: "object" | "top" | "array";
22
22
  }) =>
@@ -4,7 +4,7 @@ import { CommentFactory } from "../../factories/CommentFactory";
4
4
 
5
5
  import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
6
6
  import { Metadata } from "../../schemas/metadata/Metadata";
7
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
7
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
8
8
 
9
9
  import { PatternUtil } from "../../utils/PatternUtil";
10
10
 
@@ -16,7 +16,7 @@ import { metadata_to_pattern } from "./metadata_to_pattern";
16
16
  * @internal
17
17
  */
18
18
  export const llm_schema_object = (props: {
19
- object: MetadataObject;
19
+ object: MetadataObjectType;
20
20
  nullable: boolean;
21
21
  }): ILlmSchema.IObject => {
22
22
  // ITERATE PROPERTIES
@@ -144,14 +144,14 @@ export const llm_schema_station = (props: {
144
144
 
145
145
  // OBJECT
146
146
  for (const object of props.metadata.objects)
147
- if (object.recursive)
147
+ if (object.type.recursive)
148
148
  throw new Error(
149
149
  "Error on LlmSchemaProgrammer.write(): LLM schema does not allow recursive object type.",
150
150
  );
151
151
  else
152
152
  insert(
153
153
  llm_schema_object({
154
- object,
154
+ object: object.type,
155
155
  nullable: props.metadata.nullable,
156
156
  }),
157
157
  );
@@ -1,13 +1,13 @@
1
1
  import ts from "typescript";
2
2
 
3
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
3
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
4
4
 
5
5
  import { metadata_to_pattern } from "./metadata_to_pattern";
6
6
 
7
7
  /**
8
8
  * @internal
9
9
  */
10
- export const prune_object_properties = (object: MetadataObject) => {
10
+ export const prune_object_properties = (object: MetadataObjectType) => {
11
11
  const input: ts.Expression = ts.factory.createIdentifier("input");
12
12
  const key: ts.Expression = ts.factory.createIdentifier("key");
13
13
 
@@ -3,7 +3,7 @@ import { MetadataFactory } from "../../factories/MetadataFactory";
3
3
  import { IJsonApplication } from "../../schemas/json/IJsonApplication";
4
4
  import { Metadata } from "../../schemas/metadata/Metadata";
5
5
  import { MetadataFunction } from "../../schemas/metadata/MetadataFunction";
6
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
6
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
7
7
 
8
8
  import { IJsDocTagInfo } from "../../module";
9
9
  import { JsonSchemasProgrammer } from "./JsonSchemasProgrammer";
@@ -26,7 +26,7 @@ export namespace JsonApplicationProgrammer {
26
26
  "JSON application's generic arugment must be a class/interface type.",
27
27
  );
28
28
 
29
- const object: MetadataObject | undefined = metadata.objects[0];
29
+ const object: MetadataObjectType | undefined = metadata.objects[0]?.type;
30
30
  if (object !== undefined) {
31
31
  if (object.properties.some((p) => p.key.isSoleLiteral() === false))
32
32
  output.push("JSON application does not allow dynamic keys.");
@@ -74,7 +74,7 @@ export namespace JsonApplicationProgrammer {
74
74
  if (errors.length)
75
75
  throw new Error("Failed to write LLM application: " + errors.join("\n"));
76
76
 
77
- const object: MetadataObject = props.metadata.objects[0]!;
77
+ const object: MetadataObjectType = props.metadata.objects[0]!.type;
78
78
  const definitions: Metadata[] = [];
79
79
  const setters: Array<(schema: IJsonApplication.Schema<Version>) => void> =
80
80
  [];
@@ -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 { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
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
 
@@ -462,8 +462,8 @@ export namespace JsonStringifyProgrammer {
462
462
  is: () =>
463
463
  ExpressionFactory.isObject({
464
464
  checkNull: true,
465
- checkArray: props.metadata.objects.some((objects) =>
466
- objects.properties.every(
465
+ checkArray: props.metadata.objects.some((object) =>
466
+ object.type.properties.every(
467
467
  (prop) => !prop.key.isSoleLiteral() || !prop.value.isRequired(),
468
468
  ),
469
469
  ),
@@ -530,7 +530,7 @@ export namespace JsonStringifyProgrammer {
530
530
  const decode_object = (props: {
531
531
  functor: FunctionProgrammer;
532
532
  input: ts.Expression;
533
- object: MetadataObject;
533
+ object: MetadataObjectType;
534
534
  explore: FeatureProgrammer.IExplore;
535
535
  }): ts.CallExpression =>
536
536
  FeatureProgrammer.decode_object({
@@ -762,7 +762,7 @@ export namespace JsonStringifyProgrammer {
762
762
  ? decode_object({
763
763
  functor: props.functor,
764
764
  input: props.input,
765
- object: props.metadata.objects[0]!,
765
+ object: props.metadata.objects[0]!.type,
766
766
  explore: props.explore,
767
767
  })
768
768
  : ts.factory.createCallExpression(
@@ -5,7 +5,7 @@ import { MetadataFactory } from "../../factories/MetadataFactory";
5
5
 
6
6
  import { Metadata } from "../../schemas/metadata/Metadata";
7
7
  import { MetadataFunction } from "../../schemas/metadata/MetadataFunction";
8
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
8
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
9
9
 
10
10
  import { IJsDocTagInfo } from "../../module";
11
11
  import { LlmSchemaProgrammer } from "./LlmSchemaProgrammer";
@@ -20,7 +20,7 @@ export namespace LlmApplicationProgrammer {
20
20
  top ??= metadata;
21
21
  if (explore.top === false)
22
22
  if (
23
- explore.object === top?.objects[0] &&
23
+ explore.object === top?.objects[0]?.type &&
24
24
  typeof explore.property === "string" &&
25
25
  metadata.size() === 1 &&
26
26
  metadata.nullable === false &&
@@ -41,7 +41,7 @@ export namespace LlmApplicationProgrammer {
41
41
  "LLM application's generic arugment must be a class/interface type.",
42
42
  );
43
43
 
44
- const object: MetadataObject | undefined = metadata.objects[0];
44
+ const object: MetadataObjectType | undefined = metadata.objects[0]?.type;
45
45
  if (object !== undefined) {
46
46
  if (object.properties.some((p) => p.key.isSoleLiteral() === false))
47
47
  output.push("LLM application does not allow dynamic keys.");
@@ -98,7 +98,7 @@ export namespace LlmApplicationProgrammer {
98
98
  if (errors.length)
99
99
  throw new Error("Failed to write LLM application: " + errors.join("\n"));
100
100
 
101
- const object: MetadataObject = metadata.objects[0]!;
101
+ const object: MetadataObjectType = metadata.objects[0]!.type;
102
102
  return {
103
103
  functions: object.properties
104
104
  .filter(
@@ -35,7 +35,7 @@ export namespace LlmSchemaProgrammer {
35
35
  if (
36
36
  metadata.aliases.some((a) => a.recursive) ||
37
37
  metadata.arrays.some((a) => a.type.recursive) ||
38
- metadata.objects.some((o) => o.recursive) ||
38
+ metadata.objects.some((o) => o.type.recursive) ||
39
39
  metadata.tuples.some((t) => t.type.recursive)
40
40
  )
41
41
  output.push("LLM schema does not support recursive type.");
@@ -9,7 +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
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
13
13
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
14
14
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
15
15
 
@@ -336,7 +336,7 @@ export namespace MiscCloneProgrammer {
336
336
  const decode_object = (props: {
337
337
  functor: FunctionProgrammer;
338
338
  input: ts.Expression;
339
- object: MetadataObject;
339
+ object: MetadataObjectType;
340
340
  explore: FeatureProgrammer.IExplore;
341
341
  }) =>
342
342
  FeatureProgrammer.decode_object({
@@ -711,7 +711,7 @@ export namespace MiscCloneProgrammer {
711
711
  props.metadata.objects.length === 1
712
712
  ? decode_object({
713
713
  ...props,
714
- object: props.metadata.objects[0]!,
714
+ object: props.metadata.objects[0]!.type,
715
715
  })
716
716
  : ts.factory.createCallExpression(
717
717
  ts.factory.createIdentifier(
@@ -9,7 +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
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
13
13
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
14
14
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
15
15
 
@@ -274,7 +274,7 @@ export namespace MiscPruneProgrammer {
274
274
  const decode_object = (props: {
275
275
  functor: FunctionProgrammer;
276
276
  input: ts.Expression;
277
- object: MetadataObject;
277
+ object: MetadataObjectType;
278
278
  explore: FeatureProgrammer.IExplore;
279
279
  }) =>
280
280
  FeatureProgrammer.decode_object({
@@ -431,7 +431,7 @@ export namespace MiscPruneProgrammer {
431
431
  if (props.metadata.objects.length === 1)
432
432
  return decode_object({
433
433
  ...props,
434
- object: props.metadata.objects[0]!,
434
+ object: props.metadata.objects[0]!.type,
435
435
  });
436
436
 
437
437
  return ts.factory.createCallExpression(
@@ -9,7 +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
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
13
13
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
14
14
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
15
15
 
@@ -367,7 +367,7 @@ export namespace NotationGeneralProgrammer {
367
367
 
368
368
  const decode_object = (props: {
369
369
  functor: FunctionProgrammer;
370
- object: MetadataObject;
370
+ object: MetadataObjectType;
371
371
  input: ts.Expression;
372
372
  explore: FeatureProgrammer.IExplore;
373
373
  }) =>
@@ -661,7 +661,7 @@ export namespace NotationGeneralProgrammer {
661
661
  if (props.metadata.objects.length === 1)
662
662
  return decode_object({
663
663
  functor: props.functor,
664
- object: props.metadata.objects[0]!,
664
+ object: props.metadata.objects[0]!.type,
665
665
  input: props.input,
666
666
  explore: props.explore,
667
667
  });
@@ -11,7 +11,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
11
11
  import { Metadata } from "../../schemas/metadata/Metadata";
12
12
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
13
13
  import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
14
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
14
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
15
15
  import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
16
16
 
17
17
  import { IProgrammerProps } from "../../transformers/IProgrammerProps";
@@ -93,7 +93,7 @@ export namespace ProtobufDecodeProgrammer {
93
93
  ts.factory.createReturnStatement(
94
94
  decode_regular_object({
95
95
  top: true,
96
- object: meta.objects[0]!,
96
+ object: meta.objects[0]!.type,
97
97
  }),
98
98
  ),
99
99
  ],
@@ -121,7 +121,7 @@ export namespace ProtobufDecodeProgrammer {
121
121
  const write_object_function = (props: {
122
122
  context: ITypiaContext;
123
123
  functor: FunctionProgrammer;
124
- object: MetadataObject;
124
+ object: MetadataObjectType;
125
125
  }): ts.ArrowFunction =>
126
126
  ts.factory.createArrowFunction(
127
127
  undefined,
@@ -311,7 +311,7 @@ export namespace ProtobufDecodeProgrammer {
311
311
  ? ts.factory.createStringLiteral("")
312
312
  : value.objects.length &&
313
313
  value.objects.some(
314
- (obj) => !ProtobufUtil.isStaticObject(obj),
314
+ (obj) => !ProtobufUtil.isStaticObject(obj.type),
315
315
  )
316
316
  ? ts.factory.createObjectLiteralExpression()
317
317
  : ts.factory.createIdentifier("undefined"),
@@ -390,17 +390,17 @@ export namespace ProtobufDecodeProgrammer {
390
390
  );
391
391
  for (const object of props.metadata.objects)
392
392
  emplace(
393
- object.name,
394
- ProtobufUtil.isStaticObject(object)
393
+ object.type.name,
394
+ ProtobufUtil.isStaticObject(object.type)
395
395
  ? decode_regular_object({
396
396
  top: false,
397
- object,
397
+ object: object.type,
398
398
  })
399
399
  : decode_dynamic_object({
400
400
  context: props.context,
401
401
  functor: props.functor,
402
402
  accessor: props.accessor,
403
- object,
403
+ object: object.type,
404
404
  required,
405
405
  }),
406
406
  );
@@ -469,7 +469,7 @@ export namespace ProtobufDecodeProgrammer {
469
469
  ? () =>
470
470
  decode_regular_object({
471
471
  top: false,
472
- object: props.array.type.value.objects[0]!,
472
+ object: props.array.type.value.objects[0]!.type,
473
473
  })
474
474
  : null;
475
475
  if (decoder === null) throw new Error("Never reach here.");
@@ -544,7 +544,7 @@ export namespace ProtobufDecodeProgrammer {
544
544
 
545
545
  const decode_regular_object = (props: {
546
546
  top: boolean;
547
- object: MetadataObject;
547
+ object: MetadataObjectType;
548
548
  }): ts.Expression =>
549
549
  ts.factory.createCallExpression(
550
550
  ts.factory.createIdentifier(`${PREFIX}o${props.object.index}`),
@@ -567,7 +567,7 @@ export namespace ProtobufDecodeProgrammer {
567
567
  context: ITypiaContext;
568
568
  functor: FunctionProgrammer;
569
569
  accessor: ts.ElementAccessExpression | ts.PropertyAccessExpression;
570
- object: MetadataObject;
570
+ object: MetadataObjectType;
571
571
  required: boolean;
572
572
  }): ts.Statement[] => {
573
573
  const top: MetadataProperty = props.object.properties[0]!;
@@ -11,7 +11,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
11
11
  import { Metadata } from "../../schemas/metadata/Metadata";
12
12
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
13
13
  import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
14
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
14
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
15
15
  import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
16
16
 
17
17
  import { IProgrammerProps } from "../../transformers/IProgrammerProps";
@@ -209,7 +209,7 @@ export namespace ProtobufEncodeProgrammer {
209
209
  context: ITypiaContext;
210
210
  functor: FunctionProgrammer;
211
211
  input: ts.Expression;
212
- object: MetadataObject;
212
+ object: MetadataObjectType;
213
213
  explore: FeatureProgrammer.IExplore;
214
214
  }): ts.ArrowFunction => {
215
215
  let index: number = 1;
@@ -433,7 +433,7 @@ export namespace ProtobufEncodeProgrammer {
433
433
  ...props,
434
434
  level: 0,
435
435
  index,
436
- objects: props.metadata.objects,
436
+ objects: props.metadata.objects.map((o) => o.type),
437
437
  explore: {
438
438
  ...props.explore,
439
439
  from: "object",
@@ -547,7 +547,7 @@ export namespace ProtobufEncodeProgrammer {
547
547
  functor: FunctionProgrammer;
548
548
  index: number | null;
549
549
  input: ts.Expression;
550
- object: MetadataObject;
550
+ object: MetadataObjectType;
551
551
  explore: FeatureProgrammer.IExplore;
552
552
  }): ts.Block => {
553
553
  const top: MetadataProperty = props.object.properties[0]!;
@@ -852,9 +852,9 @@ export namespace ProtobufEncodeProgrammer {
852
852
  level: number;
853
853
  index: number | null;
854
854
  input: ts.Expression;
855
- objects: MetadataObject[];
855
+ objects: MetadataObjectType[];
856
856
  explore: FeatureProgrammer.IExplore;
857
- indexes?: Map<MetadataObject, number>;
857
+ indexes?: Map<MetadataObjectType, number>;
858
858
  }): ts.Block => {
859
859
  if (props.objects.length === 1)
860
860
  return decode_object({
@@ -874,7 +874,7 @@ export namespace ProtobufEncodeProgrammer {
874
874
  const specList: UnionPredicator.ISpecialized[] = UnionPredicator.object(
875
875
  props.objects,
876
876
  );
877
- const indexes: Map<MetadataObject, number> =
877
+ const indexes: Map<MetadataObjectType, number> =
878
878
  props.indexes ??
879
879
  new Map(props.objects.map((t, i) => [t, props.index! + i]));
880
880
 
@@ -913,7 +913,7 @@ export namespace ProtobufEncodeProgrammer {
913
913
  });
914
914
  return StatementFactory.block(condition);
915
915
  }
916
- const remained: MetadataObject[] = props.objects.filter(
916
+ const remained: MetadataObjectType[] = props.objects.filter(
917
917
  (t) => specList.find((s) => s.object === t) === undefined,
918
918
  );
919
919
 
@@ -5,7 +5,7 @@ import { ProtobufFactory } from "../../factories/ProtobufFactory";
5
5
 
6
6
  import { Metadata } from "../../schemas/metadata/Metadata";
7
7
  import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
8
- import { MetadataObject } from "../../schemas/metadata/MetadataObject";
8
+ import { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
9
9
  import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
10
10
 
11
11
  import { ITypiaContext } from "../../transformers/ITypiaContext";
@@ -52,7 +52,7 @@ export namespace ProtobufMessageProgrammer {
52
52
 
53
53
  const emplace = (props: {
54
54
  hierarchies: Map<string, Hierarchy>;
55
- object: MetadataObject;
55
+ object: MetadataObjectType;
56
56
  }) => {
57
57
  let hierarchies: Map<string, Hierarchy> = props.hierarchies;
58
58
  const accessors: string[] = props.object.name.split(".");
@@ -67,7 +67,7 @@ export namespace ProtobufMessageProgrammer {
67
67
  });
68
68
  };
69
69
 
70
- const is_dynamic_object = (object: MetadataObject): boolean =>
70
+ const is_dynamic_object = (object: MetadataObjectType): boolean =>
71
71
  object.properties.length === 1 &&
72
72
  object.properties[0]!.key.isSoleLiteral() === false;
73
73
 
@@ -95,7 +95,7 @@ export namespace ProtobufMessageProgrammer {
95
95
  return elements.join("\n");
96
96
  };
97
97
 
98
- const write_object = (object: MetadataObject): string => {
98
+ const write_object = (object: MetadataObjectType): string => {
99
99
  const sequence: IPointer<number> = { value: 0 };
100
100
  return object.properties
101
101
  .map((p) => {
@@ -137,11 +137,11 @@ export namespace ProtobufMessageProgrammer {
137
137
  );
138
138
  for (const obj of props.metadata.objects)
139
139
  elements.add(
140
- is_dynamic_object(obj)
140
+ is_dynamic_object(obj.type)
141
141
  ? decode_map({
142
142
  sequence: props.sequence,
143
143
  entry: MetadataProperty.create({
144
- ...obj.properties[0]!,
144
+ ...obj.type.properties[0]!,
145
145
  key: (() => {
146
146
  const key: Metadata = Metadata.initialize();
147
147
  key.atomics.push(
@@ -154,7 +154,7 @@ export namespace ProtobufMessageProgrammer {
154
154
  })(),
155
155
  }),
156
156
  })
157
- : NameEncoder.encode(obj.name),
157
+ : NameEncoder.encode(obj.type.name),
158
158
  );
159
159
  for (const entry of props.metadata.maps)
160
160
  elements.add(
@@ -190,7 +190,7 @@ export namespace ProtobufMessageProgrammer {
190
190
 
191
191
  interface Hierarchy {
192
192
  key: string;
193
- object: MetadataObject | null;
193
+ object: MetadataObjectType | null;
194
194
  children: Map<string, Hierarchy>;
195
195
  }
196
196
 
@@ -27,7 +27,10 @@ export interface IMetadata {
27
27
  name: string;
28
28
  tags: IMetadataTypeTag[][];
29
29
  }[];
30
- objects: string[];
30
+ objects: {
31
+ name: string;
32
+ tags: IMetadataTypeTag[][];
33
+ }[];
31
34
  aliases: string[];
32
35
 
33
36
  natives: string[];
@@ -1,7 +1,6 @@
1
- import { IMetadataArrayType } from "./IMetadataArrayType";
2
1
  import { IMetadataTypeTag } from "./IMetadataTypeTag";
3
2
 
4
3
  export interface IMetadataArray {
5
- type: IMetadataArrayType;
4
+ name: string;
6
5
  tags: IMetadataTypeTag[][];
7
6
  }
@@ -1,10 +1,10 @@
1
1
  import { IMetadataAlias } from "./IMetadataAlias";
2
2
  import { IMetadataArrayType } from "./IMetadataArrayType";
3
- import { IMetadataObject } from "./IMetadataObject";
3
+ import { IMetadataObjectType } from "./IMetadataObjectType";
4
4
  import { IMetadataTupleType } from "./IMetadataTupleType";
5
5
 
6
6
  export interface IMetadataComponents {
7
- objects: IMetadataObject[];
7
+ objects: IMetadataObjectType[];
8
8
  aliases: IMetadataAlias[];
9
9
  arrays: IMetadataArrayType[];
10
10
  tuples: IMetadataTupleType[];
@@ -1,10 +1,10 @@
1
1
  import { MetadataAlias } from "./MetadataAlias";
2
2
  import { MetadataArrayType } from "./MetadataArrayType";
3
- import { MetadataObject } from "./MetadataObject";
3
+ import { MetadataObjectType } from "./MetadataObjectType";
4
4
  import { MetadataTupleType } from "./MetadataTupleType";
5
5
 
6
6
  export interface IMetadataDictionary {
7
- objects: Map<string, MetadataObject>;
7
+ objects: Map<string, MetadataObjectType>;
8
8
  aliases: Map<string, MetadataAlias>;
9
9
  arrays: Map<string, MetadataArrayType>;
10
10
  tuples: Map<string, MetadataTupleType>;