typia 9.7.0 → 9.7.2

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 (407) hide show
  1. package/lib/AssertionGuard.d.mts +27 -25
  2. package/lib/AssertionGuard.d.ts +27 -25
  3. package/lib/CamelCase.d.mts +1 -1
  4. package/lib/CamelCase.d.ts +1 -1
  5. package/lib/IRandomGenerator.d.mts +44 -42
  6. package/lib/IRandomGenerator.d.ts +44 -42
  7. package/lib/IReadableURLSearchParams.d.mts +2 -2
  8. package/lib/IReadableURLSearchParams.d.ts +2 -2
  9. package/lib/PascalCase.d.mts +1 -1
  10. package/lib/PascalCase.d.ts +1 -1
  11. package/lib/Primitive.d.mts +20 -22
  12. package/lib/Primitive.d.ts +20 -22
  13. package/lib/Resolved.d.mts +16 -18
  14. package/lib/Resolved.d.ts +16 -18
  15. package/lib/SnakeCase.d.mts +3 -2
  16. package/lib/SnakeCase.d.ts +3 -2
  17. package/lib/TypeGuardError.d.mts +88 -61
  18. package/lib/TypeGuardError.d.ts +88 -61
  19. package/lib/TypeGuardError.js +40 -29
  20. package/lib/TypeGuardError.js.map +1 -1
  21. package/lib/TypeGuardError.mjs +70 -48
  22. package/lib/factories/MetadataCollection.js +4 -12
  23. package/lib/factories/MetadataCollection.js.map +1 -1
  24. package/lib/factories/MetadataCollection.mjs +4 -12
  25. package/lib/factories/MetadataCommentTagFactory.js +5 -15
  26. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  27. package/lib/factories/MetadataCommentTagFactory.mjs +5 -15
  28. package/lib/factories/MetadataFactory.js +1 -3
  29. package/lib/factories/MetadataFactory.js.map +1 -1
  30. package/lib/factories/MetadataFactory.mjs +1 -3
  31. package/lib/factories/ProtobufFactory.js +1 -3
  32. package/lib/factories/ProtobufFactory.js.map +1 -1
  33. package/lib/factories/ProtobufFactory.mjs +1 -3
  34. package/lib/functional.d.mts +196 -195
  35. package/lib/functional.d.ts +196 -195
  36. package/lib/functional.js +18 -54
  37. package/lib/functional.js.map +1 -1
  38. package/lib/functional.mjs +18 -54
  39. package/lib/http.d.mts +303 -319
  40. package/lib/http.d.ts +303 -319
  41. package/lib/http.js +26 -78
  42. package/lib/http.js.map +1 -1
  43. package/lib/http.mjs +26 -78
  44. package/lib/internal/_ProtobufReader.d.mts +3 -9
  45. package/lib/internal/_ProtobufReader.d.ts +3 -9
  46. package/lib/internal/_ProtobufReader.js.map +1 -1
  47. package/lib/internal/_ProtobufReader.mjs +3 -9
  48. package/lib/internal/_ProtobufSizer.d.mts +4 -12
  49. package/lib/internal/_ProtobufSizer.d.ts +4 -12
  50. package/lib/internal/_ProtobufSizer.js.map +1 -1
  51. package/lib/internal/_ProtobufSizer.mjs +4 -12
  52. package/lib/internal/_ProtobufWriter.d.mts +5 -15
  53. package/lib/internal/_ProtobufWriter.d.ts +5 -15
  54. package/lib/internal/_ProtobufWriter.js.map +1 -1
  55. package/lib/internal/_ProtobufWriter.mjs +5 -15
  56. package/lib/internal/_jsonStringifyString.d.mts +4 -4
  57. package/lib/internal/_jsonStringifyString.d.ts +4 -4
  58. package/lib/internal/_jsonStringifyString.js +4 -4
  59. package/lib/internal/_jsonStringifyString.mjs +4 -4
  60. package/lib/json.d.mts +174 -195
  61. package/lib/json.d.ts +174 -195
  62. package/lib/json.js +16 -48
  63. package/lib/json.js.map +1 -1
  64. package/lib/json.mjs +16 -48
  65. package/lib/llm.d.mts +275 -192
  66. package/lib/llm.d.ts +275 -192
  67. package/lib/llm.js +4 -12
  68. package/lib/llm.js.map +1 -1
  69. package/lib/llm.mjs +4 -12
  70. package/lib/misc.d.mts +149 -172
  71. package/lib/misc.d.ts +149 -172
  72. package/lib/misc.js +17 -51
  73. package/lib/misc.js.map +1 -1
  74. package/lib/misc.mjs +17 -51
  75. package/lib/module.d.mts +263 -275
  76. package/lib/module.d.ts +263 -275
  77. package/lib/module.js +18 -54
  78. package/lib/module.js.map +1 -1
  79. package/lib/module.mjs +18 -54
  80. package/lib/notations.d.mts +153 -174
  81. package/lib/notations.d.ts +153 -174
  82. package/lib/notations.js +24 -72
  83. package/lib/notations.js.map +1 -1
  84. package/lib/notations.mjs +24 -72
  85. package/lib/programmers/FeatureProgrammer.d.mts +19 -41
  86. package/lib/programmers/FeatureProgrammer.d.ts +19 -41
  87. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  88. package/lib/programmers/ImportProgrammer.js +3 -9
  89. package/lib/programmers/ImportProgrammer.js.map +1 -1
  90. package/lib/programmers/ImportProgrammer.mjs +3 -9
  91. package/lib/programmers/RandomProgrammer.js +6 -0
  92. package/lib/programmers/RandomProgrammer.js.map +1 -1
  93. package/lib/programmers/RandomProgrammer.mjs +6 -0
  94. package/lib/programmers/helpers/ProtobufWire.d.mts +13 -13
  95. package/lib/programmers/helpers/ProtobufWire.d.ts +13 -13
  96. package/lib/programmers/internal/check_array_length.js +2 -6
  97. package/lib/programmers/internal/check_array_length.js.map +1 -1
  98. package/lib/programmers/internal/check_array_length.mjs +2 -6
  99. package/lib/programmers/internal/check_bigint.js +2 -6
  100. package/lib/programmers/internal/check_bigint.js.map +1 -1
  101. package/lib/programmers/internal/check_bigint.mjs +2 -6
  102. package/lib/programmers/internal/check_dynamic_key.js +2 -6
  103. package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
  104. package/lib/programmers/internal/check_dynamic_key.mjs +2 -6
  105. package/lib/programmers/internal/check_dynamic_properties.js +3 -9
  106. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  107. package/lib/programmers/internal/check_dynamic_properties.mjs +3 -9
  108. package/lib/programmers/internal/check_everything.js +1 -3
  109. package/lib/programmers/internal/check_everything.js.map +1 -1
  110. package/lib/programmers/internal/check_everything.mjs +1 -3
  111. package/lib/programmers/internal/check_native.js +2 -6
  112. package/lib/programmers/internal/check_native.js.map +1 -1
  113. package/lib/programmers/internal/check_native.mjs +2 -6
  114. package/lib/programmers/internal/check_number.js +2 -6
  115. package/lib/programmers/internal/check_number.js.map +1 -1
  116. package/lib/programmers/internal/check_number.mjs +2 -6
  117. package/lib/programmers/internal/check_object.js +2 -6
  118. package/lib/programmers/internal/check_object.js.map +1 -1
  119. package/lib/programmers/internal/check_object.mjs +2 -6
  120. package/lib/programmers/internal/check_string.js +2 -6
  121. package/lib/programmers/internal/check_string.js.map +1 -1
  122. package/lib/programmers/internal/check_string.mjs +2 -6
  123. package/lib/programmers/internal/check_template.js +1 -3
  124. package/lib/programmers/internal/check_template.js.map +1 -1
  125. package/lib/programmers/internal/check_template.mjs +1 -3
  126. package/lib/programmers/internal/check_union_array_like.js +1 -3
  127. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  128. package/lib/programmers/internal/check_union_array_like.mjs +1 -3
  129. package/lib/programmers/internal/decode_union_object.js +2 -6
  130. package/lib/programmers/internal/decode_union_object.js.map +1 -1
  131. package/lib/programmers/internal/decode_union_object.mjs +2 -6
  132. package/lib/programmers/internal/feature_object_entries.js +1 -3
  133. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  134. package/lib/programmers/internal/feature_object_entries.mjs +1 -3
  135. package/lib/programmers/internal/json_schema_escaped.js +2 -6
  136. package/lib/programmers/internal/json_schema_escaped.js.map +1 -1
  137. package/lib/programmers/internal/json_schema_escaped.mjs +2 -6
  138. package/lib/programmers/internal/json_schema_object.js +3 -9
  139. package/lib/programmers/internal/json_schema_object.js.map +1 -1
  140. package/lib/programmers/internal/json_schema_object.mjs +3 -9
  141. package/lib/programmers/internal/metadata_to_pattern.js +1 -3
  142. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  143. package/lib/programmers/internal/metadata_to_pattern.mjs +1 -3
  144. package/lib/programmers/internal/postfix_of_tuple.js +1 -3
  145. package/lib/programmers/internal/postfix_of_tuple.js.map +1 -1
  146. package/lib/programmers/internal/postfix_of_tuple.mjs +1 -3
  147. package/lib/programmers/internal/prune_object_properties.js +1 -3
  148. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  149. package/lib/programmers/internal/prune_object_properties.mjs +1 -3
  150. package/lib/programmers/internal/stringify_dynamic_properties.js +2 -6
  151. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  152. package/lib/programmers/internal/stringify_dynamic_properties.mjs +2 -6
  153. package/lib/programmers/internal/stringify_native.js +1 -3
  154. package/lib/programmers/internal/stringify_native.js.map +1 -1
  155. package/lib/programmers/internal/stringify_native.mjs +1 -3
  156. package/lib/programmers/internal/stringify_regular_properties.js +2 -6
  157. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
  158. package/lib/programmers/internal/stringify_regular_properties.mjs +2 -6
  159. package/lib/programmers/internal/template_to_pattern.js +1 -3
  160. package/lib/programmers/internal/template_to_pattern.js.map +1 -1
  161. package/lib/programmers/internal/template_to_pattern.mjs +1 -3
  162. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +1 -3
  163. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  164. package/lib/programmers/internal/wrap_metadata_rest_tuple.mjs +1 -3
  165. package/lib/protobuf.d.mts +290 -297
  166. package/lib/protobuf.d.ts +290 -297
  167. package/lib/protobuf.js +17 -51
  168. package/lib/protobuf.js.map +1 -1
  169. package/lib/protobuf.mjs +17 -51
  170. package/lib/reflect.d.mts +2 -4
  171. package/lib/reflect.d.ts +2 -4
  172. package/lib/reflect.js +1 -3
  173. package/lib/reflect.js.map +1 -1
  174. package/lib/reflect.mjs +1 -3
  175. package/lib/schemas/json/IJsonApplication.d.mts +4 -4
  176. package/lib/schemas/json/IJsonApplication.d.ts +4 -4
  177. package/lib/schemas/json/IJsonSchemaCollection.d.mts +73 -56
  178. package/lib/schemas/json/IJsonSchemaCollection.d.ts +73 -56
  179. package/lib/schemas/json/IJsonSchemaUnit.d.mts +83 -70
  180. package/lib/schemas/json/IJsonSchemaUnit.d.ts +83 -70
  181. package/lib/schemas/metadata/Metadata.d.mts +1 -3
  182. package/lib/schemas/metadata/Metadata.d.ts +1 -3
  183. package/lib/schemas/metadata/Metadata.js +9 -27
  184. package/lib/schemas/metadata/Metadata.js.map +1 -1
  185. package/lib/schemas/metadata/Metadata.mjs +9 -27
  186. package/lib/schemas/metadata/MetadataAliasType.d.mts +1 -3
  187. package/lib/schemas/metadata/MetadataAliasType.d.ts +1 -3
  188. package/lib/schemas/metadata/MetadataAliasType.js +3 -9
  189. package/lib/schemas/metadata/MetadataAliasType.js.map +1 -1
  190. package/lib/schemas/metadata/MetadataAliasType.mjs +3 -9
  191. package/lib/schemas/metadata/MetadataApplication.d.mts +1 -3
  192. package/lib/schemas/metadata/MetadataApplication.d.ts +1 -3
  193. package/lib/schemas/metadata/MetadataApplication.js +2 -6
  194. package/lib/schemas/metadata/MetadataApplication.js.map +1 -1
  195. package/lib/schemas/metadata/MetadataApplication.mjs +2 -6
  196. package/lib/schemas/metadata/MetadataArray.d.mts +1 -3
  197. package/lib/schemas/metadata/MetadataArray.d.ts +1 -3
  198. package/lib/schemas/metadata/MetadataArray.js +1 -3
  199. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  200. package/lib/schemas/metadata/MetadataArray.mjs +1 -3
  201. package/lib/schemas/metadata/MetadataArrayType.d.mts +1 -3
  202. package/lib/schemas/metadata/MetadataArrayType.d.ts +1 -3
  203. package/lib/schemas/metadata/MetadataArrayType.js +3 -9
  204. package/lib/schemas/metadata/MetadataArrayType.js.map +1 -1
  205. package/lib/schemas/metadata/MetadataArrayType.mjs +3 -9
  206. package/lib/schemas/metadata/MetadataAtomic.js +1 -3
  207. package/lib/schemas/metadata/MetadataAtomic.js.map +1 -1
  208. package/lib/schemas/metadata/MetadataAtomic.mjs +1 -3
  209. package/lib/schemas/metadata/MetadataEscaped.d.mts +1 -3
  210. package/lib/schemas/metadata/MetadataEscaped.d.ts +1 -3
  211. package/lib/schemas/metadata/MetadataEscaped.js +3 -9
  212. package/lib/schemas/metadata/MetadataEscaped.js.map +1 -1
  213. package/lib/schemas/metadata/MetadataEscaped.mjs +3 -9
  214. package/lib/schemas/metadata/MetadataFunction.d.mts +1 -3
  215. package/lib/schemas/metadata/MetadataFunction.d.ts +1 -3
  216. package/lib/schemas/metadata/MetadataFunction.js +2 -6
  217. package/lib/schemas/metadata/MetadataFunction.js.map +1 -1
  218. package/lib/schemas/metadata/MetadataFunction.mjs +2 -6
  219. package/lib/schemas/metadata/MetadataObject.d.mts +1 -3
  220. package/lib/schemas/metadata/MetadataObject.d.ts +1 -3
  221. package/lib/schemas/metadata/MetadataObject.js +1 -3
  222. package/lib/schemas/metadata/MetadataObject.js.map +1 -1
  223. package/lib/schemas/metadata/MetadataObject.mjs +1 -3
  224. package/lib/schemas/metadata/MetadataObjectType.d.mts +1 -3
  225. package/lib/schemas/metadata/MetadataObjectType.d.ts +1 -3
  226. package/lib/schemas/metadata/MetadataObjectType.js +5 -15
  227. package/lib/schemas/metadata/MetadataObjectType.js.map +1 -1
  228. package/lib/schemas/metadata/MetadataObjectType.mjs +6 -18
  229. package/lib/schemas/metadata/MetadataParameter.js +1 -3
  230. package/lib/schemas/metadata/MetadataParameter.js.map +1 -1
  231. package/lib/schemas/metadata/MetadataParameter.mjs +1 -3
  232. package/lib/schemas/metadata/MetadataProperty.d.mts +1 -3
  233. package/lib/schemas/metadata/MetadataProperty.d.ts +1 -3
  234. package/lib/schemas/metadata/MetadataProperty.js +3 -9
  235. package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
  236. package/lib/schemas/metadata/MetadataProperty.mjs +3 -9
  237. package/lib/schemas/metadata/MetadataTemplate.js +1 -3
  238. package/lib/schemas/metadata/MetadataTemplate.js.map +1 -1
  239. package/lib/schemas/metadata/MetadataTemplate.mjs +1 -3
  240. package/lib/schemas/metadata/MetadataTuple.d.mts +1 -3
  241. package/lib/schemas/metadata/MetadataTuple.d.ts +1 -3
  242. package/lib/schemas/metadata/MetadataTuple.js +2 -6
  243. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  244. package/lib/schemas/metadata/MetadataTuple.mjs +2 -6
  245. package/lib/schemas/metadata/MetadataTupleType.js +2 -6
  246. package/lib/schemas/metadata/MetadataTupleType.js.map +1 -1
  247. package/lib/schemas/metadata/MetadataTupleType.mjs +3 -9
  248. package/lib/tags/Constant.d.mts +32 -0
  249. package/lib/tags/Constant.d.ts +32 -0
  250. package/lib/tags/ContentMediaType.d.mts +17 -0
  251. package/lib/tags/ContentMediaType.d.ts +17 -0
  252. package/lib/tags/Default.d.mts +30 -0
  253. package/lib/tags/Default.d.ts +30 -0
  254. package/lib/tags/Example.d.mts +32 -0
  255. package/lib/tags/Example.d.ts +32 -0
  256. package/lib/tags/Examples.d.mts +40 -0
  257. package/lib/tags/Examples.d.ts +40 -0
  258. package/lib/tags/ExclusiveMaximum.d.mts +21 -0
  259. package/lib/tags/ExclusiveMaximum.d.ts +21 -0
  260. package/lib/tags/ExclusiveMinimum.d.mts +21 -0
  261. package/lib/tags/ExclusiveMinimum.d.ts +21 -0
  262. package/lib/tags/Format.d.mts +28 -0
  263. package/lib/tags/Format.d.ts +28 -0
  264. package/lib/tags/JsonSchemaPlugin.d.mts +28 -0
  265. package/lib/tags/JsonSchemaPlugin.d.ts +28 -0
  266. package/lib/tags/MaxItems.d.mts +19 -0
  267. package/lib/tags/MaxItems.d.ts +19 -0
  268. package/lib/tags/MaxLength.d.mts +13 -0
  269. package/lib/tags/MaxLength.d.ts +13 -0
  270. package/lib/tags/Maximum.d.mts +20 -0
  271. package/lib/tags/Maximum.d.ts +20 -0
  272. package/lib/tags/MinItems.d.mts +19 -0
  273. package/lib/tags/MinItems.d.ts +19 -0
  274. package/lib/tags/MinLength.d.mts +13 -0
  275. package/lib/tags/MinLength.d.ts +13 -0
  276. package/lib/tags/Minimum.d.mts +20 -0
  277. package/lib/tags/Minimum.d.ts +20 -0
  278. package/lib/tags/MultipleOf.d.mts +21 -0
  279. package/lib/tags/MultipleOf.d.ts +21 -0
  280. package/lib/tags/Pattern.d.mts +18 -0
  281. package/lib/tags/Pattern.d.ts +18 -0
  282. package/lib/tags/Sequence.d.mts +27 -0
  283. package/lib/tags/Sequence.d.ts +27 -0
  284. package/lib/tags/TagBase.d.mts +38 -18
  285. package/lib/tags/TagBase.d.ts +38 -18
  286. package/lib/tags/Type.d.mts +27 -0
  287. package/lib/tags/Type.d.ts +27 -0
  288. package/lib/tags/UniqueItems.d.mts +20 -0
  289. package/lib/tags/UniqueItems.d.ts +20 -0
  290. package/lib/tags/internal/FormatCheatSheet.d.mts +1 -3
  291. package/lib/tags/internal/FormatCheatSheet.d.ts +1 -3
  292. package/lib/tags/internal/FormatCheatSheet.js +1 -3
  293. package/lib/tags/internal/FormatCheatSheet.js.map +1 -1
  294. package/lib/tags/internal/FormatCheatSheet.mjs +1 -3
  295. package/lib/transformers/ITransformOptions.d.mts +27 -19
  296. package/lib/transformers/ITransformOptions.d.ts +27 -19
  297. package/lib/transformers/ImportTransformer.js +114 -1
  298. package/lib/transformers/ImportTransformer.js.map +1 -1
  299. package/lib/transformers/ImportTransformer.mjs +114 -1
  300. package/lib/transformers/NoTransformConfigurationError.js +1 -3
  301. package/lib/transformers/NoTransformConfigurationError.js.map +1 -1
  302. package/lib/transformers/NoTransformConfigurationError.mjs +1 -3
  303. package/lib/transformers/features/llm/LlmApplicationTransformer.js +1 -3
  304. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  305. package/lib/transformers/features/llm/LlmApplicationTransformer.mjs +1 -3
  306. package/lib/typings/Equal.d.mts +6 -6
  307. package/lib/typings/Equal.d.ts +6 -6
  308. package/package.json +2 -1
  309. package/src/AssertionGuard.ts +27 -25
  310. package/src/CamelCase.ts +1 -1
  311. package/src/IRandomGenerator.ts +57 -47
  312. package/src/IReadableURLSearchParams.ts +2 -2
  313. package/src/PascalCase.ts +1 -1
  314. package/src/Primitive.ts +20 -22
  315. package/src/Resolved.ts +16 -18
  316. package/src/SnakeCase.ts +3 -2
  317. package/src/TypeGuardError.ts +101 -64
  318. package/src/factories/MetadataCollection.ts +4 -12
  319. package/src/factories/MetadataCommentTagFactory.ts +8 -24
  320. package/src/factories/MetadataFactory.ts +1 -3
  321. package/src/factories/ProtobufFactory.ts +1 -3
  322. package/src/functional.ts +214 -249
  323. package/src/http.ts +329 -397
  324. package/src/internal/_ProtobufReader.ts +3 -9
  325. package/src/internal/_ProtobufSizer.ts +4 -12
  326. package/src/internal/_ProtobufWriter.ts +5 -15
  327. package/src/internal/_jsonStringifyString.ts +4 -4
  328. package/src/json.ts +190 -243
  329. package/src/llm.ts +279 -204
  330. package/src/misc.ts +166 -223
  331. package/src/module.ts +281 -329
  332. package/src/notations.ts +177 -246
  333. package/src/programmers/FeatureProgrammer.ts +19 -41
  334. package/src/programmers/ImportProgrammer.ts +3 -9
  335. package/src/programmers/RandomProgrammer.ts +6 -1
  336. package/src/programmers/helpers/ProtobufWire.ts +13 -13
  337. package/src/programmers/internal/check_array_length.ts +2 -6
  338. package/src/programmers/internal/check_bigint.ts +2 -6
  339. package/src/programmers/internal/check_dynamic_key.ts +2 -6
  340. package/src/programmers/internal/check_dynamic_properties.ts +3 -9
  341. package/src/programmers/internal/check_everything.ts +1 -3
  342. package/src/programmers/internal/check_native.ts +2 -6
  343. package/src/programmers/internal/check_number.ts +2 -6
  344. package/src/programmers/internal/check_object.ts +3 -9
  345. package/src/programmers/internal/check_string.ts +2 -6
  346. package/src/programmers/internal/check_template.ts +1 -3
  347. package/src/programmers/internal/check_union_array_like.ts +2 -6
  348. package/src/programmers/internal/decode_union_object.ts +3 -9
  349. package/src/programmers/internal/feature_object_entries.ts +1 -3
  350. package/src/programmers/internal/json_schema_escaped.ts +2 -6
  351. package/src/programmers/internal/json_schema_object.ts +4 -12
  352. package/src/programmers/internal/metadata_to_pattern.ts +1 -3
  353. package/src/programmers/internal/postfix_of_tuple.ts +1 -3
  354. package/src/programmers/internal/prune_object_properties.ts +1 -3
  355. package/src/programmers/internal/stringify_dynamic_properties.ts +2 -6
  356. package/src/programmers/internal/stringify_native.ts +1 -3
  357. package/src/programmers/internal/stringify_regular_properties.ts +2 -6
  358. package/src/programmers/internal/template_to_pattern.ts +1 -3
  359. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +1 -3
  360. package/src/protobuf.ts +307 -348
  361. package/src/reflect.ts +3 -7
  362. package/src/schemas/json/IJsonApplication.ts +4 -4
  363. package/src/schemas/json/IJsonSchemaCollection.ts +73 -56
  364. package/src/schemas/json/IJsonSchemaUnit.ts +83 -70
  365. package/src/schemas/metadata/IMetadataTypeTag.ts +1 -3
  366. package/src/schemas/metadata/Metadata.ts +9 -27
  367. package/src/schemas/metadata/MetadataAliasType.ts +3 -9
  368. package/src/schemas/metadata/MetadataApplication.ts +2 -6
  369. package/src/schemas/metadata/MetadataArray.ts +1 -3
  370. package/src/schemas/metadata/MetadataArrayType.ts +3 -9
  371. package/src/schemas/metadata/MetadataAtomic.ts +1 -3
  372. package/src/schemas/metadata/MetadataEscaped.ts +3 -9
  373. package/src/schemas/metadata/MetadataFunction.ts +2 -6
  374. package/src/schemas/metadata/MetadataObject.ts +1 -3
  375. package/src/schemas/metadata/MetadataObjectType.ts +6 -18
  376. package/src/schemas/metadata/MetadataParameter.ts +1 -3
  377. package/src/schemas/metadata/MetadataProperty.ts +3 -9
  378. package/src/schemas/metadata/MetadataTemplate.ts +1 -3
  379. package/src/schemas/metadata/MetadataTuple.ts +2 -6
  380. package/src/schemas/metadata/MetadataTupleType.ts +3 -9
  381. package/src/tags/Constant.ts +32 -0
  382. package/src/tags/ContentMediaType.ts +17 -0
  383. package/src/tags/Default.ts +30 -0
  384. package/src/tags/Example.ts +32 -0
  385. package/src/tags/Examples.ts +40 -0
  386. package/src/tags/ExclusiveMaximum.ts +21 -0
  387. package/src/tags/ExclusiveMinimum.ts +21 -0
  388. package/src/tags/Format.ts +28 -0
  389. package/src/tags/JsonSchemaPlugin.ts +28 -0
  390. package/src/tags/MaxItems.ts +19 -0
  391. package/src/tags/MaxLength.ts +13 -0
  392. package/src/tags/Maximum.ts +20 -0
  393. package/src/tags/MinItems.ts +19 -0
  394. package/src/tags/MinLength.ts +13 -0
  395. package/src/tags/Minimum.ts +20 -0
  396. package/src/tags/MultipleOf.ts +21 -0
  397. package/src/tags/Pattern.ts +18 -0
  398. package/src/tags/Sequence.ts +27 -0
  399. package/src/tags/TagBase.ts +38 -18
  400. package/src/tags/Type.ts +27 -0
  401. package/src/tags/UniqueItems.ts +20 -0
  402. package/src/tags/internal/FormatCheatSheet.ts +1 -3
  403. package/src/transformers/ITransformOptions.ts +27 -19
  404. package/src/transformers/ImportTransformer.ts +173 -1
  405. package/src/transformers/NoTransformConfigurationError.ts +1 -3
  406. package/src/transformers/features/llm/LlmApplicationTransformer.ts +1 -3
  407. package/src/typings/Equal.ts +6 -6
@@ -1,4 +1,44 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Multiple examples tag that provides named example values for documentation.
4
+ *
5
+ * Unlike the Example tag which provides a single example, Examples allows you
6
+ * to provide multiple labeled examples. This is particularly useful when you
7
+ * want to show different scenarios or use cases for the same type.
8
+ *
9
+ * The examples are added to JSON Schema as an object where keys are descriptive
10
+ * names and values are the example data. This helps in API documentation and
11
+ * test case generation.
12
+ *
13
+ * @author Jeongho Nam - https://github.com/samchon
14
+ * @example
15
+ * ```typescript
16
+ * interface PaymentRequest {
17
+ * amount: number & Examples<{
18
+ * small: 10.50,
19
+ * medium: 99.99,
20
+ * large: 1000.00
21
+ * }>;
22
+ * }
23
+ * ```;
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * interface UserStatus {
28
+ * state: string & Examples<{
29
+ * active: "active",
30
+ * inactive: "inactive",
31
+ * suspended: "suspended"
32
+ * }>;
33
+ * profile: object & Examples<{
34
+ * basic: { name: "John", age: 25 },
35
+ * detailed: { name: "Jane", age: 30, bio: "Developer", verified: true }
36
+ * }>;
37
+ * }
38
+ * ```;
39
+ *
40
+ * @template Value A record object mapping example names to example values
41
+ */
2
42
  export type Examples<Value extends Record<string, boolean | bigint | number | string | object | Array<unknown> | null>> = TagBase<{
3
43
  target: "boolean" | "bigint" | "number" | "string" | "array" | "object";
4
44
  kind: "examples";
@@ -1,4 +1,44 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Multiple examples tag that provides named example values for documentation.
4
+ *
5
+ * Unlike the Example tag which provides a single example, Examples allows you
6
+ * to provide multiple labeled examples. This is particularly useful when you
7
+ * want to show different scenarios or use cases for the same type.
8
+ *
9
+ * The examples are added to JSON Schema as an object where keys are descriptive
10
+ * names and values are the example data. This helps in API documentation and
11
+ * test case generation.
12
+ *
13
+ * @author Jeongho Nam - https://github.com/samchon
14
+ * @example
15
+ * ```typescript
16
+ * interface PaymentRequest {
17
+ * amount: number & Examples<{
18
+ * small: 10.50,
19
+ * medium: 99.99,
20
+ * large: 1000.00
21
+ * }>;
22
+ * }
23
+ * ```;
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * interface UserStatus {
28
+ * state: string & Examples<{
29
+ * active: "active",
30
+ * inactive: "inactive",
31
+ * suspended: "suspended"
32
+ * }>;
33
+ * profile: object & Examples<{
34
+ * basic: { name: "John", age: 25 },
35
+ * detailed: { name: "Jane", age: 30, bio: "Developer", verified: true }
36
+ * }>;
37
+ * }
38
+ * ```;
39
+ *
40
+ * @template Value A record object mapping example names to example values
41
+ */
2
42
  export type Examples<Value extends Record<string, boolean | bigint | number | string | object | Array<unknown> | null>> = TagBase<{
3
43
  target: "boolean" | "bigint" | "number" | "string" | "array" | "object";
4
44
  kind: "examples";
@@ -1,4 +1,25 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Exclusive maximum value constraint tag.
4
+ *
5
+ * Enforces that a numeric value must be strictly less than the specified
6
+ * maximum (not equal). This constraint validates that the input value
7
+ * satisfies: input < maximum.
8
+ *
9
+ * Example usage:
10
+ *
11
+ * ```typescript
12
+ * type Discount = number & tags.ExclusiveMaximum<100>; // Must be < 100
13
+ * type ByteValue = bigint & tags.ExclusiveMaximum<256n>; // Must be < 256
14
+ * ```
15
+ *
16
+ * Note: This tag is mutually exclusive with Maximum. You cannot apply both
17
+ * ExclusiveMaximum and Maximum constraints to the same property.
18
+ *
19
+ * @author Jeongho Nam - https://github.com/samchon
20
+ * @template Value - The exclusive maximum value constraint (number or bigint
21
+ * literal)
22
+ */
2
23
  export type ExclusiveMaximum<Value extends number | bigint> = TagBase<{
3
24
  target: Value extends bigint ? "bigint" : "number";
4
25
  kind: "exclusiveMaximum";
@@ -1,4 +1,25 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Exclusive maximum value constraint tag.
4
+ *
5
+ * Enforces that a numeric value must be strictly less than the specified
6
+ * maximum (not equal). This constraint validates that the input value
7
+ * satisfies: input < maximum.
8
+ *
9
+ * Example usage:
10
+ *
11
+ * ```typescript
12
+ * type Discount = number & tags.ExclusiveMaximum<100>; // Must be < 100
13
+ * type ByteValue = bigint & tags.ExclusiveMaximum<256n>; // Must be < 256
14
+ * ```
15
+ *
16
+ * Note: This tag is mutually exclusive with Maximum. You cannot apply both
17
+ * ExclusiveMaximum and Maximum constraints to the same property.
18
+ *
19
+ * @author Jeongho Nam - https://github.com/samchon
20
+ * @template Value - The exclusive maximum value constraint (number or bigint
21
+ * literal)
22
+ */
2
23
  export type ExclusiveMaximum<Value extends number | bigint> = TagBase<{
3
24
  target: Value extends bigint ? "bigint" : "number";
4
25
  kind: "exclusiveMaximum";
@@ -1,4 +1,25 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Exclusive minimum value constraint tag.
4
+ *
5
+ * Enforces that a numeric value must be strictly greater than the specified
6
+ * minimum (not equal). This constraint validates that the input value
7
+ * satisfies: input > minimum.
8
+ *
9
+ * Example usage:
10
+ *
11
+ * ```typescript
12
+ * type PositiveNumber = number & tags.ExclusiveMinimum<0>; // Must be > 0
13
+ * type LargeCount = bigint & tags.ExclusiveMinimum<999n>; // Must be > 999
14
+ * ```
15
+ *
16
+ * Note: This tag is mutually exclusive with Minimum. You cannot apply both
17
+ * ExclusiveMinimum and Minimum constraints to the same property.
18
+ *
19
+ * @author Jeongho Nam - https://github.com/samchon
20
+ * @template Value - The exclusive minimum value constraint (number or bigint
21
+ * literal)
22
+ */
2
23
  export type ExclusiveMinimum<Value extends number | bigint> = TagBase<{
3
24
  target: Value extends bigint ? "bigint" : "number";
4
25
  kind: "exclusiveMinimum";
@@ -1,4 +1,25 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Exclusive minimum value constraint tag.
4
+ *
5
+ * Enforces that a numeric value must be strictly greater than the specified
6
+ * minimum (not equal). This constraint validates that the input value
7
+ * satisfies: input > minimum.
8
+ *
9
+ * Example usage:
10
+ *
11
+ * ```typescript
12
+ * type PositiveNumber = number & tags.ExclusiveMinimum<0>; // Must be > 0
13
+ * type LargeCount = bigint & tags.ExclusiveMinimum<999n>; // Must be > 999
14
+ * ```
15
+ *
16
+ * Note: This tag is mutually exclusive with Minimum. You cannot apply both
17
+ * ExclusiveMinimum and Minimum constraints to the same property.
18
+ *
19
+ * @author Jeongho Nam - https://github.com/samchon
20
+ * @template Value - The exclusive minimum value constraint (number or bigint
21
+ * literal)
22
+ */
2
23
  export type ExclusiveMinimum<Value extends number | bigint> = TagBase<{
3
24
  target: Value extends bigint ? "bigint" : "number";
4
25
  kind: "exclusiveMinimum";
@@ -1,4 +1,32 @@
1
1
  import type { TagBase } from "./TagBase";
2
+ /**
3
+ * String format constraint tag.
4
+ *
5
+ * Validates strings against predefined formats for common use cases. This tag
6
+ * provides built-in validation for standard string formats without needing to
7
+ * write custom regular expressions.
8
+ *
9
+ * Examples:
10
+ *
11
+ * ```ts
12
+ * Type Email = string & Format<"email">; // user@example.com
13
+ * Type WebURL = string & Format<"url">; // https://example.com
14
+ * Type DateTime = string & Format<"date-time">; // 2024-01-15T10:30:00Z
15
+ * ```
16
+ *
17
+ * Supported formats include:
18
+ *
19
+ * - Network: email, url, hostname, ipv4, ipv6, uri
20
+ * - Identifiers: uuid, byte, password
21
+ * - Date/Time: date, time, date-time, duration
22
+ * - Data: json-pointer, regex
23
+ * - Internationalized: idn-email, idn-hostname, iri
24
+ *
25
+ * Note: This tag is mutually exclusive with the Pattern tag. You cannot use
26
+ * both Format and Pattern on the same type.
27
+ *
28
+ * @author Jeongho Nam - https://github.com/samchon
29
+ */
2
30
  export type Format<Value extends Format.Value> = TagBase<{
3
31
  target: "string";
4
32
  kind: "format";
@@ -1,4 +1,32 @@
1
1
  import type { TagBase } from "./TagBase";
2
+ /**
3
+ * String format constraint tag.
4
+ *
5
+ * Validates strings against predefined formats for common use cases. This tag
6
+ * provides built-in validation for standard string formats without needing to
7
+ * write custom regular expressions.
8
+ *
9
+ * Examples:
10
+ *
11
+ * ```ts
12
+ * Type Email = string & Format<"email">; // user@example.com
13
+ * Type WebURL = string & Format<"url">; // https://example.com
14
+ * Type DateTime = string & Format<"date-time">; // 2024-01-15T10:30:00Z
15
+ * ```
16
+ *
17
+ * Supported formats include:
18
+ *
19
+ * - Network: email, url, hostname, ipv4, ipv6, uri
20
+ * - Identifiers: uuid, byte, password
21
+ * - Date/Time: date, time, date-time, duration
22
+ * - Data: json-pointer, regex
23
+ * - Internationalized: idn-email, idn-hostname, iri
24
+ *
25
+ * Note: This tag is mutually exclusive with the Pattern tag. You cannot use
26
+ * both Format and Pattern on the same type.
27
+ *
28
+ * @author Jeongho Nam - https://github.com/samchon
29
+ */
2
30
  export type Format<Value extends Format.Value> = TagBase<{
3
31
  target: "string";
4
32
  kind: "format";
@@ -1,4 +1,32 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Injects custom properties into generated JSON Schema.
4
+ *
5
+ * The JsonSchemaPlugin tag allows you to add vendor-specific extensions or
6
+ * custom metadata to the generated JSON Schema output. These properties are
7
+ * merged at the root level of the schema and are commonly used for
8
+ * documentation, tooling hints, or API-specific metadata. The custom properties
9
+ * only affect schema generation and do not impact runtime validation.
10
+ *
11
+ * @author Jeongho Nam - https://github.com/samchon
12
+ * @example
13
+ * ```typescript
14
+ * // Add OpenAPI vendor extensions
15
+ * type UserId = string & JsonSchemaPlugin<{
16
+ * "x-internal-id": true,
17
+ * "x-deprecated": "Use UUID instead"
18
+ * }>;
19
+ *
20
+ * // Add custom documentation metadata
21
+ * type Price = number & JsonSchemaPlugin<{
22
+ * "x-format": "currency",
23
+ * "x-example": 19.99
24
+ * }>;
25
+ * ```
26
+ *
27
+ * @template Schema - Object containing custom properties to add to the JSON
28
+ * Schema
29
+ */
2
30
  export type JsonSchemaPlugin<Schema extends object> = TagBase<{
3
31
  target: "string" | "boolean" | "bigint" | "number" | "array" | "object";
4
32
  kind: "jsonPlugin";
@@ -1,4 +1,32 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Injects custom properties into generated JSON Schema.
4
+ *
5
+ * The JsonSchemaPlugin tag allows you to add vendor-specific extensions or
6
+ * custom metadata to the generated JSON Schema output. These properties are
7
+ * merged at the root level of the schema and are commonly used for
8
+ * documentation, tooling hints, or API-specific metadata. The custom properties
9
+ * only affect schema generation and do not impact runtime validation.
10
+ *
11
+ * @author Jeongho Nam - https://github.com/samchon
12
+ * @example
13
+ * ```typescript
14
+ * // Add OpenAPI vendor extensions
15
+ * type UserId = string & JsonSchemaPlugin<{
16
+ * "x-internal-id": true,
17
+ * "x-deprecated": "Use UUID instead"
18
+ * }>;
19
+ *
20
+ * // Add custom documentation metadata
21
+ * type Price = number & JsonSchemaPlugin<{
22
+ * "x-format": "currency",
23
+ * "x-example": 19.99
24
+ * }>;
25
+ * ```
26
+ *
27
+ * @template Schema - Object containing custom properties to add to the JSON
28
+ * Schema
29
+ */
2
30
  export type JsonSchemaPlugin<Schema extends object> = TagBase<{
3
31
  target: "string" | "boolean" | "bigint" | "number" | "array" | "object";
4
32
  kind: "jsonPlugin";
@@ -1,4 +1,23 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Maximum items validation tag for arrays.
4
+ *
5
+ * Enforces that an array contains at most the specified number of items. This
6
+ * tag is useful for limiting array sizes, such as restricting the number of
7
+ * uploaded files, limiting selections in a form, or capping the size of
8
+ * collections to prevent performance issues.
9
+ *
10
+ * @author Jeongho Nam - https://github.com/samchon
11
+ * @example
12
+ * // Allow maximum 5 file uploads
13
+ * type FileList = File[] & MaxItems<5>;
14
+ *
15
+ * @example
16
+ * // Limit tags to 10 items
17
+ * type ProductTags = string[] & MaxItems<10>;
18
+ *
19
+ * @template Value - The maximum number of items allowed
20
+ */
2
21
  export type MaxItems<Value extends number> = TagBase<{
3
22
  target: "array";
4
23
  kind: "maxItems";
@@ -1,4 +1,23 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Maximum items validation tag for arrays.
4
+ *
5
+ * Enforces that an array contains at most the specified number of items. This
6
+ * tag is useful for limiting array sizes, such as restricting the number of
7
+ * uploaded files, limiting selections in a form, or capping the size of
8
+ * collections to prevent performance issues.
9
+ *
10
+ * @author Jeongho Nam - https://github.com/samchon
11
+ * @example
12
+ * // Allow maximum 5 file uploads
13
+ * type FileList = File[] & MaxItems<5>;
14
+ *
15
+ * @example
16
+ * // Limit tags to 10 items
17
+ * type ProductTags = string[] & MaxItems<10>;
18
+ *
19
+ * @template Value - The maximum number of items allowed
20
+ */
2
21
  export type MaxItems<Value extends number> = TagBase<{
3
22
  target: "array";
4
23
  kind: "maxItems";
@@ -1,4 +1,17 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * String maximum length constraint tag.
4
+ *
5
+ * Validates that a string's length is less than or equal to the specified
6
+ * value. This tag enforces an upper limit on the number of characters in a
7
+ * string.
8
+ *
9
+ * Examples: type ShortComment = string & MaxLength<200>; // Comment limited to
10
+ * 200 characters type ZipCode = string & MaxLength<10>; // Zip code with max 10
11
+ * characters
12
+ *
13
+ * @author Jeongho Nam - https://github.com/samchon
14
+ */
2
15
  export type MaxLength<Value extends number> = TagBase<{
3
16
  target: "string";
4
17
  kind: "maxLength";
@@ -1,4 +1,17 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * String maximum length constraint tag.
4
+ *
5
+ * Validates that a string's length is less than or equal to the specified
6
+ * value. This tag enforces an upper limit on the number of characters in a
7
+ * string.
8
+ *
9
+ * Examples: type ShortComment = string & MaxLength<200>; // Comment limited to
10
+ * 200 characters type ZipCode = string & MaxLength<10>; // Zip code with max 10
11
+ * characters
12
+ *
13
+ * @author Jeongho Nam - https://github.com/samchon
14
+ */
2
15
  export type MaxLength<Value extends number> = TagBase<{
3
16
  target: "string";
4
17
  kind: "maxLength";
@@ -1,4 +1,24 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Maximum value constraint tag.
4
+ *
5
+ * Enforces that a numeric value must be less than or equal to the specified
6
+ * maximum. This constraint validates that the input value satisfies: input <=
7
+ * maximum.
8
+ *
9
+ * Example usage:
10
+ *
11
+ * ```typescript
12
+ * type Percentage = number & tags.Maximum<100>; // Must be <= 100
13
+ * type SmallInt = bigint & tags.Maximum<255n>; // BigInt must be <= 255
14
+ * ```
15
+ *
16
+ * Note: This tag is mutually exclusive with ExclusiveMaximum. You cannot apply
17
+ * both Maximum and ExclusiveMaximum constraints to the same property.
18
+ *
19
+ * @author Jeongho Nam - https://github.com/samchon
20
+ * @template Value - The maximum value constraint (number or bigint literal)
21
+ */
2
22
  export type Maximum<Value extends number | bigint> = TagBase<{
3
23
  target: Value extends bigint ? "bigint" : "number";
4
24
  kind: "maximum";
@@ -1,4 +1,24 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Maximum value constraint tag.
4
+ *
5
+ * Enforces that a numeric value must be less than or equal to the specified
6
+ * maximum. This constraint validates that the input value satisfies: input <=
7
+ * maximum.
8
+ *
9
+ * Example usage:
10
+ *
11
+ * ```typescript
12
+ * type Percentage = number & tags.Maximum<100>; // Must be <= 100
13
+ * type SmallInt = bigint & tags.Maximum<255n>; // BigInt must be <= 255
14
+ * ```
15
+ *
16
+ * Note: This tag is mutually exclusive with ExclusiveMaximum. You cannot apply
17
+ * both Maximum and ExclusiveMaximum constraints to the same property.
18
+ *
19
+ * @author Jeongho Nam - https://github.com/samchon
20
+ * @template Value - The maximum value constraint (number or bigint literal)
21
+ */
2
22
  export type Maximum<Value extends number | bigint> = TagBase<{
3
23
  target: Value extends bigint ? "bigint" : "number";
4
24
  kind: "maximum";
@@ -1,4 +1,23 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Minimum items validation tag for arrays.
4
+ *
5
+ * Enforces that an array contains at least the specified number of items. This
6
+ * tag is useful for ensuring arrays have a minimum length requirement, such as
7
+ * requiring at least one item in a list or a minimum number of selections in a
8
+ * multi-choice field.
9
+ *
10
+ * @author Jeongho Nam - https://github.com/samchon
11
+ * @example
12
+ * // Require at least 1 item in the array
13
+ * type Tags = string[] & MinItems<1>;
14
+ *
15
+ * @example
16
+ * // Require at least 3 selections
17
+ * type MultipleChoice = number[] & MinItems<3>;
18
+ *
19
+ * @template Value - The minimum number of items required
20
+ */
2
21
  export type MinItems<Value extends number> = TagBase<{
3
22
  target: "array";
4
23
  kind: "minItems";
@@ -1,4 +1,23 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Minimum items validation tag for arrays.
4
+ *
5
+ * Enforces that an array contains at least the specified number of items. This
6
+ * tag is useful for ensuring arrays have a minimum length requirement, such as
7
+ * requiring at least one item in a list or a minimum number of selections in a
8
+ * multi-choice field.
9
+ *
10
+ * @author Jeongho Nam - https://github.com/samchon
11
+ * @example
12
+ * // Require at least 1 item in the array
13
+ * type Tags = string[] & MinItems<1>;
14
+ *
15
+ * @example
16
+ * // Require at least 3 selections
17
+ * type MultipleChoice = number[] & MinItems<3>;
18
+ *
19
+ * @template Value - The minimum number of items required
20
+ */
2
21
  export type MinItems<Value extends number> = TagBase<{
3
22
  target: "array";
4
23
  kind: "minItems";
@@ -1,4 +1,17 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * String minimum length constraint tag.
4
+ *
5
+ * Validates that a string's length is greater than or equal to the specified
6
+ * value. This tag ensures that string values meet a minimum character count
7
+ * requirement.
8
+ *
9
+ * Examples: type Username = string & MinLength<3>; // Username must be at least
10
+ * 3 characters type Password = string & MinLength<8>; // Password must be at
11
+ * least 8 characters
12
+ *
13
+ * @author Jeongho Nam - https://github.com/samchon
14
+ */
2
15
  export type MinLength<Value extends number> = TagBase<{
3
16
  target: "string";
4
17
  kind: "minLength";
@@ -1,4 +1,17 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * String minimum length constraint tag.
4
+ *
5
+ * Validates that a string's length is greater than or equal to the specified
6
+ * value. This tag ensures that string values meet a minimum character count
7
+ * requirement.
8
+ *
9
+ * Examples: type Username = string & MinLength<3>; // Username must be at least
10
+ * 3 characters type Password = string & MinLength<8>; // Password must be at
11
+ * least 8 characters
12
+ *
13
+ * @author Jeongho Nam - https://github.com/samchon
14
+ */
2
15
  export type MinLength<Value extends number> = TagBase<{
3
16
  target: "string";
4
17
  kind: "minLength";
@@ -1,4 +1,24 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Minimum value constraint tag.
4
+ *
5
+ * Enforces that a numeric value must be greater than or equal to the specified
6
+ * minimum. This constraint validates that the input value satisfies: input >=
7
+ * minimum.
8
+ *
9
+ * Example usage:
10
+ *
11
+ * ```typescript
12
+ * type Age = number & tags.Minimum<0>; // Age must be 0 or greater
13
+ * type Balance = bigint & tags.Minimum<0n>; // BigInt balance must be non-negative
14
+ * ```
15
+ *
16
+ * Note: This tag is mutually exclusive with ExclusiveMinimum. You cannot apply
17
+ * both Minimum and ExclusiveMinimum constraints to the same property.
18
+ *
19
+ * @author Jeongho Nam - https://github.com/samchon
20
+ * @template Value - The minimum value constraint (number or bigint literal)
21
+ */
2
22
  export type Minimum<Value extends number | bigint> = TagBase<{
3
23
  target: Value extends bigint ? "bigint" : "number";
4
24
  kind: "minimum";
@@ -1,4 +1,24 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Minimum value constraint tag.
4
+ *
5
+ * Enforces that a numeric value must be greater than or equal to the specified
6
+ * minimum. This constraint validates that the input value satisfies: input >=
7
+ * minimum.
8
+ *
9
+ * Example usage:
10
+ *
11
+ * ```typescript
12
+ * type Age = number & tags.Minimum<0>; // Age must be 0 or greater
13
+ * type Balance = bigint & tags.Minimum<0n>; // BigInt balance must be non-negative
14
+ * ```
15
+ *
16
+ * Note: This tag is mutually exclusive with ExclusiveMinimum. You cannot apply
17
+ * both Minimum and ExclusiveMinimum constraints to the same property.
18
+ *
19
+ * @author Jeongho Nam - https://github.com/samchon
20
+ * @template Value - The minimum value constraint (number or bigint literal)
21
+ */
2
22
  export type Minimum<Value extends number | bigint> = TagBase<{
3
23
  target: Value extends bigint ? "bigint" : "number";
4
24
  kind: "minimum";
@@ -1,4 +1,25 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Multiple of constraint tag.
4
+ *
5
+ * Enforces that a numeric value must be an exact multiple of the specified
6
+ * divisor. This constraint validates that the input value satisfies: input %
7
+ * divisor === 0.
8
+ *
9
+ * Example usage:
10
+ *
11
+ * ```typescript
12
+ * type EvenNumber = number & tags.MultipleOf<2>; // Must be even (2, 4, 6, ...)
13
+ * type DollarAmount = number & tags.MultipleOf<0.01>; // Must be in cents
14
+ * ```
15
+ *
16
+ * Common use cases include validating even/odd numbers, currency amounts, time
17
+ * intervals, or any value that must align to specific increments.
18
+ *
19
+ * @author Jeongho Nam - https://github.com/samchon
20
+ * @template Value - The divisor value that input must be a multiple of (number
21
+ * or bigint literal)
22
+ */
2
23
  export type MultipleOf<Value extends number | bigint> = TagBase<{
3
24
  target: Value extends bigint ? "bigint" : "number";
4
25
  kind: "multipleOf";
@@ -1,4 +1,25 @@
1
1
  import { TagBase } from "./TagBase";
2
+ /**
3
+ * Multiple of constraint tag.
4
+ *
5
+ * Enforces that a numeric value must be an exact multiple of the specified
6
+ * divisor. This constraint validates that the input value satisfies: input %
7
+ * divisor === 0.
8
+ *
9
+ * Example usage:
10
+ *
11
+ * ```typescript
12
+ * type EvenNumber = number & tags.MultipleOf<2>; // Must be even (2, 4, 6, ...)
13
+ * type DollarAmount = number & tags.MultipleOf<0.01>; // Must be in cents
14
+ * ```
15
+ *
16
+ * Common use cases include validating even/odd numbers, currency amounts, time
17
+ * intervals, or any value that must align to specific increments.
18
+ *
19
+ * @author Jeongho Nam - https://github.com/samchon
20
+ * @template Value - The divisor value that input must be a multiple of (number
21
+ * or bigint literal)
22
+ */
2
23
  export type MultipleOf<Value extends number | bigint> = TagBase<{
3
24
  target: Value extends bigint ? "bigint" : "number";
4
25
  kind: "multipleOf";