typia 9.7.1 → 10.0.0-dev.20251107

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 (424) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +153 -153
  3. package/lib/AssertionGuard.d.mts +27 -25
  4. package/lib/AssertionGuard.d.ts +27 -25
  5. package/lib/CamelCase.d.mts +1 -1
  6. package/lib/CamelCase.d.ts +1 -1
  7. package/lib/IRandomGenerator.d.mts +44 -42
  8. package/lib/IRandomGenerator.d.ts +44 -42
  9. package/lib/IReadableURLSearchParams.d.mts +2 -2
  10. package/lib/IReadableURLSearchParams.d.ts +2 -2
  11. package/lib/PascalCase.d.mts +1 -1
  12. package/lib/PascalCase.d.ts +1 -1
  13. package/lib/Primitive.d.mts +20 -22
  14. package/lib/Primitive.d.ts +20 -22
  15. package/lib/Resolved.d.mts +16 -18
  16. package/lib/Resolved.d.ts +16 -18
  17. package/lib/SnakeCase.d.mts +3 -2
  18. package/lib/SnakeCase.d.ts +3 -2
  19. package/lib/TypeGuardError.d.mts +88 -61
  20. package/lib/TypeGuardError.d.ts +88 -61
  21. package/lib/TypeGuardError.js +40 -29
  22. package/lib/TypeGuardError.js.map +1 -1
  23. package/lib/TypeGuardError.mjs +70 -48
  24. package/lib/factories/MetadataCollection.js +4 -12
  25. package/lib/factories/MetadataCollection.js.map +1 -1
  26. package/lib/factories/MetadataCollection.mjs +4 -12
  27. package/lib/factories/MetadataCommentTagFactory.js +5 -15
  28. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  29. package/lib/factories/MetadataCommentTagFactory.mjs +5 -15
  30. package/lib/factories/MetadataFactory.js +1 -3
  31. package/lib/factories/MetadataFactory.js.map +1 -1
  32. package/lib/factories/MetadataFactory.mjs +1 -3
  33. package/lib/factories/ProtobufFactory.js +2 -4
  34. package/lib/factories/ProtobufFactory.js.map +1 -1
  35. package/lib/factories/ProtobufFactory.mjs +2 -4
  36. package/lib/functional.d.mts +196 -195
  37. package/lib/functional.d.ts +196 -195
  38. package/lib/functional.js +18 -54
  39. package/lib/functional.js.map +1 -1
  40. package/lib/functional.mjs +18 -54
  41. package/lib/http.d.mts +303 -319
  42. package/lib/http.d.ts +303 -319
  43. package/lib/http.js +26 -78
  44. package/lib/http.js.map +1 -1
  45. package/lib/http.mjs +26 -78
  46. package/lib/internal/_ProtobufReader.d.mts +3 -9
  47. package/lib/internal/_ProtobufReader.d.ts +3 -9
  48. package/lib/internal/_ProtobufReader.js.map +1 -1
  49. package/lib/internal/_ProtobufReader.mjs +3 -9
  50. package/lib/internal/_ProtobufSizer.d.mts +4 -12
  51. package/lib/internal/_ProtobufSizer.d.ts +4 -12
  52. package/lib/internal/_ProtobufSizer.js.map +1 -1
  53. package/lib/internal/_ProtobufSizer.mjs +4 -12
  54. package/lib/internal/_ProtobufWriter.d.mts +5 -15
  55. package/lib/internal/_ProtobufWriter.d.ts +5 -15
  56. package/lib/internal/_ProtobufWriter.js.map +1 -1
  57. package/lib/internal/_ProtobufWriter.mjs +5 -15
  58. package/lib/internal/_jsonStringifyString.d.mts +4 -4
  59. package/lib/internal/_jsonStringifyString.d.ts +4 -4
  60. package/lib/internal/_jsonStringifyString.js +4 -4
  61. package/lib/internal/_jsonStringifyString.mjs +4 -4
  62. package/lib/json.d.mts +174 -195
  63. package/lib/json.d.ts +174 -195
  64. package/lib/json.js +16 -48
  65. package/lib/json.js.map +1 -1
  66. package/lib/json.mjs +16 -48
  67. package/lib/llm.d.mts +275 -192
  68. package/lib/llm.d.ts +275 -192
  69. package/lib/llm.js +4 -12
  70. package/lib/llm.js.map +1 -1
  71. package/lib/llm.mjs +4 -12
  72. package/lib/misc.d.mts +149 -172
  73. package/lib/misc.d.ts +149 -172
  74. package/lib/misc.js +17 -51
  75. package/lib/misc.js.map +1 -1
  76. package/lib/misc.mjs +17 -51
  77. package/lib/module.d.mts +263 -275
  78. package/lib/module.d.ts +263 -275
  79. package/lib/module.js +18 -54
  80. package/lib/module.js.map +1 -1
  81. package/lib/module.mjs +18 -54
  82. package/lib/notations.d.mts +153 -174
  83. package/lib/notations.d.ts +153 -174
  84. package/lib/notations.js +24 -72
  85. package/lib/notations.js.map +1 -1
  86. package/lib/notations.mjs +24 -72
  87. package/lib/programmers/FeatureProgrammer.d.mts +19 -41
  88. package/lib/programmers/FeatureProgrammer.d.ts +19 -41
  89. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  90. package/lib/programmers/ImportProgrammer.js +3 -9
  91. package/lib/programmers/ImportProgrammer.js.map +1 -1
  92. package/lib/programmers/ImportProgrammer.mjs +3 -9
  93. package/lib/programmers/RandomProgrammer.js +6 -0
  94. package/lib/programmers/RandomProgrammer.js.map +1 -1
  95. package/lib/programmers/RandomProgrammer.mjs +6 -0
  96. package/lib/programmers/helpers/ProtobufWire.d.mts +13 -13
  97. package/lib/programmers/helpers/ProtobufWire.d.ts +13 -13
  98. package/lib/programmers/internal/check_array_length.js +2 -6
  99. package/lib/programmers/internal/check_array_length.js.map +1 -1
  100. package/lib/programmers/internal/check_array_length.mjs +2 -6
  101. package/lib/programmers/internal/check_bigint.js +2 -6
  102. package/lib/programmers/internal/check_bigint.js.map +1 -1
  103. package/lib/programmers/internal/check_bigint.mjs +2 -6
  104. package/lib/programmers/internal/check_dynamic_key.js +2 -6
  105. package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
  106. package/lib/programmers/internal/check_dynamic_key.mjs +2 -6
  107. package/lib/programmers/internal/check_dynamic_properties.js +3 -9
  108. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  109. package/lib/programmers/internal/check_dynamic_properties.mjs +3 -9
  110. package/lib/programmers/internal/check_everything.js +1 -3
  111. package/lib/programmers/internal/check_everything.js.map +1 -1
  112. package/lib/programmers/internal/check_everything.mjs +1 -3
  113. package/lib/programmers/internal/check_native.js +2 -6
  114. package/lib/programmers/internal/check_native.js.map +1 -1
  115. package/lib/programmers/internal/check_native.mjs +2 -6
  116. package/lib/programmers/internal/check_number.js +2 -6
  117. package/lib/programmers/internal/check_number.js.map +1 -1
  118. package/lib/programmers/internal/check_number.mjs +2 -6
  119. package/lib/programmers/internal/check_object.js +2 -6
  120. package/lib/programmers/internal/check_object.js.map +1 -1
  121. package/lib/programmers/internal/check_object.mjs +2 -6
  122. package/lib/programmers/internal/check_string.js +2 -6
  123. package/lib/programmers/internal/check_string.js.map +1 -1
  124. package/lib/programmers/internal/check_string.mjs +2 -6
  125. package/lib/programmers/internal/check_template.js +1 -3
  126. package/lib/programmers/internal/check_template.js.map +1 -1
  127. package/lib/programmers/internal/check_template.mjs +1 -3
  128. package/lib/programmers/internal/check_union_array_like.js +1 -3
  129. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  130. package/lib/programmers/internal/check_union_array_like.mjs +1 -3
  131. package/lib/programmers/internal/decode_union_object.js +2 -6
  132. package/lib/programmers/internal/decode_union_object.js.map +1 -1
  133. package/lib/programmers/internal/decode_union_object.mjs +2 -6
  134. package/lib/programmers/internal/feature_object_entries.js +1 -3
  135. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  136. package/lib/programmers/internal/feature_object_entries.mjs +1 -3
  137. package/lib/programmers/internal/json_schema_escaped.js +2 -6
  138. package/lib/programmers/internal/json_schema_escaped.js.map +1 -1
  139. package/lib/programmers/internal/json_schema_escaped.mjs +2 -6
  140. package/lib/programmers/internal/json_schema_object.js +3 -9
  141. package/lib/programmers/internal/json_schema_object.js.map +1 -1
  142. package/lib/programmers/internal/json_schema_object.mjs +3 -9
  143. package/lib/programmers/internal/json_schema_station.d.mts +2 -2
  144. package/lib/programmers/internal/json_schema_station.d.ts +2 -2
  145. package/lib/programmers/internal/metadata_to_pattern.js +1 -3
  146. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  147. package/lib/programmers/internal/metadata_to_pattern.mjs +1 -3
  148. package/lib/programmers/internal/postfix_of_tuple.js +1 -3
  149. package/lib/programmers/internal/postfix_of_tuple.js.map +1 -1
  150. package/lib/programmers/internal/postfix_of_tuple.mjs +1 -3
  151. package/lib/programmers/internal/prune_object_properties.js +1 -3
  152. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  153. package/lib/programmers/internal/prune_object_properties.mjs +1 -3
  154. package/lib/programmers/internal/stringify_dynamic_properties.js +2 -6
  155. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  156. package/lib/programmers/internal/stringify_dynamic_properties.mjs +2 -6
  157. package/lib/programmers/internal/stringify_native.js +1 -3
  158. package/lib/programmers/internal/stringify_native.js.map +1 -1
  159. package/lib/programmers/internal/stringify_native.mjs +1 -3
  160. package/lib/programmers/internal/stringify_regular_properties.js +2 -6
  161. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
  162. package/lib/programmers/internal/stringify_regular_properties.mjs +2 -6
  163. package/lib/programmers/internal/template_to_pattern.js +1 -3
  164. package/lib/programmers/internal/template_to_pattern.js.map +1 -1
  165. package/lib/programmers/internal/template_to_pattern.mjs +1 -3
  166. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +1 -3
  167. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  168. package/lib/programmers/internal/wrap_metadata_rest_tuple.mjs +1 -3
  169. package/lib/programmers/json/JsonStringifyProgrammer.js +2 -2
  170. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  171. package/lib/programmers/json/JsonStringifyProgrammer.mjs +2 -2
  172. package/lib/programmers/llm/LlmApplicationProgrammer.js +5 -1
  173. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
  174. package/lib/programmers/llm/LlmApplicationProgrammer.mjs +5 -1
  175. package/lib/programmers/llm/LlmSchemaProgrammer.js +1 -4
  176. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  177. package/lib/programmers/llm/LlmSchemaProgrammer.mjs +1 -35
  178. package/lib/protobuf.d.mts +290 -297
  179. package/lib/protobuf.d.ts +290 -297
  180. package/lib/protobuf.js +17 -51
  181. package/lib/protobuf.js.map +1 -1
  182. package/lib/protobuf.mjs +17 -51
  183. package/lib/reflect.d.mts +2 -4
  184. package/lib/reflect.d.ts +2 -4
  185. package/lib/reflect.js +1 -3
  186. package/lib/reflect.js.map +1 -1
  187. package/lib/reflect.mjs +1 -3
  188. package/lib/schemas/json/IJsonApplication.d.mts +4 -4
  189. package/lib/schemas/json/IJsonApplication.d.ts +4 -4
  190. package/lib/schemas/json/IJsonSchemaCollection.d.mts +73 -56
  191. package/lib/schemas/json/IJsonSchemaCollection.d.ts +73 -56
  192. package/lib/schemas/json/IJsonSchemaUnit.d.mts +83 -70
  193. package/lib/schemas/json/IJsonSchemaUnit.d.ts +83 -70
  194. package/lib/schemas/metadata/Metadata.d.mts +1 -3
  195. package/lib/schemas/metadata/Metadata.d.ts +1 -3
  196. package/lib/schemas/metadata/Metadata.js +9 -27
  197. package/lib/schemas/metadata/Metadata.js.map +1 -1
  198. package/lib/schemas/metadata/Metadata.mjs +9 -27
  199. package/lib/schemas/metadata/MetadataAliasType.d.mts +1 -3
  200. package/lib/schemas/metadata/MetadataAliasType.d.ts +1 -3
  201. package/lib/schemas/metadata/MetadataAliasType.js +3 -9
  202. package/lib/schemas/metadata/MetadataAliasType.js.map +1 -1
  203. package/lib/schemas/metadata/MetadataAliasType.mjs +3 -9
  204. package/lib/schemas/metadata/MetadataApplication.d.mts +1 -3
  205. package/lib/schemas/metadata/MetadataApplication.d.ts +1 -3
  206. package/lib/schemas/metadata/MetadataApplication.js +2 -6
  207. package/lib/schemas/metadata/MetadataApplication.js.map +1 -1
  208. package/lib/schemas/metadata/MetadataApplication.mjs +2 -6
  209. package/lib/schemas/metadata/MetadataArray.d.mts +1 -3
  210. package/lib/schemas/metadata/MetadataArray.d.ts +1 -3
  211. package/lib/schemas/metadata/MetadataArray.js +1 -3
  212. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  213. package/lib/schemas/metadata/MetadataArray.mjs +1 -3
  214. package/lib/schemas/metadata/MetadataArrayType.d.mts +1 -3
  215. package/lib/schemas/metadata/MetadataArrayType.d.ts +1 -3
  216. package/lib/schemas/metadata/MetadataArrayType.js +3 -9
  217. package/lib/schemas/metadata/MetadataArrayType.js.map +1 -1
  218. package/lib/schemas/metadata/MetadataArrayType.mjs +3 -9
  219. package/lib/schemas/metadata/MetadataAtomic.js +1 -3
  220. package/lib/schemas/metadata/MetadataAtomic.js.map +1 -1
  221. package/lib/schemas/metadata/MetadataAtomic.mjs +1 -3
  222. package/lib/schemas/metadata/MetadataEscaped.d.mts +1 -3
  223. package/lib/schemas/metadata/MetadataEscaped.d.ts +1 -3
  224. package/lib/schemas/metadata/MetadataEscaped.js +3 -9
  225. package/lib/schemas/metadata/MetadataEscaped.js.map +1 -1
  226. package/lib/schemas/metadata/MetadataEscaped.mjs +3 -9
  227. package/lib/schemas/metadata/MetadataFunction.d.mts +1 -3
  228. package/lib/schemas/metadata/MetadataFunction.d.ts +1 -3
  229. package/lib/schemas/metadata/MetadataFunction.js +2 -6
  230. package/lib/schemas/metadata/MetadataFunction.js.map +1 -1
  231. package/lib/schemas/metadata/MetadataFunction.mjs +2 -6
  232. package/lib/schemas/metadata/MetadataObject.d.mts +1 -3
  233. package/lib/schemas/metadata/MetadataObject.d.ts +1 -3
  234. package/lib/schemas/metadata/MetadataObject.js +1 -3
  235. package/lib/schemas/metadata/MetadataObject.js.map +1 -1
  236. package/lib/schemas/metadata/MetadataObject.mjs +1 -3
  237. package/lib/schemas/metadata/MetadataObjectType.d.mts +1 -3
  238. package/lib/schemas/metadata/MetadataObjectType.d.ts +1 -3
  239. package/lib/schemas/metadata/MetadataObjectType.js +5 -15
  240. package/lib/schemas/metadata/MetadataObjectType.js.map +1 -1
  241. package/lib/schemas/metadata/MetadataObjectType.mjs +6 -18
  242. package/lib/schemas/metadata/MetadataParameter.js +1 -3
  243. package/lib/schemas/metadata/MetadataParameter.js.map +1 -1
  244. package/lib/schemas/metadata/MetadataParameter.mjs +1 -3
  245. package/lib/schemas/metadata/MetadataProperty.d.mts +1 -3
  246. package/lib/schemas/metadata/MetadataProperty.d.ts +1 -3
  247. package/lib/schemas/metadata/MetadataProperty.js +3 -9
  248. package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
  249. package/lib/schemas/metadata/MetadataProperty.mjs +3 -9
  250. package/lib/schemas/metadata/MetadataTemplate.js +1 -3
  251. package/lib/schemas/metadata/MetadataTemplate.js.map +1 -1
  252. package/lib/schemas/metadata/MetadataTemplate.mjs +1 -3
  253. package/lib/schemas/metadata/MetadataTuple.d.mts +1 -3
  254. package/lib/schemas/metadata/MetadataTuple.d.ts +1 -3
  255. package/lib/schemas/metadata/MetadataTuple.js +2 -6
  256. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  257. package/lib/schemas/metadata/MetadataTuple.mjs +2 -6
  258. package/lib/schemas/metadata/MetadataTupleType.js +2 -6
  259. package/lib/schemas/metadata/MetadataTupleType.js.map +1 -1
  260. package/lib/schemas/metadata/MetadataTupleType.mjs +3 -9
  261. package/lib/tags/Constant.d.mts +16 -16
  262. package/lib/tags/Constant.d.ts +16 -16
  263. package/lib/tags/ContentMediaType.d.mts +7 -7
  264. package/lib/tags/ContentMediaType.d.ts +7 -7
  265. package/lib/tags/Default.d.mts +19 -19
  266. package/lib/tags/Default.d.ts +19 -19
  267. package/lib/tags/Example.d.mts +18 -18
  268. package/lib/tags/Example.d.ts +18 -18
  269. package/lib/tags/Examples.d.mts +23 -23
  270. package/lib/tags/Examples.d.ts +23 -23
  271. package/lib/tags/ExclusiveMaximum.d.mts +8 -5
  272. package/lib/tags/ExclusiveMaximum.d.ts +8 -5
  273. package/lib/tags/ExclusiveMinimum.d.mts +8 -5
  274. package/lib/tags/ExclusiveMinimum.d.ts +8 -5
  275. package/lib/tags/Format.d.mts +12 -8
  276. package/lib/tags/Format.d.ts +12 -8
  277. package/lib/tags/JsonSchemaPlugin.d.mts +20 -18
  278. package/lib/tags/JsonSchemaPlugin.d.ts +20 -18
  279. package/lib/tags/MaxItems.d.mts +9 -9
  280. package/lib/tags/MaxItems.d.ts +9 -9
  281. package/lib/tags/MaxLength.d.mts +6 -5
  282. package/lib/tags/MaxLength.d.ts +6 -5
  283. package/lib/tags/Maximum.d.mts +9 -7
  284. package/lib/tags/Maximum.d.ts +9 -7
  285. package/lib/tags/MinItems.d.mts +9 -9
  286. package/lib/tags/MinItems.d.ts +9 -9
  287. package/lib/tags/MinLength.d.mts +6 -5
  288. package/lib/tags/MinLength.d.ts +6 -5
  289. package/lib/tags/Minimum.d.mts +9 -7
  290. package/lib/tags/Minimum.d.ts +9 -7
  291. package/lib/tags/MultipleOf.d.mts +10 -7
  292. package/lib/tags/MultipleOf.d.ts +10 -7
  293. package/lib/tags/Pattern.d.mts +7 -4
  294. package/lib/tags/Pattern.d.ts +7 -4
  295. package/lib/tags/Sequence.d.mts +19 -17
  296. package/lib/tags/Sequence.d.ts +19 -17
  297. package/lib/tags/TagBase.d.mts +21 -28
  298. package/lib/tags/TagBase.d.ts +21 -28
  299. package/lib/tags/Type.d.mts +12 -11
  300. package/lib/tags/Type.d.ts +12 -11
  301. package/lib/tags/UniqueItems.d.mts +10 -9
  302. package/lib/tags/UniqueItems.d.ts +10 -9
  303. package/lib/tags/internal/FormatCheatSheet.d.mts +1 -3
  304. package/lib/tags/internal/FormatCheatSheet.d.ts +1 -3
  305. package/lib/tags/internal/FormatCheatSheet.js +1 -3
  306. package/lib/tags/internal/FormatCheatSheet.js.map +1 -1
  307. package/lib/tags/internal/FormatCheatSheet.mjs +1 -3
  308. package/lib/transformers/ITransformOptions.d.mts +27 -19
  309. package/lib/transformers/ITransformOptions.d.ts +27 -19
  310. package/lib/transformers/ImportTransformer.js +5 -10
  311. package/lib/transformers/ImportTransformer.js.map +1 -1
  312. package/lib/transformers/ImportTransformer.mjs +5 -10
  313. package/lib/transformers/NoTransformConfigurationError.js +1 -3
  314. package/lib/transformers/NoTransformConfigurationError.js.map +1 -1
  315. package/lib/transformers/NoTransformConfigurationError.mjs +1 -3
  316. package/lib/transformers/features/llm/LlmApplicationTransformer.js +1 -3
  317. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  318. package/lib/transformers/features/llm/LlmApplicationTransformer.mjs +1 -3
  319. package/lib/typings/Equal.d.mts +6 -6
  320. package/lib/typings/Equal.d.ts +6 -6
  321. package/package.json +121 -120
  322. package/src/AssertionGuard.ts +41 -39
  323. package/src/CamelCase.ts +75 -75
  324. package/src/IRandomGenerator.ts +337 -335
  325. package/src/IReadableURLSearchParams.ts +9 -9
  326. package/src/PascalCase.ts +71 -71
  327. package/src/Primitive.ts +90 -92
  328. package/src/Resolved.ts +72 -74
  329. package/src/SnakeCase.ts +127 -126
  330. package/src/TypeGuardError.ts +216 -179
  331. package/src/factories/MetadataCollection.ts +270 -278
  332. package/src/factories/MetadataCommentTagFactory.ts +632 -648
  333. package/src/factories/MetadataFactory.ts +402 -404
  334. package/src/factories/ProtobufFactory.ts +873 -875
  335. package/src/functional.ts +705 -740
  336. package/src/http.ts +972 -1040
  337. package/src/internal/_ProtobufReader.ts +188 -194
  338. package/src/internal/_ProtobufSizer.ts +137 -145
  339. package/src/internal/_ProtobufWriter.ts +135 -145
  340. package/src/internal/_jsonStringifyString.ts +42 -42
  341. package/src/json.ts +643 -696
  342. package/src/llm.ts +615 -540
  343. package/src/misc.ts +594 -651
  344. package/src/module.ts +889 -937
  345. package/src/notations.ts +751 -820
  346. package/src/programmers/FeatureProgrammer.ts +605 -627
  347. package/src/programmers/ImportProgrammer.ts +179 -185
  348. package/src/programmers/RandomProgrammer.ts +1195 -1190
  349. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  350. package/src/programmers/internal/check_array_length.ts +43 -47
  351. package/src/programmers/internal/check_bigint.ts +46 -50
  352. package/src/programmers/internal/check_dynamic_key.ts +197 -201
  353. package/src/programmers/internal/check_dynamic_properties.ts +231 -237
  354. package/src/programmers/internal/check_everything.ts +21 -23
  355. package/src/programmers/internal/check_native.ts +23 -27
  356. package/src/programmers/internal/check_number.ts +108 -112
  357. package/src/programmers/internal/check_object.ts +72 -78
  358. package/src/programmers/internal/check_string.ts +46 -50
  359. package/src/programmers/internal/check_template.ts +46 -48
  360. package/src/programmers/internal/check_union_array_like.ts +331 -335
  361. package/src/programmers/internal/decode_union_object.ts +110 -116
  362. package/src/programmers/internal/feature_object_entries.ts +59 -61
  363. package/src/programmers/internal/json_schema_escaped.ts +78 -82
  364. package/src/programmers/internal/json_schema_object.ts +150 -158
  365. package/src/programmers/internal/json_schema_station.ts +2 -2
  366. package/src/programmers/internal/metadata_to_pattern.ts +40 -42
  367. package/src/programmers/internal/postfix_of_tuple.ts +3 -5
  368. package/src/programmers/internal/prune_object_properties.ts +69 -71
  369. package/src/programmers/internal/stringify_dynamic_properties.ts +158 -162
  370. package/src/programmers/internal/stringify_native.ts +5 -7
  371. package/src/programmers/internal/stringify_regular_properties.ts +77 -81
  372. package/src/programmers/internal/template_to_pattern.ts +21 -23
  373. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +21 -23
  374. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  375. package/src/programmers/llm/LlmApplicationProgrammer.ts +10 -1
  376. package/src/programmers/llm/LlmSchemaProgrammer.ts +2 -7
  377. package/src/protobuf.ts +820 -861
  378. package/src/reflect.ts +46 -50
  379. package/src/schemas/json/IJsonApplication.ts +77 -77
  380. package/src/schemas/json/IJsonSchemaCollection.ts +212 -195
  381. package/src/schemas/json/IJsonSchemaUnit.ts +263 -250
  382. package/src/schemas/metadata/IMetadataTypeTag.ts +14 -16
  383. package/src/schemas/metadata/Metadata.ts +669 -687
  384. package/src/schemas/metadata/MetadataAliasType.ts +57 -63
  385. package/src/schemas/metadata/MetadataApplication.ts +40 -44
  386. package/src/schemas/metadata/MetadataArray.ts +47 -49
  387. package/src/schemas/metadata/MetadataArrayType.ts +51 -57
  388. package/src/schemas/metadata/MetadataAtomic.ts +85 -87
  389. package/src/schemas/metadata/MetadataEscaped.ts +45 -51
  390. package/src/schemas/metadata/MetadataFunction.ts +45 -49
  391. package/src/schemas/metadata/MetadataObject.ts +46 -48
  392. package/src/schemas/metadata/MetadataObjectType.ts +137 -149
  393. package/src/schemas/metadata/MetadataParameter.ts +52 -54
  394. package/src/schemas/metadata/MetadataProperty.ts +53 -59
  395. package/src/schemas/metadata/MetadataTemplate.ts +78 -80
  396. package/src/schemas/metadata/MetadataTuple.ts +28 -32
  397. package/src/schemas/metadata/MetadataTupleType.ts +61 -67
  398. package/src/tags/Constant.ts +47 -47
  399. package/src/tags/ContentMediaType.ts +27 -27
  400. package/src/tags/Default.ts +52 -52
  401. package/src/tags/Example.ts +56 -56
  402. package/src/tags/Examples.ts +56 -56
  403. package/src/tags/ExclusiveMaximum.ts +44 -41
  404. package/src/tags/ExclusiveMinimum.ts +44 -41
  405. package/src/tags/Format.ts +78 -74
  406. package/src/tags/JsonSchemaPlugin.ts +36 -34
  407. package/src/tags/MaxItems.ts +31 -31
  408. package/src/tags/MaxLength.ts +25 -24
  409. package/src/tags/Maximum.ts +39 -37
  410. package/src/tags/MinItems.ts +31 -31
  411. package/src/tags/MinLength.ts +25 -24
  412. package/src/tags/Minimum.ts +39 -37
  413. package/src/tags/MultipleOf.ts +42 -39
  414. package/src/tags/Pattern.ts +49 -46
  415. package/src/tags/Sequence.ts +37 -35
  416. package/src/tags/TagBase.ts +102 -109
  417. package/src/tags/Type.ts +64 -63
  418. package/src/tags/UniqueItems.ts +34 -33
  419. package/src/tags/internal/FormatCheatSheet.ts +71 -73
  420. package/src/transformers/ITransformOptions.ts +70 -62
  421. package/src/transformers/ImportTransformer.ts +253 -258
  422. package/src/transformers/NoTransformConfigurationError.ts +16 -18
  423. package/src/transformers/features/llm/LlmApplicationTransformer.ts +224 -226
  424. package/src/typings/Equal.ts +18 -18
@@ -1,258 +1,253 @@
1
- import path from "path";
2
- import ts from "typescript";
3
-
4
- export namespace ImportTransformer {
5
- export const transform =
6
- (props: { from: string; to: string }) =>
7
- (context: ts.TransformationContext) =>
8
- (file: ts.SourceFile) =>
9
- transform_file({
10
- top: props.from,
11
- to: props.to,
12
- context,
13
- file,
14
- });
15
-
16
- const transform_file = (props: {
17
- top: string;
18
- to: string;
19
- context: ts.TransformationContext;
20
- file: ts.SourceFile;
21
- }): ts.SourceFile => {
22
- if (props.file.isDeclarationFile) return props.file;
23
-
24
- const from: string = get_directory_path(
25
- path.resolve(props.file.getSourceFile().fileName),
26
- );
27
- const to: string = from.replace(props.top, props.to);
28
-
29
- // First pass: transform relative imports
30
- let transformedFile = ts.visitEachChild(
31
- props.file,
32
- (node) =>
33
- transform_node({
34
- top: props.top,
35
- from,
36
- to,
37
- node,
38
- }),
39
- props.context,
40
- );
41
-
42
- // Second pass: remove unused typia imports
43
- transformedFile = removeUnusedTypiaImports(transformedFile);
44
-
45
- return transformedFile;
46
- };
47
-
48
- const transform_node = (props: {
49
- top: string;
50
- from: string;
51
- to: string;
52
- node: ts.Node;
53
- }) => {
54
- if (
55
- !ts.isImportDeclaration(props.node) ||
56
- !ts.isStringLiteral(props.node.moduleSpecifier)
57
- )
58
- return props.node;
59
-
60
- const text: string = props.node.moduleSpecifier.text;
61
- if (text[0] !== ".") return props.node;
62
-
63
- const location: string = path.resolve(props.from, text);
64
- if (location.indexOf(props.top) === 0) return props.node;
65
-
66
- const replaced: string = (() => {
67
- const simple: string = path
68
- .relative(props.to, location)
69
- .split(path.sep)
70
- .join("/");
71
- return simple[0] === "." ? simple : `./${simple}`;
72
- })();
73
-
74
- return ts.factory.createImportDeclaration(
75
- undefined,
76
- props.node.importClause,
77
- ts.factory.createStringLiteral(replaced),
78
- props.node.assertClause,
79
- );
80
- };
81
- }
82
-
83
- const get_directory_path = (file: string): string => {
84
- const split: string[] = path.resolve(file).split(path.sep);
85
- split.pop();
86
- return path.resolve(split.join(path.sep));
87
- };
88
-
89
- /**
90
- * Remove unused typia imports that are only used in transformable calls
91
- */
92
- const removeUnusedTypiaImports = (file: ts.SourceFile): ts.SourceFile => {
93
- // Find typia imports and collect all identifiers
94
- interface ImportMetadata {
95
- declaration: ts.ImportDeclaration;
96
- default: boolean;
97
- }
98
- const imports: Map<string, ImportMetadata> = new Map();
99
- for (const stmt of file.statements) {
100
- if (
101
- ts.isImportDeclaration(stmt) === false ||
102
- ts.isStringLiteral(stmt.moduleSpecifier) === false ||
103
- stmt.moduleSpecifier.text !== "typia" ||
104
- stmt.importClause === undefined
105
- )
106
- continue;
107
-
108
- // Track default import (import typia from 'typia')
109
- if (stmt.importClause.name)
110
- imports.set(stmt.importClause.name.text, {
111
- declaration: stmt,
112
- default: true,
113
- });
114
-
115
- // Track named imports (import { tags } from 'typia') - keep these
116
- if (
117
- stmt.importClause.namedBindings &&
118
- ts.isNamedImports(stmt.importClause.namedBindings)
119
- )
120
- for (const element of stmt.importClause.namedBindings.elements)
121
- imports.set(element.name.text, {
122
- declaration: stmt,
123
- default: false,
124
- });
125
- }
126
- if (imports.size === 0) return file; // No typia imports to check
127
-
128
- // Find usage of typia identifiers that are NOT transformable calls
129
- const nonTransformableUsage = new Set<string>();
130
- const checkUsage = (node: ts.Node) => {
131
- if (ts.isIdentifier(node) && imports.has(node.text)) {
132
- const identifier: string = node.text;
133
- // Check if this identifier is being used as part of a property access
134
- if (
135
- node.parent &&
136
- ts.isPropertyAccessExpression(node.parent) &&
137
- node.parent.expression === node
138
- ) {
139
- // This is typia.something - check if it's a transformable call pattern
140
- if (!isLikelyTransformableCall(node.parent))
141
- nonTransformableUsage.add(identifier);
142
- } else
143
- // Direct usage of the typia identifier (not as property access)
144
- // This is definitely non-transformable usage
145
- nonTransformableUsage.add(identifier);
146
- }
147
- ts.forEachChild(node, checkUsage);
148
- };
149
-
150
- // Check all statements except import declarations
151
- for (const stmt of file.statements)
152
- if (
153
- !ts.isImportDeclaration(stmt) ||
154
- !ts.isStringLiteral(stmt.moduleSpecifier) ||
155
- stmt.moduleSpecifier.text !== "typia"
156
- )
157
- checkUsage(stmt);
158
-
159
- // Update import statements
160
- const newStatements: ts.Statement[] = file.statements
161
- .map((stmt) => {
162
- if (
163
- ts.isImportDeclaration(stmt) &&
164
- ts.isStringLiteral(stmt.moduleSpecifier) &&
165
- stmt.moduleSpecifier.text === "typia" &&
166
- stmt.importClause
167
- ) {
168
- const newImportClause = filterTypiaImportClause(
169
- stmt.importClause,
170
- nonTransformableUsage,
171
- );
172
- if (newImportClause)
173
- return ts.factory.createImportDeclaration(
174
- stmt.modifiers,
175
- newImportClause,
176
- stmt.moduleSpecifier,
177
- stmt.attributes,
178
- );
179
- return null; // Skip adding the import if all imports are unused
180
- }
181
- return stmt;
182
- })
183
- .filter((stmt) => stmt !== null);
184
- return ts.factory.updateSourceFile(
185
- file,
186
- newStatements,
187
- file.isDeclarationFile,
188
- file.referencedFiles,
189
- file.typeReferenceDirectives,
190
- file.hasNoDefaultLib,
191
- file.libReferenceDirectives,
192
- );
193
- };
194
-
195
- /**
196
- * Check if a property access expression looks like a transformable typia call
197
- * This uses heuristics to detect patterns like typia.xxx(), typia.namespace.xxx()
198
- */
199
- const isLikelyTransformableCall = (
200
- node: ts.PropertyAccessExpression,
201
- ): boolean => {
202
- // Check if this is eventually part of a call expression
203
- let current: ts.Node = node;
204
-
205
- // Walk up the chain to find if this leads to a call expression
206
- // Handle patterns like: typia.xxx(), typia.namespace.xxx()
207
- while (ts.isPropertyAccessExpression(current)) {
208
- current = current.parent;
209
- }
210
-
211
- // If the final result is a call expression, this is likely transformable
212
- if (
213
- ts.isCallExpression(current) &&
214
- (current.expression === node ||
215
- (ts.isPropertyAccessExpression(current.expression) &&
216
- isTypiaPropertyChain(current.expression)))
217
- ) {
218
- return true;
219
- }
220
-
221
- return false;
222
- };
223
-
224
- /**
225
- * Check if a property access expression is part of a typia.xxx.yyy chain
226
- */
227
- const isTypiaPropertyChain = (node: ts.PropertyAccessExpression): boolean => {
228
- let current: ts.Expression = node;
229
-
230
- while (ts.isPropertyAccessExpression(current)) {
231
- current = current.expression;
232
- }
233
-
234
- return ts.isIdentifier(current) && current.text === "typia";
235
- };
236
-
237
- /**
238
- * Filter import clause to remove unused default imports
239
- */
240
- const filterTypiaImportClause = (
241
- importClause: ts.ImportClause,
242
- usedImports: Set<string>,
243
- ): ts.ImportClause | undefined => {
244
- const hasDefaultImport =
245
- importClause.name && usedImports.has(importClause.name.text);
246
- const namedBindings = importClause.namedBindings; // Always keep named bindings like { tags }
247
-
248
- // Return undefined if no imports are used
249
- if (!hasDefaultImport && !namedBindings) {
250
- return undefined;
251
- }
252
-
253
- return ts.factory.createImportClause(
254
- importClause.isTypeOnly,
255
- hasDefaultImport ? importClause.name : undefined,
256
- namedBindings,
257
- );
258
- };
1
+ import path from "path";
2
+ import ts from "typescript";
3
+
4
+ export namespace ImportTransformer {
5
+ export const transform =
6
+ (props: { from: string; to: string }) =>
7
+ (context: ts.TransformationContext) =>
8
+ (file: ts.SourceFile) =>
9
+ transform_file({
10
+ top: props.from,
11
+ to: props.to,
12
+ context,
13
+ file,
14
+ });
15
+
16
+ const transform_file = (props: {
17
+ top: string;
18
+ to: string;
19
+ context: ts.TransformationContext;
20
+ file: ts.SourceFile;
21
+ }): ts.SourceFile => {
22
+ if (props.file.isDeclarationFile) return props.file;
23
+
24
+ const from: string = get_directory_path(
25
+ path.resolve(props.file.getSourceFile().fileName),
26
+ );
27
+ const to: string = from.replace(props.top, props.to);
28
+
29
+ // First pass: transform relative imports
30
+ let transformedFile = ts.visitEachChild(
31
+ props.file,
32
+ (node) =>
33
+ transform_node({
34
+ top: props.top,
35
+ from,
36
+ to,
37
+ node,
38
+ }),
39
+ props.context,
40
+ );
41
+
42
+ // Second pass: remove unused typia imports
43
+ transformedFile = removeUnusedTypiaImports(transformedFile);
44
+
45
+ return transformedFile;
46
+ };
47
+
48
+ const transform_node = (props: {
49
+ top: string;
50
+ from: string;
51
+ to: string;
52
+ node: ts.Node;
53
+ }) => {
54
+ if (
55
+ !ts.isImportDeclaration(props.node) ||
56
+ !ts.isStringLiteral(props.node.moduleSpecifier)
57
+ )
58
+ return props.node;
59
+
60
+ const text: string = props.node.moduleSpecifier.text;
61
+ if (text[0] !== ".") return props.node;
62
+
63
+ const location: string = path.resolve(props.from, text);
64
+ if (location.indexOf(props.top) === 0) return props.node;
65
+
66
+ const replaced: string = (() => {
67
+ const simple: string = path
68
+ .relative(props.to, location)
69
+ .split(path.sep)
70
+ .join("/");
71
+ return simple[0] === "." ? simple : `./${simple}`;
72
+ })();
73
+
74
+ return ts.factory.createImportDeclaration(
75
+ undefined,
76
+ props.node.importClause,
77
+ ts.factory.createStringLiteral(replaced),
78
+ props.node.assertClause,
79
+ );
80
+ };
81
+ }
82
+
83
+ const get_directory_path = (file: string): string => {
84
+ const split: string[] = path.resolve(file).split(path.sep);
85
+ split.pop();
86
+ return path.resolve(split.join(path.sep));
87
+ };
88
+
89
+ /** Remove unused typia imports that are only used in transformable calls */
90
+ const removeUnusedTypiaImports = (file: ts.SourceFile): ts.SourceFile => {
91
+ // Find typia imports and collect all identifiers
92
+ interface ImportMetadata {
93
+ declaration: ts.ImportDeclaration;
94
+ default: boolean;
95
+ }
96
+ const imports: Map<string, ImportMetadata> = new Map();
97
+ for (const stmt of file.statements) {
98
+ if (
99
+ ts.isImportDeclaration(stmt) === false ||
100
+ ts.isStringLiteral(stmt.moduleSpecifier) === false ||
101
+ stmt.moduleSpecifier.text !== "typia" ||
102
+ stmt.importClause === undefined
103
+ )
104
+ continue;
105
+
106
+ // Track default import (import typia from 'typia')
107
+ if (stmt.importClause.name)
108
+ imports.set(stmt.importClause.name.text, {
109
+ declaration: stmt,
110
+ default: true,
111
+ });
112
+
113
+ // Track named imports (import { tags } from 'typia') - keep these
114
+ if (
115
+ stmt.importClause.namedBindings &&
116
+ ts.isNamedImports(stmt.importClause.namedBindings)
117
+ )
118
+ for (const element of stmt.importClause.namedBindings.elements)
119
+ imports.set(element.name.text, {
120
+ declaration: stmt,
121
+ default: false,
122
+ });
123
+ }
124
+ if (imports.size === 0) return file; // No typia imports to check
125
+
126
+ // Find usage of typia identifiers that are NOT transformable calls
127
+ const nonTransformableUsage = new Set<string>();
128
+ const checkUsage = (node: ts.Node) => {
129
+ if (ts.isIdentifier(node) && imports.has(node.text)) {
130
+ const identifier: string = node.text;
131
+ // Check if this identifier is being used as part of a property access
132
+ if (
133
+ node.parent &&
134
+ ts.isPropertyAccessExpression(node.parent) &&
135
+ node.parent.expression === node
136
+ ) {
137
+ // This is typia.something - check if it's a transformable call pattern
138
+ if (!isLikelyTransformableCall(node.parent))
139
+ nonTransformableUsage.add(identifier);
140
+ } else
141
+ // Direct usage of the typia identifier (not as property access)
142
+ // This is definitely non-transformable usage
143
+ nonTransformableUsage.add(identifier);
144
+ }
145
+ ts.forEachChild(node, checkUsage);
146
+ };
147
+
148
+ // Check all statements except import declarations
149
+ for (const stmt of file.statements)
150
+ if (
151
+ !ts.isImportDeclaration(stmt) ||
152
+ !ts.isStringLiteral(stmt.moduleSpecifier) ||
153
+ stmt.moduleSpecifier.text !== "typia"
154
+ )
155
+ checkUsage(stmt);
156
+
157
+ // Update import statements
158
+ const newStatements: ts.Statement[] = file.statements
159
+ .map((stmt) => {
160
+ if (
161
+ ts.isImportDeclaration(stmt) &&
162
+ ts.isStringLiteral(stmt.moduleSpecifier) &&
163
+ stmt.moduleSpecifier.text === "typia" &&
164
+ stmt.importClause
165
+ ) {
166
+ const newImportClause = filterTypiaImportClause(
167
+ stmt.importClause,
168
+ nonTransformableUsage,
169
+ );
170
+ if (newImportClause)
171
+ return ts.factory.createImportDeclaration(
172
+ stmt.modifiers,
173
+ newImportClause,
174
+ stmt.moduleSpecifier,
175
+ stmt.attributes,
176
+ );
177
+ return null; // Skip adding the import if all imports are unused
178
+ }
179
+ return stmt;
180
+ })
181
+ .filter((stmt) => stmt !== null);
182
+ return ts.factory.updateSourceFile(
183
+ file,
184
+ newStatements,
185
+ file.isDeclarationFile,
186
+ file.referencedFiles,
187
+ file.typeReferenceDirectives,
188
+ file.hasNoDefaultLib,
189
+ file.libReferenceDirectives,
190
+ );
191
+ };
192
+
193
+ /**
194
+ * Check if a property access expression looks like a transformable typia call
195
+ * This uses heuristics to detect patterns like typia.xxx(),
196
+ * typia.namespace.xxx()
197
+ */
198
+ const isLikelyTransformableCall = (
199
+ node: ts.PropertyAccessExpression,
200
+ ): boolean => {
201
+ // Check if this is eventually part of a call expression
202
+ let current: ts.Node = node;
203
+
204
+ // Walk up the chain to find if this leads to a call expression
205
+ // Handle patterns like: typia.xxx(), typia.namespace.xxx()
206
+ while (ts.isPropertyAccessExpression(current)) {
207
+ current = current.parent;
208
+ }
209
+
210
+ // If the final result is a call expression, this is likely transformable
211
+ if (
212
+ ts.isCallExpression(current) &&
213
+ (current.expression === node ||
214
+ (ts.isPropertyAccessExpression(current.expression) &&
215
+ isTypiaPropertyChain(current.expression)))
216
+ ) {
217
+ return true;
218
+ }
219
+
220
+ return false;
221
+ };
222
+
223
+ /** Check if a property access expression is part of a typia.xxx.yyy chain */
224
+ const isTypiaPropertyChain = (node: ts.PropertyAccessExpression): boolean => {
225
+ let current: ts.Expression = node;
226
+
227
+ while (ts.isPropertyAccessExpression(current)) {
228
+ current = current.expression;
229
+ }
230
+
231
+ return ts.isIdentifier(current) && current.text === "typia";
232
+ };
233
+
234
+ /** Filter import clause to remove unused default imports */
235
+ const filterTypiaImportClause = (
236
+ importClause: ts.ImportClause,
237
+ usedImports: Set<string>,
238
+ ): ts.ImportClause | undefined => {
239
+ const hasDefaultImport =
240
+ importClause.name && usedImports.has(importClause.name.text);
241
+ const namedBindings = importClause.namedBindings; // Always keep named bindings like { tags }
242
+
243
+ // Return undefined if no imports are used
244
+ if (!hasDefaultImport && !namedBindings) {
245
+ return undefined;
246
+ }
247
+
248
+ return ts.factory.createImportClause(
249
+ importClause.isTypeOnly,
250
+ hasDefaultImport ? importClause.name : undefined,
251
+ namedBindings,
252
+ );
253
+ };
@@ -1,18 +1,16 @@
1
- /**
2
- * @internal
3
- */
4
- export function NoTransformConfigurationError(name: string): never {
5
- throw new Error(
6
- [
7
- `Error on typia.${name}(): no transform has been configured.`,
8
- "",
9
- "Read and follow https://typia.io/docs/setup please.",
10
- "",
11
- [
12
- "If you've already completed the setup, it means there's",
13
- "a bug in your code. Run `tsc` command so that check what",
14
- "is wrong with your code.",
15
- ].join(" "),
16
- ].join("\n"),
17
- );
18
- }
1
+ /** @internal */
2
+ export function NoTransformConfigurationError(name: string): never {
3
+ throw new Error(
4
+ [
5
+ `Error on typia.${name}(): no transform has been configured.`,
6
+ "",
7
+ "Read and follow https://typia.io/docs/setup please.",
8
+ "",
9
+ [
10
+ "If you've already completed the setup, it means there's",
11
+ "a bug in your code. Run `tsc` command so that check what",
12
+ "is wrong with your code.",
13
+ ].join(" "),
14
+ ].join("\n"),
15
+ );
16
+ }