typia 13.1.0 → 13.1.19

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 (516) hide show
  1. package/README.md +3 -0
  2. package/lib/_virtual/_rolldown/runtime.mjs +1 -5
  3. package/lib/executable/FileSystemIdentity.d.ts +21 -0
  4. package/lib/executable/FileSystemIdentity.js +183 -0
  5. package/lib/executable/FileSystemIdentity.js.map +1 -0
  6. package/lib/executable/FileSystemIdentity.mjs +129 -0
  7. package/lib/executable/FileSystemIdentity.mjs.map +1 -0
  8. package/lib/executable/TypiaGenerateWizard.js +264 -104
  9. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  10. package/lib/executable/TypiaGenerateWizard.mjs +233 -93
  11. package/lib/executable/TypiaGenerateWizard.mjs.map +1 -1
  12. package/lib/functional.d.ts +15 -12
  13. package/lib/functional.js.map +1 -1
  14. package/lib/functional.mjs.map +1 -1
  15. package/lib/internal/_ProtobufReader.d.ts +17 -0
  16. package/lib/internal/_ProtobufReader.js +117 -45
  17. package/lib/internal/_ProtobufReader.js.map +1 -1
  18. package/lib/internal/_ProtobufReader.mjs +108 -39
  19. package/lib/internal/_ProtobufReader.mjs.map +1 -1
  20. package/lib/internal/_createStandardSchema.js +18 -1
  21. package/lib/internal/_createStandardSchema.js.map +1 -1
  22. package/lib/internal/_createStandardSchema.mjs +12 -1
  23. package/lib/internal/_createStandardSchema.mjs.map +1 -1
  24. package/lib/internal/_decimal.d.ts +14 -0
  25. package/lib/internal/_decimal.js +61 -0
  26. package/lib/internal/_decimal.js.map +1 -0
  27. package/lib/internal/_decimal.mjs +49 -0
  28. package/lib/internal/_decimal.mjs.map +1 -0
  29. package/lib/internal/_httpQueryParseURLSearchParams.js +23 -2
  30. package/lib/internal/_httpQueryParseURLSearchParams.js.map +1 -1
  31. package/lib/internal/_httpQueryParseURLSearchParams.mjs +20 -2
  32. package/lib/internal/_httpQueryParseURLSearchParams.mjs.map +1 -1
  33. package/lib/internal/_isFormatByte.js +2 -5
  34. package/lib/internal/_isFormatByte.js.map +1 -1
  35. package/lib/internal/_isFormatByte.mjs +2 -5
  36. package/lib/internal/_isFormatByte.mjs.map +1 -1
  37. package/lib/internal/_isFormatDate.js +15 -2
  38. package/lib/internal/_isFormatDate.js.map +1 -1
  39. package/lib/internal/_isFormatDate.mjs +22 -2
  40. package/lib/internal/_isFormatDate.mjs.map +1 -1
  41. package/lib/internal/_isFormatDateTime.js +21 -2
  42. package/lib/internal/_isFormatDateTime.js.map +1 -1
  43. package/lib/internal/_isFormatDateTime.mjs +13 -2
  44. package/lib/internal/_isFormatDateTime.mjs.map +1 -1
  45. package/lib/internal/_isFormatIri.js +3 -2
  46. package/lib/internal/_isFormatIri.js.map +1 -1
  47. package/lib/internal/_isFormatIri.mjs +3 -2
  48. package/lib/internal/_isFormatIri.mjs.map +1 -1
  49. package/lib/internal/_isFormatIriReference.js +10 -2
  50. package/lib/internal/_isFormatIriReference.js.map +1 -1
  51. package/lib/internal/_isFormatIriReference.mjs +9 -2
  52. package/lib/internal/_isFormatIriReference.mjs.map +1 -1
  53. package/lib/internal/_isFormatUriReference.js +1 -1
  54. package/lib/internal/_isFormatUriReference.js.map +1 -1
  55. package/lib/internal/_isFormatUriReference.mjs +1 -1
  56. package/lib/internal/_isFormatUriReference.mjs.map +1 -1
  57. package/lib/internal/_isMultipleOf.d.ts +1 -0
  58. package/lib/internal/_isMultipleOf.js +13 -0
  59. package/lib/internal/_isMultipleOf.js.map +1 -0
  60. package/lib/internal/_isMultipleOf.mjs +12 -0
  61. package/lib/internal/_isMultipleOf.mjs.map +1 -0
  62. package/lib/internal/_isTypeFloat.js +1 -1
  63. package/lib/internal/_isTypeFloat.js.map +1 -1
  64. package/lib/internal/_isTypeFloat.mjs +1 -1
  65. package/lib/internal/_isTypeFloat.mjs.map +1 -1
  66. package/lib/internal/_isTypeInt64.js +1 -0
  67. package/lib/internal/_isTypeInt64.js.map +1 -1
  68. package/lib/internal/_isTypeInt64.mjs.map +1 -1
  69. package/lib/internal/_isTypeInt64Bigint.d.ts +1 -0
  70. package/lib/internal/_isTypeInt64Bigint.js +15 -0
  71. package/lib/internal/_isTypeInt64Bigint.js.map +1 -0
  72. package/lib/internal/_isTypeInt64Bigint.mjs +8 -0
  73. package/lib/internal/_isTypeInt64Bigint.mjs.map +1 -0
  74. package/lib/internal/_isTypeUint64.js +1 -0
  75. package/lib/internal/_isTypeUint64.js.map +1 -1
  76. package/lib/internal/_isTypeUint64.mjs.map +1 -1
  77. package/lib/internal/_isTypeUint64Bigint.d.ts +1 -0
  78. package/lib/internal/_isTypeUint64Bigint.js +10 -0
  79. package/lib/internal/_isTypeUint64Bigint.js.map +1 -0
  80. package/lib/internal/_isTypeUint64Bigint.mjs +8 -0
  81. package/lib/internal/_isTypeUint64Bigint.mjs.map +1 -0
  82. package/lib/internal/_isUniqueItems.js +96 -109
  83. package/lib/internal/_isUniqueItems.js.map +1 -1
  84. package/lib/internal/_isUniqueItems.mjs +62 -50
  85. package/lib/internal/_isUniqueItems.mjs.map +1 -1
  86. package/lib/internal/_notationAny.js +8 -1
  87. package/lib/internal/_notationAny.js.map +1 -1
  88. package/lib/internal/_notationAny.mjs +7 -1
  89. package/lib/internal/_notationAny.mjs.map +1 -1
  90. package/lib/internal/_notationAssign.d.ts +1 -0
  91. package/lib/internal/_notationAssign.js +18 -0
  92. package/lib/internal/_notationAssign.js.map +1 -0
  93. package/lib/internal/_notationAssign.mjs +17 -0
  94. package/lib/internal/_notationAssign.mjs.map +1 -0
  95. package/lib/internal/_notationCamel.js +30 -9
  96. package/lib/internal/_notationCamel.js.map +1 -1
  97. package/lib/internal/_notationCamel.mjs +13 -5
  98. package/lib/internal/_notationCamel.mjs.map +1 -1
  99. package/lib/internal/_notationKebab.d.ts +1 -0
  100. package/lib/internal/_notationKebab.js +15 -0
  101. package/lib/internal/_notationKebab.js.map +1 -0
  102. package/lib/internal/_notationKebab.mjs +15 -0
  103. package/lib/internal/_notationKebab.mjs.map +1 -0
  104. package/lib/internal/_notationKeyCollision.d.ts +1 -0
  105. package/lib/internal/_notationKeyCollision.js +8 -0
  106. package/lib/internal/_notationKeyCollision.js.map +1 -0
  107. package/lib/internal/_notationKeyCollision.mjs +8 -0
  108. package/lib/internal/_notationKeyCollision.mjs.map +1 -0
  109. package/lib/internal/_notationPascal.js +20 -5
  110. package/lib/internal/_notationPascal.js.map +1 -1
  111. package/lib/internal/_notationPascal.mjs +10 -5
  112. package/lib/internal/_notationPascal.mjs.map +1 -1
  113. package/lib/internal/_notationSnake.js +25 -22
  114. package/lib/internal/_notationSnake.js.map +1 -1
  115. package/lib/internal/_notationSnake.mjs +11 -11
  116. package/lib/internal/_notationSnake.mjs.map +1 -1
  117. package/lib/internal/_plainCloneAny.js +174 -38
  118. package/lib/internal/_plainCloneAny.js.map +1 -1
  119. package/lib/internal/_plainCloneAny.mjs +126 -22
  120. package/lib/internal/_plainCloneAny.mjs.map +1 -1
  121. package/lib/internal/_randomArray.d.ts +1 -1
  122. package/lib/internal/_randomArray.js +11 -4
  123. package/lib/internal/_randomArray.js.map +1 -1
  124. package/lib/internal/_randomArray.mjs +9 -3
  125. package/lib/internal/_randomArray.mjs.map +1 -1
  126. package/lib/internal/_randomFormatByte.d.ts +2 -1
  127. package/lib/internal/_randomFormatByte.js +2 -1
  128. package/lib/internal/_randomFormatByte.js.map +1 -1
  129. package/lib/internal/_randomFormatByte.mjs +2 -1
  130. package/lib/internal/_randomFormatByte.mjs.map +1 -1
  131. package/lib/internal/_randomFormatDate.d.ts +2 -0
  132. package/lib/internal/_randomFormatDate.js +3 -2
  133. package/lib/internal/_randomFormatDate.js.map +1 -1
  134. package/lib/internal/_randomFormatDate.mjs +3 -2
  135. package/lib/internal/_randomFormatDate.mjs.map +1 -1
  136. package/lib/internal/_randomFormatDatetime.d.ts +2 -0
  137. package/lib/internal/_randomFormatDatetime.js +3 -2
  138. package/lib/internal/_randomFormatDatetime.js.map +1 -1
  139. package/lib/internal/_randomFormatDatetime.mjs +3 -2
  140. package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
  141. package/lib/internal/_randomFormatDuration.d.ts +2 -1
  142. package/lib/internal/_randomFormatDuration.js +3 -2
  143. package/lib/internal/_randomFormatDuration.js.map +1 -1
  144. package/lib/internal/_randomFormatDuration.mjs +3 -2
  145. package/lib/internal/_randomFormatDuration.mjs.map +1 -1
  146. package/lib/internal/_randomFormatEmail.d.ts +2 -1
  147. package/lib/internal/_randomFormatEmail.js +8 -1
  148. package/lib/internal/_randomFormatEmail.js.map +1 -1
  149. package/lib/internal/_randomFormatEmail.mjs +5 -1
  150. package/lib/internal/_randomFormatEmail.mjs.map +1 -1
  151. package/lib/internal/_randomFormatHostname.d.ts +8 -1
  152. package/lib/internal/_randomFormatHostname.js +45 -2
  153. package/lib/internal/_randomFormatHostname.js.map +1 -1
  154. package/lib/internal/_randomFormatHostname.mjs +38 -2
  155. package/lib/internal/_randomFormatHostname.mjs.map +1 -1
  156. package/lib/internal/_randomFormatIdnEmail.d.ts +2 -1
  157. package/lib/internal/_randomFormatIdnEmail.js +16 -2
  158. package/lib/internal/_randomFormatIdnEmail.js.map +1 -1
  159. package/lib/internal/_randomFormatIdnEmail.mjs +11 -2
  160. package/lib/internal/_randomFormatIdnEmail.mjs.map +1 -1
  161. package/lib/internal/_randomFormatIdnHostname.d.ts +2 -1
  162. package/lib/internal/_randomFormatIdnHostname.js +26 -1
  163. package/lib/internal/_randomFormatIdnHostname.js.map +1 -1
  164. package/lib/internal/_randomFormatIdnHostname.mjs +25 -2
  165. package/lib/internal/_randomFormatIdnHostname.mjs.map +1 -1
  166. package/lib/internal/_randomFormatIpv4.d.ts +2 -1
  167. package/lib/internal/_randomFormatIpv4.js +2 -1
  168. package/lib/internal/_randomFormatIpv4.js.map +1 -1
  169. package/lib/internal/_randomFormatIpv4.mjs +2 -1
  170. package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
  171. package/lib/internal/_randomFormatIpv6.d.ts +2 -1
  172. package/lib/internal/_randomFormatIpv6.js +2 -1
  173. package/lib/internal/_randomFormatIpv6.js.map +1 -1
  174. package/lib/internal/_randomFormatIpv6.mjs +2 -1
  175. package/lib/internal/_randomFormatIpv6.mjs.map +1 -1
  176. package/lib/internal/_randomFormatIri.d.ts +2 -1
  177. package/lib/internal/_randomFormatIri.js +1 -1
  178. package/lib/internal/_randomFormatIri.js.map +1 -1
  179. package/lib/internal/_randomFormatIri.mjs +1 -1
  180. package/lib/internal/_randomFormatIri.mjs.map +1 -1
  181. package/lib/internal/_randomFormatIriReference.d.ts +2 -1
  182. package/lib/internal/_randomFormatIriReference.js +1 -1
  183. package/lib/internal/_randomFormatIriReference.js.map +1 -1
  184. package/lib/internal/_randomFormatIriReference.mjs +1 -1
  185. package/lib/internal/_randomFormatIriReference.mjs.map +1 -1
  186. package/lib/internal/_randomFormatJsonPointer.d.ts +2 -1
  187. package/lib/internal/_randomFormatJsonPointer.js +8 -1
  188. package/lib/internal/_randomFormatJsonPointer.js.map +1 -1
  189. package/lib/internal/_randomFormatJsonPointer.mjs +5 -1
  190. package/lib/internal/_randomFormatJsonPointer.mjs.map +1 -1
  191. package/lib/internal/_randomFormatPassword.d.ts +2 -1
  192. package/lib/internal/_randomFormatPassword.js +7 -5
  193. package/lib/internal/_randomFormatPassword.js.map +1 -1
  194. package/lib/internal/_randomFormatPassword.mjs +5 -1
  195. package/lib/internal/_randomFormatPassword.mjs.map +1 -1
  196. package/lib/internal/_randomFormatRegex.d.ts +2 -1
  197. package/lib/internal/_randomFormatRegex.js +2 -1
  198. package/lib/internal/_randomFormatRegex.js.map +1 -1
  199. package/lib/internal/_randomFormatRegex.mjs +2 -1
  200. package/lib/internal/_randomFormatRegex.mjs.map +1 -1
  201. package/lib/internal/_randomFormatRelativeJsonPointer.d.ts +2 -1
  202. package/lib/internal/_randomFormatRelativeJsonPointer.js +3 -2
  203. package/lib/internal/_randomFormatRelativeJsonPointer.js.map +1 -1
  204. package/lib/internal/_randomFormatRelativeJsonPointer.mjs +3 -2
  205. package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
  206. package/lib/internal/_randomFormatTime.d.ts +2 -1
  207. package/lib/internal/_randomFormatTime.js +3 -2
  208. package/lib/internal/_randomFormatTime.js.map +1 -1
  209. package/lib/internal/_randomFormatTime.mjs +3 -2
  210. package/lib/internal/_randomFormatTime.mjs.map +1 -1
  211. package/lib/internal/_randomFormatUri.d.ts +2 -1
  212. package/lib/internal/_randomFormatUri.js +1 -1
  213. package/lib/internal/_randomFormatUri.js.map +1 -1
  214. package/lib/internal/_randomFormatUri.mjs +1 -1
  215. package/lib/internal/_randomFormatUri.mjs.map +1 -1
  216. package/lib/internal/_randomFormatUriReference.d.ts +2 -1
  217. package/lib/internal/_randomFormatUriReference.js +1 -1
  218. package/lib/internal/_randomFormatUriReference.js.map +1 -1
  219. package/lib/internal/_randomFormatUriReference.mjs +1 -1
  220. package/lib/internal/_randomFormatUriReference.mjs.map +1 -1
  221. package/lib/internal/_randomFormatUriTemplate.d.ts +2 -1
  222. package/lib/internal/_randomFormatUriTemplate.js +1 -1
  223. package/lib/internal/_randomFormatUriTemplate.js.map +1 -1
  224. package/lib/internal/_randomFormatUriTemplate.mjs +1 -1
  225. package/lib/internal/_randomFormatUriTemplate.mjs.map +1 -1
  226. package/lib/internal/_randomFormatUrl.d.ts +2 -1
  227. package/lib/internal/_randomFormatUrl.js +21 -1
  228. package/lib/internal/_randomFormatUrl.js.map +1 -1
  229. package/lib/internal/_randomFormatUrl.mjs +18 -1
  230. package/lib/internal/_randomFormatUrl.mjs.map +1 -1
  231. package/lib/internal/_randomFormatUuid.d.ts +2 -1
  232. package/lib/internal/_randomFormatUuid.js +3 -2
  233. package/lib/internal/_randomFormatUuid.js.map +1 -1
  234. package/lib/internal/_randomFormatUuid.mjs +3 -2
  235. package/lib/internal/_randomFormatUuid.mjs.map +1 -1
  236. package/lib/internal/_randomInteger.js +59 -28
  237. package/lib/internal/_randomInteger.js.map +1 -1
  238. package/lib/internal/_randomInteger.mjs +56 -16
  239. package/lib/internal/_randomInteger.mjs.map +1 -1
  240. package/lib/internal/_randomMultiple.d.ts +8 -0
  241. package/lib/internal/_randomMultiple.js +168 -0
  242. package/lib/internal/_randomMultiple.js.map +1 -0
  243. package/lib/internal/_randomMultiple.mjs +158 -0
  244. package/lib/internal/_randomMultiple.mjs.map +1 -0
  245. package/lib/internal/_randomNumber.js +42 -42
  246. package/lib/internal/_randomNumber.js.map +1 -1
  247. package/lib/internal/_randomNumber.mjs +41 -27
  248. package/lib/internal/_randomNumber.mjs.map +1 -1
  249. package/lib/internal/_randomPattern.d.ts +2 -1
  250. package/lib/internal/_randomPattern.js +19 -4
  251. package/lib/internal/_randomPattern.js.map +1 -1
  252. package/lib/internal/_randomPattern.mjs +10 -4
  253. package/lib/internal/_randomPattern.mjs.map +1 -1
  254. package/lib/internal/_randomStringLength.d.ts +33 -0
  255. package/lib/internal/_randomStringLength.js +48 -0
  256. package/lib/internal/_randomStringLength.js.map +1 -0
  257. package/lib/internal/_randomStringLength.mjs +44 -0
  258. package/lib/internal/_randomStringLength.mjs.map +1 -0
  259. package/lib/internal/_stringLength.d.ts +1 -0
  260. package/lib/internal/_stringLength.js +11 -0
  261. package/lib/internal/_stringLength.js.map +1 -0
  262. package/lib/internal/_stringLength.mjs +10 -0
  263. package/lib/internal/_stringLength.mjs.map +1 -0
  264. package/lib/internal/_validateReport.js +4 -1
  265. package/lib/internal/_validateReport.js.map +1 -1
  266. package/lib/internal/_validateReport.mjs +2 -1
  267. package/lib/internal/_validateReport.mjs.map +1 -1
  268. package/lib/internal/private/__notationRename.d.ts +14 -0
  269. package/lib/internal/private/__notationRename.js +25 -0
  270. package/lib/internal/private/__notationRename.js.map +1 -0
  271. package/lib/internal/private/__notationRename.mjs +24 -0
  272. package/lib/internal/private/__notationRename.mjs.map +1 -0
  273. package/lib/json.d.ts +2 -2
  274. package/lib/json.mjs.map +1 -1
  275. package/lib/module.d.ts +2 -2
  276. package/lib/module.js.map +1 -1
  277. package/lib/module.mjs.map +1 -1
  278. package/lib/notations.d.ts +20 -4
  279. package/lib/notations.js.map +1 -1
  280. package/lib/notations.mjs.map +1 -1
  281. package/native/adapter/plugin_options.go +117 -0
  282. package/native/adapter/plugin_options_payload_matrix_test.go +181 -0
  283. package/native/cmd/ttsc-typia/any_array_type_tags_transform_test.go +63 -9
  284. package/native/cmd/ttsc-typia/assert_guard_factory_contract_test.go +152 -0
  285. package/native/cmd/ttsc-typia/build.go +81 -64
  286. package/native/cmd/ttsc-typia/build_no_emit_preserves_analysis_options_test.go +67 -0
  287. package/native/cmd/ttsc-typia/build_no_emit_transform_diagnostics_test.go +138 -0
  288. package/native/cmd/ttsc-typia/build_plugin_options_come_from_payload_test.go +48 -0
  289. package/native/cmd/ttsc-typia/build_transactional_emit_success_test.go +81 -0
  290. package/native/cmd/ttsc-typia/build_transform_failure_atomicity_test.go +138 -0
  291. package/native/cmd/ttsc-typia/command_routes_and_diagnostics_coverage_test.go +3 -1
  292. package/native/cmd/ttsc-typia/compare_less_nan_transform_test.go +98 -0
  293. package/native/cmd/ttsc-typia/compare_native_object_overmatch_transform_test.go +161 -0
  294. package/native/cmd/ttsc-typia/compare_nondiscriminable_union_transform_test.go +343 -0
  295. package/native/cmd/ttsc-typia/compare_union_discrimination_transform_test.go +289 -0
  296. package/native/cmd/ttsc-typia/escaped_property_key_path_transform_test.go +193 -0
  297. package/native/cmd/ttsc-typia/finite_option_number_leaf_transform_test.go +240 -0
  298. package/native/cmd/ttsc-typia/functional_promised_type_transform_test.go +220 -0
  299. package/native/cmd/ttsc-typia/functional_receiver_transform_test.go +232 -0
  300. package/native/cmd/ttsc-typia/is_object_function_member_transform_test.go +205 -0
  301. package/native/cmd/ttsc-typia/json_application_alias_function_validation_transform_test.go +151 -0
  302. package/native/cmd/ttsc-typia/json_is_stringify_finite_number_transform_test.go +198 -0
  303. package/native/cmd/ttsc-typia/json_stringify_special_key_transform_test.go +238 -0
  304. package/native/cmd/ttsc-typia/main_wasm.go +21 -2
  305. package/native/cmd/ttsc-typia/native_collection_identity_is_transform_test.go +234 -0
  306. package/native/cmd/ttsc-typia/native_generic_name_guard_is_transform_test.go +194 -0
  307. package/native/cmd/ttsc-typia/native_name_collision_is_transform_test.go +204 -0
  308. package/native/cmd/ttsc-typia/non_trailing_rest_tuple_transform_test.go +23 -11
  309. package/native/cmd/ttsc-typia/notation_dynamic_keys_transform_test.go +286 -0
  310. package/native/cmd/ttsc-typia/notation_kebab_case_transform_test.go +1 -1
  311. package/native/cmd/ttsc-typia/notation_literal_collision_transform_test.go +164 -0
  312. package/native/cmd/ttsc-typia/notation_pascal_case_transform_test.go +230 -0
  313. package/native/cmd/ttsc-typia/notation_unicode_key_transform_test.go +309 -0
  314. package/native/cmd/ttsc-typia/pattern_line_terminator_escape_transform_test.go +224 -0
  315. package/native/cmd/ttsc-typia/plain_prune_union_object_overmatch_transform_test.go +219 -0
  316. package/native/cmd/ttsc-typia/plugin_options_payload_helpers_test.go +181 -0
  317. package/native/cmd/ttsc-typia/private_field_filter_is_transform_test.go +278 -0
  318. package/native/cmd/ttsc-typia/project_catalog_transform_coverage_test.go +73 -27
  319. package/native/cmd/ttsc-typia/project_dependencies_barrel_reexport_transform_test.go +120 -0
  320. package/native/cmd/ttsc-typia/project_dependencies_collapsed_alias_transform_test.go +134 -0
  321. package/native/cmd/ttsc-typia/project_dependencies_custom_lib_name_transform_test.go +135 -0
  322. package/native/cmd/ttsc-typia/project_dependencies_default_barrel_transform_test.go +114 -0
  323. package/native/cmd/ttsc-typia/project_dependencies_empty_heritage_transform_test.go +100 -0
  324. package/native/cmd/ttsc-typia/project_dependencies_envelope_transform_test.go +148 -0
  325. package/native/cmd/ttsc-typia/project_dependencies_index_signature_alias_transform_test.go +139 -0
  326. package/native/cmd/ttsc-typia/project_dependencies_local_reexport_transform_test.go +122 -0
  327. package/native/cmd/ttsc-typia/project_dependencies_signature_alias_transform_test.go +125 -0
  328. package/native/cmd/ttsc-typia/project_dependencies_star_barrel_transform_test.go +112 -0
  329. package/native/cmd/ttsc-typia/project_reference_graph_envelope_transform_test.go +190 -0
  330. package/native/cmd/ttsc-typia/protobuf_is_encode_finite_number_transform_test.go +98 -0
  331. package/native/cmd/ttsc-typia/protobuf_sequence_field_numbers_transform_test.go +52 -22
  332. package/native/cmd/ttsc-typia/symbol_key_member_filter_transform_test.go +279 -0
  333. package/native/cmd/ttsc-typia/template_interpolation_type_tags_transform_test.go +86 -23
  334. package/native/cmd/ttsc-typia/template_literal_type_tags_transform_test.go +3 -1
  335. package/native/cmd/ttsc-typia/transform.go +228 -39
  336. package/native/cmd/ttsc-typia/{transform_declaration_source_produces_no_js_test.go → transform_declaration_source_produces_no_javascript_test.go} +10 -2
  337. package/native/cmd/ttsc-typia/transform_fixtures_emit_coverage_test.go +21 -4
  338. package/native/cmd/ttsc-typia/transform_helpers_test.go +159 -1
  339. package/native/cmd/ttsc-typia/transform_plugin_options_come_from_payload_test.go +43 -0
  340. package/native/cmd/ttsc-typia/transform_single_file_failure_atomicity_test.go +114 -0
  341. package/native/cmd/ttsc-typia/transform_single_file_failure_writes_no_stdout_test.go +43 -0
  342. package/native/cmd/ttsc-typia/transform_single_file_js_distinguishes_same_basename_sources_test.go +81 -0
  343. package/native/cmd/ttsc-typia/transform_single_file_js_empty_emit_reports_no_output_test.go +100 -0
  344. package/native/cmd/ttsc-typia/transform_single_file_js_locates_output_across_layouts_test.go +160 -0
  345. package/native/cmd/ttsc-typia/transform_single_file_success_publishes_artifact_test.go +54 -0
  346. package/native/cmd/ttsc-typia/transform_wasm_host_argv_reports_diagnostics_test.go +39 -0
  347. package/native/cmd/ttsc-typia/tuple_optional_compare_clone_transform_test.go +227 -0
  348. package/native/core/factories/FormatCheatSheet.go +40 -7
  349. package/native/core/factories/IdentifierFactory.go +131 -4
  350. package/native/core/factories/MetadataCommentTagFactory.go +83 -40
  351. package/native/core/factories/MetadataTypeTagFactory.go +13 -1
  352. package/native/core/factories/NumericRangeFactory.go +60 -17
  353. package/native/core/factories/ProtobufFactory.go +7 -4
  354. package/native/core/factories/factory_utility_coverage_test.go +8 -2
  355. package/native/core/factories/format_alias_resolves_to_cheat_sheet_test.go +57 -0
  356. package/native/core/factories/format_alias_table_targets_the_cheat_sheet_test.go +44 -0
  357. package/native/core/factories/identifier_factory_postfix_escapes_every_key_test.go +147 -0
  358. package/native/core/factories/identifier_factory_postfix_survives_every_code_point_test.go +86 -0
  359. package/native/core/factories/internal/metadata/MetadataHelper.go +134 -7
  360. package/native/core/factories/internal/metadata/emplace_metadata_object.go +116 -8
  361. package/native/core/factories/internal/metadata/iterate_metadata.go +6 -0
  362. package/native/core/factories/internal/metadata/iterate_metadata_function.go +4 -11
  363. package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +8 -6
  364. package/native/core/factories/internal/metadata/iterate_metadata_map.go +9 -0
  365. package/native/core/factories/internal/metadata/iterate_metadata_native.go +27 -2
  366. package/native/core/factories/internal/metadata/iterate_metadata_set.go +9 -0
  367. package/native/core/factories/internal/metadata/js_doc_link_text_test.go +69 -0
  368. package/native/core/factories/internal/metadata/type_arguments_precondition_test.go +70 -0
  369. package/native/core/factories/metadata_comment_tag_factory_coverage_test.go +39 -0
  370. package/native/core/factories/metadata_comment_tag_factory_exclusivity_matches_interface_test.go +84 -0
  371. package/native/core/factories/metadata_type_tag_factory_accepts_legal_tag_combinations_test.go +60 -0
  372. package/native/core/factories/metadata_type_tag_factory_declarations_test.go +86 -0
  373. package/native/core/factories/metadata_type_tag_factory_keeps_bool_form_exclusivity_test.go +38 -0
  374. package/native/core/factories/metadata_type_tag_factory_rejects_cross_kind_exclusive_tags_test.go +65 -0
  375. package/native/core/factories/metadata_type_tag_factory_rejects_duplicated_array_form_tags_test.go +41 -0
  376. package/native/core/factories/numeric_range_factory_enforces_64bit_bounds_test.go +69 -0
  377. package/native/core/factories/protobuf_recovery_ownership_test.go +64 -0
  378. package/native/core/programmers/IsProgrammer.go +15 -1
  379. package/native/core/programmers/RandomProgrammer.go +51 -14
  380. package/native/core/programmers/compare/CompareEqualProgrammer.go +393 -5
  381. package/native/core/programmers/compare/CompareLessProgrammer.go +4 -2
  382. package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +4 -6
  383. package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +5 -13
  384. package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +6 -14
  385. package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +4 -6
  386. package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +49 -14
  387. package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +5 -13
  388. package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +4 -6
  389. package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +5 -13
  390. package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +5 -13
  391. package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +4 -17
  392. package/native/core/programmers/helpers/CloneJoiner.go +32 -0
  393. package/native/core/programmers/helpers/NotationJoiner.go +86 -28
  394. package/native/core/programmers/helpers/StringifyJoinder.go +32 -1
  395. package/native/core/programmers/helpers/UnionExplorer.go +203 -61
  396. package/native/core/programmers/helpers/joiner_branch_coverage_test.go +5 -3
  397. package/native/core/programmers/helpers/union_explorer_coverage_test.go +1 -1
  398. package/native/core/programmers/internal/CheckerProgrammer.go +100 -48
  399. package/native/core/programmers/iterate/check_template.go +344 -32
  400. package/native/core/programmers/iterate/json_schema_discriminator.go +36 -10
  401. package/native/core/programmers/iterate/json_schema_discriminator_declaration_syntax_test.go +205 -0
  402. package/native/core/programmers/iterate/openapi_v3_downgrader.go +641 -0
  403. package/native/core/programmers/iterate/openapi_v3_downgrader_boolean_default_test.go +95 -0
  404. package/native/core/programmers/iterate/openapi_v3_downgrader_test.go +123 -0
  405. package/native/core/programmers/iterate/template_interpolation_tags_test.go +40 -8
  406. package/native/core/programmers/iterate/template_runtime_pattern.go +52 -7
  407. package/native/core/programmers/json/JsonApplicationProgrammer.go +45 -11
  408. package/native/core/programmers/json/JsonSchemasProgrammer.go +12 -2
  409. package/native/core/programmers/llm/LlmApplicationProgrammer.go +12 -10
  410. package/native/core/programmers/llm/LlmSchemaProgrammer.go +23 -6
  411. package/native/core/programmers/llm/llm_reference_codec_test.go +24 -0
  412. package/native/core/programmers/notations/NotationGeneralProgrammer.go +183 -67
  413. package/native/core/programmers/notations/notation_general_helpers_test.go +1 -3
  414. package/native/core/programmers/notations/notation_general_programmer_pascal_multiword_test.go +72 -0
  415. package/native/core/programmers/notations/notation_general_programmer_underscore_boundary_test.go +68 -0
  416. package/native/core/programmers/plain/PlainClassifyProgrammer.go +23 -15
  417. package/native/core/programmers/plain/PlainCloneProgrammer.go +20 -7
  418. package/native/core/programmers/plain/PlainPruneProgrammer.go +19 -5
  419. package/native/core/programmers/plain/plain_tuple_seed_recovery_ownership_test.go +25 -0
  420. package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +37 -28
  421. package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +40 -21
  422. package/native/core/programmers/protobuf/protobuf_programmer_helper_coverage_test.go +26 -0
  423. package/native/core/programmers/random_programmer_length_argument_test.go +53 -0
  424. package/native/core/schemas/metadata/MetadataCollection.go +270 -20
  425. package/native/core/schemas/metadata/MetadataDependency.go +388 -0
  426. package/native/core/schemas/metadata/MetadataObjectType.go +17 -4
  427. package/native/core/schemas/metadata/metadata_collection_generic_argument_dot_test.go +122 -0
  428. package/native/core/schemas/metadata/metadata_collection_name_allocation_test.go +147 -0
  429. package/native/core/schemas/metadata/metadata_collection_openapi_name_cascade_test.go +55 -0
  430. package/native/core/schemas/metadata/metadata_collection_openapi_name_test.go +68 -0
  431. package/native/core/utils/PatternUtil.go +13 -0
  432. package/native/core/utils/PromiseTypeFactory.go +59 -0
  433. package/native/core/utils/ProtobufNameEncoder.go +8 -0
  434. package/native/core/utils/promise_type_factory_semantics_test.go +118 -0
  435. package/native/go.mod +9 -1
  436. package/native/transform/CallExpressionTransformer.go +12 -0
  437. package/native/transform/features/json/JsonApplicationTransformer.go +1 -1
  438. package/native/transform/features/json/JsonSchemaTransformer.go +1 -1
  439. package/native/transform/features/json/JsonSchemasTransformer.go +5 -4
  440. package/package.json +16 -4
  441. package/src/executable/FileSystemIdentity.ts +189 -0
  442. package/src/executable/TypiaGenerateWizard.ts +377 -110
  443. package/src/functional.ts +30 -60
  444. package/src/internal/_ProtobufReader.ts +129 -43
  445. package/src/internal/_createStandardSchema.ts +15 -1
  446. package/src/internal/_decimal.ts +69 -0
  447. package/src/internal/_httpQueryParseURLSearchParams.ts +24 -2
  448. package/src/internal/_isFormatByte.ts +2 -5
  449. package/src/internal/_isFormatDate.ts +15 -2
  450. package/src/internal/_isFormatDateTime.ts +28 -2
  451. package/src/internal/_isFormatIri.ts +5 -2
  452. package/src/internal/_isFormatIriReference.ts +11 -3
  453. package/src/internal/_isFormatUriReference.ts +1 -1
  454. package/src/internal/_isMultipleOf.ts +8 -0
  455. package/src/internal/_isTypeFloat.ts +1 -1
  456. package/src/internal/_isTypeInt64.ts +1 -0
  457. package/src/internal/_isTypeInt64Bigint.ts +12 -0
  458. package/src/internal/_isTypeUint64.ts +1 -0
  459. package/src/internal/_isTypeUint64Bigint.ts +7 -0
  460. package/src/internal/_isUniqueItems.ts +134 -132
  461. package/src/internal/_notationAny.ts +9 -4
  462. package/src/internal/_notationAssign.ts +20 -0
  463. package/src/internal/_notationCamel.ts +31 -10
  464. package/src/internal/_notationKebab.ts +11 -0
  465. package/src/internal/_notationKeyCollision.ts +9 -0
  466. package/src/internal/_notationPascal.ts +19 -6
  467. package/src/internal/_notationSnake.ts +24 -21
  468. package/src/internal/_plainCloneAny.ts +208 -33
  469. package/src/internal/_randomArray.ts +13 -4
  470. package/src/internal/_randomFormatByte.ts +4 -1
  471. package/src/internal/_randomFormatDate.ts +17 -12
  472. package/src/internal/_randomFormatDatetime.ts +15 -10
  473. package/src/internal/_randomFormatDuration.ts +16 -14
  474. package/src/internal/_randomFormatEmail.ts +8 -2
  475. package/src/internal/_randomFormatHostname.ts +48 -1
  476. package/src/internal/_randomFormatIdnEmail.ts +18 -2
  477. package/src/internal/_randomFormatIdnHostname.ts +34 -2
  478. package/src/internal/_randomFormatIpv4.ts +3 -2
  479. package/src/internal/_randomFormatIpv6.ts +3 -2
  480. package/src/internal/_randomFormatIri.ts +3 -1
  481. package/src/internal/_randomFormatIriReference.ts +3 -1
  482. package/src/internal/_randomFormatJsonPointer.ts +8 -2
  483. package/src/internal/_randomFormatPassword.ts +11 -6
  484. package/src/internal/_randomFormatRegex.ts +4 -1
  485. package/src/internal/_randomFormatRelativeJsonPointer.ts +13 -6
  486. package/src/internal/_randomFormatTime.ts +13 -10
  487. package/src/internal/_randomFormatUri.ts +3 -1
  488. package/src/internal/_randomFormatUriReference.ts +3 -1
  489. package/src/internal/_randomFormatUriTemplate.ts +3 -1
  490. package/src/internal/_randomFormatUrl.ts +25 -2
  491. package/src/internal/_randomFormatUuid.ts +10 -6
  492. package/src/internal/_randomInteger.ts +87 -40
  493. package/src/internal/_randomMultiple.ts +245 -0
  494. package/src/internal/_randomNumber.ts +72 -55
  495. package/src/internal/_randomPattern.ts +26 -4
  496. package/src/internal/_randomStringLength.ts +72 -0
  497. package/src/internal/_stringLength.ts +5 -0
  498. package/src/internal/_validateReport.ts +5 -1
  499. package/src/internal/private/__notationRename.ts +24 -0
  500. package/src/json.ts +2 -2
  501. package/src/module.ts +4 -6
  502. package/src/notations.ts +20 -4
  503. package/lib/internal/private/__notationCapitalize.d.ts +0 -1
  504. package/lib/internal/private/__notationCapitalize.js +0 -6
  505. package/lib/internal/private/__notationCapitalize.js.map +0 -1
  506. package/lib/internal/private/__notationCapitalize.mjs +0 -6
  507. package/lib/internal/private/__notationCapitalize.mjs.map +0 -1
  508. package/lib/internal/private/__notationUnsnake.d.ts +0 -4
  509. package/lib/internal/private/__notationUnsnake.js +0 -26
  510. package/lib/internal/private/__notationUnsnake.js.map +0 -1
  511. package/lib/internal/private/__notationUnsnake.mjs +0 -15
  512. package/lib/internal/private/__notationUnsnake.mjs.map +0 -1
  513. package/native/cmd/ttsc-typia/plugin_options_missing_config_test.go +0 -26
  514. package/native/cmd/ttsc-typia/plugin_options_undefined_false_test.go +0 -36
  515. package/src/internal/private/__notationCapitalize.ts +0 -2
  516. package/src/internal/private/__notationUnsnake.ts +0 -24
@@ -1,63 +1,63 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports._randomNumber = void 0;
4
+ const _randomMultiple_1 = require("./_randomMultiple");
4
5
  const _randomNumber = (schema) => {
5
- var _a, _b, _c, _d, _e, _f, _g, _h;
6
- const minimum = (_b = (_a = schema.minimum) !== null && _a !== void 0 ? _a : schema.exclusiveMinimum) !== null && _b !== void 0 ? _b : ((_c = schema.multipleOf) !== null && _c !== void 0 ? _c : 1) *
7
- (schema.maximum === undefined && schema.exclusiveMaximum === undefined
8
- ? 0
9
- : ((_d = schema.maximum) !== null && _d !== void 0 ? _d : schema.exclusiveMaximum) - 100);
10
- const maximum = (_f = (_e = schema.maximum) !== null && _e !== void 0 ? _e : schema.exclusiveMaximum) !== null && _f !== void 0 ? _f : ((_g = schema.multipleOf) !== null && _g !== void 0 ? _g : 1) *
11
- (schema.minimum === undefined && schema.exclusiveMinimum === undefined
12
- ? 100
13
- : ((_h = schema.minimum) !== null && _h !== void 0 ? _h : schema.exclusiveMinimum) + 100);
6
+ var _a, _b, _c, _d, _e, _f;
7
+ const lower = getLowerBoundary(schema);
8
+ const upper = getUpperBoundary(schema);
9
+ const minimum = (_a = lower === null || lower === void 0 ? void 0 : lower.value) !== null && _a !== void 0 ? _a : (upper === null ? 0 : upper.value - 100);
10
+ const maximum = (_b = upper === null || upper === void 0 ? void 0 : upper.value) !== null && _b !== void 0 ? _b : (lower === null ? 100 : lower.value + 100);
14
11
  if (minimum > maximum)
15
12
  throw new Error("Minimum value is greater than maximum value.");
16
13
  return schema.multipleOf === undefined
17
14
  ? scalar({
18
15
  minimum,
19
16
  maximum,
20
- exclusiveMinimum: schema.exclusiveMinimum !== undefined,
21
- exclusiveMaximum: schema.exclusiveMaximum !== undefined,
17
+ exclusiveMinimum: (_c = lower === null || lower === void 0 ? void 0 : lower.exclusive) !== null && _c !== void 0 ? _c : false,
18
+ exclusiveMaximum: (_d = upper === null || upper === void 0 ? void 0 : upper.exclusive) !== null && _d !== void 0 ? _d : false,
22
19
  })
23
- : multiple({
20
+ : (0, _randomMultiple_1._randomMultiple)({
24
21
  minimum,
25
22
  maximum,
26
23
  multipleOf: schema.multipleOf,
27
- exclusiveMinimum: schema.exclusiveMinimum !== undefined,
28
- exclusiveMaximum: schema.exclusiveMaximum !== undefined,
24
+ exclusiveMinimum: (_e = lower === null || lower === void 0 ? void 0 : lower.exclusive) !== null && _e !== void 0 ? _e : false,
25
+ exclusiveMaximum: (_f = upper === null || upper === void 0 ? void 0 : upper.exclusive) !== null && _f !== void 0 ? _f : false,
26
+ integer: false,
29
27
  });
30
28
  };
31
29
  exports._randomNumber = _randomNumber;
32
- const scalar = (p) => {
33
- if (p.minimum === p.maximum && (p.exclusiveMinimum || p.exclusiveMaximum))
34
- throw new Error(p.exclusiveMinimum
35
- ? "Exclusive minimum value equals maximum value."
36
- : "Exclusive maximum value equals minimum value.");
37
- while (true) {
38
- const value = Math.random() * (p.maximum - p.minimum) + p.minimum;
39
- if (p.exclusiveMinimum && value === p.minimum)
40
- continue;
41
- else if (p.exclusiveMaximum && value === p.maximum)
42
- continue;
43
- return value;
30
+ const scalar = (props) => {
31
+ if (props.minimum === props.maximum &&
32
+ (props.exclusiveMinimum || props.exclusiveMaximum))
33
+ throw new Error("Exclusive numeric range is empty.");
34
+ const value = Math.random() * (props.maximum - props.minimum) + props.minimum;
35
+ if ((props.exclusiveMinimum && value === props.minimum) ||
36
+ (props.exclusiveMaximum && value === props.maximum)) {
37
+ const middle = props.minimum + (props.maximum - props.minimum) / 2;
38
+ if (middle <= props.minimum || middle >= props.maximum)
39
+ throw new Error("Exclusive numeric range has no representable value.");
40
+ return middle;
44
41
  }
42
+ return value;
45
43
  };
46
- const multiple = (p) => {
47
- let minimum = Math.ceil(p.minimum / p.multipleOf) * p.multipleOf;
48
- let maximum = Math.floor(p.maximum / p.multipleOf) * p.multipleOf;
49
- if (p.exclusiveMinimum === true && minimum % p.multipleOf === 0)
50
- minimum += p.multipleOf;
51
- if (p.exclusiveMaximum === true && maximum % p.multipleOf === 0)
52
- maximum -= p.multipleOf;
53
- if (minimum > maximum)
54
- throw new Error("The range of the integer is smaller than the multipleOf value.");
55
- const value = scalar({
56
- minimum,
57
- maximum,
58
- exclusiveMinimum: p.exclusiveMinimum,
59
- exclusiveMaximum: p.exclusiveMaximum,
60
- });
61
- return value - (value % p.multipleOf);
44
+ const getLowerBoundary = (schema) => selectBoundary(schema.minimum === undefined
45
+ ? null
46
+ : { value: schema.minimum, exclusive: false }, schema.exclusiveMinimum === undefined
47
+ ? null
48
+ : { value: schema.exclusiveMinimum, exclusive: true }, Math.max);
49
+ const getUpperBoundary = (schema) => selectBoundary(schema.maximum === undefined
50
+ ? null
51
+ : { value: schema.maximum, exclusive: false }, schema.exclusiveMaximum === undefined
52
+ ? null
53
+ : { value: schema.exclusiveMaximum, exclusive: true }, Math.min);
54
+ const selectBoundary = (x, y, compare) => {
55
+ if (x === null)
56
+ return y;
57
+ if (y === null)
58
+ return x;
59
+ if (x.value === y.value)
60
+ return { value: x.value, exclusive: x.exclusive || y.exclusive };
61
+ return compare(x.value, y.value) === x.value ? x : y;
62
62
  };
63
63
  //# sourceMappingURL=_randomNumber.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_randomNumber.js","sourceRoot":"","sources":["../../src/internal/_randomNumber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_randomNumber.js","sourceRoot":"","sources":["../../src/internal/_randomNumber.ts"],"names":[],"mappings":"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"}
@@ -1,43 +1,57 @@
1
+ import { _randomMultiple } from "./_randomMultiple.mjs";
1
2
  //#region src/internal/_randomNumber.ts
2
3
  const _randomNumber = (schema) => {
3
- const minimum = schema.minimum ?? schema.exclusiveMinimum ?? (schema.multipleOf ?? 1) * (schema.maximum === void 0 && schema.exclusiveMaximum === void 0 ? 0 : (schema.maximum ?? schema.exclusiveMaximum) - 100);
4
- const maximum = schema.maximum ?? schema.exclusiveMaximum ?? (schema.multipleOf ?? 1) * (schema.minimum === void 0 && schema.exclusiveMinimum === void 0 ? 100 : (schema.minimum ?? schema.exclusiveMinimum) + 100);
4
+ const lower = getLowerBoundary(schema);
5
+ const upper = getUpperBoundary(schema);
6
+ const minimum = lower?.value ?? (upper === null ? 0 : upper.value - 100);
7
+ const maximum = upper?.value ?? (lower === null ? 100 : lower.value + 100);
5
8
  if (minimum > maximum) throw new Error("Minimum value is greater than maximum value.");
6
9
  return schema.multipleOf === void 0 ? scalar({
7
10
  minimum,
8
11
  maximum,
9
- exclusiveMinimum: schema.exclusiveMinimum !== void 0,
10
- exclusiveMaximum: schema.exclusiveMaximum !== void 0
11
- }) : multiple({
12
+ exclusiveMinimum: lower?.exclusive ?? false,
13
+ exclusiveMaximum: upper?.exclusive ?? false
14
+ }) : _randomMultiple({
12
15
  minimum,
13
16
  maximum,
14
17
  multipleOf: schema.multipleOf,
15
- exclusiveMinimum: schema.exclusiveMinimum !== void 0,
16
- exclusiveMaximum: schema.exclusiveMaximum !== void 0
18
+ exclusiveMinimum: lower?.exclusive ?? false,
19
+ exclusiveMaximum: upper?.exclusive ?? false,
20
+ integer: false
17
21
  });
18
22
  };
19
- const scalar = (p) => {
20
- if (p.minimum === p.maximum && (p.exclusiveMinimum || p.exclusiveMaximum)) throw new Error(p.exclusiveMinimum ? "Exclusive minimum value equals maximum value." : "Exclusive maximum value equals minimum value.");
21
- while (true) {
22
- const value = Math.random() * (p.maximum - p.minimum) + p.minimum;
23
- if (p.exclusiveMinimum && value === p.minimum) continue;
24
- else if (p.exclusiveMaximum && value === p.maximum) continue;
25
- return value;
23
+ const scalar = (props) => {
24
+ if (props.minimum === props.maximum && (props.exclusiveMinimum || props.exclusiveMaximum)) throw new Error("Exclusive numeric range is empty.");
25
+ const value = Math.random() * (props.maximum - props.minimum) + props.minimum;
26
+ if (props.exclusiveMinimum && value === props.minimum || props.exclusiveMaximum && value === props.maximum) {
27
+ const middle = props.minimum + (props.maximum - props.minimum) / 2;
28
+ if (middle <= props.minimum || middle >= props.maximum) throw new Error("Exclusive numeric range has no representable value.");
29
+ return middle;
26
30
  }
31
+ return value;
27
32
  };
28
- const multiple = (p) => {
29
- let minimum = Math.ceil(p.minimum / p.multipleOf) * p.multipleOf;
30
- let maximum = Math.floor(p.maximum / p.multipleOf) * p.multipleOf;
31
- if (p.exclusiveMinimum === true && minimum % p.multipleOf === 0) minimum += p.multipleOf;
32
- if (p.exclusiveMaximum === true && maximum % p.multipleOf === 0) maximum -= p.multipleOf;
33
- if (minimum > maximum) throw new Error("The range of the integer is smaller than the multipleOf value.");
34
- const value = scalar({
35
- minimum,
36
- maximum,
37
- exclusiveMinimum: p.exclusiveMinimum,
38
- exclusiveMaximum: p.exclusiveMaximum
39
- });
40
- return value - value % p.multipleOf;
33
+ const getLowerBoundary = (schema) => selectBoundary(schema.minimum === void 0 ? null : {
34
+ value: schema.minimum,
35
+ exclusive: false
36
+ }, schema.exclusiveMinimum === void 0 ? null : {
37
+ value: schema.exclusiveMinimum,
38
+ exclusive: true
39
+ }, Math.max);
40
+ const getUpperBoundary = (schema) => selectBoundary(schema.maximum === void 0 ? null : {
41
+ value: schema.maximum,
42
+ exclusive: false
43
+ }, schema.exclusiveMaximum === void 0 ? null : {
44
+ value: schema.exclusiveMaximum,
45
+ exclusive: true
46
+ }, Math.min);
47
+ const selectBoundary = (x, y, compare) => {
48
+ if (x === null) return y;
49
+ if (y === null) return x;
50
+ if (x.value === y.value) return {
51
+ value: x.value,
52
+ exclusive: x.exclusive || y.exclusive
53
+ };
54
+ return compare(x.value, y.value) === x.value ? x : y;
41
55
  };
42
56
  //#endregion
43
57
  export { _randomNumber };
@@ -1 +1 @@
1
- {"version":3,"file":"_randomNumber.mjs","names":[],"sources":["../../src/internal/_randomNumber.ts"],"sourcesContent":["import { OpenApi } from \"@typia/interface\";\n\nexport const _randomNumber = (schema: OpenApi.IJsonSchema.INumber): number => {\n const minimum: number =\n schema.minimum ??\n schema.exclusiveMinimum ??\n (schema.multipleOf ?? 1) *\n (schema.maximum === undefined && schema.exclusiveMaximum === undefined\n ? 0\n : (schema.maximum ?? schema.exclusiveMaximum!) - 100);\n const maximum: number =\n schema.maximum ??\n schema.exclusiveMaximum ??\n (schema.multipleOf ?? 1) *\n (schema.minimum === undefined && schema.exclusiveMinimum === undefined\n ? 100\n : (schema.minimum ?? schema.exclusiveMinimum!) + 100);\n if (minimum > maximum)\n throw new Error(\"Minimum value is greater than maximum value.\");\n return schema.multipleOf === undefined\n ? scalar({\n minimum,\n maximum,\n exclusiveMinimum: schema.exclusiveMinimum !== undefined,\n exclusiveMaximum: schema.exclusiveMaximum !== undefined,\n })\n : multiple({\n minimum,\n maximum,\n multipleOf: schema.multipleOf,\n exclusiveMinimum: schema.exclusiveMinimum !== undefined,\n exclusiveMaximum: schema.exclusiveMaximum !== undefined,\n });\n};\n\nconst scalar = (p: {\n minimum: number;\n maximum: number;\n exclusiveMinimum?: boolean;\n exclusiveMaximum?: boolean;\n}): number => {\n if (p.minimum === p.maximum && (p.exclusiveMinimum || p.exclusiveMaximum))\n throw new Error(\n p.exclusiveMinimum\n ? \"Exclusive minimum value equals maximum value.\"\n : \"Exclusive maximum value equals minimum value.\",\n );\n while (true) {\n const value: number = Math.random() * (p.maximum - p.minimum) + p.minimum;\n if (p.exclusiveMinimum && value === p.minimum) continue;\n else if (p.exclusiveMaximum && value === p.maximum) continue;\n return value;\n }\n};\n\nconst multiple = (p: {\n minimum: number;\n maximum: number;\n multipleOf: number;\n exclusiveMinimum?: boolean;\n exclusiveMaximum?: boolean;\n}): number => {\n let minimum = Math.ceil(p.minimum / p.multipleOf) * p.multipleOf;\n let maximum = Math.floor(p.maximum / p.multipleOf) * p.multipleOf;\n if (p.exclusiveMinimum === true && minimum % p.multipleOf === 0)\n minimum += p.multipleOf;\n if (p.exclusiveMaximum === true && maximum % p.multipleOf === 0)\n maximum -= p.multipleOf;\n if (minimum > maximum)\n throw new Error(\n \"The range of the integer is smaller than the multipleOf value.\",\n );\n const value: number = scalar({\n minimum,\n maximum,\n exclusiveMinimum: p.exclusiveMinimum,\n exclusiveMaximum: p.exclusiveMaximum,\n });\n return value - (value % p.multipleOf);\n};\n"],"mappings":";AAEA,MAAa,iBAAiB,WAAgD;CAC5E,MAAM,UACJ,OAAO,WACP,OAAO,qBACN,OAAO,cAAc,MACnB,OAAO,YAAY,KAAA,KAAa,OAAO,qBAAqB,KAAA,IACzD,KACC,OAAO,WAAW,OAAO,oBAAqB;CACvD,MAAM,UACJ,OAAO,WACP,OAAO,qBACN,OAAO,cAAc,MACnB,OAAO,YAAY,KAAA,KAAa,OAAO,qBAAqB,KAAA,IACzD,OACC,OAAO,WAAW,OAAO,oBAAqB;CACvD,IAAI,UAAU,SACZ,MAAM,IAAI,MAAM,8CAA8C;CAChE,OAAO,OAAO,eAAe,KAAA,IACzB,OAAO;EACL;EACA;EACA,kBAAkB,OAAO,qBAAqB,KAAA;EAC9C,kBAAkB,OAAO,qBAAqB,KAAA;CAChD,CAAC,IACD,SAAS;EACP;EACA;EACA,YAAY,OAAO;EACnB,kBAAkB,OAAO,qBAAqB,KAAA;EAC9C,kBAAkB,OAAO,qBAAqB,KAAA;CAChD,CAAC;AACP;AAEA,MAAM,UAAU,MAKF;CACZ,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,mBACtD,MAAM,IAAI,MACR,EAAE,mBACE,kDACA,+CACN;CACF,OAAO,MAAM;EACX,MAAM,QAAgB,KAAK,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE;EAClE,IAAI,EAAE,oBAAoB,UAAU,EAAE,SAAS;OAC1C,IAAI,EAAE,oBAAoB,UAAU,EAAE,SAAS;EACpD,OAAO;CACT;AACF;AAEA,MAAM,YAAY,MAMJ;CACZ,IAAI,UAAU,KAAK,KAAK,EAAE,UAAU,EAAE,UAAU,IAAI,EAAE;CACtD,IAAI,UAAU,KAAK,MAAM,EAAE,UAAU,EAAE,UAAU,IAAI,EAAE;CACvD,IAAI,EAAE,qBAAqB,QAAQ,UAAU,EAAE,eAAe,GAC5D,WAAW,EAAE;CACf,IAAI,EAAE,qBAAqB,QAAQ,UAAU,EAAE,eAAe,GAC5D,WAAW,EAAE;CACf,IAAI,UAAU,SACZ,MAAM,IAAI,MACR,gEACF;CACF,MAAM,QAAgB,OAAO;EAC3B;EACA;EACA,kBAAkB,EAAE;EACpB,kBAAkB,EAAE;CACtB,CAAC;CACD,OAAO,QAAS,QAAQ,EAAE;AAC5B"}
1
+ {"version":3,"file":"_randomNumber.mjs","names":[],"sources":["../../src/internal/_randomNumber.ts"],"sourcesContent":["import { OpenApi } from \"@typia/interface\";\n\nimport { _randomMultiple } from \"./_randomMultiple\";\n\nexport const _randomNumber = (schema: OpenApi.IJsonSchema.INumber): number => {\n const lower: IBoundary | null = getLowerBoundary(schema);\n const upper: IBoundary | null = getUpperBoundary(schema);\n const minimum: number =\n lower?.value ?? (upper === null ? 0 : upper.value - 100);\n const maximum: number =\n upper?.value ?? (lower === null ? 100 : lower.value + 100);\n if (minimum > maximum)\n throw new Error(\"Minimum value is greater than maximum value.\");\n return schema.multipleOf === undefined\n ? scalar({\n minimum,\n maximum,\n exclusiveMinimum: lower?.exclusive ?? false,\n exclusiveMaximum: upper?.exclusive ?? false,\n })\n : _randomMultiple({\n minimum,\n maximum,\n multipleOf: schema.multipleOf,\n exclusiveMinimum: lower?.exclusive ?? false,\n exclusiveMaximum: upper?.exclusive ?? false,\n integer: false,\n });\n};\n\nconst scalar = (props: {\n minimum: number;\n maximum: number;\n exclusiveMinimum: boolean;\n exclusiveMaximum: boolean;\n}): number => {\n if (\n props.minimum === props.maximum &&\n (props.exclusiveMinimum || props.exclusiveMaximum)\n )\n throw new Error(\"Exclusive numeric range is empty.\");\n const value: number =\n Math.random() * (props.maximum - props.minimum) + props.minimum;\n if (\n (props.exclusiveMinimum && value === props.minimum) ||\n (props.exclusiveMaximum && value === props.maximum)\n ) {\n const middle: number = props.minimum + (props.maximum - props.minimum) / 2;\n if (middle <= props.minimum || middle >= props.maximum)\n throw new Error(\"Exclusive numeric range has no representable value.\");\n return middle;\n }\n return value;\n};\n\nconst getLowerBoundary = (\n schema: OpenApi.IJsonSchema.INumber,\n): IBoundary | null =>\n selectBoundary(\n schema.minimum === undefined\n ? null\n : { value: schema.minimum, exclusive: false },\n schema.exclusiveMinimum === undefined\n ? null\n : { value: schema.exclusiveMinimum, exclusive: true },\n Math.max,\n );\n\nconst getUpperBoundary = (\n schema: OpenApi.IJsonSchema.INumber,\n): IBoundary | null =>\n selectBoundary(\n schema.maximum === undefined\n ? null\n : { value: schema.maximum, exclusive: false },\n schema.exclusiveMaximum === undefined\n ? null\n : { value: schema.exclusiveMaximum, exclusive: true },\n Math.min,\n );\n\nconst selectBoundary = (\n x: IBoundary | null,\n y: IBoundary | null,\n compare: (x: number, y: number) => number,\n): IBoundary | null => {\n if (x === null) return y;\n if (y === null) return x;\n if (x.value === y.value)\n return { value: x.value, exclusive: x.exclusive || y.exclusive };\n return compare(x.value, y.value) === x.value ? x : y;\n};\n\ninterface IBoundary {\n value: number;\n exclusive: boolean;\n}\n"],"mappings":";;AAIA,MAAa,iBAAiB,WAAgD;CAC5E,MAAM,QAA0B,iBAAiB,MAAM;CACvD,MAAM,QAA0B,iBAAiB,MAAM;CACvD,MAAM,UACJ,OAAO,UAAU,UAAU,OAAO,IAAI,MAAM,QAAQ;CACtD,MAAM,UACJ,OAAO,UAAU,UAAU,OAAO,MAAM,MAAM,QAAQ;CACxD,IAAI,UAAU,SACZ,MAAM,IAAI,MAAM,8CAA8C;CAChE,OAAO,OAAO,eAAe,KAAA,IACzB,OAAO;EACL;EACA;EACA,kBAAkB,OAAO,aAAa;EACtC,kBAAkB,OAAO,aAAa;CACxC,CAAC,IACD,gBAAgB;EACd;EACA;EACA,YAAY,OAAO;EACnB,kBAAkB,OAAO,aAAa;EACtC,kBAAkB,OAAO,aAAa;EACtC,SAAS;CACX,CAAC;AACP;AAEA,MAAM,UAAU,UAKF;CACZ,IACE,MAAM,YAAY,MAAM,YACvB,MAAM,oBAAoB,MAAM,mBAEjC,MAAM,IAAI,MAAM,mCAAmC;CACrD,MAAM,QACJ,KAAK,OAAO,KAAK,MAAM,UAAU,MAAM,WAAW,MAAM;CAC1D,IACG,MAAM,oBAAoB,UAAU,MAAM,WAC1C,MAAM,oBAAoB,UAAU,MAAM,SAC3C;EACA,MAAM,SAAiB,MAAM,WAAW,MAAM,UAAU,MAAM,WAAW;EACzE,IAAI,UAAU,MAAM,WAAW,UAAU,MAAM,SAC7C,MAAM,IAAI,MAAM,qDAAqD;EACvE,OAAO;CACT;CACA,OAAO;AACT;AAEA,MAAM,oBACJ,WAEA,eACE,OAAO,YAAY,KAAA,IACf,OACA;CAAE,OAAO,OAAO;CAAS,WAAW;AAAM,GAC9C,OAAO,qBAAqB,KAAA,IACxB,OACA;CAAE,OAAO,OAAO;CAAkB,WAAW;AAAK,GACtD,KAAK,GACP;AAEF,MAAM,oBACJ,WAEA,eACE,OAAO,YAAY,KAAA,IACf,OACA;CAAE,OAAO,OAAO;CAAS,WAAW;AAAM,GAC9C,OAAO,qBAAqB,KAAA,IACxB,OACA;CAAE,OAAO,OAAO;CAAkB,WAAW;AAAK,GACtD,KAAK,GACP;AAEF,MAAM,kBACJ,GACA,GACA,YACqB;CACrB,IAAI,MAAM,MAAM,OAAO;CACvB,IAAI,MAAM,MAAM,OAAO;CACvB,IAAI,EAAE,UAAU,EAAE,OAChB,OAAO;EAAE,OAAO,EAAE;EAAO,WAAW,EAAE,aAAa,EAAE;CAAU;CACjE,OAAO,QAAQ,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,QAAQ,IAAI;AACrD"}
@@ -1 +1,2 @@
1
- export declare const _randomPattern: (regex: RegExp) => string;
1
+ import { _ILengthProps } from "./_randomStringLength";
2
+ export declare const _randomPattern: (regex: RegExp, props?: _ILengthProps) => string;
@@ -5,14 +5,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports._randomPattern = void 0;
7
7
  const randexp_1 = __importDefault(require("randexp"));
8
- const _randomPattern = (regex) => {
8
+ const _randomPattern = (regex, props) => {
9
9
  const r = new randexp_1.default(regex);
10
- for (let i = 0; i < 10; ++i) {
10
+ const min = props === null || props === void 0 ? void 0 : props.minLength;
11
+ const max = props === null || props === void 0 ? void 0 : props.maxLength;
12
+ // RandExp expands an unbounded quantifier to `randInt(token.min, token.min +
13
+ // r.max)`, so steering `r.max` biases the generated length toward the window.
14
+ // There is no matching floor control, so the length is still verified below.
15
+ if (max !== undefined)
16
+ r.max = max;
17
+ else if (min !== undefined && min * 2 > r.max)
18
+ r.max = min * 2;
19
+ const bounded = min !== undefined || max !== undefined;
20
+ const limit = bounded ? 1024 : 10;
21
+ for (let i = 0; i < limit; ++i) {
11
22
  const str = r.gen();
12
- if (regex.test(str))
23
+ if (regex.test(str) &&
24
+ (min === undefined || str.length >= min) &&
25
+ (max === undefined || str.length <= max))
13
26
  return str;
14
27
  }
15
- return r.gen();
28
+ throw new Error(bounded
29
+ ? "unable to generate a random string matching the pattern within the length range."
30
+ : "unable to generate a random string matching the pattern.");
16
31
  };
17
32
  exports._randomPattern = _randomPattern;
18
33
  //# sourceMappingURL=_randomPattern.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_randomPattern.js","sourceRoot":"","sources":["../../src/internal/_randomPattern.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAEvB,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE;IACtD,MAAM,CAAC,GAAY,IAAI,iBAAO,CAAC,KAAK,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACpC,MAAM,GAAG,GAAW,CAAC,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;AACjB,CAAC,CAAC;AAPW,QAAA,cAAc,GAAd,cAAc,CAOzB"}
1
+ {"version":3,"file":"_randomPattern.js","sourceRoot":"","sources":["../../src/internal/_randomPattern.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAIvB,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,KAAqB,EAAU,EAAE;IAC7E,MAAM,CAAC,GAAY,IAAI,iBAAO,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAuB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAC;IACjD,MAAM,GAAG,GAAuB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAC;IAEjD,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,IAAI,GAAG,KAAK,SAAS;QAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;SAC9B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG;QAAE,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAE/D,MAAM,OAAO,GAAY,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,CAAC;IAChE,MAAM,KAAK,GAAW,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAW,CAAC,CAAC,GAAG,EAAE,CAAC;QAC5B,IACE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YACf,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;YACxC,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;YAExC,OAAO,GAAG,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CACb,OAAO;QACL,CAAC,CAAC,kFAAkF;QACpF,CAAC,CAAC,0DAA0D,CAC/D,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,cAAc,GAAd,cAAc,CA2BzB"}
@@ -1,12 +1,18 @@
1
1
  import RandExp from "randexp";
2
2
  //#region src/internal/_randomPattern.ts
3
- const _randomPattern = (regex) => {
3
+ const _randomPattern = (regex, props) => {
4
4
  const r = new RandExp(regex);
5
- for (let i = 0; i < 10; ++i) {
5
+ const min = props?.minLength;
6
+ const max = props?.maxLength;
7
+ if (max !== void 0) r.max = max;
8
+ else if (min !== void 0 && min * 2 > r.max) r.max = min * 2;
9
+ const bounded = min !== void 0 || max !== void 0;
10
+ const limit = bounded ? 1024 : 10;
11
+ for (let i = 0; i < limit; ++i) {
6
12
  const str = r.gen();
7
- if (regex.test(str)) return str;
13
+ if (regex.test(str) && (min === void 0 || str.length >= min) && (max === void 0 || str.length <= max)) return str;
8
14
  }
9
- return r.gen();
15
+ throw new Error(bounded ? "unable to generate a random string matching the pattern within the length range." : "unable to generate a random string matching the pattern.");
10
16
  };
11
17
  //#endregion
12
18
  export { _randomPattern };
@@ -1 +1 @@
1
- {"version":3,"file":"_randomPattern.mjs","names":[],"sources":["../../src/internal/_randomPattern.ts"],"sourcesContent":["import RandExp from \"randexp\";\n\nexport const _randomPattern = (regex: RegExp): string => {\n const r: RandExp = new RandExp(regex);\n for (let i: number = 0; i < 10; ++i) {\n const str: string = r.gen();\n if (regex.test(str)) return str;\n }\n return r.gen();\n};\n"],"mappings":";;AAEA,MAAa,kBAAkB,UAA0B;CACvD,MAAM,IAAa,IAAI,QAAQ,KAAK;CACpC,KAAK,IAAI,IAAY,GAAG,IAAI,IAAI,EAAE,GAAG;EACnC,MAAM,MAAc,EAAE,IAAI;EAC1B,IAAI,MAAM,KAAK,GAAG,GAAG,OAAO;CAC9B;CACA,OAAO,EAAE,IAAI;AACf"}
1
+ {"version":3,"file":"_randomPattern.mjs","names":[],"sources":["../../src/internal/_randomPattern.ts"],"sourcesContent":["import RandExp from \"randexp\";\n\nimport { _ILengthProps } from \"./_randomStringLength\";\n\nexport const _randomPattern = (regex: RegExp, props?: _ILengthProps): string => {\n const r: RandExp = new RandExp(regex);\n const min: number | undefined = props?.minLength;\n const max: number | undefined = props?.maxLength;\n\n // RandExp expands an unbounded quantifier to `randInt(token.min, token.min +\n // r.max)`, so steering `r.max` biases the generated length toward the window.\n // There is no matching floor control, so the length is still verified below.\n if (max !== undefined) r.max = max;\n else if (min !== undefined && min * 2 > r.max) r.max = min * 2;\n\n const bounded: boolean = min !== undefined || max !== undefined;\n const limit: number = bounded ? 1024 : 10;\n for (let i: number = 0; i < limit; ++i) {\n const str: string = r.gen();\n if (\n regex.test(str) &&\n (min === undefined || str.length >= min) &&\n (max === undefined || str.length <= max)\n )\n return str;\n }\n throw new Error(\n bounded\n ? \"unable to generate a random string matching the pattern within the length range.\"\n : \"unable to generate a random string matching the pattern.\",\n );\n};\n"],"mappings":";;AAIA,MAAa,kBAAkB,OAAe,UAAkC;CAC9E,MAAM,IAAa,IAAI,QAAQ,KAAK;CACpC,MAAM,MAA0B,OAAO;CACvC,MAAM,MAA0B,OAAO;CAKvC,IAAI,QAAQ,KAAA,GAAW,EAAE,MAAM;MAC1B,IAAI,QAAQ,KAAA,KAAa,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,MAAM;CAE7D,MAAM,UAAmB,QAAQ,KAAA,KAAa,QAAQ,KAAA;CACtD,MAAM,QAAgB,UAAU,OAAO;CACvC,KAAK,IAAI,IAAY,GAAG,IAAI,OAAO,EAAE,GAAG;EACtC,MAAM,MAAc,EAAE,IAAI;EAC1B,IACE,MAAM,KAAK,GAAG,MACb,QAAQ,KAAA,KAAa,IAAI,UAAU,SACnC,QAAQ,KAAA,KAAa,IAAI,UAAU,MAEpC,OAAO;CACX;CACA,MAAM,IAAI,MACR,UACI,qFACA,0DACN;AACF"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Length bounds forwarded to a string format or pattern generator.
3
+ *
4
+ * `typia.random<T>()` passes this object to the `_randomFormat*` and
5
+ * `_randomPattern` helpers whenever the string leaf also carries a `MinLength`
6
+ * or `MaxLength` tag, so a constrained format or pattern is generated at a
7
+ * length its own validator accepts (issue #2189).
8
+ */
9
+ export interface _ILengthProps {
10
+ minLength?: number;
11
+ maxLength?: number;
12
+ }
13
+ /**
14
+ * Builds the variable segment of a fixed-shape format string so that the total
15
+ * length `fixed + segment.length` lands inside the requested window.
16
+ *
17
+ * `fixed` is the number of characters the format always contributes around the
18
+ * segment, `fallback` is the segment length used when the leaf is
19
+ * unconstrained on that side, and `minimum` is the smallest segment the format
20
+ * still validates with. Throws when the window cannot be satisfied by this
21
+ * format's shape (e.g. `Format<"email"> & MaxLength<3>`).
22
+ */
23
+ export declare const _randomSegmentLength: (props: _ILengthProps | undefined, fixed: number, fallback: number, minimum: number) => string;
24
+ /**
25
+ * Wraps a fixed- or narrow-length format generator (uuid, ipv4, date, ...) with
26
+ * the requested length window.
27
+ *
28
+ * These formats cannot grow an arbitrary segment, so the generator is retried a
29
+ * bounded number of times and the first draw inside the window is returned. A
30
+ * window that excludes every length the format can produce is unsatisfiable and
31
+ * throws instead of silently yielding an out-of-range value.
32
+ */
33
+ export declare const _randomFormatLength: (props: _ILengthProps | undefined, generate: () => string) => string;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._randomFormatLength = exports._randomSegmentLength = void 0;
4
+ const _randomString_1 = require("./_randomString");
5
+ /**
6
+ * Builds the variable segment of a fixed-shape format string so that the total
7
+ * length `fixed + segment.length` lands inside the requested window.
8
+ *
9
+ * `fixed` is the number of characters the format always contributes around the
10
+ * segment, `fallback` is the segment length used when the leaf is
11
+ * unconstrained on that side, and `minimum` is the smallest segment the format
12
+ * still validates with. Throws when the window cannot be satisfied by this
13
+ * format's shape (e.g. `Format<"email"> & MaxLength<3>`).
14
+ */
15
+ const _randomSegmentLength = (props, fixed, fallback, minimum) => {
16
+ let low = (props === null || props === void 0 ? void 0 : props.minLength) === undefined ? minimum : props.minLength - fixed;
17
+ if (low < minimum)
18
+ low = minimum;
19
+ // With only a lower bound, spread the segment across `fallback` extra
20
+ // characters so the generated length varies, mirroring `_randomString`.
21
+ const high = (props === null || props === void 0 ? void 0 : props.maxLength) === undefined ? low + fallback : props.maxLength - fixed;
22
+ if (high < low || high < minimum)
23
+ throw new Error("unable to generate a random string satisfying both the format and the length constraints.");
24
+ return (0, _randomString_1._randomString)({ type: "string", minLength: low, maxLength: high });
25
+ };
26
+ exports._randomSegmentLength = _randomSegmentLength;
27
+ /**
28
+ * Wraps a fixed- or narrow-length format generator (uuid, ipv4, date, ...) with
29
+ * the requested length window.
30
+ *
31
+ * These formats cannot grow an arbitrary segment, so the generator is retried a
32
+ * bounded number of times and the first draw inside the window is returned. A
33
+ * window that excludes every length the format can produce is unsatisfiable and
34
+ * throws instead of silently yielding an out-of-range value.
35
+ */
36
+ const _randomFormatLength = (props, generate) => {
37
+ if ((props === null || props === void 0 ? void 0 : props.minLength) === undefined && (props === null || props === void 0 ? void 0 : props.maxLength) === undefined)
38
+ return generate();
39
+ for (let i = 0; i < 256; ++i) {
40
+ const value = generate();
41
+ if ((props.minLength === undefined || value.length >= props.minLength) &&
42
+ (props.maxLength === undefined || value.length <= props.maxLength))
43
+ return value;
44
+ }
45
+ throw new Error("unable to generate a random string satisfying both the format and the length constraints.");
46
+ };
47
+ exports._randomFormatLength = _randomFormatLength;
48
+ //# sourceMappingURL=_randomStringLength.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_randomStringLength.js","sourceRoot":"","sources":["../../src/internal/_randomStringLength.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAehD;;;;;;;;;GASG;AACI,MAAM,oBAAoB,GAAG,CAClC,KAAgC,EAChC,KAAa,EACb,QAAgB,EAChB,OAAe,EACP,EAAE;IACV,IAAI,GAAG,GACL,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IACrE,IAAI,GAAG,GAAG,OAAO;QAAE,GAAG,GAAG,OAAO,CAAC;IACjC,sEAAsE;IACtE,wEAAwE;IACxE,MAAM,IAAI,GACR,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IAC5E,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,OAAO;QAC9B,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;IACJ,OAAO,IAAA,6BAAa,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC,CAAC;AAlBW,QAAA,oBAAoB,GAApB,oBAAoB,CAkB/B;AAEF;;;;;;;;GAQG;AACI,MAAM,mBAAmB,GAAG,CACjC,KAAgC,EAChC,QAAsB,EACd,EAAE;IACV,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS;QAClE,OAAO,QAAQ,EAAE,CAAC;IACpB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAW,QAAQ,EAAE,CAAC;QACjC,IACE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;YAClE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;YAElE,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,mBAAmB,GAAnB,mBAAmB,CAiB9B"}
@@ -0,0 +1,44 @@
1
+ import { _randomString } from "./_randomString.mjs";
2
+ //#region src/internal/_randomStringLength.ts
3
+ /**
4
+ * Builds the variable segment of a fixed-shape format string so that the total
5
+ * length `fixed + segment.length` lands inside the requested window.
6
+ *
7
+ * `fixed` is the number of characters the format always contributes around the
8
+ * segment, `fallback` is the segment length used when the leaf is
9
+ * unconstrained on that side, and `minimum` is the smallest segment the format
10
+ * still validates with. Throws when the window cannot be satisfied by this
11
+ * format's shape (e.g. `Format<"email"> & MaxLength<3>`).
12
+ */
13
+ const _randomSegmentLength = (props, fixed, fallback, minimum) => {
14
+ let low = props?.minLength === void 0 ? minimum : props.minLength - fixed;
15
+ if (low < minimum) low = minimum;
16
+ const high = props?.maxLength === void 0 ? low + fallback : props.maxLength - fixed;
17
+ if (high < low || high < minimum) throw new Error("unable to generate a random string satisfying both the format and the length constraints.");
18
+ return _randomString({
19
+ type: "string",
20
+ minLength: low,
21
+ maxLength: high
22
+ });
23
+ };
24
+ /**
25
+ * Wraps a fixed- or narrow-length format generator (uuid, ipv4, date, ...) with
26
+ * the requested length window.
27
+ *
28
+ * These formats cannot grow an arbitrary segment, so the generator is retried a
29
+ * bounded number of times and the first draw inside the window is returned. A
30
+ * window that excludes every length the format can produce is unsatisfiable and
31
+ * throws instead of silently yielding an out-of-range value.
32
+ */
33
+ const _randomFormatLength = (props, generate) => {
34
+ if (props?.minLength === void 0 && props?.maxLength === void 0) return generate();
35
+ for (let i = 0; i < 256; ++i) {
36
+ const value = generate();
37
+ if ((props.minLength === void 0 || value.length >= props.minLength) && (props.maxLength === void 0 || value.length <= props.maxLength)) return value;
38
+ }
39
+ throw new Error("unable to generate a random string satisfying both the format and the length constraints.");
40
+ };
41
+ //#endregion
42
+ export { _randomFormatLength, _randomSegmentLength };
43
+
44
+ //# sourceMappingURL=_randomStringLength.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_randomStringLength.mjs","names":[],"sources":["../../src/internal/_randomStringLength.ts"],"sourcesContent":["import { _randomString } from \"./_randomString\";\n\n/**\n * Length bounds forwarded to a string format or pattern generator.\n *\n * `typia.random<T>()` passes this object to the `_randomFormat*` and\n * `_randomPattern` helpers whenever the string leaf also carries a `MinLength`\n * or `MaxLength` tag, so a constrained format or pattern is generated at a\n * length its own validator accepts (issue #2189).\n */\nexport interface _ILengthProps {\n minLength?: number;\n maxLength?: number;\n}\n\n/**\n * Builds the variable segment of a fixed-shape format string so that the total\n * length `fixed + segment.length` lands inside the requested window.\n *\n * `fixed` is the number of characters the format always contributes around the\n * segment, `fallback` is the segment length used when the leaf is\n * unconstrained on that side, and `minimum` is the smallest segment the format\n * still validates with. Throws when the window cannot be satisfied by this\n * format's shape (e.g. `Format<\"email\"> & MaxLength<3>`).\n */\nexport const _randomSegmentLength = (\n props: _ILengthProps | undefined,\n fixed: number,\n fallback: number,\n minimum: number,\n): string => {\n let low: number =\n props?.minLength === undefined ? minimum : props.minLength - fixed;\n if (low < minimum) low = minimum;\n // With only a lower bound, spread the segment across `fallback` extra\n // characters so the generated length varies, mirroring `_randomString`.\n const high: number =\n props?.maxLength === undefined ? low + fallback : props.maxLength - fixed;\n if (high < low || high < minimum)\n throw new Error(\n \"unable to generate a random string satisfying both the format and the length constraints.\",\n );\n return _randomString({ type: \"string\", minLength: low, maxLength: high });\n};\n\n/**\n * Wraps a fixed- or narrow-length format generator (uuid, ipv4, date, ...) with\n * the requested length window.\n *\n * These formats cannot grow an arbitrary segment, so the generator is retried a\n * bounded number of times and the first draw inside the window is returned. A\n * window that excludes every length the format can produce is unsatisfiable and\n * throws instead of silently yielding an out-of-range value.\n */\nexport const _randomFormatLength = (\n props: _ILengthProps | undefined,\n generate: () => string,\n): string => {\n if (props?.minLength === undefined && props?.maxLength === undefined)\n return generate();\n for (let i: number = 0; i < 256; ++i) {\n const value: string = generate();\n if (\n (props.minLength === undefined || value.length >= props.minLength) &&\n (props.maxLength === undefined || value.length <= props.maxLength)\n )\n return value;\n }\n throw new Error(\n \"unable to generate a random string satisfying both the format and the length constraints.\",\n );\n};\n"],"mappings":";;;;;;;;;;;;AAyBA,MAAa,wBACX,OACA,OACA,UACA,YACW;CACX,IAAI,MACF,OAAO,cAAc,KAAA,IAAY,UAAU,MAAM,YAAY;CAC/D,IAAI,MAAM,SAAS,MAAM;CAGzB,MAAM,OACJ,OAAO,cAAc,KAAA,IAAY,MAAM,WAAW,MAAM,YAAY;CACtE,IAAI,OAAO,OAAO,OAAO,SACvB,MAAM,IAAI,MACR,2FACF;CACF,OAAO,cAAc;EAAE,MAAM;EAAU,WAAW;EAAK,WAAW;CAAK,CAAC;AAC1E;;;;;;;;;;AAWA,MAAa,uBACX,OACA,aACW;CACX,IAAI,OAAO,cAAc,KAAA,KAAa,OAAO,cAAc,KAAA,GACzD,OAAO,SAAS;CAClB,KAAK,IAAI,IAAY,GAAG,IAAI,KAAK,EAAE,GAAG;EACpC,MAAM,QAAgB,SAAS;EAC/B,KACG,MAAM,cAAc,KAAA,KAAa,MAAM,UAAU,MAAM,eACvD,MAAM,cAAc,KAAA,KAAa,MAAM,UAAU,MAAM,YAExD,OAAO;CACX;CACA,MAAM,IAAI,MACR,2FACF;AACF"}
@@ -0,0 +1 @@
1
+ export declare const _stringLength: (value: string) => number;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._stringLength = void 0;
4
+ const _stringLength = (value) => {
5
+ let count = 0;
6
+ for (const _ch of value)
7
+ ++count;
8
+ return count;
9
+ };
10
+ exports._stringLength = _stringLength;
11
+ //# sourceMappingURL=_stringLength.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_stringLength.js","sourceRoot":"","sources":["../../src/internal/_stringLength.ts"],"names":[],"mappings":";;;AAAO,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE;IACrD,IAAI,KAAK,GAAW,CAAC,CAAC;IACtB,KAAK,MAAM,GAAG,IAAI,KAAK;QAAE,EAAE,KAAK,CAAC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAJW,QAAA,aAAa,GAAb,aAAa,CAIxB"}
@@ -0,0 +1,10 @@
1
+ //#region src/internal/_stringLength.ts
2
+ const _stringLength = (value) => {
3
+ let count = 0;
4
+ for (const _ch of value) ++count;
5
+ return count;
6
+ };
7
+ //#endregion
8
+ export { _stringLength };
9
+
10
+ //# sourceMappingURL=_stringLength.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_stringLength.mjs","names":[],"sources":["../../src/internal/_stringLength.ts"],"sourcesContent":["export const _stringLength = (value: string): number => {\n let count: number = 0;\n for (const _ch of value) ++count;\n return count;\n};\n"],"mappings":";AAAA,MAAa,iBAAiB,UAA0B;CACtD,IAAI,QAAgB;CACpB,KAAK,MAAM,OAAO,OAAO,EAAE;CAC3B,OAAO;AACT"}
@@ -2,11 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports._validateReport = void 0;
4
4
  const _validateReport = (array) => {
5
+ const isAncestor = (ancestor, descendant) => descendant === ancestor ||
6
+ descendant.startsWith(`${ancestor}.`) ||
7
+ descendant.startsWith(`${ancestor}[`);
5
8
  const reportable = (path) => {
6
9
  if (array.length === 0)
7
10
  return true;
8
11
  const last = array[array.length - 1].path;
9
- return path.length > last.length || last.substring(0, path.length) !== path;
12
+ return isAncestor(path, last) === false && isAncestor(last, path) === false;
10
13
  };
11
14
  return (exceptable, error) => {
12
15
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"_validateReport.js","sourceRoot":"","sources":["../../src/internal/_validateReport.ts"],"names":[],"mappings":";;;AAEO,MAAM,eAAe,GAAG,CAAC,KAA2B,EAAE,EAAE;IAC7D,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,IAAI,GAAW,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC;QACnD,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAC9E,CAAC,CAAC;IACF,OAAO,CAAC,UAAmB,EAAE,KAAyB,EAAS,EAAE;;QAC/D,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gBAC3B,MAAA,KAAK,CAAC,WAAW,oCAAjB,KAAK,CAAC,WAAW,GAAK;oBACpB,wCAAwC;oBACxC,EAAE;oBACF,qBAAqB,KAAK,CAAC,QAAQ,2BAA2B;iBAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;YACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,eAAe,GAAf,eAAe,CAkB1B"}
1
+ {"version":3,"file":"_validateReport.js","sourceRoot":"","sources":["../../src/internal/_validateReport.ts"],"names":[],"mappings":";;;AAEO,MAAM,eAAe,GAAG,CAAC,KAA2B,EAAE,EAAE;IAC7D,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,UAAkB,EAAW,EAAE,CACnE,UAAU,KAAK,QAAQ;QACvB,UAAU,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC;QACrC,UAAU,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,IAAI,GAAW,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC;QACnD,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC;IAC9E,CAAC,CAAC;IACF,OAAO,CAAC,UAAmB,EAAE,KAAyB,EAAS,EAAE;;QAC/D,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gBAC3B,MAAA,KAAK,CAAC,WAAW,oCAAjB,KAAK,CAAC,WAAW,GAAK;oBACpB,wCAAwC;oBACxC,EAAE;oBACF,qBAAqB,KAAK,CAAC,QAAQ,2BAA2B;iBAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;YACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,eAAe,GAAf,eAAe,CAsB1B"}
@@ -1,9 +1,10 @@
1
1
  //#region src/internal/_validateReport.ts
2
2
  const _validateReport = (array) => {
3
+ const isAncestor = (ancestor, descendant) => descendant === ancestor || descendant.startsWith(`${ancestor}.`) || descendant.startsWith(`${ancestor}[`);
3
4
  const reportable = (path) => {
4
5
  if (array.length === 0) return true;
5
6
  const last = array[array.length - 1].path;
6
- return path.length > last.length || last.substring(0, path.length) !== path;
7
+ return isAncestor(path, last) === false && isAncestor(last, path) === false;
7
8
  };
8
9
  return (exceptable, error) => {
9
10
  if (exceptable && reportable(error.path)) {
@@ -1 +1 @@
1
- {"version":3,"file":"_validateReport.mjs","names":[],"sources":["../../src/internal/_validateReport.ts"],"sourcesContent":["import { IValidation } from \"@typia/interface\";\n\nexport const _validateReport = (array: IValidation.IError[]) => {\n const reportable = (path: string): boolean => {\n if (array.length === 0) return true;\n const last: string = array[array.length - 1]!.path;\n return path.length > last.length || last.substring(0, path.length) !== path;\n };\n return (exceptable: boolean, error: IValidation.IError): false => {\n if (exceptable && reportable(error.path)) {\n if (error.value === undefined)\n error.description ??= [\n \"The value at this path is `undefined`.\",\n \"\",\n `Please fill the \\`${error.expected}\\` typed value next time.`,\n ].join(\"\\n\");\n array.push(error);\n }\n return false;\n };\n};\n"],"mappings":";AAEA,MAAa,mBAAmB,UAAgC;CAC9D,MAAM,cAAc,SAA0B;EAC5C,IAAI,MAAM,WAAW,GAAG,OAAO;EAC/B,MAAM,OAAe,MAAM,MAAM,SAAS,EAAE,CAAE;EAC9C,OAAO,KAAK,SAAS,KAAK,UAAU,KAAK,UAAU,GAAG,KAAK,MAAM,MAAM;CACzE;CACA,QAAQ,YAAqB,UAAqC;EAChE,IAAI,cAAc,WAAW,MAAM,IAAI,GAAG;GACxC,IAAI,MAAM,UAAU,KAAA,GAClB,MAAM,gBAAgB;IACpB;IACA;IACA,qBAAqB,MAAM,SAAS;GACtC,CAAC,CAAC,KAAK,IAAI;GACb,MAAM,KAAK,KAAK;EAClB;EACA,OAAO;CACT;AACF"}
1
+ {"version":3,"file":"_validateReport.mjs","names":[],"sources":["../../src/internal/_validateReport.ts"],"sourcesContent":["import { IValidation } from \"@typia/interface\";\n\nexport const _validateReport = (array: IValidation.IError[]) => {\n const isAncestor = (ancestor: string, descendant: string): boolean =>\n descendant === ancestor ||\n descendant.startsWith(`${ancestor}.`) ||\n descendant.startsWith(`${ancestor}[`);\n const reportable = (path: string): boolean => {\n if (array.length === 0) return true;\n const last: string = array[array.length - 1]!.path;\n return isAncestor(path, last) === false && isAncestor(last, path) === false;\n };\n return (exceptable: boolean, error: IValidation.IError): false => {\n if (exceptable && reportable(error.path)) {\n if (error.value === undefined)\n error.description ??= [\n \"The value at this path is `undefined`.\",\n \"\",\n `Please fill the \\`${error.expected}\\` typed value next time.`,\n ].join(\"\\n\");\n array.push(error);\n }\n return false;\n };\n};\n"],"mappings":";AAEA,MAAa,mBAAmB,UAAgC;CAC9D,MAAM,cAAc,UAAkB,eACpC,eAAe,YACf,WAAW,WAAW,GAAG,SAAS,EAAE,KACpC,WAAW,WAAW,GAAG,SAAS,EAAE;CACtC,MAAM,cAAc,SAA0B;EAC5C,IAAI,MAAM,WAAW,GAAG,OAAO;EAC/B,MAAM,OAAe,MAAM,MAAM,SAAS,EAAE,CAAE;EAC9C,OAAO,WAAW,MAAM,IAAI,MAAM,SAAS,WAAW,MAAM,IAAI,MAAM;CACxE;CACA,QAAQ,YAAqB,UAAqC;EAChE,IAAI,cAAc,WAAW,MAAM,IAAI,GAAG;GACxC,IAAI,MAAM,UAAU,KAAA,GAClB,MAAM,gBAAgB;IACpB;IACA;IACA,qBAAqB,MAAM,SAAS;GACtC,CAAC,CAAC,KAAK,IAAI;GACb,MAAM,KAAK,KAAK;EAClB;EACA,OAAO;CACT;AACF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared outer walk for the `camel`/`pascal` notations.
3
+ *
4
+ * Mirrors the `CamelCase<T>` / `PascalCase<T>` typings: leading underscores are
5
+ * preserved verbatim, an all-underscore key stays untouched, and the presence
6
+ * of any remaining underscore — not the number of non-empty segments — selects
7
+ * the `snake` conversion. Routing on underscore presence keeps a trailing or
8
+ * doubled underscore (`fooBar_`) on the same path the type takes, instead of
9
+ * collapsing it to the underscore-free `plain` path.
10
+ */
11
+ export declare const __notationRename: (props: {
12
+ plain: (str: string) => string;
13
+ snake: (str: string) => string;
14
+ }) => (str: string) => string;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.__notationRename = void 0;
4
+ /**
5
+ * Shared outer walk for the `camel`/`pascal` notations.
6
+ *
7
+ * Mirrors the `CamelCase<T>` / `PascalCase<T>` typings: leading underscores are
8
+ * preserved verbatim, an all-underscore key stays untouched, and the presence
9
+ * of any remaining underscore — not the number of non-empty segments — selects
10
+ * the `snake` conversion. Routing on underscore presence keeps a trailing or
11
+ * doubled underscore (`fooBar_`) on the same path the type takes, instead of
12
+ * collapsing it to the underscore-free `plain` path.
13
+ */
14
+ const __notationRename = (props) => (str) => {
15
+ let prefix = "";
16
+ while (str.startsWith("_")) {
17
+ prefix += "_";
18
+ str = str.substring(1);
19
+ }
20
+ if (str.length === 0)
21
+ return prefix;
22
+ return `${prefix}${str.includes("_") ? props.snake(str) : props.plain(str)}`;
23
+ };
24
+ exports.__notationRename = __notationRename;
25
+ //# sourceMappingURL=__notationRename.js.map