typia 7.0.0-dev.20241012 → 7.0.0-dev.20241019

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 (256) hide show
  1. package/lib/factories/JsonMetadataFactory.js +3 -2
  2. package/lib/factories/JsonMetadataFactory.js.map +1 -1
  3. package/lib/factories/MetadataCollection.d.ts +3 -3
  4. package/lib/factories/MetadataCollection.js +2 -2
  5. package/lib/factories/MetadataCollection.js.map +1 -1
  6. package/lib/factories/MetadataFactory.d.ts +2 -2
  7. package/lib/factories/MetadataFactory.js +3 -3
  8. package/lib/factories/MetadataFactory.js.map +1 -1
  9. package/lib/factories/MetadataTypeTagFactory.d.ts +3 -2
  10. package/lib/factories/MetadataTypeTagFactory.js +26 -3
  11. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  12. package/lib/factories/ProtobufFactory.js +1266 -160
  13. package/lib/factories/ProtobufFactory.js.map +1 -1
  14. package/lib/factories/internal/metadata/IMetadataIteratorProps.d.ts +1 -0
  15. package/lib/factories/internal/metadata/MetadataHelper.js +1 -1
  16. package/lib/factories/internal/metadata/MetadataHelper.js.map +1 -1
  17. package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +2 -2
  18. package/lib/factories/internal/metadata/emplace_metadata_object.js +5 -5
  19. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  20. package/lib/factories/internal/metadata/explore_metadata.js +2 -0
  21. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  22. package/lib/factories/internal/metadata/iterate_metadata.js +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  24. package/lib/factories/internal/metadata/iterate_metadata_alias.js +8 -2
  25. package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
  26. package/lib/factories/internal/metadata/iterate_metadata_collection.js +6 -6
  27. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  28. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +262 -137
  29. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  30. package/lib/factories/internal/metadata/iterate_metadata_map.js +4 -2
  31. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  32. package/lib/factories/internal/metadata/iterate_metadata_native.js +27 -11
  33. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  34. package/lib/factories/internal/metadata/iterate_metadata_set.js +8 -1
  35. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  36. package/lib/factories/internal/metadata/iterate_metadata_sort.js +1 -1
  37. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  38. package/lib/factories/internal/metadata/iterate_metadata_template.js +1 -1
  39. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  40. package/lib/programmers/CheckerProgrammer.js +5 -5
  41. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  42. package/lib/programmers/RandomProgrammer.js +12 -12
  43. package/lib/programmers/RandomProgrammer.js.map +1 -1
  44. package/lib/programmers/helpers/AtomicPredicator.js +3 -3
  45. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  46. package/lib/programmers/helpers/ProtobufUtil.d.ts +6 -3
  47. package/lib/programmers/helpers/ProtobufUtil.js +216 -93
  48. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  49. package/lib/programmers/helpers/UnionExplorer.d.ts +4 -2
  50. package/lib/programmers/helpers/UnionExplorer.js +1 -1
  51. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  52. package/lib/programmers/http/HttpFormDataProgrammer.js +6 -6
  53. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  54. package/lib/programmers/internal/application_escaped.js +2 -2
  55. package/lib/programmers/internal/application_escaped.js.map +1 -1
  56. package/lib/programmers/internal/application_v30_alias.js +13 -8
  57. package/lib/programmers/internal/application_v30_alias.js.map +1 -1
  58. package/lib/programmers/internal/application_v30_native.js +17 -10
  59. package/lib/programmers/internal/application_v30_native.js.map +1 -1
  60. package/lib/programmers/internal/application_v30_object.js +16 -6
  61. package/lib/programmers/internal/application_v30_object.js.map +1 -1
  62. package/lib/programmers/internal/application_v30_schema.js +24 -17
  63. package/lib/programmers/internal/application_v30_schema.js.map +1 -1
  64. package/lib/programmers/internal/application_v31_alias.js +12 -11
  65. package/lib/programmers/internal/application_v31_alias.js.map +1 -1
  66. package/lib/programmers/internal/application_v31_native.js +17 -10
  67. package/lib/programmers/internal/application_v31_native.js.map +1 -1
  68. package/lib/programmers/internal/application_v31_object.js +13 -6
  69. package/lib/programmers/internal/application_v31_object.js.map +1 -1
  70. package/lib/programmers/internal/application_v31_schema.js +23 -16
  71. package/lib/programmers/internal/application_v31_schema.js.map +1 -1
  72. package/lib/programmers/internal/check_dynamic_key.js +4 -4
  73. package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
  74. package/lib/programmers/internal/check_native.js +3 -3
  75. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  76. package/lib/programmers/internal/llm_schema_escaped.js +2 -2
  77. package/lib/programmers/internal/llm_schema_escaped.js.map +1 -1
  78. package/lib/programmers/internal/llm_schema_object.js +18 -14
  79. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  80. package/lib/programmers/internal/llm_schema_station.js +8 -8
  81. package/lib/programmers/internal/llm_schema_station.js.map +1 -1
  82. package/lib/programmers/json/JsonSchemasProgrammer.js +5 -5
  83. package/lib/programmers/json/JsonSchemasProgrammer.js.map +1 -1
  84. package/lib/programmers/json/JsonStringifyProgrammer.js +18 -17
  85. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  86. package/lib/programmers/llm/LlmSchemaProgrammer.js +6 -6
  87. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  88. package/lib/programmers/misc/MiscCloneProgrammer.js +7 -5
  89. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  90. package/lib/programmers/misc/MiscPruneProgrammer.js +1 -1
  91. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  92. package/lib/programmers/notations/NotationGeneralProgrammer.js +6 -4
  93. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  94. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +169 -220
  95. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  96. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +6 -4
  97. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  98. package/lib/programmers/protobuf/ProtobufMessageProgrammer.d.ts +1 -1
  99. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +53 -128
  100. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  101. package/lib/schemas/metadata/IMetadata.d.ts +14 -18
  102. package/lib/schemas/metadata/IMetadataAlias.d.ts +2 -7
  103. package/lib/schemas/metadata/IMetadataAliasType.d.ts +10 -0
  104. package/lib/schemas/metadata/IMetadataAliasType.js +3 -0
  105. package/lib/schemas/metadata/IMetadataAliasType.js.map +1 -0
  106. package/lib/schemas/metadata/IMetadataComponents.d.ts +2 -2
  107. package/lib/schemas/metadata/IMetadataConstantValue.d.ts +1 -1
  108. package/lib/schemas/metadata/IMetadataDictionary.d.ts +2 -2
  109. package/lib/schemas/metadata/IMetadataMap.d.ts +7 -0
  110. package/lib/schemas/metadata/{IMetadataEntry.js → IMetadataMap.js} +1 -1
  111. package/lib/schemas/metadata/IMetadataMap.js.map +1 -0
  112. package/lib/schemas/metadata/IMetadataNative.d.ts +5 -0
  113. package/lib/schemas/metadata/IMetadataNative.js +3 -0
  114. package/lib/schemas/metadata/IMetadataNative.js.map +1 -0
  115. package/lib/schemas/metadata/IMetadataSet.d.ts +6 -0
  116. package/lib/schemas/metadata/IMetadataSet.js +3 -0
  117. package/lib/schemas/metadata/IMetadataSet.js.map +1 -0
  118. package/lib/schemas/metadata/IMetadataTemplate.d.ts +1 -1
  119. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +1 -1
  120. package/lib/schemas/metadata/Metadata.d.ts +6 -9
  121. package/lib/schemas/metadata/Metadata.js +136 -98
  122. package/lib/schemas/metadata/Metadata.js.map +1 -1
  123. package/lib/schemas/metadata/MetadataAlias.d.ts +8 -11
  124. package/lib/schemas/metadata/MetadataAlias.js +48 -33
  125. package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
  126. package/lib/schemas/metadata/MetadataAliasType.d.ts +16 -0
  127. package/lib/schemas/metadata/MetadataAliasType.js +51 -0
  128. package/lib/schemas/metadata/MetadataAliasType.js.map +1 -0
  129. package/lib/schemas/metadata/MetadataComponents.d.ts +2 -2
  130. package/lib/schemas/metadata/MetadataComponents.js +2 -2
  131. package/lib/schemas/metadata/MetadataComponents.js.map +1 -1
  132. package/lib/schemas/metadata/MetadataConstantValue.d.ts +1 -1
  133. package/lib/schemas/metadata/MetadataMap.d.ts +14 -0
  134. package/lib/schemas/metadata/MetadataMap.js +66 -0
  135. package/lib/schemas/metadata/MetadataMap.js.map +1 -0
  136. package/lib/schemas/metadata/MetadataNative.d.ts +12 -0
  137. package/lib/schemas/metadata/MetadataNative.js +65 -0
  138. package/lib/schemas/metadata/MetadataNative.js.map +1 -0
  139. package/lib/schemas/metadata/MetadataProperty.d.ts +2 -0
  140. package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
  141. package/lib/schemas/metadata/MetadataSet.d.ts +13 -0
  142. package/lib/schemas/metadata/MetadataSet.js +64 -0
  143. package/lib/schemas/metadata/MetadataSet.js.map +1 -0
  144. package/lib/schemas/metadata/MetadataTemplate.d.ts +1 -1
  145. package/lib/schemas/protobuf/IProtobufProperty.d.ts +5 -0
  146. package/lib/schemas/protobuf/IProtobufProperty.js +3 -0
  147. package/lib/schemas/protobuf/IProtobufProperty.js.map +1 -0
  148. package/lib/schemas/protobuf/IProtobufPropertyType.d.ts +28 -0
  149. package/lib/schemas/protobuf/IProtobufPropertyType.js +3 -0
  150. package/lib/schemas/protobuf/IProtobufPropertyType.js.map +1 -0
  151. package/lib/schemas/protobuf/IProtobufSchema.d.ts +38 -0
  152. package/lib/schemas/protobuf/IProtobufSchema.js +3 -0
  153. package/lib/schemas/protobuf/IProtobufSchema.js.map +1 -0
  154. package/lib/tags/Example.d.ts +2 -2
  155. package/lib/tags/Examples.d.ts +2 -2
  156. package/lib/tags/JsonSchemaPlugin.d.ts +1 -1
  157. package/lib/tags/Sequence.d.ts +9 -0
  158. package/lib/tags/Sequence.js +3 -0
  159. package/lib/tags/Sequence.js.map +1 -0
  160. package/lib/tags/TagBase.d.ts +1 -1
  161. package/lib/tags/index.d.ts +1 -0
  162. package/lib/tags/index.js +1 -0
  163. package/lib/tags/index.js.map +1 -1
  164. package/lib/utils/{NameEncoder.d.ts → ProtobufNameEncoder.d.ts} +1 -1
  165. package/lib/utils/{NameEncoder.js → ProtobufNameEncoder.js} +7 -7
  166. package/lib/utils/ProtobufNameEncoder.js.map +1 -0
  167. package/package.json +1 -1
  168. package/src/factories/JsonMetadataFactory.ts +5 -2
  169. package/src/factories/MetadataCollection.ts +6 -6
  170. package/src/factories/MetadataFactory.ts +7 -7
  171. package/src/factories/MetadataTypeTagFactory.ts +31 -6
  172. package/src/factories/ProtobufFactory.ts +794 -177
  173. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +1 -0
  174. package/src/factories/internal/metadata/MetadataHelper.ts +1 -1
  175. package/src/factories/internal/metadata/emplace_metadata_alias.ts +2 -2
  176. package/src/factories/internal/metadata/emplace_metadata_object.ts +5 -5
  177. package/src/factories/internal/metadata/explore_metadata.ts +1 -0
  178. package/src/factories/internal/metadata/iterate_metadata.ts +1 -1
  179. package/src/factories/internal/metadata/iterate_metadata_alias.ts +9 -4
  180. package/src/factories/internal/metadata/iterate_metadata_collection.ts +6 -6
  181. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +163 -181
  182. package/src/factories/internal/metadata/iterate_metadata_map.ts +5 -2
  183. package/src/factories/internal/metadata/iterate_metadata_native.ts +20 -2
  184. package/src/factories/internal/metadata/iterate_metadata_set.ts +27 -11
  185. package/src/factories/internal/metadata/iterate_metadata_sort.ts +1 -1
  186. package/src/factories/internal/metadata/iterate_metadata_template.ts +1 -3
  187. package/src/programmers/CheckerProgrammer.ts +9 -7
  188. package/src/programmers/RandomProgrammer.ts +16 -14
  189. package/src/programmers/helpers/AtomicPredicator.ts +3 -3
  190. package/src/programmers/helpers/ProtobufUtil.ts +147 -44
  191. package/src/programmers/helpers/UnionExplorer.ts +62 -62
  192. package/src/programmers/http/HttpFormDataProgrammer.ts +10 -6
  193. package/src/programmers/internal/application_escaped.ts +2 -2
  194. package/src/programmers/internal/application_v30_alias.ts +18 -12
  195. package/src/programmers/internal/application_v30_native.ts +22 -12
  196. package/src/programmers/internal/application_v30_object.ts +23 -8
  197. package/src/programmers/internal/application_v30_schema.ts +31 -34
  198. package/src/programmers/internal/application_v31_alias.ts +16 -13
  199. package/src/programmers/internal/application_v31_native.ts +22 -12
  200. package/src/programmers/internal/application_v31_object.ts +19 -8
  201. package/src/programmers/internal/application_v31_schema.ts +26 -29
  202. package/src/programmers/internal/check_dynamic_key.ts +4 -4
  203. package/src/programmers/internal/check_native.ts +4 -4
  204. package/src/programmers/internal/check_union_array_like.ts +2 -1
  205. package/src/programmers/internal/llm_schema_escaped.ts +2 -2
  206. package/src/programmers/internal/llm_schema_object.ts +21 -18
  207. package/src/programmers/internal/llm_schema_station.ts +9 -11
  208. package/src/programmers/json/JsonSchemasProgrammer.ts +5 -5
  209. package/src/programmers/json/JsonStringifyProgrammer.ts +5 -5
  210. package/src/programmers/llm/LlmSchemaProgrammer.ts +6 -6
  211. package/src/programmers/misc/MiscCloneProgrammer.ts +11 -7
  212. package/src/programmers/misc/MiscPruneProgrammer.ts +1 -1
  213. package/src/programmers/notations/NotationGeneralProgrammer.ts +10 -6
  214. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +254 -308
  215. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +11 -8
  216. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +73 -95
  217. package/src/schemas/metadata/IMetadata.ts +35 -39
  218. package/src/schemas/metadata/IMetadataAlias.ts +6 -12
  219. package/src/schemas/metadata/IMetadataAliasType.ts +12 -0
  220. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  221. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  222. package/src/schemas/metadata/IMetadataConstantValue.ts +1 -1
  223. package/src/schemas/metadata/IMetadataDictionary.ts +2 -2
  224. package/src/schemas/metadata/IMetadataMap.ts +8 -0
  225. package/src/schemas/metadata/IMetadataNative.ts +6 -0
  226. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  227. package/src/schemas/metadata/IMetadataSet.ts +7 -0
  228. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  229. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  230. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  231. package/src/schemas/metadata/Metadata.ts +100 -47
  232. package/src/schemas/metadata/MetadataAlias.ts +46 -61
  233. package/src/schemas/metadata/MetadataAliasType.ts +63 -0
  234. package/src/schemas/metadata/MetadataArray.ts +49 -49
  235. package/src/schemas/metadata/MetadataComponents.ts +3 -3
  236. package/src/schemas/metadata/MetadataConstantValue.ts +1 -1
  237. package/src/schemas/metadata/MetadataMap.ts +48 -0
  238. package/src/schemas/metadata/MetadataNative.ts +44 -0
  239. package/src/schemas/metadata/MetadataProperty.ts +3 -0
  240. package/src/schemas/metadata/MetadataSet.ts +45 -0
  241. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  242. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  243. package/src/schemas/protobuf/IProtobufProperty.ts +6 -0
  244. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -0
  245. package/src/schemas/protobuf/IProtobufSchema.ts +50 -0
  246. package/src/tags/Example.ts +24 -17
  247. package/src/tags/Examples.ts +16 -16
  248. package/src/tags/JsonSchemaPlugin.ts +8 -8
  249. package/src/tags/Sequence.ts +10 -0
  250. package/src/tags/TagBase.ts +82 -76
  251. package/src/tags/index.ts +1 -0
  252. package/src/utils/{NameEncoder.ts → ProtobufNameEncoder.ts} +1 -1
  253. package/lib/schemas/metadata/IMetadataEntry.d.ts +0 -5
  254. package/lib/schemas/metadata/IMetadataEntry.js.map +0 -1
  255. package/lib/utils/NameEncoder.js.map +0 -1
  256. package/src/schemas/metadata/IMetadataEntry.ts +0 -6
@@ -61,7 +61,7 @@ const is_date = (props: {
61
61
  props.visited.add(props.metadata);
62
62
 
63
63
  return (
64
- props.metadata.natives.some((name) => name === "Date") ||
64
+ props.metadata.natives.some((native) => native.name === "Date") ||
65
65
  props.metadata.arrays.some((array) =>
66
66
  is_date({
67
67
  visited: props.visited,
@@ -79,7 +79,7 @@ const is_date = (props: {
79
79
  props.metadata.aliases.some((alias) =>
80
80
  is_date({
81
81
  visited: props.visited,
82
- metadata: alias.value,
82
+ metadata: alias.type.value,
83
83
  }),
84
84
  )
85
85
  );
@@ -6,6 +6,7 @@ import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
6
6
  import { MetadataAlias } from "../../schemas/metadata/MetadataAlias";
7
7
 
8
8
  import { application_description } from "./application_description";
9
+ import { application_plugin } from "./application_plugin";
9
10
  import { application_v30_object } from "./application_v30_object";
10
11
  import { application_v30_schema } from "./application_v30_schema";
11
12
 
@@ -17,15 +18,18 @@ export const application_v30_alias = <BlockNever extends boolean>(props: {
17
18
  components: OpenApiV3.IComponents;
18
19
  alias: MetadataAlias;
19
20
  nullable: boolean;
20
- }): OpenApiV3.IJsonSchema.IReference => {
21
- if (props.alias.value.size() === 1 && props.alias.value.objects.length === 1)
21
+ }): OpenApiV3.IJsonSchema.IReference[] => {
22
+ if (
23
+ props.alias.type.value.size() === 1 &&
24
+ props.alias.type.value.objects.length === 1
25
+ )
22
26
  return application_v30_object({
23
- object: props.alias.value.objects[0]!.type,
27
+ object: props.alias.type.value.objects[0]!,
24
28
  components: props.components,
25
29
  nullable: props.nullable,
26
- }) as OpenApiV3.IJsonSchema.IReference;
30
+ }) as OpenApiV3.IJsonSchema.IReference[];
27
31
 
28
- const key: string = `${props.alias.name}${props.nullable ? ".Nullable" : ""}`;
32
+ const key: string = `${props.alias.type.name}${props.nullable ? ".Nullable" : ""}`;
29
33
  const $ref: string = `#/components/schemas/${key}`;
30
34
 
31
35
  if (props.components.schemas?.[key] === undefined) {
@@ -39,21 +43,23 @@ export const application_v30_alias = <BlockNever extends boolean>(props: {
39
43
  components: props.components,
40
44
  attribute: {
41
45
  deprecated:
42
- props.alias.jsDocTags.some((tag) => tag.name === "deprecated") ||
46
+ props.alias.type.jsDocTags.some((tag) => tag.name === "deprecated") ||
43
47
  undefined,
44
48
  title: (() => {
45
- const info: IJsDocTagInfo | undefined = props.alias.jsDocTags.find(
46
- (tag) => tag.name === "title",
47
- );
49
+ const info: IJsDocTagInfo | undefined =
50
+ props.alias.type.jsDocTags.find((tag) => tag.name === "title");
48
51
  return info?.text?.length
49
52
  ? CommentFactory.merge(info.text)
50
53
  : undefined;
51
54
  })(),
52
- description: application_description(props.alias),
55
+ description: application_description(props.alias.type),
53
56
  },
54
- metadata: props.alias.value,
57
+ metadata: props.alias.type.value,
55
58
  });
56
59
  if (schema !== null) Object.assign(props.components.schemas[key]!, schema);
57
60
  }
58
- return { $ref };
61
+ return application_plugin({
62
+ schema: { $ref },
63
+ tags: props.alias.tags,
64
+ });
59
65
  };
@@ -1,20 +1,27 @@
1
1
  import { OpenApiV3 } from "@samchon/openapi";
2
2
 
3
+ import { MetadataNative } from "../../schemas/metadata/MetadataNative";
4
+
5
+ import { application_plugin } from "./application_plugin";
6
+
3
7
  /**
4
8
  * @internal
5
9
  */
6
10
  export const application_v30_native = (props: {
7
11
  components: OpenApiV3.IComponents;
8
- name: string;
12
+ native: MetadataNative;
9
13
  nullable: boolean;
10
- }): OpenApiV3.IJsonSchema => {
11
- if (props.name === "Blob" || props.name === "File")
12
- return {
13
- type: "string",
14
- format: "binary",
15
- nullable: props.nullable,
16
- };
17
- const key: string = `${props.name}${props.nullable ? ".Nullable" : ""}`;
14
+ }): OpenApiV3.IJsonSchema[] => {
15
+ if (props.native.name === "Blob" || props.native.name === "File")
16
+ return application_plugin({
17
+ schema: {
18
+ type: "string",
19
+ format: "binary",
20
+ nullable: props.nullable,
21
+ },
22
+ tags: props.native.tags,
23
+ });
24
+ const key: string = `${props.native.name}${props.nullable ? ".Nullable" : ""}`;
18
25
  if (props.components.schemas?.[key] === undefined) {
19
26
  props.components.schemas ??= {};
20
27
  props.components.schemas[key] ??= {
@@ -23,7 +30,10 @@ export const application_v30_native = (props: {
23
30
  nullable: props.nullable,
24
31
  };
25
32
  }
26
- return {
27
- $ref: `#/components/schemas/${key}`,
28
- };
33
+ return application_plugin({
34
+ schema: {
35
+ $ref: `#/components/schemas/${key}`,
36
+ },
37
+ tags: props.native.tags,
38
+ });
29
39
  };
@@ -4,11 +4,12 @@ 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 { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
7
+ import { MetadataObject } from "../../schemas/metadata/MetadataObject";
8
8
 
9
9
  import { PatternUtil } from "../../utils/PatternUtil";
10
10
 
11
11
  import { application_description } from "./application_description";
12
+ import { application_plugin } from "./application_plugin";
12
13
  import { application_v30_schema } from "./application_v30_schema";
13
14
  import { metadata_to_pattern } from "./metadata_to_pattern";
14
15
 
@@ -17,12 +18,26 @@ import { metadata_to_pattern } from "./metadata_to_pattern";
17
18
  */
18
19
  export const application_v30_object = (props: {
19
20
  components: OpenApiV3.IComponents;
20
- object: MetadataObjectType;
21
+ object: MetadataObject;
22
+ nullable: boolean;
23
+ }): Array<OpenApiV3.IJsonSchema.IReference | OpenApiV3.IJsonSchema.IObject> =>
24
+ application_plugin({
25
+ schema: emplace_object(props),
26
+ tags: props.object.tags,
27
+ });
28
+
29
+ /**
30
+ * @internal
31
+ */
32
+ const emplace_object = (props: {
33
+ components: OpenApiV3.IComponents;
34
+ object: MetadataObject;
21
35
  nullable: boolean;
22
36
  }): OpenApiV3.IJsonSchema.IReference | OpenApiV3.IJsonSchema.IObject => {
23
- if (props.object.isLiteral() === true) return create_object_schema(props);
37
+ if (props.object.type.isLiteral() === true)
38
+ return create_object_schema(props);
24
39
 
25
- const key: string = `${props.object.name}${props.nullable ? ".Nullable" : ""}`;
40
+ const key: string = `${props.object.type.name}${props.nullable ? ".Nullable" : ""}`;
26
41
  const $ref: string = `#/components/schemas/${key}`;
27
42
  if (props.components.schemas?.[key] !== undefined) return { $ref };
28
43
 
@@ -38,7 +53,7 @@ export const application_v30_object = (props: {
38
53
  */
39
54
  const create_object_schema = (props: {
40
55
  components: OpenApiV3.IComponents;
41
- object: MetadataObjectType;
56
+ object: MetadataObject;
42
57
  nullable: boolean;
43
58
  }): OpenApiV3.IJsonSchema.IObject => {
44
59
  // ITERATE PROPERTIES
@@ -49,7 +64,7 @@ const create_object_schema = (props: {
49
64
  };
50
65
  const required: string[] = [];
51
66
 
52
- for (const property of props.object.properties) {
67
+ for (const property of props.object.type.properties) {
53
68
  if (
54
69
  // FUNCTIONAL TYPE
55
70
  property.value.functions.length &&
@@ -111,12 +126,12 @@ const create_object_schema = (props: {
111
126
  nullable: props.nullable,
112
127
  required: required.length ? required : undefined,
113
128
  title: (() => {
114
- const info: IJsDocTagInfo | undefined = props.object.jsDocTags.find(
129
+ const info: IJsDocTagInfo | undefined = props.object.type.jsDocTags.find(
115
130
  (tag) => tag.name === "title",
116
131
  );
117
132
  return info?.text?.length ? CommentFactory.merge(info.text) : undefined;
118
133
  })(),
119
- description: application_description(props.object),
134
+ description: application_description(props.object.type),
120
135
  additionalProperties: join({
121
136
  components: props.components,
122
137
  extra: extraMeta,
@@ -2,6 +2,7 @@ import { OpenApiV3 } from "@samchon/openapi";
2
2
 
3
3
  import { Metadata } from "../../schemas/metadata/Metadata";
4
4
  import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
5
+ import { MetadataNative } from "../../schemas/metadata/MetadataNative";
5
6
 
6
7
  import { AtomicPredicator } from "../helpers/AtomicPredicator";
7
8
  import { application_array } from "./application_array";
@@ -70,7 +71,7 @@ export const application_v30_schema = <BlockNever extends boolean>(props: {
70
71
  props.metadata.templates.length &&
71
72
  AtomicPredicator.template(props.metadata)
72
73
  )
73
- application_templates(props.metadata).map(insert);
74
+ application_templates(props.metadata).forEach(insert);
74
75
  for (const constant of props.metadata.constants)
75
76
  if (
76
77
  AtomicPredicator.constant({
@@ -112,8 +113,8 @@ export const application_v30_schema = <BlockNever extends boolean>(props: {
112
113
 
113
114
  // NATIVES
114
115
  for (const native of props.metadata.natives)
115
- if (AtomicPredicator.native(native)) {
116
- const type: string = native.toLowerCase();
116
+ if (AtomicPredicator.native(native.name)) {
117
+ const type: string = native.name.toLowerCase();
117
118
  if (props.metadata.atomics.some((a) => a.type === type)) continue;
118
119
  else if (type === "boolean")
119
120
  insert(
@@ -152,50 +153,46 @@ export const application_v30_schema = <BlockNever extends boolean>(props: {
152
153
  )[0]!,
153
154
  );
154
155
  } else
155
- insert(
156
- application_v30_native({
157
- name: native,
158
- components: props.components,
159
- nullable: props.metadata.nullable,
160
- }),
161
- );
162
- if (props.metadata.sets.length)
163
- insert(
164
156
  application_v30_native({
165
- name: "Set",
157
+ native,
166
158
  components: props.components,
167
159
  nullable: props.metadata.nullable,
160
+ }).forEach(insert);
161
+ if (props.metadata.sets.length)
162
+ application_v30_native({
163
+ native: MetadataNative.create({
164
+ name: "Set",
165
+ tags: [],
168
166
  }),
169
- );
167
+ components: props.components,
168
+ nullable: props.metadata.nullable,
169
+ }).forEach(insert);
170
170
  if (props.metadata.maps.length)
171
- insert(
172
- application_v30_native({
171
+ application_v30_native({
172
+ native: MetadataNative.create({
173
173
  name: "Map",
174
- components: props.components,
175
- nullable: props.metadata.nullable,
174
+ tags: [],
176
175
  }),
177
- );
176
+ components: props.components,
177
+ nullable: props.metadata.nullable,
178
+ }).forEach(insert);
178
179
 
179
180
  // OBJECT
180
181
  for (const object of props.metadata.objects)
181
- insert(
182
- application_v30_object({
183
- object: object.type,
184
- components: props.components,
185
- nullable: props.metadata.nullable,
186
- }),
187
- );
182
+ application_v30_object({
183
+ object,
184
+ components: props.components,
185
+ nullable: props.metadata.nullable,
186
+ }).forEach(insert);
188
187
 
189
188
  // ALIASES
190
189
  for (const alias of props.metadata.aliases)
191
- insert(
192
- application_v30_alias({
193
- alias,
194
- blockNever: props.blockNever,
195
- components: props.components,
196
- nullable: props.metadata.nullable,
197
- }),
198
- );
190
+ application_v30_alias({
191
+ alias,
192
+ blockNever: props.blockNever,
193
+ components: props.components,
194
+ nullable: props.metadata.nullable,
195
+ }).forEach(insert);
199
196
 
200
197
  //----
201
198
  // RETURNS
@@ -14,18 +14,21 @@ export const application_v31_alias = <BlockNever extends boolean>(props: {
14
14
  blockNever: BlockNever;
15
15
  components: OpenApi.IComponents;
16
16
  alias: MetadataAlias;
17
- }): OpenApi.IJsonSchema.IReference => {
18
- if (props.alias.value.size() === 1 && props.alias.value.objects.length === 1)
17
+ }): OpenApi.IJsonSchema.IReference[] => {
18
+ if (
19
+ props.alias.type.value.size() === 1 &&
20
+ props.alias.type.value.objects.length === 1
21
+ )
19
22
  return application_v31_object({
20
23
  components: props.components,
21
- object: props.alias.value.objects[0]!.type,
22
- }) as OpenApi.IJsonSchema.IReference;
24
+ object: props.alias.type.value.objects[0]!,
25
+ }) as OpenApi.IJsonSchema.IReference[];
23
26
 
24
- const $ref: string = `#/components/schemas/${props.alias.name}`;
25
- if (props.components.schemas?.[props.alias.name] === undefined) {
27
+ const $ref: string = `#/components/schemas/${props.alias.type.name}`;
28
+ if (props.components.schemas?.[props.alias.type.name] === undefined) {
26
29
  // TEMPORARY ASSIGNMENT
27
30
  props.components.schemas ??= {};
28
- props.components.schemas[props.alias.name] = {};
31
+ props.components.schemas[props.alias.type.name] = {};
29
32
 
30
33
  // GENERATE SCHEMA
31
34
  const schema: OpenApi.IJsonSchema | null = application_v31_schema({
@@ -33,15 +36,15 @@ export const application_v31_alias = <BlockNever extends boolean>(props: {
33
36
  components: props.components,
34
37
  attribute: {
35
38
  deprecated:
36
- props.alias.jsDocTags.some((tag) => tag.name === "deprecated") ||
39
+ props.alias.type.jsDocTags.some((tag) => tag.name === "deprecated") ||
37
40
  undefined,
38
- title: application_title(props.alias),
39
- description: application_description(props.alias),
41
+ title: application_title(props.alias.type),
42
+ description: application_description(props.alias.type),
40
43
  },
41
- metadata: props.alias.value,
44
+ metadata: props.alias.type.value,
42
45
  });
43
46
  if (schema !== null)
44
- Object.assign(props.components.schemas[props.alias.name]!, schema);
47
+ Object.assign(props.components.schemas[props.alias.type.name]!, schema);
45
48
  }
46
- return { $ref };
49
+ return [{ $ref }];
47
50
  };
@@ -1,25 +1,35 @@
1
1
  import { OpenApi } from "@samchon/openapi";
2
2
 
3
+ import { MetadataNative } from "../../schemas/metadata/MetadataNative";
4
+
5
+ import { application_plugin } from "./application_plugin";
6
+
3
7
  /**
4
8
  * @internal
5
9
  */
6
10
  export const application_v31_native = (props: {
7
11
  components: OpenApi.IComponents;
8
- name: string;
9
- }): OpenApi.IJsonSchema => {
10
- if (props.name === "Blob" || props.name === "File")
11
- return {
12
- type: "string",
13
- format: "binary",
14
- };
15
- if (props.components.schemas?.[props.name] === undefined) {
12
+ native: MetadataNative;
13
+ }): OpenApi.IJsonSchema[] => {
14
+ if (props.native.name === "Blob" || props.native.name === "File")
15
+ return application_plugin({
16
+ schema: {
17
+ type: "string",
18
+ format: "binary",
19
+ },
20
+ tags: props.native.tags,
21
+ });
22
+ if (props.components.schemas?.[props.native.name] === undefined) {
16
23
  props.components.schemas ??= {};
17
- props.components.schemas[props.name] ??= {
24
+ props.components.schemas[props.native.name] ??= {
18
25
  type: "object",
19
26
  properties: {},
20
27
  };
21
28
  }
22
- return {
23
- $ref: `#/components/schemas/${props.name}`,
24
- };
29
+ return application_plugin({
30
+ schema: {
31
+ $ref: `#/components/schemas/${props.native.name}`,
32
+ },
33
+ tags: props.native.tags,
34
+ });
25
35
  };
@@ -4,11 +4,12 @@ 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 { MetadataObjectType } from "../../schemas/metadata/MetadataObjectType";
7
+ import { MetadataObject } from "../../schemas/metadata/MetadataObject";
8
8
 
9
9
  import { PatternUtil } from "../../utils/PatternUtil";
10
10
 
11
11
  import { application_description } from "./application_description";
12
+ import { application_plugin } from "./application_plugin";
12
13
  import { application_title } from "./application_title";
13
14
  import { application_v31_schema } from "./application_v31_schema";
14
15
  import { metadata_to_pattern } from "./metadata_to_pattern";
@@ -18,11 +19,21 @@ import { metadata_to_pattern } from "./metadata_to_pattern";
18
19
  */
19
20
  export const application_v31_object = (props: {
20
21
  components: OpenApi.IComponents;
21
- object: MetadataObjectType;
22
+ object: MetadataObject;
23
+ }): Array<OpenApi.IJsonSchema.IReference | OpenApi.IJsonSchema.IObject> =>
24
+ application_plugin({
25
+ schema: emplace_object(props),
26
+ tags: props.object.tags,
27
+ });
28
+
29
+ const emplace_object = (props: {
30
+ components: OpenApi.IComponents;
31
+ object: MetadataObject;
22
32
  }): OpenApi.IJsonSchema.IReference | OpenApi.IJsonSchema.IObject => {
23
- if (props.object.isLiteral() === true) return create_object_schema(props);
33
+ if (props.object.type.isLiteral() === true)
34
+ return create_object_schema(props);
24
35
 
25
- const key: string = props.object.name;
36
+ const key: string = props.object.type.name;
26
37
  const $ref: string = `#/components/schemas/${key}`;
27
38
  if (props.components.schemas?.[key] !== undefined) return { $ref };
28
39
 
@@ -38,7 +49,7 @@ export const application_v31_object = (props: {
38
49
  */
39
50
  const create_object_schema = (props: {
40
51
  components: OpenApi.IComponents;
41
- object: MetadataObjectType;
52
+ object: MetadataObject;
42
53
  }): OpenApi.IJsonSchema.IObject => {
43
54
  // ITERATE PROPERTIES
44
55
  const properties: Record<string, any> = {};
@@ -48,7 +59,7 @@ const create_object_schema = (props: {
48
59
  };
49
60
  const required: string[] = [];
50
61
 
51
- for (const property of props.object.properties) {
62
+ for (const property of props.object.type.properties) {
52
63
  if (
53
64
  // FUNCTIONAL TYPE
54
65
  property.value.functions.length &&
@@ -93,12 +104,12 @@ const create_object_schema = (props: {
93
104
  properties,
94
105
  required: required.length ? required : undefined,
95
106
  title: (() => {
96
- const info: IJsDocTagInfo | undefined = props.object.jsDocTags.find(
107
+ const info: IJsDocTagInfo | undefined = props.object.type.jsDocTags.find(
97
108
  (tag) => tag.name === "title",
98
109
  );
99
110
  return info?.text?.length ? CommentFactory.merge(info.text) : undefined;
100
111
  })(),
101
- description: application_description(props.object),
112
+ description: application_description(props.object.type),
102
113
  additionalProperties: join({
103
114
  components: props.components,
104
115
  extra: extraMeta,
@@ -2,6 +2,7 @@ import { OpenApi } from "@samchon/openapi";
2
2
 
3
3
  import { Metadata } from "../../schemas/metadata/Metadata";
4
4
  import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
5
+ import { MetadataNative } from "../../schemas/metadata/MetadataNative";
5
6
 
6
7
  import { AtomicPredicator } from "../helpers/AtomicPredicator";
7
8
  import { application_array } from "./application_array";
@@ -112,8 +113,8 @@ export const application_v31_schema = <BlockNever extends boolean>(props: {
112
113
 
113
114
  // NATIVES
114
115
  for (const native of props.metadata.natives)
115
- if (AtomicPredicator.native(native)) {
116
- const type: string = native.toLowerCase();
116
+ if (AtomicPredicator.native(native.name)) {
117
+ const type: string = native.name.toLowerCase();
117
118
  if (props.metadata.atomics.some((a) => a.type === type)) continue;
118
119
  else if (type === "boolean")
119
120
  insert(
@@ -152,45 +153,41 @@ export const application_v31_schema = <BlockNever extends boolean>(props: {
152
153
  )[0]! as any,
153
154
  );
154
155
  } else
155
- insert(
156
- application_v31_native({
157
- components: props.components,
158
- name: native,
159
- }),
160
- );
161
- if (props.metadata.sets.length)
162
- insert(
163
156
  application_v31_native({
164
- name: "Set",
165
157
  components: props.components,
158
+ native,
159
+ }).forEach(insert);
160
+ if (props.metadata.sets.length)
161
+ application_v31_native({
162
+ native: MetadataNative.create({
163
+ name: "Set",
164
+ tags: [],
166
165
  }),
167
- );
166
+ components: props.components,
167
+ }).forEach(insert);
168
168
  if (props.metadata.maps.length)
169
- insert(
170
- application_v31_native({
169
+ application_v31_native({
170
+ native: MetadataNative.create({
171
171
  name: "Map",
172
- components: props.components,
172
+ tags: [],
173
173
  }),
174
- );
174
+ components: props.components,
175
+ }).forEach(insert);
175
176
 
176
177
  // OBJECT
177
178
  for (const object of props.metadata.objects)
178
- insert(
179
- application_v31_object({
180
- components: props.components,
181
- object: object.type,
182
- }),
183
- );
179
+ application_v31_object({
180
+ components: props.components,
181
+ object,
182
+ }).forEach(insert);
184
183
 
185
184
  // ALIASES
186
185
  for (const alias of props.metadata.aliases)
187
- insert(
188
- application_v31_alias({
189
- alias,
190
- blockNever: props.blockNever,
191
- components: props.components,
192
- }),
193
- );
186
+ application_v31_alias({
187
+ alias,
188
+ blockNever: props.blockNever,
189
+ components: props.components,
190
+ }).forEach(insert);
194
191
 
195
192
  //----
196
193
  // RETURNS
@@ -28,7 +28,7 @@ export const check_dynamic_key = (props: {
28
28
  .length === 0,
29
29
  )) ||
30
30
  (props.metadata.natives.length !== 0 &&
31
- props.metadata.natives.some((type) => type === "String"))
31
+ props.metadata.natives.some((native) => native.name === "String"))
32
32
  )
33
33
  return ts.factory.createTrue();
34
34
 
@@ -135,7 +135,7 @@ export const check_dynamic_key = (props: {
135
135
 
136
136
  // NATIVES
137
137
  for (const native of props.metadata.natives)
138
- if (native === "Boolean")
138
+ if (native.name === "Boolean")
139
139
  conditions.push(
140
140
  ts.factory.createLogicalOr(
141
141
  ts.factory.createStrictEquality(
@@ -148,7 +148,7 @@ export const check_dynamic_key = (props: {
148
148
  ),
149
149
  ),
150
150
  );
151
- else if (native === "BigInt")
151
+ else if (native.name === "BigInt")
152
152
  conditions.push(
153
153
  ts.factory.createCallExpression(
154
154
  props.context.importer.internal("isBigintString"),
@@ -156,7 +156,7 @@ export const check_dynamic_key = (props: {
156
156
  [props.input],
157
157
  ),
158
158
  );
159
- else if (native === "Number")
159
+ else if (native.name === "Number")
160
160
  conditions.push(
161
161
  ts.factory.createStrictEquality(
162
162
  ts.factory.createFalse(),
@@ -6,14 +6,14 @@ import { ExpressionFactory } from "../../factories/ExpressionFactory";
6
6
  * @internal
7
7
  */
8
8
  export const check_native = (props: {
9
- type: string;
9
+ name: string;
10
10
  input: ts.Expression;
11
11
  }): ts.Expression => {
12
- const instanceOf = ExpressionFactory.isInstanceOf(props.type, props.input);
13
- return ATOMIC_LIKE.has(props.type)
12
+ const instanceOf = ExpressionFactory.isInstanceOf(props.name, props.input);
13
+ return ATOMIC_LIKE.has(props.name)
14
14
  ? ts.factory.createLogicalOr(
15
15
  ts.factory.createStrictEquality(
16
- ts.factory.createStringLiteral(props.type.toLowerCase()),
16
+ ts.factory.createStringLiteral(props.name.toLowerCase()),
17
17
  ts.factory.createTypeOfExpression(props.input),
18
18
  ),
19
19
  instanceOf,
@@ -8,6 +8,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
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 { MetadataMap } from "../../schemas/metadata/MetadataMap";
11
12
  import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
12
13
 
13
14
  import { CheckerProgrammer } from "../CheckerProgrammer";
@@ -18,7 +19,7 @@ import { UnionExplorer } from "../helpers/UnionExplorer";
18
19
  * @internal
19
20
  */
20
21
  export const check_union_array_like = <
21
- Origin extends Metadata | MetadataArray | MetadataTuple | Metadata.Entry,
22
+ Origin extends Metadata | MetadataArray | MetadataTuple | MetadataMap,
22
23
  Category extends MetadataArray | MetadataTuple,
23
24
  Element,
24
25
  >(props: {
@@ -59,7 +59,7 @@ const is_date = (props: {
59
59
  props.visited.add(props.metadata);
60
60
 
61
61
  return (
62
- props.metadata.natives.some((name) => name === "Date") ||
62
+ props.metadata.natives.some((native) => native.name === "Date") ||
63
63
  props.metadata.arrays.some((array) =>
64
64
  is_date({
65
65
  visited: props.visited,
@@ -77,7 +77,7 @@ const is_date = (props: {
77
77
  props.metadata.aliases.some((alias) =>
78
78
  is_date({
79
79
  visited: props.visited,
80
- metadata: alias.value,
80
+ metadata: alias.type.value,
81
81
  }),
82
82
  )
83
83
  );