typia 7.0.0-dev.20241011 → 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 (250) 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 -22
  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/internal/$ProtobufSizer.js +1 -8
  26. package/lib/internal/$ProtobufSizer.js.map +1 -1
  27. package/lib/json.d.ts +1 -1
  28. package/lib/module.d.ts +1 -1
  29. package/lib/module.js +1 -1
  30. package/lib/module.js.map +1 -1
  31. package/lib/programmers/CheckerProgrammer.d.ts +2 -2
  32. package/lib/programmers/CheckerProgrammer.js +5 -3
  33. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  34. package/lib/programmers/FeatureProgrammer.d.ts +5 -5
  35. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  36. package/lib/programmers/IsProgrammer.d.ts +2 -2
  37. package/lib/programmers/RandomProgrammer.js +1 -1
  38. package/lib/programmers/RandomProgrammer.js.map +1 -1
  39. package/lib/programmers/helpers/ProtobufUtil.d.ts +2 -2
  40. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  41. package/lib/programmers/helpers/PruneJoiner.d.ts +2 -2
  42. package/lib/programmers/helpers/RandomJoiner.d.ts +2 -2
  43. package/lib/programmers/helpers/UnionExplorer.d.ts +3 -3
  44. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  45. package/lib/programmers/helpers/UnionPredicator.d.ts +3 -3
  46. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  47. package/lib/programmers/http/HttpFormDataProgrammer.js +1 -1
  48. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  49. package/lib/programmers/http/HttpHeadersProgrammer.js +1 -1
  50. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  51. package/lib/programmers/http/HttpQueryProgrammer.js +2 -2
  52. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  53. package/lib/programmers/internal/application_union_discriminator.js +2 -2
  54. package/lib/programmers/internal/application_union_discriminator.js.map +1 -1
  55. package/lib/programmers/internal/application_v30_alias.js +1 -1
  56. package/lib/programmers/internal/application_v30_alias.js.map +1 -1
  57. package/lib/programmers/internal/application_v30_schema.js +1 -1
  58. package/lib/programmers/internal/application_v30_schema.js.map +1 -1
  59. package/lib/programmers/internal/application_v31_alias.js +1 -1
  60. package/lib/programmers/internal/application_v31_alias.js.map +1 -1
  61. package/lib/programmers/internal/application_v31_schema.js +1 -1
  62. package/lib/programmers/internal/application_v31_schema.js.map +1 -1
  63. package/lib/programmers/internal/llm_schema_object.js +1 -1
  64. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  65. package/lib/programmers/internal/llm_schema_station.js +2 -2
  66. package/lib/programmers/internal/llm_schema_station.js.map +1 -1
  67. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  68. package/lib/programmers/json/JsonApplicationProgrammer.js +6 -5
  69. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  70. package/lib/programmers/json/JsonSchemasProgrammer.d.ts +1 -1
  71. package/lib/programmers/json/JsonStringifyProgrammer.js +3 -3
  72. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  73. package/lib/programmers/llm/LlmApplicationProgrammer.js +7 -6
  74. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
  75. package/lib/programmers/llm/LlmSchemaProgrammer.js +1 -1
  76. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  77. package/lib/programmers/misc/MiscCloneProgrammer.js +1 -1
  78. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  79. package/lib/programmers/misc/MiscPruneProgrammer.js +1 -1
  80. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  81. package/lib/programmers/notations/NotationGeneralProgrammer.js +1 -1
  82. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  83. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +6 -6
  84. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  85. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +1 -1
  86. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  87. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +3 -3
  88. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  89. package/lib/schemas/json/IJsonSchemaCollection.js +3 -0
  90. package/lib/schemas/json/IJsonSchemaCollection.js.map +1 -0
  91. package/lib/schemas/metadata/IMetadata.d.ts +4 -1
  92. package/lib/schemas/metadata/IMetadataArray.d.ts +1 -2
  93. package/lib/schemas/metadata/IMetadataComponents.d.ts +2 -2
  94. package/lib/schemas/metadata/IMetadataDictionary.d.ts +2 -2
  95. package/lib/schemas/metadata/IMetadataObject.d.ts +2 -8
  96. package/lib/schemas/metadata/IMetadataObjectType.d.ts +11 -0
  97. package/lib/schemas/{json/IJsonSchemaList.js → metadata/IMetadataObjectType.js} +1 -1
  98. package/lib/schemas/metadata/IMetadataObjectType.js.map +1 -0
  99. package/lib/schemas/metadata/IMetadataTuple.d.ts +1 -2
  100. package/lib/schemas/metadata/Metadata.js +14 -15
  101. package/lib/schemas/metadata/Metadata.js.map +1 -1
  102. package/lib/schemas/metadata/MetadataArray.js +1 -1
  103. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  104. package/lib/schemas/metadata/MetadataComponents.d.ts +2 -2
  105. package/lib/schemas/metadata/MetadataComponents.js +2 -2
  106. package/lib/schemas/metadata/MetadataComponents.js.map +1 -1
  107. package/lib/schemas/metadata/MetadataObject.d.ts +8 -12
  108. package/lib/schemas/metadata/MetadataObject.js +44 -82
  109. package/lib/schemas/metadata/MetadataObject.js.map +1 -1
  110. package/lib/schemas/metadata/MetadataObjectType.d.ts +20 -0
  111. package/lib/schemas/metadata/MetadataObjectType.js +106 -0
  112. package/lib/schemas/metadata/MetadataObjectType.js.map +1 -0
  113. package/lib/schemas/metadata/MetadataTuple.js +1 -1
  114. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  115. package/lib/transformers/TransformerError.js.map +1 -1
  116. package/package.json +2 -2
  117. package/src/executable/TypiaGenerateWizard.ts +83 -83
  118. package/src/executable/TypiaSetupWizard.ts +174 -174
  119. package/src/executable/setup/ArgumentParser.ts +42 -42
  120. package/src/executable/setup/FileRetriever.ts +19 -19
  121. package/src/executable/setup/PackageManager.ts +87 -87
  122. package/src/factories/IdentifierFactory.ts +89 -89
  123. package/src/factories/MetadataCollection.ts +280 -278
  124. package/src/factories/MetadataFactory.ts +11 -5
  125. package/src/factories/MetadataTypeTagFactory.ts +386 -385
  126. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  127. package/src/factories/NumericRangeFactory.ts +72 -72
  128. package/src/factories/ProtobufFactory.ts +14 -28
  129. package/src/factories/StatementFactory.ts +90 -90
  130. package/src/factories/TemplateFactory.ts +64 -64
  131. package/src/factories/TypeFactory.ts +140 -140
  132. package/src/factories/internal/metadata/emplace_metadata_alias.ts +32 -32
  133. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  134. package/src/factories/internal/metadata/emplace_metadata_object.ts +2 -2
  135. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +56 -56
  136. package/src/factories/internal/metadata/explore_metadata.ts +30 -30
  137. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  138. package/src/factories/internal/metadata/iterate_metadata_alias.ts +28 -28
  139. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  140. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  141. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  142. package/src/factories/internal/metadata/iterate_metadata_collection.ts +4 -3
  143. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +2 -2
  144. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  145. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  146. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +219 -216
  147. package/src/factories/internal/metadata/iterate_metadata_map.ts +52 -52
  148. package/src/factories/internal/metadata/iterate_metadata_native.ts +236 -236
  149. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -27
  150. package/src/factories/internal/metadata/iterate_metadata_set.ts +39 -39
  151. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -83
  152. package/src/factories/internal/metadata/iterate_metadata_template.ts +42 -42
  153. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  154. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  155. package/src/internal/$ProtobufSizer.ts +1 -7
  156. package/src/json.ts +1 -1
  157. package/src/module.ts +1 -1
  158. package/src/programmers/CheckerProgrammer.ts +7 -5
  159. package/src/programmers/FeatureProgrammer.ts +9 -6
  160. package/src/programmers/IsProgrammer.ts +2 -2
  161. package/src/programmers/RandomProgrammer.ts +3 -3
  162. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  163. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  164. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  165. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  166. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  167. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  168. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  169. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  170. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  171. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  172. package/src/programmers/helpers/RandomJoiner.ts +2 -2
  173. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  174. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  175. package/src/programmers/helpers/UnionPredicator.ts +79 -77
  176. package/src/programmers/http/HttpFormDataProgrammer.ts +3 -3
  177. package/src/programmers/http/HttpHeadersProgrammer.ts +3 -3
  178. package/src/programmers/http/HttpQueryProgrammer.ts +4 -4
  179. package/src/programmers/internal/application_array.ts +56 -56
  180. package/src/programmers/internal/application_bigint.ts +25 -25
  181. package/src/programmers/internal/application_boolean.ts +25 -25
  182. package/src/programmers/internal/application_escaped.ts +96 -96
  183. package/src/programmers/internal/application_number.ts +25 -25
  184. package/src/programmers/internal/application_plugin.ts +19 -19
  185. package/src/programmers/internal/application_string.ts +25 -25
  186. package/src/programmers/internal/application_templates.ts +64 -64
  187. package/src/programmers/internal/application_union_discriminator.ts +35 -35
  188. package/src/programmers/internal/application_v30_alias.ts +59 -59
  189. package/src/programmers/internal/application_v30_native.ts +29 -29
  190. package/src/programmers/internal/application_v30_object.ts +165 -165
  191. package/src/programmers/internal/application_v30_schema.ts +220 -220
  192. package/src/programmers/internal/application_v30_tuple.ts +33 -33
  193. package/src/programmers/internal/application_v31_alias.ts +47 -47
  194. package/src/programmers/internal/application_v31_constant.ts +29 -29
  195. package/src/programmers/internal/application_v31_native.ts +25 -25
  196. package/src/programmers/internal/application_v31_object.ts +147 -147
  197. package/src/programmers/internal/application_v31_schema.ts +215 -215
  198. package/src/programmers/internal/application_v31_tuple.ts +22 -22
  199. package/src/programmers/internal/check_array_length.ts +46 -46
  200. package/src/programmers/internal/check_bigint.ts +49 -49
  201. package/src/programmers/internal/check_everything.ts +23 -23
  202. package/src/programmers/internal/check_native.ts +27 -27
  203. package/src/programmers/internal/check_number.ts +111 -111
  204. package/src/programmers/internal/check_string.ts +49 -49
  205. package/src/programmers/internal/check_template.ts +48 -48
  206. package/src/programmers/internal/check_union_array_like.ts +334 -334
  207. package/src/programmers/internal/decode_union_object.ts +116 -116
  208. package/src/programmers/internal/feature_object_entries.ts +2 -2
  209. package/src/programmers/internal/llm_schema_array.ts +22 -22
  210. package/src/programmers/internal/llm_schema_escaped.ts +84 -84
  211. package/src/programmers/internal/llm_schema_object.ts +132 -132
  212. package/src/programmers/internal/llm_schema_station.ts +190 -190
  213. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  214. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  215. package/src/programmers/internal/prune_object_properties.ts +2 -2
  216. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  217. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  218. package/src/programmers/internal/template_to_pattern.ts +23 -23
  219. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  220. package/src/programmers/json/JsonApplicationProgrammer.ts +3 -3
  221. package/src/programmers/json/JsonSchemasProgrammer.ts +1 -1
  222. package/src/programmers/json/JsonStringifyProgrammer.ts +5 -5
  223. package/src/programmers/llm/LlmApplicationProgrammer.ts +4 -4
  224. package/src/programmers/llm/LlmSchemaProgrammer.ts +1 -1
  225. package/src/programmers/misc/MiscCloneProgrammer.ts +3 -3
  226. package/src/programmers/misc/MiscPruneProgrammer.ts +3 -3
  227. package/src/programmers/notations/NotationGeneralProgrammer.ts +3 -3
  228. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +11 -11
  229. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +8 -8
  230. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +201 -201
  231. package/src/schemas/json/{IJsonSchemaList.ts → IJsonSchemaCollection.ts} +22 -22
  232. package/src/schemas/metadata/IMetadata.ts +4 -1
  233. package/src/schemas/metadata/IMetadataArray.ts +1 -2
  234. package/src/schemas/metadata/IMetadataComponents.ts +2 -2
  235. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  236. package/src/schemas/metadata/IMetadataObject.ts +6 -13
  237. package/src/schemas/metadata/IMetadataObjectType.ts +13 -0
  238. package/src/schemas/metadata/IMetadataTuple.ts +1 -2
  239. package/src/schemas/metadata/Metadata.ts +616 -616
  240. package/src/schemas/metadata/MetadataArray.ts +1 -1
  241. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  242. package/src/schemas/metadata/MetadataObject.ts +48 -139
  243. package/src/schemas/metadata/MetadataObjectType.ts +149 -0
  244. package/src/schemas/metadata/MetadataTuple.ts +1 -1
  245. package/src/transformers/TransformerError.ts +8 -7
  246. package/src/transformers/features/json/JsonSchemasTransformer.ts +1 -1
  247. package/src/utils/MapUtil.ts +14 -14
  248. package/src/utils/NameEncoder.ts +32 -32
  249. package/lib/schemas/json/IJsonSchemaList.js.map +0 -1
  250. /package/lib/schemas/json/{IJsonSchemaList.d.ts → IJsonSchemaCollection.d.ts} +0 -0
@@ -1,25 +1,25 @@
1
- import { OpenApi, OpenApiV3 } from "@samchon/openapi";
2
-
3
- import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
4
-
5
- import { application_plugin } from "./application_plugin";
6
-
7
- /**
8
- * @internal
9
- */
10
- export const application_number = <Version extends "3.0" | "3.1">(
11
- atomic: MetadataAtomic,
12
- ): Schema<Version>[] =>
13
- application_plugin({
14
- schema: {
15
- type: "number",
16
- } satisfies Schema<Version>,
17
- tags: atomic.tags,
18
- });
19
-
20
- /**
21
- * @internal
22
- */
23
- type Schema<Version extends "3.0" | "3.1"> = Version extends "3.0"
24
- ? OpenApiV3.IJsonSchema.IInteger | OpenApiV3.IJsonSchema.INumber
25
- : OpenApi.IJsonSchema.IInteger | OpenApi.IJsonSchema.INumber;
1
+ import { OpenApi, OpenApiV3 } from "@samchon/openapi";
2
+
3
+ import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
4
+
5
+ import { application_plugin } from "./application_plugin";
6
+
7
+ /**
8
+ * @internal
9
+ */
10
+ export const application_number = <Version extends "3.0" | "3.1">(
11
+ atomic: MetadataAtomic,
12
+ ): Schema<Version>[] =>
13
+ application_plugin({
14
+ schema: {
15
+ type: "number",
16
+ } satisfies Schema<Version>,
17
+ tags: atomic.tags,
18
+ });
19
+
20
+ /**
21
+ * @internal
22
+ */
23
+ type Schema<Version extends "3.0" | "3.1"> = Version extends "3.0"
24
+ ? OpenApiV3.IJsonSchema.IInteger | OpenApiV3.IJsonSchema.INumber
25
+ : OpenApi.IJsonSchema.IInteger | OpenApi.IJsonSchema.INumber;
@@ -1,19 +1,19 @@
1
- import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
2
-
3
- /**
4
- * @internal
5
- */
6
- export const application_plugin = <Schema extends object>(props: {
7
- schema: Schema;
8
- tags: IMetadataTypeTag[][];
9
- }): Schema[] => {
10
- const plugins: IMetadataTypeTag[][] = props.tags
11
- .map((row) => row.filter((t) => t.schema !== undefined))
12
- .filter((row) => row.length !== 0);
13
- if (plugins.length === 0) return [props.schema];
14
- return plugins.map((row) => {
15
- const base: Schema = { ...props.schema };
16
- for (const tag of row) Object.assign(base, tag.schema);
17
- return base;
18
- });
19
- };
1
+ import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
2
+
3
+ /**
4
+ * @internal
5
+ */
6
+ export const application_plugin = <Schema extends object>(props: {
7
+ schema: Schema;
8
+ tags: IMetadataTypeTag[][];
9
+ }): Schema[] => {
10
+ const plugins: IMetadataTypeTag[][] = props.tags
11
+ .map((row) => row.filter((t) => t.schema !== undefined))
12
+ .filter((row) => row.length !== 0);
13
+ if (plugins.length === 0) return [props.schema];
14
+ return plugins.map((row) => {
15
+ const base: Schema = { ...props.schema };
16
+ for (const tag of row) Object.assign(base, tag.schema);
17
+ return base;
18
+ });
19
+ };
@@ -1,25 +1,25 @@
1
- import { OpenApi, OpenApiV3 } from "@samchon/openapi";
2
-
3
- import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
4
-
5
- import { application_plugin } from "./application_plugin";
6
-
7
- /**
8
- * @internal
9
- */
10
- export const application_string = <Version extends "3.0" | "3.1">(
11
- atomic: MetadataAtomic,
12
- ): Schema<Version>[] =>
13
- application_plugin({
14
- schema: {
15
- type: "string",
16
- } satisfies Schema<Version>,
17
- tags: atomic.tags,
18
- });
19
-
20
- /**
21
- * @internal
22
- */
23
- type Schema<Version extends "3.0" | "3.1"> = Version extends "3.0"
24
- ? OpenApiV3.IJsonSchema.IString
25
- : OpenApi.IJsonSchema.IString;
1
+ import { OpenApi, OpenApiV3 } from "@samchon/openapi";
2
+
3
+ import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
4
+
5
+ import { application_plugin } from "./application_plugin";
6
+
7
+ /**
8
+ * @internal
9
+ */
10
+ export const application_string = <Version extends "3.0" | "3.1">(
11
+ atomic: MetadataAtomic,
12
+ ): Schema<Version>[] =>
13
+ application_plugin({
14
+ schema: {
15
+ type: "string",
16
+ } satisfies Schema<Version>,
17
+ tags: atomic.tags,
18
+ });
19
+
20
+ /**
21
+ * @internal
22
+ */
23
+ type Schema<Version extends "3.0" | "3.1"> = Version extends "3.0"
24
+ ? OpenApiV3.IJsonSchema.IString
25
+ : OpenApi.IJsonSchema.IString;
@@ -1,64 +1,64 @@
1
- import { OpenApi, OpenApiV3 } from "@samchon/openapi";
2
-
3
- import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
4
- import { Metadata } from "../../schemas/metadata/Metadata";
5
- import { MetadataTemplate } from "../../schemas/metadata/MetadataTemplate";
6
-
7
- import { application_plugin } from "./application_plugin";
8
- import { metadata_to_pattern } from "./metadata_to_pattern";
9
-
10
- /**
11
- * @internal
12
- */
13
- export const application_templates = <Version extends "3.0" | "3.1">(
14
- meta: Metadata,
15
- ): Schema<Version>[] => {
16
- const pureTemplates: MetadataTemplate[] = meta.templates.filter(
17
- (t) => isPure(t.tags ?? []) === true,
18
- );
19
- const taggedTemplates: MetadataTemplate[] = meta.templates.filter(
20
- (t) => isPure(t.tags ?? []) === false,
21
- );
22
-
23
- const output: Schema<Version>[] = [];
24
- if (pureTemplates.length)
25
- output.push({
26
- type: "string",
27
- pattern: metadata_to_pattern({
28
- top: true,
29
- metadata: Metadata.create({
30
- ...Metadata.initialize(),
31
- templates: pureTemplates,
32
- }),
33
- }),
34
- });
35
- for (const tpl of taggedTemplates)
36
- output.push(
37
- application_plugin({
38
- schema: {
39
- type: "string",
40
- pattern: metadata_to_pattern({
41
- top: false,
42
- metadata: Metadata.create({
43
- ...Metadata.initialize(),
44
- templates: [tpl],
45
- }),
46
- }),
47
- },
48
- tags: tpl.tags ?? [],
49
- }) as any,
50
- );
51
- return output;
52
- };
53
-
54
- const isPure = (matrix: IMetadataTypeTag[][]) =>
55
- matrix.every((tags) => filter(tags).length === 0);
56
- const filter = (tags: IMetadataTypeTag[]) =>
57
- tags.filter((t) => t.schema !== undefined);
58
-
59
- /**
60
- * @internal
61
- */
62
- type Schema<Version extends "3.0" | "3.1"> = Version extends "3.0"
63
- ? OpenApiV3.IJsonSchema.IString
64
- : OpenApi.IJsonSchema.IString;
1
+ import { OpenApi, OpenApiV3 } from "@samchon/openapi";
2
+
3
+ import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
4
+ import { Metadata } from "../../schemas/metadata/Metadata";
5
+ import { MetadataTemplate } from "../../schemas/metadata/MetadataTemplate";
6
+
7
+ import { application_plugin } from "./application_plugin";
8
+ import { metadata_to_pattern } from "./metadata_to_pattern";
9
+
10
+ /**
11
+ * @internal
12
+ */
13
+ export const application_templates = <Version extends "3.0" | "3.1">(
14
+ meta: Metadata,
15
+ ): Schema<Version>[] => {
16
+ const pureTemplates: MetadataTemplate[] = meta.templates.filter(
17
+ (t) => isPure(t.tags ?? []) === true,
18
+ );
19
+ const taggedTemplates: MetadataTemplate[] = meta.templates.filter(
20
+ (t) => isPure(t.tags ?? []) === false,
21
+ );
22
+
23
+ const output: Schema<Version>[] = [];
24
+ if (pureTemplates.length)
25
+ output.push({
26
+ type: "string",
27
+ pattern: metadata_to_pattern({
28
+ top: true,
29
+ metadata: Metadata.create({
30
+ ...Metadata.initialize(),
31
+ templates: pureTemplates,
32
+ }),
33
+ }),
34
+ });
35
+ for (const tpl of taggedTemplates)
36
+ output.push(
37
+ application_plugin({
38
+ schema: {
39
+ type: "string",
40
+ pattern: metadata_to_pattern({
41
+ top: false,
42
+ metadata: Metadata.create({
43
+ ...Metadata.initialize(),
44
+ templates: [tpl],
45
+ }),
46
+ }),
47
+ },
48
+ tags: tpl.tags ?? [],
49
+ }) as any,
50
+ );
51
+ return output;
52
+ };
53
+
54
+ const isPure = (matrix: IMetadataTypeTag[][]) =>
55
+ matrix.every((tags) => filter(tags).length === 0);
56
+ const filter = (tags: IMetadataTypeTag[]) =>
57
+ tags.filter((t) => t.schema !== undefined);
58
+
59
+ /**
60
+ * @internal
61
+ */
62
+ type Schema<Version extends "3.0" | "3.1"> = Version extends "3.0"
63
+ ? OpenApiV3.IJsonSchema.IString
64
+ : OpenApi.IJsonSchema.IString;
@@ -1,35 +1,35 @@
1
- import { OpenApi } from "@samchon/openapi";
2
-
3
- import { Metadata } from "../../schemas/metadata/Metadata";
4
-
5
- import { UnionPredicator } from "../helpers/UnionPredicator";
6
-
7
- export const application_union_discriminator = (
8
- metadata: Metadata,
9
- ): OpenApi.IJsonSchema.IOneOf.IDiscriminator | undefined => {
10
- if (
11
- metadata.size() === 0 ||
12
- metadata.size() !== metadata.objects.length ||
13
- metadata.objects.some((o) => o.isLiteral()) === true
14
- )
15
- return undefined;
16
- const specialized: UnionPredicator.ISpecialized[] = UnionPredicator.object(
17
- metadata.objects,
18
- );
19
- const meet: boolean =
20
- specialized.length === metadata.objects.length &&
21
- specialized.every(
22
- (s) => s.property.key.isSoleLiteral() && s.property.value.isSoleLiteral(),
23
- ) &&
24
- new Set(specialized.map((s) => s.property.key.getSoleLiteral())).size === 1;
25
- if (meet === false) return undefined;
26
- return {
27
- propertyName: specialized[0]!.property.key.getSoleLiteral()!,
28
- mapping: Object.fromEntries(
29
- specialized.map((s) => [
30
- s.property.value.getSoleLiteral()!,
31
- `#/components/schemas/${s.object.name}`,
32
- ]),
33
- ),
34
- };
35
- };
1
+ import { OpenApi } from "@samchon/openapi";
2
+
3
+ import { Metadata } from "../../schemas/metadata/Metadata";
4
+
5
+ import { UnionPredicator } from "../helpers/UnionPredicator";
6
+
7
+ export const application_union_discriminator = (
8
+ metadata: Metadata,
9
+ ): OpenApi.IJsonSchema.IOneOf.IDiscriminator | undefined => {
10
+ if (
11
+ metadata.size() === 0 ||
12
+ metadata.size() !== metadata.objects.length ||
13
+ metadata.objects.some((o) => o.type.isLiteral()) === true
14
+ )
15
+ return undefined;
16
+ const specialized: UnionPredicator.ISpecialized[] = UnionPredicator.object(
17
+ metadata.objects.map((o) => o.type),
18
+ );
19
+ const meet: boolean =
20
+ specialized.length === metadata.objects.length &&
21
+ specialized.every(
22
+ (s) => s.property.key.isSoleLiteral() && s.property.value.isSoleLiteral(),
23
+ ) &&
24
+ new Set(specialized.map((s) => s.property.key.getSoleLiteral())).size === 1;
25
+ if (meet === false) return undefined;
26
+ return {
27
+ propertyName: specialized[0]!.property.key.getSoleLiteral()!,
28
+ mapping: Object.fromEntries(
29
+ specialized.map((s) => [
30
+ s.property.value.getSoleLiteral()!,
31
+ `#/components/schemas/${s.object.name}`,
32
+ ]),
33
+ ),
34
+ };
35
+ };
@@ -1,59 +1,59 @@
1
- import { OpenApiV3 } from "@samchon/openapi";
2
-
3
- import { CommentFactory } from "../../factories/CommentFactory";
4
-
5
- import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
6
- import { MetadataAlias } from "../../schemas/metadata/MetadataAlias";
7
-
8
- import { application_description } from "./application_description";
9
- import { application_v30_object } from "./application_v30_object";
10
- import { application_v30_schema } from "./application_v30_schema";
11
-
12
- /**
13
- * @internal
14
- */
15
- export const application_v30_alias = <BlockNever extends boolean>(props: {
16
- blockNever: BlockNever;
17
- components: OpenApiV3.IComponents;
18
- alias: MetadataAlias;
19
- nullable: boolean;
20
- }): OpenApiV3.IJsonSchema.IReference => {
21
- if (props.alias.value.size() === 1 && props.alias.value.objects.length === 1)
22
- return application_v30_object({
23
- object: props.alias.value.objects[0]!,
24
- components: props.components,
25
- nullable: props.nullable,
26
- }) as OpenApiV3.IJsonSchema.IReference;
27
-
28
- const key: string = `${props.alias.name}${props.nullable ? ".Nullable" : ""}`;
29
- const $ref: string = `#/components/schemas/${key}`;
30
-
31
- if (props.components.schemas?.[key] === undefined) {
32
- // TEMPORARY ASSIGNMENT
33
- props.components.schemas ??= {};
34
- props.components.schemas[key] = {};
35
-
36
- // GENERATE SCHEMA
37
- const schema: OpenApiV3.IJsonSchema | null = application_v30_schema({
38
- blockNever: props.blockNever,
39
- components: props.components,
40
- attribute: {
41
- deprecated:
42
- props.alias.jsDocTags.some((tag) => tag.name === "deprecated") ||
43
- undefined,
44
- title: (() => {
45
- const info: IJsDocTagInfo | undefined = props.alias.jsDocTags.find(
46
- (tag) => tag.name === "title",
47
- );
48
- return info?.text?.length
49
- ? CommentFactory.merge(info.text)
50
- : undefined;
51
- })(),
52
- description: application_description(props.alias),
53
- },
54
- metadata: props.alias.value,
55
- });
56
- if (schema !== null) Object.assign(props.components.schemas[key]!, schema);
57
- }
58
- return { $ref };
59
- };
1
+ import { OpenApiV3 } from "@samchon/openapi";
2
+
3
+ import { CommentFactory } from "../../factories/CommentFactory";
4
+
5
+ import { IJsDocTagInfo } from "../../schemas/metadata/IJsDocTagInfo";
6
+ import { MetadataAlias } from "../../schemas/metadata/MetadataAlias";
7
+
8
+ import { application_description } from "./application_description";
9
+ import { application_v30_object } from "./application_v30_object";
10
+ import { application_v30_schema } from "./application_v30_schema";
11
+
12
+ /**
13
+ * @internal
14
+ */
15
+ export const application_v30_alias = <BlockNever extends boolean>(props: {
16
+ blockNever: BlockNever;
17
+ components: OpenApiV3.IComponents;
18
+ alias: MetadataAlias;
19
+ nullable: boolean;
20
+ }): OpenApiV3.IJsonSchema.IReference => {
21
+ if (props.alias.value.size() === 1 && props.alias.value.objects.length === 1)
22
+ return application_v30_object({
23
+ object: props.alias.value.objects[0]!.type,
24
+ components: props.components,
25
+ nullable: props.nullable,
26
+ }) as OpenApiV3.IJsonSchema.IReference;
27
+
28
+ const key: string = `${props.alias.name}${props.nullable ? ".Nullable" : ""}`;
29
+ const $ref: string = `#/components/schemas/${key}`;
30
+
31
+ if (props.components.schemas?.[key] === undefined) {
32
+ // TEMPORARY ASSIGNMENT
33
+ props.components.schemas ??= {};
34
+ props.components.schemas[key] = {};
35
+
36
+ // GENERATE SCHEMA
37
+ const schema: OpenApiV3.IJsonSchema | null = application_v30_schema({
38
+ blockNever: props.blockNever,
39
+ components: props.components,
40
+ attribute: {
41
+ deprecated:
42
+ props.alias.jsDocTags.some((tag) => tag.name === "deprecated") ||
43
+ undefined,
44
+ title: (() => {
45
+ const info: IJsDocTagInfo | undefined = props.alias.jsDocTags.find(
46
+ (tag) => tag.name === "title",
47
+ );
48
+ return info?.text?.length
49
+ ? CommentFactory.merge(info.text)
50
+ : undefined;
51
+ })(),
52
+ description: application_description(props.alias),
53
+ },
54
+ metadata: props.alias.value,
55
+ });
56
+ if (schema !== null) Object.assign(props.components.schemas[key]!, schema);
57
+ }
58
+ return { $ref };
59
+ };
@@ -1,29 +1,29 @@
1
- import { OpenApiV3 } from "@samchon/openapi";
2
-
3
- /**
4
- * @internal
5
- */
6
- export const application_v30_native = (props: {
7
- components: OpenApiV3.IComponents;
8
- name: string;
9
- 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" : ""}`;
18
- if (props.components.schemas?.[key] === undefined) {
19
- props.components.schemas ??= {};
20
- props.components.schemas[key] ??= {
21
- type: "object",
22
- properties: {},
23
- nullable: props.nullable,
24
- };
25
- }
26
- return {
27
- $ref: `#/components/schemas/${key}`,
28
- };
29
- };
1
+ import { OpenApiV3 } from "@samchon/openapi";
2
+
3
+ /**
4
+ * @internal
5
+ */
6
+ export const application_v30_native = (props: {
7
+ components: OpenApiV3.IComponents;
8
+ name: string;
9
+ 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" : ""}`;
18
+ if (props.components.schemas?.[key] === undefined) {
19
+ props.components.schemas ??= {};
20
+ props.components.schemas[key] ??= {
21
+ type: "object",
22
+ properties: {},
23
+ nullable: props.nullable,
24
+ };
25
+ }
26
+ return {
27
+ $ref: `#/components/schemas/${key}`,
28
+ };
29
+ };