typia 13.1.1 → 13.2.0

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 (581) hide show
  1. package/README.md +3 -0
  2. package/lib/_virtual/_rolldown/runtime.mjs +1 -5
  3. package/lib/executable/FileSystemIdentity.d.ts +44 -0
  4. package/lib/executable/FileSystemIdentity.js +213 -0
  5. package/lib/executable/FileSystemIdentity.js.map +1 -0
  6. package/lib/executable/FileSystemIdentity.mjs +133 -0
  7. package/lib/executable/FileSystemIdentity.mjs.map +1 -0
  8. package/lib/executable/TypiaGenerateWizard.js +272 -106
  9. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  10. package/lib/executable/TypiaGenerateWizard.mjs +239 -95
  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 +32 -0
  16. package/lib/internal/_ProtobufReader.js +148 -48
  17. package/lib/internal/_ProtobufReader.js.map +1 -1
  18. package/lib/internal/_ProtobufReader.mjs +137 -41
  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/_jsonStringifyArray.d.ts +1 -0
  87. package/lib/internal/_jsonStringifyArray.js +48 -0
  88. package/lib/internal/_jsonStringifyArray.js.map +1 -0
  89. package/lib/internal/_jsonStringifyArray.mjs +40 -0
  90. package/lib/internal/_jsonStringifyArray.mjs.map +1 -0
  91. package/lib/internal/_jsonStringifyElement.d.ts +1 -0
  92. package/lib/internal/_jsonStringifyElement.js +23 -0
  93. package/lib/internal/_jsonStringifyElement.js.map +1 -0
  94. package/lib/internal/_jsonStringifyElement.mjs +23 -0
  95. package/lib/internal/_jsonStringifyElement.mjs.map +1 -0
  96. package/lib/internal/_jsonStringifyProperty.d.ts +1 -0
  97. package/lib/internal/_jsonStringifyProperty.js +31 -0
  98. package/lib/internal/_jsonStringifyProperty.js.map +1 -0
  99. package/lib/internal/_jsonStringifyProperty.mjs +31 -0
  100. package/lib/internal/_jsonStringifyProperty.mjs.map +1 -0
  101. package/lib/internal/_llmApplicationFinalize.js +1 -1
  102. package/lib/internal/_llmApplicationFinalize.js.map +1 -1
  103. package/lib/internal/_llmApplicationFinalize.mjs +1 -1
  104. package/lib/internal/_llmApplicationFinalize.mjs.map +1 -1
  105. package/lib/internal/_notationAny.js +8 -1
  106. package/lib/internal/_notationAny.js.map +1 -1
  107. package/lib/internal/_notationAny.mjs +7 -1
  108. package/lib/internal/_notationAny.mjs.map +1 -1
  109. package/lib/internal/_notationAssign.d.ts +1 -0
  110. package/lib/internal/_notationAssign.js +18 -0
  111. package/lib/internal/_notationAssign.js.map +1 -0
  112. package/lib/internal/_notationAssign.mjs +17 -0
  113. package/lib/internal/_notationAssign.mjs.map +1 -0
  114. package/lib/internal/_notationCamel.js +30 -9
  115. package/lib/internal/_notationCamel.js.map +1 -1
  116. package/lib/internal/_notationCamel.mjs +13 -5
  117. package/lib/internal/_notationCamel.mjs.map +1 -1
  118. package/lib/internal/_notationKebab.d.ts +1 -0
  119. package/lib/internal/_notationKebab.js +15 -0
  120. package/lib/internal/_notationKebab.js.map +1 -0
  121. package/lib/internal/_notationKebab.mjs +15 -0
  122. package/lib/internal/_notationKebab.mjs.map +1 -0
  123. package/lib/internal/_notationKeyCollision.d.ts +1 -0
  124. package/lib/internal/_notationKeyCollision.js +8 -0
  125. package/lib/internal/_notationKeyCollision.js.map +1 -0
  126. package/lib/internal/_notationKeyCollision.mjs +8 -0
  127. package/lib/internal/_notationKeyCollision.mjs.map +1 -0
  128. package/lib/internal/_notationPascal.js +20 -5
  129. package/lib/internal/_notationPascal.js.map +1 -1
  130. package/lib/internal/_notationPascal.mjs +10 -5
  131. package/lib/internal/_notationPascal.mjs.map +1 -1
  132. package/lib/internal/_notationSnake.js +25 -22
  133. package/lib/internal/_notationSnake.js.map +1 -1
  134. package/lib/internal/_notationSnake.mjs +11 -11
  135. package/lib/internal/_notationSnake.mjs.map +1 -1
  136. package/lib/internal/_plainCloneAny.js +174 -38
  137. package/lib/internal/_plainCloneAny.js.map +1 -1
  138. package/lib/internal/_plainCloneAny.mjs +126 -22
  139. package/lib/internal/_plainCloneAny.mjs.map +1 -1
  140. package/lib/internal/_randomArray.d.ts +1 -1
  141. package/lib/internal/_randomArray.js +11 -4
  142. package/lib/internal/_randomArray.js.map +1 -1
  143. package/lib/internal/_randomArray.mjs +9 -3
  144. package/lib/internal/_randomArray.mjs.map +1 -1
  145. package/lib/internal/_randomFormatByte.d.ts +2 -1
  146. package/lib/internal/_randomFormatByte.js +25 -1
  147. package/lib/internal/_randomFormatByte.js.map +1 -1
  148. package/lib/internal/_randomFormatByte.mjs +20 -1
  149. package/lib/internal/_randomFormatByte.mjs.map +1 -1
  150. package/lib/internal/_randomFormatDate.d.ts +3 -4
  151. package/lib/internal/_randomFormatDate.js +3 -10
  152. package/lib/internal/_randomFormatDate.js.map +1 -1
  153. package/lib/internal/_randomFormatDate.mjs +3 -6
  154. package/lib/internal/_randomFormatDate.mjs.map +1 -1
  155. package/lib/internal/_randomFormatDatetime.d.ts +3 -4
  156. package/lib/internal/_randomFormatDatetime.js +26 -8
  157. package/lib/internal/_randomFormatDatetime.js.map +1 -1
  158. package/lib/internal/_randomFormatDatetime.mjs +17 -6
  159. package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
  160. package/lib/internal/_randomFormatDuration.d.ts +2 -1
  161. package/lib/internal/_randomFormatDuration.js +23 -14
  162. package/lib/internal/_randomFormatDuration.js.map +1 -1
  163. package/lib/internal/_randomFormatDuration.mjs +22 -13
  164. package/lib/internal/_randomFormatDuration.mjs.map +1 -1
  165. package/lib/internal/_randomFormatEmail.d.ts +2 -1
  166. package/lib/internal/_randomFormatEmail.js +8 -1
  167. package/lib/internal/_randomFormatEmail.js.map +1 -1
  168. package/lib/internal/_randomFormatEmail.mjs +5 -1
  169. package/lib/internal/_randomFormatEmail.mjs.map +1 -1
  170. package/lib/internal/_randomFormatHostname.d.ts +8 -1
  171. package/lib/internal/_randomFormatHostname.js +45 -2
  172. package/lib/internal/_randomFormatHostname.js.map +1 -1
  173. package/lib/internal/_randomFormatHostname.mjs +38 -2
  174. package/lib/internal/_randomFormatHostname.mjs.map +1 -1
  175. package/lib/internal/_randomFormatIdnEmail.d.ts +2 -1
  176. package/lib/internal/_randomFormatIdnEmail.js +16 -2
  177. package/lib/internal/_randomFormatIdnEmail.js.map +1 -1
  178. package/lib/internal/_randomFormatIdnEmail.mjs +11 -2
  179. package/lib/internal/_randomFormatIdnEmail.mjs.map +1 -1
  180. package/lib/internal/_randomFormatIdnHostname.d.ts +2 -1
  181. package/lib/internal/_randomFormatIdnHostname.js +26 -1
  182. package/lib/internal/_randomFormatIdnHostname.js.map +1 -1
  183. package/lib/internal/_randomFormatIdnHostname.mjs +25 -2
  184. package/lib/internal/_randomFormatIdnHostname.mjs.map +1 -1
  185. package/lib/internal/_randomFormatIpv4.d.ts +2 -1
  186. package/lib/internal/_randomFormatIpv4.js +32 -1
  187. package/lib/internal/_randomFormatIpv4.js.map +1 -1
  188. package/lib/internal/_randomFormatIpv4.mjs +23 -1
  189. package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
  190. package/lib/internal/_randomFormatIpv6.d.ts +2 -1
  191. package/lib/internal/_randomFormatIpv6.js +58 -1
  192. package/lib/internal/_randomFormatIpv6.js.map +1 -1
  193. package/lib/internal/_randomFormatIpv6.mjs +45 -1
  194. package/lib/internal/_randomFormatIpv6.mjs.map +1 -1
  195. package/lib/internal/_randomFormatIri.d.ts +2 -1
  196. package/lib/internal/_randomFormatIri.js +1 -1
  197. package/lib/internal/_randomFormatIri.js.map +1 -1
  198. package/lib/internal/_randomFormatIri.mjs +1 -1
  199. package/lib/internal/_randomFormatIri.mjs.map +1 -1
  200. package/lib/internal/_randomFormatIriReference.d.ts +2 -1
  201. package/lib/internal/_randomFormatIriReference.js +1 -1
  202. package/lib/internal/_randomFormatIriReference.js.map +1 -1
  203. package/lib/internal/_randomFormatIriReference.mjs +1 -1
  204. package/lib/internal/_randomFormatIriReference.mjs.map +1 -1
  205. package/lib/internal/_randomFormatJsonPointer.d.ts +2 -1
  206. package/lib/internal/_randomFormatJsonPointer.js +20 -1
  207. package/lib/internal/_randomFormatJsonPointer.js.map +1 -1
  208. package/lib/internal/_randomFormatJsonPointer.mjs +15 -1
  209. package/lib/internal/_randomFormatJsonPointer.mjs.map +1 -1
  210. package/lib/internal/_randomFormatPassword.d.ts +2 -1
  211. package/lib/internal/_randomFormatPassword.js +7 -5
  212. package/lib/internal/_randomFormatPassword.js.map +1 -1
  213. package/lib/internal/_randomFormatPassword.mjs +5 -1
  214. package/lib/internal/_randomFormatPassword.mjs.map +1 -1
  215. package/lib/internal/_randomFormatRegex.d.ts +2 -1
  216. package/lib/internal/_randomFormatRegex.js +15 -1
  217. package/lib/internal/_randomFormatRegex.js.map +1 -1
  218. package/lib/internal/_randomFormatRegex.mjs +14 -1
  219. package/lib/internal/_randomFormatRegex.mjs.map +1 -1
  220. package/lib/internal/_randomFormatRelativeJsonPointer.d.ts +2 -1
  221. package/lib/internal/_randomFormatRelativeJsonPointer.js +20 -5
  222. package/lib/internal/_randomFormatRelativeJsonPointer.js.map +1 -1
  223. package/lib/internal/_randomFormatRelativeJsonPointer.mjs +21 -5
  224. package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
  225. package/lib/internal/_randomFormatTime.d.ts +2 -1
  226. package/lib/internal/_randomFormatTime.js +34 -7
  227. package/lib/internal/_randomFormatTime.js.map +1 -1
  228. package/lib/internal/_randomFormatTime.mjs +37 -4
  229. package/lib/internal/_randomFormatTime.mjs.map +1 -1
  230. package/lib/internal/_randomFormatUri.d.ts +2 -1
  231. package/lib/internal/_randomFormatUri.js +1 -1
  232. package/lib/internal/_randomFormatUri.js.map +1 -1
  233. package/lib/internal/_randomFormatUri.mjs +1 -1
  234. package/lib/internal/_randomFormatUri.mjs.map +1 -1
  235. package/lib/internal/_randomFormatUriReference.d.ts +2 -1
  236. package/lib/internal/_randomFormatUriReference.js +1 -1
  237. package/lib/internal/_randomFormatUriReference.js.map +1 -1
  238. package/lib/internal/_randomFormatUriReference.mjs +1 -1
  239. package/lib/internal/_randomFormatUriReference.mjs.map +1 -1
  240. package/lib/internal/_randomFormatUriTemplate.d.ts +2 -1
  241. package/lib/internal/_randomFormatUriTemplate.js +1 -1
  242. package/lib/internal/_randomFormatUriTemplate.js.map +1 -1
  243. package/lib/internal/_randomFormatUriTemplate.mjs +1 -1
  244. package/lib/internal/_randomFormatUriTemplate.mjs.map +1 -1
  245. package/lib/internal/_randomFormatUrl.d.ts +2 -1
  246. package/lib/internal/_randomFormatUrl.js +21 -1
  247. package/lib/internal/_randomFormatUrl.js.map +1 -1
  248. package/lib/internal/_randomFormatUrl.mjs +18 -1
  249. package/lib/internal/_randomFormatUrl.mjs.map +1 -1
  250. package/lib/internal/_randomFormatUuid.d.ts +2 -1
  251. package/lib/internal/_randomFormatUuid.js +3 -2
  252. package/lib/internal/_randomFormatUuid.js.map +1 -1
  253. package/lib/internal/_randomFormatUuid.mjs +3 -2
  254. package/lib/internal/_randomFormatUuid.mjs.map +1 -1
  255. package/lib/internal/_randomInteger.js +59 -28
  256. package/lib/internal/_randomInteger.js.map +1 -1
  257. package/lib/internal/_randomInteger.mjs +56 -16
  258. package/lib/internal/_randomInteger.mjs.map +1 -1
  259. package/lib/internal/_randomMultiple.d.ts +8 -0
  260. package/lib/internal/_randomMultiple.js +168 -0
  261. package/lib/internal/_randomMultiple.js.map +1 -0
  262. package/lib/internal/_randomMultiple.mjs +158 -0
  263. package/lib/internal/_randomMultiple.mjs.map +1 -0
  264. package/lib/internal/_randomNumber.js +42 -42
  265. package/lib/internal/_randomNumber.js.map +1 -1
  266. package/lib/internal/_randomNumber.mjs +41 -27
  267. package/lib/internal/_randomNumber.mjs.map +1 -1
  268. package/lib/internal/_randomPattern.d.ts +2 -1
  269. package/lib/internal/_randomPattern.js +19 -4
  270. package/lib/internal/_randomPattern.js.map +1 -1
  271. package/lib/internal/_randomPattern.mjs +10 -4
  272. package/lib/internal/_randomPattern.mjs.map +1 -1
  273. package/lib/internal/_randomStringLength.d.ts +64 -0
  274. package/lib/internal/_randomStringLength.js +84 -0
  275. package/lib/internal/_randomStringLength.js.map +1 -0
  276. package/lib/internal/_randomStringLength.mjs +79 -0
  277. package/lib/internal/_randomStringLength.mjs.map +1 -0
  278. package/lib/internal/_stringLength.d.ts +1 -0
  279. package/lib/internal/_stringLength.js +11 -0
  280. package/lib/internal/_stringLength.js.map +1 -0
  281. package/lib/internal/_stringLength.mjs +10 -0
  282. package/lib/internal/_stringLength.mjs.map +1 -0
  283. package/lib/internal/_validateReport.js +4 -1
  284. package/lib/internal/_validateReport.js.map +1 -1
  285. package/lib/internal/_validateReport.mjs +2 -1
  286. package/lib/internal/_validateReport.mjs.map +1 -1
  287. package/lib/internal/private/__notationRename.d.ts +14 -0
  288. package/lib/internal/private/__notationRename.js +25 -0
  289. package/lib/internal/private/__notationRename.js.map +1 -0
  290. package/lib/internal/private/__notationRename.mjs +24 -0
  291. package/lib/internal/private/__notationRename.mjs.map +1 -0
  292. package/lib/internal/private/__randomComposition.d.ts +23 -0
  293. package/lib/internal/private/__randomComposition.js +48 -0
  294. package/lib/internal/private/__randomComposition.js.map +1 -0
  295. package/lib/internal/private/__randomComposition.mjs +54 -0
  296. package/lib/internal/private/__randomComposition.mjs.map +1 -0
  297. package/lib/internal/private/__randomEpoch.d.ts +19 -0
  298. package/lib/internal/private/__randomEpoch.js +31 -0
  299. package/lib/internal/private/__randomEpoch.js.map +1 -0
  300. package/lib/internal/private/__randomEpoch.mjs +28 -0
  301. package/lib/internal/private/__randomEpoch.mjs.map +1 -0
  302. package/lib/json.d.ts +2 -2
  303. package/lib/json.mjs.map +1 -1
  304. package/lib/module.d.ts +2 -2
  305. package/lib/module.js.map +1 -1
  306. package/lib/module.mjs.map +1 -1
  307. package/lib/notations.d.ts +20 -4
  308. package/lib/notations.js.map +1 -1
  309. package/lib/notations.mjs.map +1 -1
  310. package/native/adapter/plugin_options.go +117 -0
  311. package/native/adapter/plugin_options_payload_matrix_test.go +181 -0
  312. package/native/cmd/ttsc-typia/any_array_type_tags_transform_test.go +63 -9
  313. package/native/cmd/ttsc-typia/assert_guard_factory_contract_test.go +152 -0
  314. package/native/cmd/ttsc-typia/build.go +84 -64
  315. package/native/cmd/ttsc-typia/build_no_emit_preserves_analysis_options_test.go +67 -0
  316. package/native/cmd/ttsc-typia/build_no_emit_transform_diagnostics_test.go +138 -0
  317. package/native/cmd/ttsc-typia/build_plugin_options_come_from_payload_test.go +48 -0
  318. package/native/cmd/ttsc-typia/build_transactional_emit_success_test.go +81 -0
  319. package/native/cmd/ttsc-typia/build_transform_failure_atomicity_test.go +138 -0
  320. package/native/cmd/ttsc-typia/callable_interface_function_semantics_transform_test.go +331 -0
  321. package/native/cmd/ttsc-typia/callable_type_literal_boundaries_transform_test.go +1184 -0
  322. package/native/cmd/ttsc-typia/command_routes_and_diagnostics_coverage_test.go +3 -1
  323. package/native/cmd/ttsc-typia/compare_functional_union_membership_transform_test.go +434 -0
  324. package/native/cmd/ttsc-typia/compare_less_nan_transform_test.go +98 -0
  325. package/native/cmd/ttsc-typia/compare_native_object_overmatch_transform_test.go +161 -0
  326. package/native/cmd/ttsc-typia/compare_nondiscriminable_union_transform_test.go +343 -0
  327. package/native/cmd/ttsc-typia/compare_template_literal_union_transform_test.go +241 -0
  328. package/native/cmd/ttsc-typia/compare_union_discrimination_transform_test.go +289 -0
  329. package/native/cmd/ttsc-typia/default_library_spoof_native_identity_transform_test.go +216 -0
  330. package/native/cmd/ttsc-typia/escaped_property_key_path_transform_test.go +193 -0
  331. package/native/cmd/ttsc-typia/finite_option_number_leaf_transform_test.go +240 -0
  332. package/native/cmd/ttsc-typia/functional_promised_type_transform_test.go +220 -0
  333. package/native/cmd/ttsc-typia/functional_receiver_transform_test.go +232 -0
  334. package/native/cmd/ttsc-typia/is_object_function_member_transform_test.go +205 -0
  335. package/native/cmd/ttsc-typia/json_application_alias_function_validation_transform_test.go +151 -0
  336. package/native/cmd/ttsc-typia/json_is_stringify_finite_number_transform_test.go +198 -0
  337. package/native/cmd/ttsc-typia/json_schema_dynamic_key_determinism_transform_test.go +246 -0
  338. package/native/cmd/ttsc-typia/json_stringify_contextual_undefined_transform_test.go +556 -0
  339. package/native/cmd/ttsc-typia/json_stringify_special_key_transform_test.go +238 -0
  340. package/native/cmd/ttsc-typia/lib_replacement_native_identity_transform_test.go +277 -0
  341. package/native/cmd/ttsc-typia/main_wasm.go +21 -2
  342. package/native/cmd/ttsc-typia/native_collection_identity_is_transform_test.go +234 -0
  343. package/native/cmd/ttsc-typia/native_generic_name_guard_is_transform_test.go +194 -0
  344. package/native/cmd/ttsc-typia/native_name_collision_is_transform_test.go +204 -0
  345. package/native/cmd/ttsc-typia/native_named_intersection_union_transform_test.go +390 -0
  346. package/native/cmd/ttsc-typia/node_buffer_native_exports_is_transform_test.go +526 -0
  347. package/native/cmd/ttsc-typia/non_trailing_rest_tuple_transform_test.go +23 -11
  348. package/native/cmd/ttsc-typia/notation_dynamic_keys_transform_test.go +286 -0
  349. package/native/cmd/ttsc-typia/notation_kebab_case_transform_test.go +1 -1
  350. package/native/cmd/ttsc-typia/notation_literal_collision_transform_test.go +164 -0
  351. package/native/cmd/ttsc-typia/notation_pascal_case_transform_test.go +230 -0
  352. package/native/cmd/ttsc-typia/notation_unicode_key_transform_test.go +309 -0
  353. package/native/cmd/ttsc-typia/package_declaration_native_identity_is_transform_test.go +293 -0
  354. package/native/cmd/ttsc-typia/pattern_line_terminator_escape_transform_test.go +224 -0
  355. package/native/cmd/ttsc-typia/plain_prune_union_object_overmatch_transform_test.go +219 -0
  356. package/native/cmd/ttsc-typia/plugin_options_payload_helpers_test.go +181 -0
  357. package/native/cmd/ttsc-typia/private_field_filter_is_transform_test.go +278 -0
  358. package/native/cmd/ttsc-typia/project_catalog_transform_coverage_test.go +73 -27
  359. package/native/cmd/ttsc-typia/project_dependencies_barrel_reexport_transform_test.go +120 -0
  360. package/native/cmd/ttsc-typia/project_dependencies_collapsed_alias_transform_test.go +134 -0
  361. package/native/cmd/ttsc-typia/project_dependencies_custom_lib_name_transform_test.go +135 -0
  362. package/native/cmd/ttsc-typia/project_dependencies_default_barrel_transform_test.go +114 -0
  363. package/native/cmd/ttsc-typia/project_dependencies_empty_heritage_transform_test.go +100 -0
  364. package/native/cmd/ttsc-typia/project_dependencies_envelope_transform_test.go +148 -0
  365. package/native/cmd/ttsc-typia/project_dependencies_index_signature_alias_transform_test.go +139 -0
  366. package/native/cmd/ttsc-typia/project_dependencies_local_reexport_transform_test.go +122 -0
  367. package/native/cmd/ttsc-typia/project_dependencies_signature_alias_transform_test.go +125 -0
  368. package/native/cmd/ttsc-typia/project_dependencies_star_barrel_transform_test.go +112 -0
  369. package/native/cmd/ttsc-typia/project_reference_graph_envelope_transform_test.go +190 -0
  370. package/native/cmd/ttsc-typia/protobuf_diagnostic_code_transform_test.go +167 -0
  371. package/native/cmd/ttsc-typia/protobuf_is_encode_finite_number_transform_test.go +98 -0
  372. package/native/cmd/ttsc-typia/protobuf_sequence_field_numbers_transform_test.go +52 -22
  373. package/native/cmd/ttsc-typia/symbol_index_domain_transform_test.go +316 -0
  374. package/native/cmd/ttsc-typia/symbol_key_member_filter_transform_test.go +279 -0
  375. package/native/cmd/ttsc-typia/template_interpolation_type_tags_transform_test.go +86 -23
  376. package/native/cmd/ttsc-typia/template_literal_type_tags_transform_test.go +3 -1
  377. package/native/cmd/ttsc-typia/transform.go +251 -39
  378. package/native/cmd/ttsc-typia/{transform_declaration_source_produces_no_js_test.go → transform_declaration_source_produces_no_javascript_test.go} +10 -2
  379. package/native/cmd/ttsc-typia/transform_fixtures_emit_coverage_test.go +21 -4
  380. package/native/cmd/ttsc-typia/transform_helpers_test.go +236 -3
  381. package/native/cmd/ttsc-typia/transform_plugin_options_come_from_payload_test.go +43 -0
  382. package/native/cmd/ttsc-typia/transform_single_file_failure_atomicity_test.go +114 -0
  383. package/native/cmd/ttsc-typia/transform_single_file_failure_writes_no_stdout_test.go +43 -0
  384. package/native/cmd/ttsc-typia/transform_single_file_js_distinguishes_same_basename_sources_test.go +81 -0
  385. package/native/cmd/ttsc-typia/transform_single_file_js_empty_emit_reports_no_output_test.go +100 -0
  386. package/native/cmd/ttsc-typia/transform_single_file_js_locates_output_across_layouts_test.go +160 -0
  387. package/native/cmd/ttsc-typia/transform_single_file_success_publishes_artifact_test.go +54 -0
  388. package/native/cmd/ttsc-typia/transform_wasm_host_argv_reports_diagnostics_test.go +39 -0
  389. package/native/cmd/ttsc-typia/tuple_optional_compare_clone_transform_test.go +227 -0
  390. package/native/cmd/ttsc-typia/user_global_native_identity_transform_test.go +484 -0
  391. package/native/core/factories/FormatCheatSheet.go +40 -7
  392. package/native/core/factories/IdentifierFactory.go +131 -4
  393. package/native/core/factories/MetadataCommentTagFactory.go +83 -40
  394. package/native/core/factories/MetadataTypeTagFactory.go +13 -1
  395. package/native/core/factories/NumericRangeFactory.go +60 -17
  396. package/native/core/factories/ProtobufFactory.go +13 -5
  397. package/native/core/factories/factory_utility_coverage_test.go +8 -2
  398. package/native/core/factories/format_alias_resolves_to_cheat_sheet_test.go +57 -0
  399. package/native/core/factories/format_alias_table_targets_the_cheat_sheet_test.go +44 -0
  400. package/native/core/factories/identifier_factory_postfix_escapes_every_key_test.go +147 -0
  401. package/native/core/factories/identifier_factory_postfix_survives_every_code_point_test.go +86 -0
  402. package/native/core/factories/internal/metadata/MetadataHelper.go +226 -17
  403. package/native/core/factories/internal/metadata/emplace_metadata_object.go +141 -8
  404. package/native/core/factories/internal/metadata/iterate_metadata.go +6 -0
  405. package/native/core/factories/internal/metadata/iterate_metadata_function.go +5 -12
  406. package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +111 -29
  407. package/native/core/factories/internal/metadata/iterate_metadata_map.go +5 -0
  408. package/native/core/factories/internal/metadata/iterate_metadata_native.go +45 -2
  409. package/native/core/factories/internal/metadata/iterate_metadata_set.go +5 -0
  410. package/native/core/factories/internal/metadata/type_arguments_precondition_test.go +70 -0
  411. package/native/core/factories/metadata_comment_tag_factory_coverage_test.go +39 -0
  412. package/native/core/factories/metadata_comment_tag_factory_exclusivity_matches_interface_test.go +84 -0
  413. package/native/core/factories/metadata_type_tag_factory_accepts_legal_tag_combinations_test.go +60 -0
  414. package/native/core/factories/metadata_type_tag_factory_declarations_test.go +86 -0
  415. package/native/core/factories/metadata_type_tag_factory_keeps_bool_form_exclusivity_test.go +38 -0
  416. package/native/core/factories/metadata_type_tag_factory_rejects_cross_kind_exclusive_tags_test.go +65 -0
  417. package/native/core/factories/metadata_type_tag_factory_rejects_duplicated_array_form_tags_test.go +41 -0
  418. package/native/core/factories/numeric_range_factory_enforces_64bit_bounds_test.go +69 -0
  419. package/native/core/factories/protobuf_recovery_ownership_test.go +64 -0
  420. package/native/core/programmers/IsProgrammer.go +15 -1
  421. package/native/core/programmers/RandomProgrammer.go +51 -14
  422. package/native/core/programmers/compare/CompareEqualProgrammer.go +410 -8
  423. package/native/core/programmers/compare/CompareLessProgrammer.go +4 -2
  424. package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +4 -6
  425. package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +5 -13
  426. package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +6 -14
  427. package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +4 -6
  428. package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +49 -14
  429. package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +5 -13
  430. package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +4 -6
  431. package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +5 -13
  432. package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +5 -13
  433. package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +4 -17
  434. package/native/core/programmers/helpers/CloneJoiner.go +32 -0
  435. package/native/core/programmers/helpers/FunctionProgrammer.go +6 -13
  436. package/native/core/programmers/helpers/NotationJoiner.go +86 -28
  437. package/native/core/programmers/helpers/StringifyJoinder.go +161 -51
  438. package/native/core/programmers/helpers/UnionExplorer.go +203 -61
  439. package/native/core/programmers/helpers/joiner_branch_coverage_test.go +116 -118
  440. package/native/core/programmers/helpers/union_explorer_coverage_test.go +1 -1
  441. package/native/core/programmers/internal/CheckerProgrammer.go +100 -48
  442. package/native/core/programmers/iterate/check_template.go +344 -32
  443. package/native/core/programmers/iterate/iterate_check_coverage_test.go +76 -158
  444. package/native/core/programmers/iterate/iterate_utility_coverage_test.go +231 -270
  445. package/native/core/programmers/iterate/json_schema_discriminator.go +36 -10
  446. package/native/core/programmers/iterate/json_schema_discriminator_declaration_syntax_test.go +205 -0
  447. package/native/core/programmers/iterate/json_schema_object.go +49 -7
  448. package/native/core/programmers/iterate/json_schema_pattern_property_order_test.go +44 -0
  449. package/native/core/programmers/iterate/openapi_v3_downgrader.go +674 -0
  450. package/native/core/programmers/iterate/openapi_v3_downgrader_boolean_default_test.go +95 -0
  451. package/native/core/programmers/iterate/openapi_v3_downgrader_test.go +123 -0
  452. package/native/core/programmers/iterate/template_interpolation_tags_test.go +40 -8
  453. package/native/core/programmers/iterate/template_runtime_pattern.go +63 -7
  454. package/native/core/programmers/json/JsonApplicationProgrammer.go +45 -11
  455. package/native/core/programmers/json/JsonSchemasProgrammer.go +12 -2
  456. package/native/core/programmers/json/JsonStringifyProgrammer.go +47 -6
  457. package/native/core/programmers/llm/LlmApplicationProgrammer.go +21 -11
  458. package/native/core/programmers/llm/LlmSchemaProgrammer.go +23 -6
  459. package/native/core/programmers/llm/llm_reference_codec_test.go +24 -0
  460. package/native/core/programmers/notations/NotationGeneralProgrammer.go +183 -67
  461. package/native/core/programmers/notations/notation_general_helpers_test.go +1 -3
  462. package/native/core/programmers/notations/notation_general_programmer_pascal_multiword_test.go +72 -0
  463. package/native/core/programmers/notations/notation_general_programmer_underscore_boundary_test.go +68 -0
  464. package/native/core/programmers/plain/PlainClassifyProgrammer.go +23 -15
  465. package/native/core/programmers/plain/PlainCloneProgrammer.go +20 -7
  466. package/native/core/programmers/plain/PlainPruneProgrammer.go +19 -5
  467. package/native/core/programmers/plain/plain_tuple_seed_recovery_ownership_test.go +25 -0
  468. package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +37 -28
  469. package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +41 -22
  470. package/native/core/programmers/protobuf/protobuf_programmer_helper_coverage_test.go +26 -0
  471. package/native/core/programmers/random_programmer_length_argument_test.go +53 -0
  472. package/native/core/schemas/metadata/MetadataCollection.go +266 -25
  473. package/native/core/schemas/metadata/MetadataDefaultLibrary.go +81 -0
  474. package/native/core/schemas/metadata/MetadataDependency.go +388 -0
  475. package/native/core/schemas/metadata/MetadataObjectType.go +24 -22
  476. package/native/core/schemas/metadata/metadata_collection_generic_argument_dot_test.go +122 -0
  477. package/native/core/schemas/metadata/metadata_collection_name_allocation_test.go +147 -0
  478. package/native/core/schemas/metadata/metadata_collection_openapi_name_cascade_test.go +55 -0
  479. package/native/core/schemas/metadata/metadata_collection_openapi_name_test.go +68 -0
  480. package/native/core/utils/PatternUtil.go +13 -0
  481. package/native/core/utils/PromiseTypeFactory.go +59 -0
  482. package/native/core/utils/ProtobufNameEncoder.go +8 -0
  483. package/native/core/utils/promise_type_factory_semantics_test.go +118 -0
  484. package/native/go.mod +9 -1
  485. package/native/transform/CallExpressionTransformer.go +12 -0
  486. package/native/transform/features/json/JsonApplicationTransformer.go +1 -1
  487. package/native/transform/features/json/JsonSchemaTransformer.go +1 -1
  488. package/native/transform/features/json/JsonSchemasTransformer.go +5 -4
  489. package/native/transform/features/protobuf/ProtobufMessageTransformer.go +1 -1
  490. package/package.json +12 -4
  491. package/src/executable/FileSystemIdentity.ts +222 -0
  492. package/src/executable/TypiaGenerateWizard.ts +386 -113
  493. package/src/functional.ts +30 -60
  494. package/src/internal/_ProtobufReader.ts +161 -46
  495. package/src/internal/_createStandardSchema.ts +15 -1
  496. package/src/internal/_decimal.ts +69 -0
  497. package/src/internal/_httpQueryParseURLSearchParams.ts +24 -2
  498. package/src/internal/_isFormatByte.ts +2 -5
  499. package/src/internal/_isFormatDate.ts +15 -2
  500. package/src/internal/_isFormatDateTime.ts +28 -2
  501. package/src/internal/_isFormatIri.ts +5 -2
  502. package/src/internal/_isFormatIriReference.ts +11 -3
  503. package/src/internal/_isFormatUriReference.ts +1 -1
  504. package/src/internal/_isMultipleOf.ts +8 -0
  505. package/src/internal/_isTypeFloat.ts +1 -1
  506. package/src/internal/_isTypeInt64.ts +1 -0
  507. package/src/internal/_isTypeInt64Bigint.ts +12 -0
  508. package/src/internal/_isTypeUint64.ts +1 -0
  509. package/src/internal/_isTypeUint64Bigint.ts +7 -0
  510. package/src/internal/_isUniqueItems.ts +134 -132
  511. package/src/internal/_jsonStringifyArray.ts +50 -0
  512. package/src/internal/_jsonStringifyElement.ts +19 -0
  513. package/src/internal/_jsonStringifyProperty.ts +30 -0
  514. package/src/internal/_llmApplicationFinalize.ts +6 -1
  515. package/src/internal/_notationAny.ts +9 -4
  516. package/src/internal/_notationAssign.ts +20 -0
  517. package/src/internal/_notationCamel.ts +31 -10
  518. package/src/internal/_notationKebab.ts +11 -0
  519. package/src/internal/_notationKeyCollision.ts +9 -0
  520. package/src/internal/_notationPascal.ts +19 -6
  521. package/src/internal/_notationSnake.ts +24 -21
  522. package/src/internal/_plainCloneAny.ts +208 -33
  523. package/src/internal/_randomArray.ts +13 -4
  524. package/src/internal/_randomFormatByte.ts +31 -1
  525. package/src/internal/_randomFormatDate.ts +6 -17
  526. package/src/internal/_randomFormatDatetime.ts +34 -15
  527. package/src/internal/_randomFormatDuration.ts +30 -13
  528. package/src/internal/_randomFormatEmail.ts +8 -2
  529. package/src/internal/_randomFormatHostname.ts +48 -1
  530. package/src/internal/_randomFormatIdnEmail.ts +18 -2
  531. package/src/internal/_randomFormatIdnHostname.ts +34 -2
  532. package/src/internal/_randomFormatIpv4.ts +43 -2
  533. package/src/internal/_randomFormatIpv6.ts +67 -2
  534. package/src/internal/_randomFormatIri.ts +3 -1
  535. package/src/internal/_randomFormatIriReference.ts +3 -1
  536. package/src/internal/_randomFormatJsonPointer.ts +28 -2
  537. package/src/internal/_randomFormatPassword.ts +11 -6
  538. package/src/internal/_randomFormatRegex.ts +22 -1
  539. package/src/internal/_randomFormatRelativeJsonPointer.ts +26 -6
  540. package/src/internal/_randomFormatTime.ts +46 -10
  541. package/src/internal/_randomFormatUri.ts +3 -1
  542. package/src/internal/_randomFormatUriReference.ts +3 -1
  543. package/src/internal/_randomFormatUriTemplate.ts +3 -1
  544. package/src/internal/_randomFormatUrl.ts +25 -2
  545. package/src/internal/_randomFormatUuid.ts +10 -6
  546. package/src/internal/_randomInteger.ts +87 -40
  547. package/src/internal/_randomMultiple.ts +245 -0
  548. package/src/internal/_randomNumber.ts +72 -55
  549. package/src/internal/_randomPattern.ts +29 -4
  550. package/src/internal/_randomStringLength.ts +116 -0
  551. package/src/internal/_stringLength.ts +5 -0
  552. package/src/internal/_validateReport.ts +5 -1
  553. package/src/internal/private/__notationRename.ts +21 -0
  554. package/src/internal/private/__randomComposition.ts +50 -0
  555. package/src/internal/private/__randomEpoch.ts +34 -0
  556. package/src/json.ts +2 -2
  557. package/src/module.ts +4 -6
  558. package/src/notations.ts +20 -4
  559. package/lib/internal/private/__notationCapitalize.d.ts +0 -1
  560. package/lib/internal/private/__notationCapitalize.js +0 -6
  561. package/lib/internal/private/__notationCapitalize.js.map +0 -1
  562. package/lib/internal/private/__notationCapitalize.mjs +0 -6
  563. package/lib/internal/private/__notationCapitalize.mjs.map +0 -1
  564. package/lib/internal/private/__notationUnsnake.d.ts +0 -4
  565. package/lib/internal/private/__notationUnsnake.js +0 -26
  566. package/lib/internal/private/__notationUnsnake.js.map +0 -1
  567. package/lib/internal/private/__notationUnsnake.mjs +0 -15
  568. package/lib/internal/private/__notationUnsnake.mjs.map +0 -1
  569. package/native/adapter/visit.go +0 -173
  570. package/native/adapter/visit_property_chain_edges_test.go +0 -129
  571. package/native/cmd/ttsc-typia/plugin_options_missing_config_test.go +0 -26
  572. package/native/cmd/ttsc-typia/plugin_options_undefined_false_test.go +0 -36
  573. package/native/core/programmers/helpers/disable_function_programmer_declare.go +0 -10
  574. package/native/core/programmers/iterate/check_union_array_like.go +0 -422
  575. package/native/core/programmers/iterate/prune_object_properties.go +0 -105
  576. package/native/core/programmers/iterate/stringify_dynamic_properties.go +0 -219
  577. package/native/core/programmers/iterate/stringify_native.go +0 -14
  578. package/native/core/programmers/iterate/stringify_regular_properties.go +0 -112
  579. package/native/core/schemas/metadata/MetadataApplication.go +0 -41
  580. package/src/internal/private/__notationCapitalize.ts +0 -2
  581. package/src/internal/private/__notationUnsnake.ts +0 -24
@@ -1,34 +1,138 @@
1
1
  //#region src/internal/_plainCloneAny.ts
2
2
  const _plainCloneAny = (value) => cloneMain(value);
3
+ const NOT_NATIVE = Symbol("not-native");
4
+ const objectToString = Object.prototype.toString;
5
+ const getter = (prototype, key) => Object.getOwnPropertyDescriptor(prototype, key).get;
6
+ const read = (accessor, value) => Reflect.apply(accessor, value, []);
7
+ const tryRead = (accessor, value) => {
8
+ if (accessor === void 0) return { success: false };
9
+ try {
10
+ return {
11
+ success: true,
12
+ value: read(accessor, value)
13
+ };
14
+ } catch {
15
+ return { success: false };
16
+ }
17
+ };
18
+ const arrayBufferByteLength = getter(ArrayBuffer.prototype, "byteLength");
19
+ const sharedArrayBufferByteLength = typeof SharedArrayBuffer === "undefined" ? void 0 : getter(SharedArrayBuffer.prototype, "byteLength");
20
+ const dataViewBuffer = getter(DataView.prototype, "buffer");
21
+ const dataViewByteLength = getter(DataView.prototype, "byteLength");
22
+ const dataViewByteOffset = getter(DataView.prototype, "byteOffset");
23
+ const typedArrayName = getter(Object.getPrototypeOf(Uint8Array.prototype), Symbol.toStringTag);
24
+ const blobSize = typeof Blob === "undefined" ? void 0 : getter(Blob.prototype, "size");
25
+ const blobType = typeof Blob === "undefined" ? void 0 : getter(Blob.prototype, "type");
26
+ const fileName = typeof File === "undefined" ? void 0 : getter(File.prototype, "name");
27
+ const fileLastModified = typeof File === "undefined" ? void 0 : getter(File.prototype, "lastModified");
28
+ const regexpSource = getter(RegExp.prototype, "source");
29
+ const regexpFlags = getter(RegExp.prototype, "flags");
30
+ const nativeTag = (value) => {
31
+ let tagged;
32
+ try {
33
+ tagged = Symbol.toStringTag in value;
34
+ } catch {
35
+ return;
36
+ }
37
+ if (!tagged) try {
38
+ return objectToString.call(value);
39
+ } catch {
40
+ return;
41
+ }
42
+ if (tryRead(Date.prototype.getTime, value).success) return "[object Date]";
43
+ const typed = tryRead(typedArrayName, value);
44
+ if (typed.success && typed.value !== void 0) return `[object ${typed.value}]`;
45
+ if (tryRead(arrayBufferByteLength, value).success) return "[object ArrayBuffer]";
46
+ if (tryRead(sharedArrayBufferByteLength, value).success) return "[object SharedArrayBuffer]";
47
+ if (tryRead(dataViewBuffer, value).success) return "[object DataView]";
48
+ if (tryRead(fileName, value).success) return "[object File]";
49
+ if (tryRead(blobSize, value).success) return "[object Blob]";
50
+ if (tryRead(regexpSource, value).success) return "[object RegExp]";
51
+ };
3
52
  const cloneMain = (value) => {
4
53
  if (value === void 0) return void 0;
5
54
  else if (typeof value === "object") if (value === null) return null;
6
55
  else if (Array.isArray(value)) return value.map(cloneMain);
7
- else if (value instanceof Date) return new Date(value);
8
- else if (value instanceof Uint8Array) return new Uint8Array(value);
9
- else if (value instanceof Uint8ClampedArray) return new Uint8ClampedArray(value);
10
- else if (value instanceof Uint16Array) return new Uint16Array(value);
11
- else if (value instanceof Uint32Array) return new Uint32Array(value);
12
- else if (value instanceof BigUint64Array) return new BigUint64Array(value);
13
- else if (value instanceof Int8Array) return new Int8Array(value);
14
- else if (value instanceof Int16Array) return new Int16Array(value);
15
- else if (value instanceof Int32Array) return new Int32Array(value);
16
- else if (value instanceof BigInt64Array) return new BigInt64Array(value);
17
- else if (value instanceof Float32Array) return new Float32Array(value);
18
- else if (value instanceof Float64Array) return new Float64Array(value);
19
- else if (value instanceof ArrayBuffer) return value.slice(0);
20
- else if (value instanceof SharedArrayBuffer) return value.slice(0);
21
- else if (value instanceof DataView) return new DataView(value.buffer.slice(0));
22
- else if (typeof File !== "undefined" && value instanceof File) return new File([value], value.name, { type: value.type });
23
- else if (typeof Blob !== "undefined" && value instanceof Blob) return new Blob([value], { type: value.type });
24
- else if (value instanceof Set) return new Set([...value].map(cloneMain));
25
- else if (value instanceof Map) return new Map([...value].map(([k, v]) => [cloneMain(k), cloneMain(v)]));
26
- else if (value instanceof WeakSet || value instanceof WeakMap) throw new Error("WeakSet and WeakMap are not supported");
27
- else if (value.valueOf() !== value) return cloneMain(value.valueOf());
28
- else return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, cloneMain(v)]).filter(([, v]) => v !== void 0));
56
+ else {
57
+ const native = cloneNative(value);
58
+ if (native !== NOT_NATIVE) return native;
59
+ else if (value instanceof Set) return new Set([...value].map(cloneMain));
60
+ else if (value instanceof Map) return new Map([...value].map(([k, v]) => [cloneMain(k), cloneMain(v)]));
61
+ else if (value instanceof WeakSet || value instanceof WeakMap) throw new Error("WeakSet and WeakMap are not supported");
62
+ else {
63
+ const primitive = value.valueOf();
64
+ if (primitive !== value) return cloneMain(primitive);
65
+ return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, cloneMain(v)]).filter(([, v]) => v !== void 0));
66
+ }
67
+ }
29
68
  else if (typeof value === "function") return void 0;
30
69
  return value;
31
70
  };
71
+ const cloneNative = (value) => {
72
+ switch (nativeTag(value)) {
73
+ case "[object Date]": {
74
+ const time = tryRead(Date.prototype.getTime, value);
75
+ return time.success ? new Date(time.value) : NOT_NATIVE;
76
+ }
77
+ case "[object Uint8Array]": return new Uint8Array(value);
78
+ case "[object Uint8ClampedArray]": return new Uint8ClampedArray(value);
79
+ case "[object Uint16Array]": return new Uint16Array(value);
80
+ case "[object Uint32Array]": return new Uint32Array(value);
81
+ case "[object BigUint64Array]": return new BigUint64Array(value);
82
+ case "[object Int8Array]": return new Int8Array(value);
83
+ case "[object Int16Array]": return new Int16Array(value);
84
+ case "[object Int32Array]": return new Int32Array(value);
85
+ case "[object BigInt64Array]": return new BigInt64Array(value);
86
+ case "[object Float32Array]": return new Float32Array(value);
87
+ case "[object Float64Array]": return new Float64Array(value);
88
+ case "[object ArrayBuffer]": {
89
+ const byteLength = tryRead(arrayBufferByteLength, value);
90
+ return byteLength.success ? cloneBufferRange(value, 0, byteLength.value, false) : NOT_NATIVE;
91
+ }
92
+ case "[object SharedArrayBuffer]": {
93
+ const byteLength = tryRead(sharedArrayBufferByteLength, value);
94
+ return byteLength.success ? cloneBufferRange(value, 0, byteLength.value, true) : NOT_NATIVE;
95
+ }
96
+ case "[object DataView]": {
97
+ const buffer = tryRead(dataViewBuffer, value);
98
+ if (!buffer.success) return NOT_NATIVE;
99
+ const byteOffset = read(dataViewByteOffset, value);
100
+ const byteLength = read(dataViewByteLength, value);
101
+ return new DataView(cloneBufferRange(buffer.value, byteOffset, byteLength));
102
+ }
103
+ case "[object File]": {
104
+ const size = tryRead(blobSize, value);
105
+ if (typeof File === "undefined" || !size.success || blobType === void 0 || fileName === void 0 || fileLastModified === void 0) return NOT_NATIVE;
106
+ return new File([value], read(fileName, value), {
107
+ type: read(blobType, value),
108
+ lastModified: read(fileLastModified, value)
109
+ });
110
+ }
111
+ case "[object Blob]": {
112
+ const size = tryRead(blobSize, value);
113
+ if (typeof Blob === "undefined" || !size.success || blobType === void 0) return NOT_NATIVE;
114
+ return new Blob([value], { type: read(blobType, value) });
115
+ }
116
+ case "[object RegExp]": {
117
+ const source = tryRead(regexpSource, value);
118
+ return source.success ? new RegExp(source.value, read(regexpFlags, value)) : NOT_NATIVE;
119
+ }
120
+ default: return NOT_NATIVE;
121
+ }
122
+ };
123
+ const cloneBufferRange = (input, byteOffset, byteLength, shared) => {
124
+ if (shared === void 0) shared = tryRead(sharedArrayBufferByteLength, input).success;
125
+ let output;
126
+ if (shared) {
127
+ if (typeof SharedArrayBuffer === "undefined") throw new TypeError("SharedArrayBuffer is not available");
128
+ output = new SharedArrayBuffer(byteLength);
129
+ } else {
130
+ read(arrayBufferByteLength, input);
131
+ output = new ArrayBuffer(byteLength);
132
+ }
133
+ new Uint8Array(output).set(new Uint8Array(input, byteOffset, byteLength));
134
+ return output;
135
+ };
32
136
  //#endregion
33
137
  export { _plainCloneAny };
34
138
 
@@ -1 +1 @@
1
- {"version":3,"file":"_plainCloneAny.mjs","names":[],"sources":["../../src/internal/_plainCloneAny.ts"],"sourcesContent":["import { Resolved } from \"@typia/interface\";\n\nexport const _plainCloneAny = <T>(value: T): Resolved<T> =>\n cloneMain(value) as Resolved<T>;\n\nconst cloneMain = (value: any): any => {\n if (value === undefined) return undefined;\n else if (typeof value === \"object\")\n if (value === null) return null;\n else if (Array.isArray(value)) return value.map(cloneMain);\n else if (value instanceof Date) return new Date(value);\n else if (value instanceof Uint8Array) return new Uint8Array(value);\n else if (value instanceof Uint8ClampedArray)\n return new Uint8ClampedArray(value);\n else if (value instanceof Uint16Array) return new Uint16Array(value);\n else if (value instanceof Uint32Array) return new Uint32Array(value);\n else if (value instanceof BigUint64Array) return new BigUint64Array(value);\n else if (value instanceof Int8Array) return new Int8Array(value);\n else if (value instanceof Int16Array) return new Int16Array(value);\n else if (value instanceof Int32Array) return new Int32Array(value);\n else if (value instanceof BigInt64Array) return new BigInt64Array(value);\n else if (value instanceof Float32Array) return new Float32Array(value);\n else if (value instanceof Float64Array) return new Float64Array(value);\n else if (value instanceof ArrayBuffer) return value.slice(0);\n else if (value instanceof SharedArrayBuffer) return value.slice(0);\n else if (value instanceof DataView)\n return new DataView(value.buffer.slice(0));\n else if (typeof File !== \"undefined\" && value instanceof File)\n return new File([value], value.name, { type: value.type });\n else if (typeof Blob !== \"undefined\" && value instanceof Blob)\n return new Blob([value], { type: value.type });\n else if (value instanceof Set) return new Set([...value].map(cloneMain));\n else if (value instanceof Map)\n return new Map([...value].map(([k, v]) => [cloneMain(k), cloneMain(v)]));\n else if (value instanceof WeakSet || value instanceof WeakMap)\n throw new Error(\"WeakSet and WeakMap are not supported\");\n else if (value.valueOf() !== value) return cloneMain(value.valueOf());\n else\n return Object.fromEntries(\n Object.entries(value)\n .map(([k, v]) => [k, cloneMain(v)])\n .filter(([, v]) => v !== undefined),\n );\n else if (typeof value === \"function\") return undefined;\n return value;\n};\n"],"mappings":";AAEA,MAAa,kBAAqB,UAChC,UAAU,KAAK;AAEjB,MAAM,aAAa,UAAoB;CACrC,IAAI,UAAU,KAAA,GAAW,OAAO,KAAA;MAC3B,IAAI,OAAO,UAAU,UACxB,IAAI,UAAU,MAAM,OAAO;MACtB,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,IAAI,SAAS;MACpD,IAAI,iBAAiB,MAAM,OAAO,IAAI,KAAK,KAAK;MAChD,IAAI,iBAAiB,YAAY,OAAO,IAAI,WAAW,KAAK;MAC5D,IAAI,iBAAiB,mBACxB,OAAO,IAAI,kBAAkB,KAAK;MAC/B,IAAI,iBAAiB,aAAa,OAAO,IAAI,YAAY,KAAK;MAC9D,IAAI,iBAAiB,aAAa,OAAO,IAAI,YAAY,KAAK;MAC9D,IAAI,iBAAiB,gBAAgB,OAAO,IAAI,eAAe,KAAK;MACpE,IAAI,iBAAiB,WAAW,OAAO,IAAI,UAAU,KAAK;MAC1D,IAAI,iBAAiB,YAAY,OAAO,IAAI,WAAW,KAAK;MAC5D,IAAI,iBAAiB,YAAY,OAAO,IAAI,WAAW,KAAK;MAC5D,IAAI,iBAAiB,eAAe,OAAO,IAAI,cAAc,KAAK;MAClE,IAAI,iBAAiB,cAAc,OAAO,IAAI,aAAa,KAAK;MAChE,IAAI,iBAAiB,cAAc,OAAO,IAAI,aAAa,KAAK;MAChE,IAAI,iBAAiB,aAAa,OAAO,MAAM,MAAM,CAAC;MACtD,IAAI,iBAAiB,mBAAmB,OAAO,MAAM,MAAM,CAAC;MAC5D,IAAI,iBAAiB,UACxB,OAAO,IAAI,SAAS,MAAM,OAAO,MAAM,CAAC,CAAC;MACtC,IAAI,OAAO,SAAS,eAAe,iBAAiB,MACvD,OAAO,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,MAAM,EAAE,MAAM,MAAM,KAAK,CAAC;MACtD,IAAI,OAAO,SAAS,eAAe,iBAAiB,MACvD,OAAO,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE,MAAM,MAAM,KAAK,CAAC;MAC1C,IAAI,iBAAiB,KAAK,OAAO,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;MAClE,IAAI,iBAAiB,KACxB,OAAO,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;MACpE,IAAI,iBAAiB,WAAW,iBAAiB,SACpD,MAAM,IAAI,MAAM,uCAAuC;MACpD,IAAI,MAAM,QAAQ,MAAM,OAAO,OAAO,UAAU,MAAM,QAAQ,CAAC;MAElE,OAAO,OAAO,YACZ,OAAO,QAAQ,KAAK,CAAC,CAClB,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAClC,QAAQ,GAAG,OAAO,MAAM,KAAA,CAAS,CACtC;MACC,IAAI,OAAO,UAAU,YAAY,OAAO,KAAA;CAC7C,OAAO;AACT"}
1
+ {"version":3,"file":"_plainCloneAny.mjs","names":[],"sources":["../../src/internal/_plainCloneAny.ts"],"sourcesContent":["import { Resolved } from \"@typia/interface\";\n\nexport const _plainCloneAny = <T>(value: T): Resolved<T> =>\n cloneMain(value) as Resolved<T>;\n\nconst NOT_NATIVE = Symbol(\"not-native\");\nconst objectToString = Object.prototype.toString;\nconst getter = (prototype: object, key: PropertyKey): (() => unknown) =>\n Object.getOwnPropertyDescriptor(prototype, key)!.get!;\nconst read = <T>(accessor: () => unknown, value: object): T =>\n Reflect.apply(accessor, value, []) as T;\nconst tryRead = <T>(\n accessor: (() => unknown) | undefined,\n value: object,\n): { success: true; value: T } | { success: false } => {\n if (accessor === undefined) return { success: false };\n try {\n return { success: true, value: read<T>(accessor, value) };\n } catch {\n return { success: false };\n }\n};\n\nconst arrayBufferByteLength = getter(ArrayBuffer.prototype, \"byteLength\");\nconst sharedArrayBufferByteLength =\n typeof SharedArrayBuffer === \"undefined\"\n ? undefined\n : getter(SharedArrayBuffer.prototype, \"byteLength\");\nconst dataViewBuffer = getter(DataView.prototype, \"buffer\");\nconst dataViewByteLength = getter(DataView.prototype, \"byteLength\");\nconst dataViewByteOffset = getter(DataView.prototype, \"byteOffset\");\nconst typedArrayName = getter(\n Object.getPrototypeOf(Uint8Array.prototype),\n Symbol.toStringTag,\n);\nconst blobSize =\n typeof Blob === \"undefined\" ? undefined : getter(Blob.prototype, \"size\");\nconst blobType =\n typeof Blob === \"undefined\" ? undefined : getter(Blob.prototype, \"type\");\nconst fileName =\n typeof File === \"undefined\" ? undefined : getter(File.prototype, \"name\");\nconst fileLastModified =\n typeof File === \"undefined\"\n ? undefined\n : getter(File.prototype, \"lastModified\");\nconst regexpSource = getter(RegExp.prototype, \"source\");\nconst regexpFlags = getter(RegExp.prototype, \"flags\");\n\nconst nativeTag = (value: object): string | undefined => {\n let tagged: boolean;\n try {\n tagged = Symbol.toStringTag in value;\n } catch {\n return undefined;\n }\n if (!tagged)\n try {\n return objectToString.call(value);\n } catch {\n return undefined;\n }\n\n const date = tryRead<number>(Date.prototype.getTime, value);\n if (date.success) return \"[object Date]\";\n const typed = tryRead<string>(typedArrayName, value);\n if (typed.success && typed.value !== undefined)\n return `[object ${typed.value}]`;\n if (tryRead<number>(arrayBufferByteLength, value).success)\n return \"[object ArrayBuffer]\";\n if (tryRead<number>(sharedArrayBufferByteLength, value).success)\n return \"[object SharedArrayBuffer]\";\n if (tryRead<ArrayBufferLike>(dataViewBuffer, value).success)\n return \"[object DataView]\";\n if (tryRead<string>(fileName, value).success) return \"[object File]\";\n if (tryRead<number>(blobSize, value).success) return \"[object Blob]\";\n if (tryRead<string>(regexpSource, value).success) return \"[object RegExp]\";\n return undefined;\n};\n\nconst cloneMain = (value: any): any => {\n if (value === undefined) return undefined;\n else if (typeof value === \"object\")\n if (value === null) return null;\n else if (Array.isArray(value)) return value.map(cloneMain);\n else {\n const native: any | typeof NOT_NATIVE = cloneNative(value);\n if (native !== NOT_NATIVE) return native;\n else if (value instanceof Set) return new Set([...value].map(cloneMain));\n else if (value instanceof Map)\n return new Map(\n [...value].map(([k, v]) => [cloneMain(k), cloneMain(v)]),\n );\n else if (value instanceof WeakSet || value instanceof WeakMap)\n throw new Error(\"WeakSet and WeakMap are not supported\");\n else {\n const primitive: unknown = value.valueOf();\n if (primitive !== value) return cloneMain(primitive);\n return Object.fromEntries(\n Object.entries(value)\n .map(([k, v]) => [k, cloneMain(v)])\n .filter(([, v]) => v !== undefined),\n );\n }\n }\n else if (typeof value === \"function\") return undefined;\n return value;\n};\n\nconst cloneNative = (value: object): any | typeof NOT_NATIVE => {\n const tag: string | undefined = nativeTag(value);\n switch (tag) {\n case \"[object Date]\": {\n const time = tryRead<number>(Date.prototype.getTime, value);\n return time.success ? new Date(time.value) : NOT_NATIVE;\n }\n case \"[object Uint8Array]\":\n return new Uint8Array(value as ArrayLike<number>);\n case \"[object Uint8ClampedArray]\":\n return new Uint8ClampedArray(value as ArrayLike<number>);\n case \"[object Uint16Array]\":\n return new Uint16Array(value as ArrayLike<number>);\n case \"[object Uint32Array]\":\n return new Uint32Array(value as ArrayLike<number>);\n case \"[object BigUint64Array]\":\n return new BigUint64Array(value as ArrayLike<bigint>);\n case \"[object Int8Array]\":\n return new Int8Array(value as ArrayLike<number>);\n case \"[object Int16Array]\":\n return new Int16Array(value as ArrayLike<number>);\n case \"[object Int32Array]\":\n return new Int32Array(value as ArrayLike<number>);\n case \"[object BigInt64Array]\":\n return new BigInt64Array(value as ArrayLike<bigint>);\n case \"[object Float32Array]\":\n return new Float32Array(value as ArrayLike<number>);\n case \"[object Float64Array]\":\n return new Float64Array(value as ArrayLike<number>);\n case \"[object ArrayBuffer]\": {\n const byteLength = tryRead<number>(arrayBufferByteLength, value);\n return byteLength.success\n ? cloneBufferRange(value as ArrayBuffer, 0, byteLength.value, false)\n : NOT_NATIVE;\n }\n case \"[object SharedArrayBuffer]\": {\n const byteLength = tryRead<number>(sharedArrayBufferByteLength, value);\n return byteLength.success\n ? cloneBufferRange(\n value as SharedArrayBuffer,\n 0,\n byteLength.value,\n true,\n )\n : NOT_NATIVE;\n }\n case \"[object DataView]\": {\n const buffer = tryRead<ArrayBufferLike>(dataViewBuffer, value);\n if (!buffer.success) return NOT_NATIVE;\n const byteOffset: number = read(dataViewByteOffset, value);\n const byteLength: number = read(dataViewByteLength, value);\n return new DataView(\n cloneBufferRange(buffer.value, byteOffset, byteLength),\n );\n }\n case \"[object File]\": {\n const size = tryRead<number>(blobSize, value);\n if (\n typeof File === \"undefined\" ||\n !size.success ||\n blobType === undefined ||\n fileName === undefined ||\n fileLastModified === undefined\n )\n return NOT_NATIVE;\n return new File([value as Blob], read<string>(fileName, value), {\n type: read<string>(blobType, value),\n lastModified: read<number>(fileLastModified, value),\n });\n }\n case \"[object Blob]\": {\n const size = tryRead<number>(blobSize, value);\n if (\n typeof Blob === \"undefined\" ||\n !size.success ||\n blobType === undefined\n )\n return NOT_NATIVE;\n return new Blob([value as Blob], {\n type: read<string>(blobType, value),\n });\n }\n case \"[object RegExp]\": {\n const source = tryRead<string>(regexpSource, value);\n return source.success\n ? new RegExp(source.value, read<string>(regexpFlags, value))\n : NOT_NATIVE;\n }\n default:\n return NOT_NATIVE;\n }\n};\n\nconst cloneBufferRange = (\n input: ArrayBufferLike,\n byteOffset: number,\n byteLength: number,\n shared?: boolean,\n): ArrayBuffer | SharedArrayBuffer => {\n if (shared === undefined)\n shared = tryRead<number>(sharedArrayBufferByteLength, input).success;\n let output: ArrayBuffer | SharedArrayBuffer;\n if (shared) {\n if (typeof SharedArrayBuffer === \"undefined\")\n throw new TypeError(\"SharedArrayBuffer is not available\");\n output = new SharedArrayBuffer(byteLength);\n } else {\n read<number>(arrayBufferByteLength, input);\n output = new ArrayBuffer(byteLength);\n }\n new Uint8Array(output).set(new Uint8Array(input, byteOffset, byteLength));\n return output;\n};\n"],"mappings":"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"}
@@ -2,4 +2,4 @@ import type { OpenApi } from "@typia/interface";
2
2
  export declare const _randomArray: <T>(props: Omit<OpenApi.IJsonSchema.IArray, "items"> & {
3
3
  element: (index: number, count: number) => T;
4
4
  recursive?: boolean;
5
- }) => any[];
5
+ }) => T[];
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports._randomArray = void 0;
4
+ const _isUniqueItems_1 = require("./_isUniqueItems");
4
5
  const _randomInteger_1 = require("./_randomInteger");
5
6
  const DEFAULT_MIN_ITEMS = 1;
6
7
  const DEFAULT_RANGE = 5;
@@ -17,10 +18,16 @@ const _randomArray = (props) => {
17
18
  });
18
19
  if (props.uniqueItems !== true)
19
20
  return new Array(count).fill(null).map((_, i) => props.element(i, count));
20
- const elements = new Set();
21
- while (elements.size !== count)
22
- elements.add(props.element(elements.size, count));
23
- return Array.from(elements);
21
+ const elements = [];
22
+ const maximumAttempts = count * 100 + 1000;
23
+ for (let attempts = 0; elements.length !== count; attempts++) {
24
+ if (attempts === maximumAttempts)
25
+ throw new Error("Unable to generate enough unique items; the element domain may be too small.");
26
+ const candidate = props.element(elements.length, count);
27
+ if (elements.every((element) => (0, _isUniqueItems_1._isUniqueItems)([element, candidate])))
28
+ elements.push(candidate);
29
+ }
30
+ return elements;
24
31
  };
25
32
  exports._randomArray = _randomArray;
26
33
  //# sourceMappingURL=_randomArray.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_randomArray.js","sourceRoot":"","sources":["../../src/internal/_randomArray.ts"],"names":[],"mappings":";;;AAEA,qDAAkD;AAElD,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAE3B,MAAM,YAAY,GAAG,CAC1B,KAGC,EACD,EAAE;;IACF,MAAM,cAAc,GAClB,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACnD,MAAM,OAAO,SACX,KAAK,CAAC,QAAQ,mCACd,IAAI,CAAC,GAAG,OAAC,KAAK,CAAC,QAAQ,mCAAI,cAAc,EAAE,cAAc,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAW,IAAA,+BAAc,EAAC;QACnC,IAAI,EAAE,SAAS;QACf,OAAO;QACP,OAAO,QACL,KAAK,CAAC,QAAQ,mCACd,OAAO;YACL,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAAC;KACzE,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI;QAC5B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAa,IAAI,GAAG,EAAE,CAAC;IACrC,OAAO,QAAQ,CAAC,IAAI,KAAK,KAAK;QAC5B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC,CAAC;AAzBW,QAAA,YAAY,GAAZ,YAAY,CAyBvB"}
1
+ {"version":3,"file":"_randomArray.js","sourceRoot":"","sources":["../../src/internal/_randomArray.ts"],"names":[],"mappings":";;;AAEA,qDAAkD;AAClD,qDAAkD;AAElD,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAE3B,MAAM,YAAY,GAAG,CAC1B,KAGC,EACD,EAAE;;IACF,MAAM,cAAc,GAClB,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACnD,MAAM,OAAO,SACX,KAAK,CAAC,QAAQ,mCACd,IAAI,CAAC,GAAG,OAAC,KAAK,CAAC,QAAQ,mCAAI,cAAc,EAAE,cAAc,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAW,IAAA,+BAAc,EAAC;QACnC,IAAI,EAAE,SAAS;QACf,OAAO;QACP,OAAO,QACL,KAAK,CAAC,QAAQ,mCACd,OAAO;YACL,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAAC;KACzE,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI;QAC5B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,MAAM,eAAe,GAAW,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC;IACnD,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,KAAK,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC7D,IAAI,QAAQ,KAAK,eAAe;YAC9B,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,MAAM,SAAS,GAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,+BAAc,EAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;YACnE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAjCW,QAAA,YAAY,GAAZ,YAAY,CAiCvB"}
@@ -1,3 +1,4 @@
1
+ import { _isUniqueItems } from "./_isUniqueItems.mjs";
1
2
  import { _randomInteger } from "./_randomInteger.mjs";
2
3
  //#region src/internal/_randomArray.ts
3
4
  const DEFAULT_MIN_ITEMS = 1;
@@ -12,9 +13,14 @@ const _randomArray = (props) => {
12
13
  maximum: props.maxItems ?? minimum + (props.recursive === true ? DEFAULT_RECURSIVE_RANGE : DEFAULT_RANGE)
13
14
  });
14
15
  if (props.uniqueItems !== true) return new Array(count).fill(null).map((_, i) => props.element(i, count));
15
- const elements = /* @__PURE__ */ new Set();
16
- while (elements.size !== count) elements.add(props.element(elements.size, count));
17
- return Array.from(elements);
16
+ const elements = [];
17
+ const maximumAttempts = count * 100 + 1e3;
18
+ for (let attempts = 0; elements.length !== count; attempts++) {
19
+ if (attempts === maximumAttempts) throw new Error("Unable to generate enough unique items; the element domain may be too small.");
20
+ const candidate = props.element(elements.length, count);
21
+ if (elements.every((element) => _isUniqueItems([element, candidate]))) elements.push(candidate);
22
+ }
23
+ return elements;
18
24
  };
19
25
  //#endregion
20
26
  export { _randomArray };
@@ -1 +1 @@
1
- {"version":3,"file":"_randomArray.mjs","names":[],"sources":["../../src/internal/_randomArray.ts"],"sourcesContent":["import type { OpenApi } from \"@typia/interface\";\n\nimport { _randomInteger } from \"./_randomInteger\";\n\nconst DEFAULT_MIN_ITEMS = 1;\nconst DEFAULT_RANGE = 5;\nconst DEFAULT_RECURSIVE_RANGE = 2;\n\nexport const _randomArray = <T>(\n props: Omit<OpenApi.IJsonSchema.IArray, \"items\"> & {\n element: (index: number, count: number) => T;\n recursive?: boolean;\n },\n) => {\n const defaultMinimum: number =\n props.recursive === true ? 0 : DEFAULT_MIN_ITEMS;\n const minimum: number =\n props.minItems ??\n Math.min(props.maxItems ?? defaultMinimum, defaultMinimum);\n const count: number = _randomInteger({\n type: \"integer\",\n minimum,\n maximum:\n props.maxItems ??\n minimum +\n (props.recursive === true ? DEFAULT_RECURSIVE_RANGE : DEFAULT_RANGE),\n });\n if (props.uniqueItems !== true)\n return new Array(count).fill(null).map((_, i) => props.element(i, count));\n const elements: Set<any> = new Set();\n while (elements.size !== count)\n elements.add(props.element(elements.size, count));\n return Array.from(elements);\n};\n"],"mappings":";;AAIA,MAAM,oBAAoB;AAC1B,MAAM,gBAAgB;AACtB,MAAM,0BAA0B;AAEhC,MAAa,gBACX,UAIG;CACH,MAAM,iBACJ,MAAM,cAAc,OAAO,IAAI;CACjC,MAAM,UACJ,MAAM,YACN,KAAK,IAAI,MAAM,YAAY,gBAAgB,cAAc;CAC3D,MAAM,QAAgB,eAAe;EACnC,MAAM;EACN;EACA,SACE,MAAM,YACN,WACG,MAAM,cAAc,OAAO,0BAA0B;CAC5D,CAAC;CACD,IAAI,MAAM,gBAAgB,MACxB,OAAO,IAAI,MAAM,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC;CAC1E,MAAM,2BAAqB,IAAI,IAAI;CACnC,OAAO,SAAS,SAAS,OACvB,SAAS,IAAI,MAAM,QAAQ,SAAS,MAAM,KAAK,CAAC;CAClD,OAAO,MAAM,KAAK,QAAQ;AAC5B"}
1
+ {"version":3,"file":"_randomArray.mjs","names":[],"sources":["../../src/internal/_randomArray.ts"],"sourcesContent":["import type { OpenApi } from \"@typia/interface\";\n\nimport { _isUniqueItems } from \"./_isUniqueItems\";\nimport { _randomInteger } from \"./_randomInteger\";\n\nconst DEFAULT_MIN_ITEMS = 1;\nconst DEFAULT_RANGE = 5;\nconst DEFAULT_RECURSIVE_RANGE = 2;\n\nexport const _randomArray = <T>(\n props: Omit<OpenApi.IJsonSchema.IArray, \"items\"> & {\n element: (index: number, count: number) => T;\n recursive?: boolean;\n },\n) => {\n const defaultMinimum: number =\n props.recursive === true ? 0 : DEFAULT_MIN_ITEMS;\n const minimum: number =\n props.minItems ??\n Math.min(props.maxItems ?? defaultMinimum, defaultMinimum);\n const count: number = _randomInteger({\n type: \"integer\",\n minimum,\n maximum:\n props.maxItems ??\n minimum +\n (props.recursive === true ? DEFAULT_RECURSIVE_RANGE : DEFAULT_RANGE),\n });\n if (props.uniqueItems !== true)\n return new Array(count).fill(null).map((_, i) => props.element(i, count));\n const elements: T[] = [];\n const maximumAttempts: number = count * 100 + 1000;\n for (let attempts = 0; elements.length !== count; attempts++) {\n if (attempts === maximumAttempts)\n throw new Error(\n \"Unable to generate enough unique items; the element domain may be too small.\",\n );\n const candidate: T = props.element(elements.length, count);\n if (elements.every((element) => _isUniqueItems([element, candidate])))\n elements.push(candidate);\n }\n return elements;\n};\n"],"mappings":";;;AAKA,MAAM,oBAAoB;AAC1B,MAAM,gBAAgB;AACtB,MAAM,0BAA0B;AAEhC,MAAa,gBACX,UAIG;CACH,MAAM,iBACJ,MAAM,cAAc,OAAO,IAAI;CACjC,MAAM,UACJ,MAAM,YACN,KAAK,IAAI,MAAM,YAAY,gBAAgB,cAAc;CAC3D,MAAM,QAAgB,eAAe;EACnC,MAAM;EACN;EACA,SACE,MAAM,YACN,WACG,MAAM,cAAc,OAAO,0BAA0B;CAC5D,CAAC;CACD,IAAI,MAAM,gBAAgB,MACxB,OAAO,IAAI,MAAM,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC;CAC1E,MAAM,WAAgB,CAAC;CACvB,MAAM,kBAA0B,QAAQ,MAAM;CAC9C,KAAK,IAAI,WAAW,GAAG,SAAS,WAAW,OAAO,YAAY;EAC5D,IAAI,aAAa,iBACf,MAAM,IAAI,MACR,8EACF;EACF,MAAM,YAAe,MAAM,QAAQ,SAAS,QAAQ,KAAK;EACzD,IAAI,SAAS,OAAO,YAAY,eAAe,CAAC,SAAS,SAAS,CAAC,CAAC,GAClE,SAAS,KAAK,SAAS;CAC3B;CACA,OAAO;AACT"}
@@ -1 +1,2 @@
1
- export declare const _randomFormatByte: () => string;
1
+ import { _ILengthProps } from "./_randomStringLength";
2
+ export declare const _randomFormatByte: (props?: _ILengthProps) => string;
@@ -1,7 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports._randomFormatByte = void 0;
4
- const _randomFormatByte = () => FIXED;
4
+ const _randomString_1 = require("./_randomString");
5
+ const _randomStringLength_1 = require("./_randomStringLength");
6
+ const _randomFormatByte = (props) => {
7
+ if ((props === null || props === void 0 ? void 0 : props.minLength) === undefined && (props === null || props === void 0 ? void 0 : props.maxLength) === undefined)
8
+ return FIXED;
9
+ // Base64 encodes three bytes as four characters, so a valid length is always
10
+ // a multiple of four; the window is raised to the first multiple it contains
11
+ // and the draw steps by four from there. Every character `_randomString`
12
+ // emits is in the base64 alphabet, so the result needs no padding.
13
+ const window = (0, _randomStringLength_1._randomLengthWindow)(props, { minimum: 0, spread: 16 });
14
+ const low = Math.ceil(window.low / 4) * 4;
15
+ if (low > window.high)
16
+ throw new Error(_randomStringLength_1._RANDOM_LENGTH_ERROR);
17
+ const length = low +
18
+ 4 *
19
+ (0, _randomStringLength_1._randomLengthPick)({
20
+ low: 0,
21
+ high: Math.floor((window.high - low) / 4),
22
+ });
23
+ return (0, _randomString_1._randomString)({
24
+ type: "string",
25
+ minLength: length,
26
+ maxLength: length,
27
+ });
28
+ };
5
29
  exports._randomFormatByte = _randomFormatByte;
6
30
  const FIXED = "vt7ekz4lIoNTTS9sDQYdWKharxIFAR54+z/umIxSgUM=";
7
31
  //# sourceMappingURL=_randomFormatByte.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_randomFormatByte.js","sourceRoot":"","sources":["../../src/internal/_randomFormatByte.ts"],"names":[],"mappings":";;;AAAO,MAAM,iBAAiB,GAAG,GAAW,EAAE,CAAC,KAAK,CAAC;AAAxC,QAAA,iBAAiB,GAAjB,iBAAiB,CAAuB;AAErD,MAAM,KAAK,GAAG,8CAA8C,CAAC"}
1
+ {"version":3,"file":"_randomFormatByte.js","sourceRoot":"","sources":["../../src/internal/_randomFormatByte.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAChD,+DAK+B;AAExB,MAAM,iBAAiB,GAAG,CAAC,KAAqB,EAAU,EAAE;IACjE,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS;QAClE,OAAO,KAAK,CAAC;IACf,6EAA6E;IAC7E,6EAA6E;IAC7E,yEAAyE;IACzE,mEAAmE;IACnE,MAAM,MAAM,GAAG,IAAA,yCAAmB,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACtE,MAAM,GAAG,GAAW,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,0CAAoB,CAAC,CAAC;IAC7D,MAAM,MAAM,GACV,GAAG;QACH,CAAC;YACC,IAAA,uCAAiB,EAAC;gBAChB,GAAG,EAAE,CAAC;gBACN,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;aAC1C,CAAC,CAAC;IACP,OAAO,IAAA,6BAAa,EAAC;QACnB,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;AACL,CAAC,CAAC;AAtBW,QAAA,iBAAiB,GAAjB,iBAAiB,CAsB5B;AAEF,MAAM,KAAK,GAAG,8CAA8C,CAAC"}
@@ -1,5 +1,24 @@
1
+ import { _randomString } from "./_randomString.mjs";
2
+ import { _RANDOM_LENGTH_ERROR, _randomLengthPick, _randomLengthWindow } from "./_randomStringLength.mjs";
1
3
  //#region src/internal/_randomFormatByte.ts
2
- const _randomFormatByte = () => FIXED;
4
+ const _randomFormatByte = (props) => {
5
+ if (props?.minLength === void 0 && props?.maxLength === void 0) return FIXED;
6
+ const window = _randomLengthWindow(props, {
7
+ minimum: 0,
8
+ spread: 16
9
+ });
10
+ const low = Math.ceil(window.low / 4) * 4;
11
+ if (low > window.high) throw new Error(_RANDOM_LENGTH_ERROR);
12
+ const length = low + 4 * _randomLengthPick({
13
+ low: 0,
14
+ high: Math.floor((window.high - low) / 4)
15
+ });
16
+ return _randomString({
17
+ type: "string",
18
+ minLength: length,
19
+ maxLength: length
20
+ });
21
+ };
3
22
  const FIXED = "vt7ekz4lIoNTTS9sDQYdWKharxIFAR54+z/umIxSgUM=";
4
23
  //#endregion
5
24
  export { _randomFormatByte };
@@ -1 +1 @@
1
- {"version":3,"file":"_randomFormatByte.mjs","names":[],"sources":["../../src/internal/_randomFormatByte.ts"],"sourcesContent":["export const _randomFormatByte = (): string => FIXED;\n\nconst FIXED = \"vt7ekz4lIoNTTS9sDQYdWKharxIFAR54+z/umIxSgUM=\";\n"],"mappings":";AAAA,MAAa,0BAAkC;AAE/C,MAAM,QAAQ"}
1
+ {"version":3,"file":"_randomFormatByte.mjs","names":[],"sources":["../../src/internal/_randomFormatByte.ts"],"sourcesContent":["import { _randomString } from \"./_randomString\";\nimport {\n _ILengthProps,\n _RANDOM_LENGTH_ERROR,\n _randomLengthPick,\n _randomLengthWindow,\n} from \"./_randomStringLength\";\n\nexport const _randomFormatByte = (props?: _ILengthProps): string => {\n if (props?.minLength === undefined && props?.maxLength === undefined)\n return FIXED;\n // Base64 encodes three bytes as four characters, so a valid length is always\n // a multiple of four; the window is raised to the first multiple it contains\n // and the draw steps by four from there. Every character `_randomString`\n // emits is in the base64 alphabet, so the result needs no padding.\n const window = _randomLengthWindow(props, { minimum: 0, spread: 16 });\n const low: number = Math.ceil(window.low / 4) * 4;\n if (low > window.high) throw new Error(_RANDOM_LENGTH_ERROR);\n const length: number =\n low +\n 4 *\n _randomLengthPick({\n low: 0,\n high: Math.floor((window.high - low) / 4),\n });\n return _randomString({\n type: \"string\",\n minLength: length,\n maxLength: length,\n });\n};\n\nconst FIXED = \"vt7ekz4lIoNTTS9sDQYdWKharxIFAR54+z/umIxSgUM=\";\n"],"mappings":";;;AAQA,MAAa,qBAAqB,UAAkC;CAClE,IAAI,OAAO,cAAc,KAAA,KAAa,OAAO,cAAc,KAAA,GACzD,OAAO;CAKT,MAAM,SAAS,oBAAoB,OAAO;EAAE,SAAS;EAAG,QAAQ;CAAG,CAAC;CACpE,MAAM,MAAc,KAAK,KAAK,OAAO,MAAM,CAAC,IAAI;CAChD,IAAI,MAAM,OAAO,MAAM,MAAM,IAAI,MAAM,oBAAoB;CAC3D,MAAM,SACJ,MACA,IACE,kBAAkB;EAChB,KAAK;EACL,MAAM,KAAK,OAAO,OAAO,OAAO,OAAO,CAAC;CAC1C,CAAC;CACL,OAAO,cAAc;EACnB,MAAM;EACN,WAAW;EACX,WAAW;CACb,CAAC;AACH;AAEA,MAAM,QAAQ"}
@@ -1,4 +1,3 @@
1
- export declare const _randomFormatDate: (props?: {
2
- minimum?: number;
3
- maximum?: number;
4
- }) => string;
1
+ import { _ILengthProps } from "./_randomStringLength";
2
+ import { __IEpochProps } from "./private/__randomEpoch";
3
+ export declare const _randomFormatDate: (props?: __IEpochProps & _ILengthProps) => string;
@@ -1,15 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports._randomFormatDate = void 0;
4
- const _randomInteger_1 = require("./_randomInteger");
5
- const _randomFormatDate = (props) => { var _a, _b; return new Date((0, _randomInteger_1._randomInteger)({
6
- type: "integer",
7
- minimum: (_a = props === null || props === void 0 ? void 0 : props.minimum) !== null && _a !== void 0 ? _a : 0,
8
- maximum: ((_b = props === null || props === void 0 ? void 0 : props.maximum) !== null && _b !== void 0 ? _b : (props === null || props === void 0 ? void 0 : props.minimum) === undefined)
9
- ? Date.now()
10
- : props.minimum + 365 * 24 * 60 * 60 * 1000,
11
- }))
12
- .toISOString()
13
- .substring(0, 10); };
4
+ const _randomStringLength_1 = require("./_randomStringLength");
5
+ const __randomEpoch_1 = require("./private/__randomEpoch");
6
+ const _randomFormatDate = (props) => (0, _randomStringLength_1._randomFormatLength)(props, () => new Date((0, __randomEpoch_1.__randomEpoch)(props)).toISOString().substring(0, 10));
14
7
  exports._randomFormatDate = _randomFormatDate;
15
8
  //# sourceMappingURL=_randomFormatDate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_randomFormatDate.js","sourceRoot":"","sources":["../../src/internal/_randomFormatDate.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAE3C,MAAM,iBAAiB,GAAG,CAAC,KAGjC,EAAE,EAAE,sBACH,IAAI,IAAI,CACN,IAAA,+BAAc,EAAC;IACb,IAAI,EAAE,SAAS;IACf,OAAO,QAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCAAI,CAAC;IAC5B,OAAO,EACL,OAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,MAAK,SAAS,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QACZ,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAK;CACjD,CAAC,CACH;KACE,WAAW,EAAE;KACb,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAA,CAAC;AAfT,QAAA,iBAAiB,GAAjB,iBAAiB,CAeR"}
1
+ {"version":3,"file":"_randomFormatDate.js","sourceRoot":"","sources":["../../src/internal/_randomFormatDate.ts"],"names":[],"mappings":";;;AAAA,+DAA2E;AAC3E,2DAAuE;AAEhE,MAAM,iBAAiB,GAAG,CAAC,KAAqC,EAAE,EAAE,CACzE,IAAA,yCAAmB,EAAC,KAAK,EAAE,GAAG,EAAE,CAC9B,IAAI,IAAI,CAAC,IAAA,6BAAa,EAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAC9D,CAAC;AAHS,QAAA,iBAAiB,GAAjB,iBAAiB,CAG1B"}
@@ -1,10 +1,7 @@
1
- import { _randomInteger } from "./_randomInteger.mjs";
1
+ import { _randomFormatLength } from "./_randomStringLength.mjs";
2
+ import { __randomEpoch } from "./private/__randomEpoch.mjs";
2
3
  //#region src/internal/_randomFormatDate.ts
3
- const _randomFormatDate = (props) => new Date(_randomInteger({
4
- type: "integer",
5
- minimum: props?.minimum ?? 0,
6
- maximum: props?.maximum ?? props?.minimum === void 0 ? Date.now() : props.minimum + 365 * 24 * 60 * 60 * 1e3
7
- })).toISOString().substring(0, 10);
4
+ const _randomFormatDate = (props) => _randomFormatLength(props, () => new Date(__randomEpoch(props)).toISOString().substring(0, 10));
8
5
  //#endregion
9
6
  export { _randomFormatDate };
10
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"_randomFormatDate.mjs","names":[],"sources":["../../src/internal/_randomFormatDate.ts"],"sourcesContent":["import { _randomInteger } from \"./_randomInteger\";\n\nexport const _randomFormatDate = (props?: {\n minimum?: number;\n maximum?: number;\n}) =>\n new Date(\n _randomInteger({\n type: \"integer\",\n minimum: props?.minimum ?? 0,\n maximum:\n (props?.maximum ?? props?.minimum === undefined)\n ? Date.now()\n : props.minimum + 365 * 24 * 60 * 60 * 1_000,\n }),\n )\n .toISOString()\n .substring(0, 10);\n"],"mappings":";;AAEA,MAAa,qBAAqB,UAIhC,IAAI,KACF,eAAe;CACb,MAAM;CACN,SAAS,OAAO,WAAW;CAC3B,SACG,OAAO,WAAW,OAAO,YAAY,KAAA,IAClC,KAAK,IAAI,IACT,MAAM,UAAU,MAAM,KAAK,KAAK,KAAK;AAC7C,CAAC,CACH,CAAC,CACE,YAAY,CAAC,CACb,UAAU,GAAG,EAAE"}
1
+ {"version":3,"file":"_randomFormatDate.mjs","names":[],"sources":["../../src/internal/_randomFormatDate.ts"],"sourcesContent":["import { _ILengthProps, _randomFormatLength } from \"./_randomStringLength\";\nimport { __IEpochProps, __randomEpoch } from \"./private/__randomEpoch\";\n\nexport const _randomFormatDate = (props?: __IEpochProps & _ILengthProps) =>\n _randomFormatLength(props, () =>\n new Date(__randomEpoch(props)).toISOString().substring(0, 10),\n );\n"],"mappings":";;;AAGA,MAAa,qBAAqB,UAChC,oBAAoB,aAClB,IAAI,KAAK,cAAc,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,GAAG,EAAE,CAC9D"}
@@ -1,4 +1,3 @@
1
- export declare const _randomFormatDatetime: (props?: {
2
- minimum?: number;
3
- maximum?: number;
4
- }) => string;
1
+ import { _ILengthProps } from "./_randomStringLength";
2
+ import { __IEpochProps } from "./private/__randomEpoch";
3
+ export declare const _randomFormatDatetime: (props?: __IEpochProps & _ILengthProps) => string;
@@ -1,13 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports._randomFormatDatetime = void 0;
4
- const _randomInteger_1 = require("./_randomInteger");
5
- const _randomFormatDatetime = (props) => { var _a, _b; return new Date((0, _randomInteger_1._randomInteger)({
6
- type: "integer",
7
- minimum: (_a = props === null || props === void 0 ? void 0 : props.minimum) !== null && _a !== void 0 ? _a : 0,
8
- maximum: ((_b = props === null || props === void 0 ? void 0 : props.maximum) !== null && _b !== void 0 ? _b : (props === null || props === void 0 ? void 0 : props.minimum) === undefined)
9
- ? Date.now()
10
- : props.minimum + 365 * 24 * 60 * 60 * 1000,
11
- })).toISOString(); };
4
+ const _randomStringLength_1 = require("./_randomStringLength");
5
+ const __randomComposition_1 = require("./private/__randomComposition");
6
+ const __randomEpoch_1 = require("./private/__randomEpoch");
7
+ const _randomFormatDatetime = (props) => {
8
+ const instant = () => new Date((0, __randomEpoch_1.__randomEpoch)(props)).toISOString();
9
+ if ((props === null || props === void 0 ? void 0 : props.minLength) === undefined && (props === null || props === void 0 ? void 0 : props.maxLength) === undefined)
10
+ return instant();
11
+ // `YYYY-MM-DDTHH:MM:SS` plus `Z` is the shortest instant, and a fractional
12
+ // second grows it one digit at a time. Because that fraction needs both a dot
13
+ // and at least one digit, 21 is the single length between the two forms that
14
+ // no instant can have.
15
+ const window = (0, _randomStringLength_1._randomLengthWindow)(props, {
16
+ minimum: SECONDS + 1,
17
+ spread: 8,
18
+ });
19
+ let length = (0, _randomStringLength_1._randomLengthPick)(window);
20
+ if (length === SECONDS + 2)
21
+ length = window.high >= SECONDS + 3 ? SECONDS + 3 : SECONDS + 1;
22
+ if (length < window.low || length > window.high)
23
+ throw new Error(_randomStringLength_1._RANDOM_LENGTH_ERROR);
24
+ const base = instant().substring(0, SECONDS);
25
+ return length === SECONDS + 1
26
+ ? `${base}Z`
27
+ : `${base}.${(0, __randomComposition_1.__randomDigits)(length - SECONDS - 2)}Z`;
28
+ };
12
29
  exports._randomFormatDatetime = _randomFormatDatetime;
30
+ const SECONDS = "0000-00-00T00:00:00".length;
13
31
  //# sourceMappingURL=_randomFormatDatetime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_randomFormatDatetime.js","sourceRoot":"","sources":["../../src/internal/_randomFormatDatetime.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAE3C,MAAM,qBAAqB,GAAG,CAAC,KAGrC,EAAE,EAAE,sBACH,IAAI,IAAI,CACN,IAAA,+BAAc,EAAC;IACb,IAAI,EAAE,SAAS;IACf,OAAO,QAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCAAI,CAAC;IAC5B,OAAO,EACL,OAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,MAAK,SAAS,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QACZ,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAK;CACjD,CAAC,CACH,CAAC,WAAW,EAAE,GAAA,CAAC;AAbL,QAAA,qBAAqB,GAArB,qBAAqB,CAahB"}
1
+ {"version":3,"file":"_randomFormatDatetime.js","sourceRoot":"","sources":["../../src/internal/_randomFormatDatetime.ts"],"names":[],"mappings":";;;AAAA,+DAK+B;AAC/B,uEAA+D;AAC/D,2DAAuE;AAEhE,MAAM,qBAAqB,GAAG,CACnC,KAAqC,EACrC,EAAE;IACF,MAAM,OAAO,GAAG,GAAW,EAAE,CAAC,IAAI,IAAI,CAAC,IAAA,6BAAa,EAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3E,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS;QAClE,OAAO,OAAO,EAAE,CAAC;IACnB,2EAA2E;IAC3E,8EAA8E;IAC9E,6EAA6E;IAC7E,uBAAuB;IACvB,MAAM,MAAM,GAAG,IAAA,yCAAmB,EAAC,KAAK,EAAE;QACxC,OAAO,EAAE,OAAO,GAAG,CAAC;QACpB,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IACH,IAAI,MAAM,GAAW,IAAA,uCAAiB,EAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAK,OAAO,GAAG,CAAC;QACxB,MAAM,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IAClE,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI;QAC7C,MAAM,IAAI,KAAK,CAAC,0CAAoB,CAAC,CAAC;IACxC,MAAM,IAAI,GAAW,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACrD,OAAO,MAAM,KAAK,OAAO,GAAG,CAAC;QAC3B,CAAC,CAAC,GAAG,IAAI,GAAG;QACZ,CAAC,CAAC,GAAG,IAAI,IAAI,IAAA,oCAAc,EAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;AACzD,CAAC,CAAC;AAvBW,QAAA,qBAAqB,GAArB,qBAAqB,CAuBhC;AAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC"}
@@ -1,10 +1,21 @@
1
- import { _randomInteger } from "./_randomInteger.mjs";
1
+ import { _RANDOM_LENGTH_ERROR, _randomLengthPick, _randomLengthWindow } from "./_randomStringLength.mjs";
2
+ import { __randomEpoch } from "./private/__randomEpoch.mjs";
3
+ import { __randomDigits } from "./private/__randomComposition.mjs";
2
4
  //#region src/internal/_randomFormatDatetime.ts
3
- const _randomFormatDatetime = (props) => new Date(_randomInteger({
4
- type: "integer",
5
- minimum: props?.minimum ?? 0,
6
- maximum: props?.maximum ?? props?.minimum === void 0 ? Date.now() : props.minimum + 365 * 24 * 60 * 60 * 1e3
7
- })).toISOString();
5
+ const _randomFormatDatetime = (props) => {
6
+ const instant = () => new Date(__randomEpoch(props)).toISOString();
7
+ if (props?.minLength === void 0 && props?.maxLength === void 0) return instant();
8
+ const window = _randomLengthWindow(props, {
9
+ minimum: SECONDS + 1,
10
+ spread: 8
11
+ });
12
+ let length = _randomLengthPick(window);
13
+ if (length === SECONDS + 2) length = window.high >= SECONDS + 3 ? SECONDS + 3 : SECONDS + 1;
14
+ if (length < window.low || length > window.high) throw new Error(_RANDOM_LENGTH_ERROR);
15
+ const base = instant().substring(0, SECONDS);
16
+ return length === SECONDS + 1 ? `${base}Z` : `${base}.${__randomDigits(length - SECONDS - 2)}Z`;
17
+ };
18
+ const SECONDS = 19;
8
19
  //#endregion
9
20
  export { _randomFormatDatetime };
10
21
 
@@ -1 +1 @@
1
- {"version":3,"file":"_randomFormatDatetime.mjs","names":[],"sources":["../../src/internal/_randomFormatDatetime.ts"],"sourcesContent":["import { _randomInteger } from \"./_randomInteger\";\n\nexport const _randomFormatDatetime = (props?: {\n minimum?: number;\n maximum?: number;\n}) =>\n new Date(\n _randomInteger({\n type: \"integer\",\n minimum: props?.minimum ?? 0,\n maximum:\n (props?.maximum ?? props?.minimum === undefined)\n ? Date.now()\n : props.minimum + 365 * 24 * 60 * 60 * 1_000,\n }),\n ).toISOString();\n"],"mappings":";;AAEA,MAAa,yBAAyB,UAIpC,IAAI,KACF,eAAe;CACb,MAAM;CACN,SAAS,OAAO,WAAW;CAC3B,SACG,OAAO,WAAW,OAAO,YAAY,KAAA,IAClC,KAAK,IAAI,IACT,MAAM,UAAU,MAAM,KAAK,KAAK,KAAK;AAC7C,CAAC,CACH,CAAC,CAAC,YAAY"}
1
+ {"version":3,"file":"_randomFormatDatetime.mjs","names":[],"sources":["../../src/internal/_randomFormatDatetime.ts"],"sourcesContent":["import {\n _ILengthProps,\n _RANDOM_LENGTH_ERROR,\n _randomLengthPick,\n _randomLengthWindow,\n} from \"./_randomStringLength\";\nimport { __randomDigits } from \"./private/__randomComposition\";\nimport { __IEpochProps, __randomEpoch } from \"./private/__randomEpoch\";\n\nexport const _randomFormatDatetime = (\n props?: __IEpochProps & _ILengthProps,\n) => {\n const instant = (): string => new Date(__randomEpoch(props)).toISOString();\n if (props?.minLength === undefined && props?.maxLength === undefined)\n return instant();\n // `YYYY-MM-DDTHH:MM:SS` plus `Z` is the shortest instant, and a fractional\n // second grows it one digit at a time. Because that fraction needs both a dot\n // and at least one digit, 21 is the single length between the two forms that\n // no instant can have.\n const window = _randomLengthWindow(props, {\n minimum: SECONDS + 1,\n spread: 8,\n });\n let length: number = _randomLengthPick(window);\n if (length === SECONDS + 2)\n length = window.high >= SECONDS + 3 ? SECONDS + 3 : SECONDS + 1;\n if (length < window.low || length > window.high)\n throw new Error(_RANDOM_LENGTH_ERROR);\n const base: string = instant().substring(0, SECONDS);\n return length === SECONDS + 1\n ? `${base}Z`\n : `${base}.${__randomDigits(length - SECONDS - 2)}Z`;\n};\n\nconst SECONDS = \"0000-00-00T00:00:00\".length;\n"],"mappings":";;;;AASA,MAAa,yBACX,UACG;CACH,MAAM,gBAAwB,IAAI,KAAK,cAAc,KAAK,CAAC,CAAC,CAAC,YAAY;CACzE,IAAI,OAAO,cAAc,KAAA,KAAa,OAAO,cAAc,KAAA,GACzD,OAAO,QAAQ;CAKjB,MAAM,SAAS,oBAAoB,OAAO;EACxC,SAAS,UAAU;EACnB,QAAQ;CACV,CAAC;CACD,IAAI,SAAiB,kBAAkB,MAAM;CAC7C,IAAI,WAAW,UAAU,GACvB,SAAS,OAAO,QAAQ,UAAU,IAAI,UAAU,IAAI,UAAU;CAChE,IAAI,SAAS,OAAO,OAAO,SAAS,OAAO,MACzC,MAAM,IAAI,MAAM,oBAAoB;CACtC,MAAM,OAAe,QAAQ,CAAC,CAAC,UAAU,GAAG,OAAO;CACnD,OAAO,WAAW,UAAU,IACxB,GAAG,KAAK,KACR,GAAG,KAAK,GAAG,eAAe,SAAS,UAAU,CAAC,EAAE;AACtD;AAEA,MAAM,UAAU"}
@@ -1 +1,2 @@
1
- export declare const _randomFormatDuration: () => string;
1
+ import { _ILengthProps } from "./_randomStringLength";
2
+ export declare const _randomFormatDuration: (props?: _ILengthProps) => string;
@@ -2,22 +2,31 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports._randomFormatDuration = void 0;
4
4
  const _randomInteger_1 = require("./_randomInteger");
5
- const _randomFormatDuration = () => {
6
- const period = durate([
7
- ["Y", random(0, 100)],
8
- ["M", random(0, 12)],
9
- ["D", random(0, 31)],
10
- ]);
11
- const time = durate([
12
- ["H", random(0, 24)],
13
- ["M", random(0, 60)],
14
- ["S", random(0, 60)],
15
- ]);
16
- if (period.length + time.length === 0)
17
- return "PT0S";
18
- return `P${period}${time.length ? "T" : ""}${time}`;
5
+ const _randomStringLength_1 = require("./_randomStringLength");
6
+ const __randomComposition_1 = require("./private/__randomComposition");
7
+ const _randomFormatDuration = (props) => {
8
+ if ((props === null || props === void 0 ? void 0 : props.minLength) === undefined && (props === null || props === void 0 ? void 0 : props.maxLength) === undefined) {
9
+ const period = durate([
10
+ ["Y", random(0, 100)],
11
+ ["M", random(0, 12)],
12
+ ["D", random(0, 31)],
13
+ ]);
14
+ const time = durate([
15
+ ["H", random(0, 24)],
16
+ ["M", random(0, 60)],
17
+ ["S", random(0, 60)],
18
+ ]);
19
+ if (period.length + time.length === 0)
20
+ return "PT0S";
21
+ return `P${period}${time.length ? "T" : ""}${time}`;
22
+ }
23
+ // A single designator carries an unbounded digit count, so `P<n>Y` expresses
24
+ // every length from three upward and `P1Y` is the shortest duration there is.
25
+ const length = (0, _randomStringLength_1._randomLengthPick)((0, _randomStringLength_1._randomLengthWindow)(props, { minimum: MINIMUM, spread: 6 }));
26
+ return `P${(0, __randomComposition_1.__randomNumeric)(length - MINIMUM + 1)}Y`;
19
27
  };
20
28
  exports._randomFormatDuration = _randomFormatDuration;
29
+ const MINIMUM = "P1Y".length;
21
30
  const durate = (elements) => elements
22
31
  .filter(([_unit, value]) => value !== 0)
23
32
  .map(([unit, value]) => `${value}${unit}`)
@@ -1 +1 @@
1
- {"version":3,"file":"_randomFormatDuration.js","sourceRoot":"","sources":["../../src/internal/_randomFormatDuration.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAE3C,MAAM,qBAAqB,GAAG,GAAW,EAAE;IAChD,MAAM,MAAM,GAAW,MAAM,CAAC;QAC5B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,IAAI,GAAW,MAAM,CAAC;QAC1B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACrB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACrD,OAAO,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;AACtD,CAAC,CAAC;AAbW,QAAA,qBAAqB,GAArB,qBAAqB,CAahC;AACF,MAAM,MAAM,GAAG,CAAC,QAA4B,EAAE,EAAE,CAC9C,QAAQ;KACL,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC;KACvC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;KACzC,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,EAAE,CAClD,IAAA,+BAAc,EAAC;IACb,IAAI,EAAE,SAAS;IACf,OAAO;IACP,OAAO;CACR,CAAC,CAAC"}
1
+ {"version":3,"file":"_randomFormatDuration.js","sourceRoot":"","sources":["../../src/internal/_randomFormatDuration.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAClD,+DAI+B;AAC/B,uEAAgE;AAEzD,MAAM,qBAAqB,GAAG,CAAC,KAAqB,EAAU,EAAE;IACrE,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS,EAAE,CAAC;QACrE,MAAM,MAAM,GAAW,MAAM,CAAC;YAC5B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACrB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACrB,CAAC,CAAC;QACH,MAAM,IAAI,GAAW,MAAM,CAAC;YAC1B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACrB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACrD,OAAO,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,6EAA6E;IAC7E,8EAA8E;IAC9E,MAAM,MAAM,GAAW,IAAA,uCAAiB,EACtC,IAAA,yCAAmB,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAC5D,CAAC;IACF,OAAO,IAAI,IAAA,qCAAe,EAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;AACtD,CAAC,CAAC;AArBW,QAAA,qBAAqB,GAArB,qBAAqB,CAqBhC;AAEF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;AAE7B,MAAM,MAAM,GAAG,CAAC,QAA4B,EAAE,EAAE,CAC9C,QAAQ;KACL,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC;KACvC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;KACzC,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,EAAE,CAClD,IAAA,+BAAc,EAAC;IACb,IAAI,EAAE,SAAS;IACf,OAAO;IACP,OAAO;CACR,CAAC,CAAC"}