typia 13.1.0 → 13.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/README.md +3 -0
  2. package/lib/_virtual/_rolldown/runtime.mjs +1 -5
  3. package/lib/executable/FileSystemIdentity.d.ts +21 -0
  4. package/lib/executable/FileSystemIdentity.js +183 -0
  5. package/lib/executable/FileSystemIdentity.js.map +1 -0
  6. package/lib/executable/FileSystemIdentity.mjs +129 -0
  7. package/lib/executable/FileSystemIdentity.mjs.map +1 -0
  8. package/lib/executable/TypiaGenerateWizard.js +264 -104
  9. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  10. package/lib/executable/TypiaGenerateWizard.mjs +233 -93
  11. package/lib/executable/TypiaGenerateWizard.mjs.map +1 -1
  12. package/lib/functional.d.ts +15 -12
  13. package/lib/functional.js.map +1 -1
  14. package/lib/functional.mjs.map +1 -1
  15. package/lib/internal/_ProtobufReader.d.ts +17 -0
  16. package/lib/internal/_ProtobufReader.js +117 -45
  17. package/lib/internal/_ProtobufReader.js.map +1 -1
  18. package/lib/internal/_ProtobufReader.mjs +108 -39
  19. package/lib/internal/_ProtobufReader.mjs.map +1 -1
  20. package/lib/internal/_createStandardSchema.js +18 -1
  21. package/lib/internal/_createStandardSchema.js.map +1 -1
  22. package/lib/internal/_createStandardSchema.mjs +12 -1
  23. package/lib/internal/_createStandardSchema.mjs.map +1 -1
  24. package/lib/internal/_decimal.d.ts +14 -0
  25. package/lib/internal/_decimal.js +61 -0
  26. package/lib/internal/_decimal.js.map +1 -0
  27. package/lib/internal/_decimal.mjs +49 -0
  28. package/lib/internal/_decimal.mjs.map +1 -0
  29. package/lib/internal/_httpQueryParseURLSearchParams.js +23 -2
  30. package/lib/internal/_httpQueryParseURLSearchParams.js.map +1 -1
  31. package/lib/internal/_httpQueryParseURLSearchParams.mjs +20 -2
  32. package/lib/internal/_httpQueryParseURLSearchParams.mjs.map +1 -1
  33. package/lib/internal/_isFormatByte.js +2 -5
  34. package/lib/internal/_isFormatByte.js.map +1 -1
  35. package/lib/internal/_isFormatByte.mjs +2 -5
  36. package/lib/internal/_isFormatByte.mjs.map +1 -1
  37. package/lib/internal/_isFormatDate.js +15 -2
  38. package/lib/internal/_isFormatDate.js.map +1 -1
  39. package/lib/internal/_isFormatDate.mjs +22 -2
  40. package/lib/internal/_isFormatDate.mjs.map +1 -1
  41. package/lib/internal/_isFormatDateTime.js +21 -2
  42. package/lib/internal/_isFormatDateTime.js.map +1 -1
  43. package/lib/internal/_isFormatDateTime.mjs +13 -2
  44. package/lib/internal/_isFormatDateTime.mjs.map +1 -1
  45. package/lib/internal/_isFormatIri.js +3 -2
  46. package/lib/internal/_isFormatIri.js.map +1 -1
  47. package/lib/internal/_isFormatIri.mjs +3 -2
  48. package/lib/internal/_isFormatIri.mjs.map +1 -1
  49. package/lib/internal/_isFormatIriReference.js +10 -2
  50. package/lib/internal/_isFormatIriReference.js.map +1 -1
  51. package/lib/internal/_isFormatIriReference.mjs +9 -2
  52. package/lib/internal/_isFormatIriReference.mjs.map +1 -1
  53. package/lib/internal/_isFormatUriReference.js +1 -1
  54. package/lib/internal/_isFormatUriReference.js.map +1 -1
  55. package/lib/internal/_isFormatUriReference.mjs +1 -1
  56. package/lib/internal/_isFormatUriReference.mjs.map +1 -1
  57. package/lib/internal/_isMultipleOf.d.ts +1 -0
  58. package/lib/internal/_isMultipleOf.js +13 -0
  59. package/lib/internal/_isMultipleOf.js.map +1 -0
  60. package/lib/internal/_isMultipleOf.mjs +12 -0
  61. package/lib/internal/_isMultipleOf.mjs.map +1 -0
  62. package/lib/internal/_isTypeFloat.js +1 -1
  63. package/lib/internal/_isTypeFloat.js.map +1 -1
  64. package/lib/internal/_isTypeFloat.mjs +1 -1
  65. package/lib/internal/_isTypeFloat.mjs.map +1 -1
  66. package/lib/internal/_isTypeInt64.js +1 -0
  67. package/lib/internal/_isTypeInt64.js.map +1 -1
  68. package/lib/internal/_isTypeInt64.mjs.map +1 -1
  69. package/lib/internal/_isTypeInt64Bigint.d.ts +1 -0
  70. package/lib/internal/_isTypeInt64Bigint.js +15 -0
  71. package/lib/internal/_isTypeInt64Bigint.js.map +1 -0
  72. package/lib/internal/_isTypeInt64Bigint.mjs +8 -0
  73. package/lib/internal/_isTypeInt64Bigint.mjs.map +1 -0
  74. package/lib/internal/_isTypeUint64.js +1 -0
  75. package/lib/internal/_isTypeUint64.js.map +1 -1
  76. package/lib/internal/_isTypeUint64.mjs.map +1 -1
  77. package/lib/internal/_isTypeUint64Bigint.d.ts +1 -0
  78. package/lib/internal/_isTypeUint64Bigint.js +10 -0
  79. package/lib/internal/_isTypeUint64Bigint.js.map +1 -0
  80. package/lib/internal/_isTypeUint64Bigint.mjs +8 -0
  81. package/lib/internal/_isTypeUint64Bigint.mjs.map +1 -0
  82. package/lib/internal/_isUniqueItems.js +96 -109
  83. package/lib/internal/_isUniqueItems.js.map +1 -1
  84. package/lib/internal/_isUniqueItems.mjs +62 -50
  85. package/lib/internal/_isUniqueItems.mjs.map +1 -1
  86. package/lib/internal/_notationAny.js +8 -1
  87. package/lib/internal/_notationAny.js.map +1 -1
  88. package/lib/internal/_notationAny.mjs +7 -1
  89. package/lib/internal/_notationAny.mjs.map +1 -1
  90. package/lib/internal/_notationAssign.d.ts +1 -0
  91. package/lib/internal/_notationAssign.js +18 -0
  92. package/lib/internal/_notationAssign.js.map +1 -0
  93. package/lib/internal/_notationAssign.mjs +17 -0
  94. package/lib/internal/_notationAssign.mjs.map +1 -0
  95. package/lib/internal/_notationCamel.js +30 -9
  96. package/lib/internal/_notationCamel.js.map +1 -1
  97. package/lib/internal/_notationCamel.mjs +13 -5
  98. package/lib/internal/_notationCamel.mjs.map +1 -1
  99. package/lib/internal/_notationKebab.d.ts +1 -0
  100. package/lib/internal/_notationKebab.js +15 -0
  101. package/lib/internal/_notationKebab.js.map +1 -0
  102. package/lib/internal/_notationKebab.mjs +15 -0
  103. package/lib/internal/_notationKebab.mjs.map +1 -0
  104. package/lib/internal/_notationKeyCollision.d.ts +1 -0
  105. package/lib/internal/_notationKeyCollision.js +8 -0
  106. package/lib/internal/_notationKeyCollision.js.map +1 -0
  107. package/lib/internal/_notationKeyCollision.mjs +8 -0
  108. package/lib/internal/_notationKeyCollision.mjs.map +1 -0
  109. package/lib/internal/_notationPascal.js +20 -5
  110. package/lib/internal/_notationPascal.js.map +1 -1
  111. package/lib/internal/_notationPascal.mjs +10 -5
  112. package/lib/internal/_notationPascal.mjs.map +1 -1
  113. package/lib/internal/_notationSnake.js +25 -22
  114. package/lib/internal/_notationSnake.js.map +1 -1
  115. package/lib/internal/_notationSnake.mjs +11 -11
  116. package/lib/internal/_notationSnake.mjs.map +1 -1
  117. package/lib/internal/_plainCloneAny.js +174 -38
  118. package/lib/internal/_plainCloneAny.js.map +1 -1
  119. package/lib/internal/_plainCloneAny.mjs +126 -22
  120. package/lib/internal/_plainCloneAny.mjs.map +1 -1
  121. package/lib/internal/_randomArray.d.ts +1 -1
  122. package/lib/internal/_randomArray.js +11 -4
  123. package/lib/internal/_randomArray.js.map +1 -1
  124. package/lib/internal/_randomArray.mjs +9 -3
  125. package/lib/internal/_randomArray.mjs.map +1 -1
  126. package/lib/internal/_randomFormatByte.d.ts +2 -1
  127. package/lib/internal/_randomFormatByte.js +2 -1
  128. package/lib/internal/_randomFormatByte.js.map +1 -1
  129. package/lib/internal/_randomFormatByte.mjs +2 -1
  130. package/lib/internal/_randomFormatByte.mjs.map +1 -1
  131. package/lib/internal/_randomFormatDate.d.ts +2 -0
  132. package/lib/internal/_randomFormatDate.js +3 -2
  133. package/lib/internal/_randomFormatDate.js.map +1 -1
  134. package/lib/internal/_randomFormatDate.mjs +3 -2
  135. package/lib/internal/_randomFormatDate.mjs.map +1 -1
  136. package/lib/internal/_randomFormatDatetime.d.ts +2 -0
  137. package/lib/internal/_randomFormatDatetime.js +3 -2
  138. package/lib/internal/_randomFormatDatetime.js.map +1 -1
  139. package/lib/internal/_randomFormatDatetime.mjs +3 -2
  140. package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
  141. package/lib/internal/_randomFormatDuration.d.ts +2 -1
  142. package/lib/internal/_randomFormatDuration.js +3 -2
  143. package/lib/internal/_randomFormatDuration.js.map +1 -1
  144. package/lib/internal/_randomFormatDuration.mjs +3 -2
  145. package/lib/internal/_randomFormatDuration.mjs.map +1 -1
  146. package/lib/internal/_randomFormatEmail.d.ts +2 -1
  147. package/lib/internal/_randomFormatEmail.js +8 -1
  148. package/lib/internal/_randomFormatEmail.js.map +1 -1
  149. package/lib/internal/_randomFormatEmail.mjs +5 -1
  150. package/lib/internal/_randomFormatEmail.mjs.map +1 -1
  151. package/lib/internal/_randomFormatHostname.d.ts +8 -1
  152. package/lib/internal/_randomFormatHostname.js +45 -2
  153. package/lib/internal/_randomFormatHostname.js.map +1 -1
  154. package/lib/internal/_randomFormatHostname.mjs +38 -2
  155. package/lib/internal/_randomFormatHostname.mjs.map +1 -1
  156. package/lib/internal/_randomFormatIdnEmail.d.ts +2 -1
  157. package/lib/internal/_randomFormatIdnEmail.js +16 -2
  158. package/lib/internal/_randomFormatIdnEmail.js.map +1 -1
  159. package/lib/internal/_randomFormatIdnEmail.mjs +11 -2
  160. package/lib/internal/_randomFormatIdnEmail.mjs.map +1 -1
  161. package/lib/internal/_randomFormatIdnHostname.d.ts +2 -1
  162. package/lib/internal/_randomFormatIdnHostname.js +26 -1
  163. package/lib/internal/_randomFormatIdnHostname.js.map +1 -1
  164. package/lib/internal/_randomFormatIdnHostname.mjs +25 -2
  165. package/lib/internal/_randomFormatIdnHostname.mjs.map +1 -1
  166. package/lib/internal/_randomFormatIpv4.d.ts +2 -1
  167. package/lib/internal/_randomFormatIpv4.js +2 -1
  168. package/lib/internal/_randomFormatIpv4.js.map +1 -1
  169. package/lib/internal/_randomFormatIpv4.mjs +2 -1
  170. package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
  171. package/lib/internal/_randomFormatIpv6.d.ts +2 -1
  172. package/lib/internal/_randomFormatIpv6.js +2 -1
  173. package/lib/internal/_randomFormatIpv6.js.map +1 -1
  174. package/lib/internal/_randomFormatIpv6.mjs +2 -1
  175. package/lib/internal/_randomFormatIpv6.mjs.map +1 -1
  176. package/lib/internal/_randomFormatIri.d.ts +2 -1
  177. package/lib/internal/_randomFormatIri.js +1 -1
  178. package/lib/internal/_randomFormatIri.js.map +1 -1
  179. package/lib/internal/_randomFormatIri.mjs +1 -1
  180. package/lib/internal/_randomFormatIri.mjs.map +1 -1
  181. package/lib/internal/_randomFormatIriReference.d.ts +2 -1
  182. package/lib/internal/_randomFormatIriReference.js +1 -1
  183. package/lib/internal/_randomFormatIriReference.js.map +1 -1
  184. package/lib/internal/_randomFormatIriReference.mjs +1 -1
  185. package/lib/internal/_randomFormatIriReference.mjs.map +1 -1
  186. package/lib/internal/_randomFormatJsonPointer.d.ts +2 -1
  187. package/lib/internal/_randomFormatJsonPointer.js +8 -1
  188. package/lib/internal/_randomFormatJsonPointer.js.map +1 -1
  189. package/lib/internal/_randomFormatJsonPointer.mjs +5 -1
  190. package/lib/internal/_randomFormatJsonPointer.mjs.map +1 -1
  191. package/lib/internal/_randomFormatPassword.d.ts +2 -1
  192. package/lib/internal/_randomFormatPassword.js +7 -5
  193. package/lib/internal/_randomFormatPassword.js.map +1 -1
  194. package/lib/internal/_randomFormatPassword.mjs +5 -1
  195. package/lib/internal/_randomFormatPassword.mjs.map +1 -1
  196. package/lib/internal/_randomFormatRegex.d.ts +2 -1
  197. package/lib/internal/_randomFormatRegex.js +2 -1
  198. package/lib/internal/_randomFormatRegex.js.map +1 -1
  199. package/lib/internal/_randomFormatRegex.mjs +2 -1
  200. package/lib/internal/_randomFormatRegex.mjs.map +1 -1
  201. package/lib/internal/_randomFormatRelativeJsonPointer.d.ts +2 -1
  202. package/lib/internal/_randomFormatRelativeJsonPointer.js +3 -2
  203. package/lib/internal/_randomFormatRelativeJsonPointer.js.map +1 -1
  204. package/lib/internal/_randomFormatRelativeJsonPointer.mjs +3 -2
  205. package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
  206. package/lib/internal/_randomFormatTime.d.ts +2 -1
  207. package/lib/internal/_randomFormatTime.js +3 -2
  208. package/lib/internal/_randomFormatTime.js.map +1 -1
  209. package/lib/internal/_randomFormatTime.mjs +3 -2
  210. package/lib/internal/_randomFormatTime.mjs.map +1 -1
  211. package/lib/internal/_randomFormatUri.d.ts +2 -1
  212. package/lib/internal/_randomFormatUri.js +1 -1
  213. package/lib/internal/_randomFormatUri.js.map +1 -1
  214. package/lib/internal/_randomFormatUri.mjs +1 -1
  215. package/lib/internal/_randomFormatUri.mjs.map +1 -1
  216. package/lib/internal/_randomFormatUriReference.d.ts +2 -1
  217. package/lib/internal/_randomFormatUriReference.js +1 -1
  218. package/lib/internal/_randomFormatUriReference.js.map +1 -1
  219. package/lib/internal/_randomFormatUriReference.mjs +1 -1
  220. package/lib/internal/_randomFormatUriReference.mjs.map +1 -1
  221. package/lib/internal/_randomFormatUriTemplate.d.ts +2 -1
  222. package/lib/internal/_randomFormatUriTemplate.js +1 -1
  223. package/lib/internal/_randomFormatUriTemplate.js.map +1 -1
  224. package/lib/internal/_randomFormatUriTemplate.mjs +1 -1
  225. package/lib/internal/_randomFormatUriTemplate.mjs.map +1 -1
  226. package/lib/internal/_randomFormatUrl.d.ts +2 -1
  227. package/lib/internal/_randomFormatUrl.js +21 -1
  228. package/lib/internal/_randomFormatUrl.js.map +1 -1
  229. package/lib/internal/_randomFormatUrl.mjs +18 -1
  230. package/lib/internal/_randomFormatUrl.mjs.map +1 -1
  231. package/lib/internal/_randomFormatUuid.d.ts +2 -1
  232. package/lib/internal/_randomFormatUuid.js +3 -2
  233. package/lib/internal/_randomFormatUuid.js.map +1 -1
  234. package/lib/internal/_randomFormatUuid.mjs +3 -2
  235. package/lib/internal/_randomFormatUuid.mjs.map +1 -1
  236. package/lib/internal/_randomInteger.js +59 -28
  237. package/lib/internal/_randomInteger.js.map +1 -1
  238. package/lib/internal/_randomInteger.mjs +56 -16
  239. package/lib/internal/_randomInteger.mjs.map +1 -1
  240. package/lib/internal/_randomMultiple.d.ts +8 -0
  241. package/lib/internal/_randomMultiple.js +168 -0
  242. package/lib/internal/_randomMultiple.js.map +1 -0
  243. package/lib/internal/_randomMultiple.mjs +158 -0
  244. package/lib/internal/_randomMultiple.mjs.map +1 -0
  245. package/lib/internal/_randomNumber.js +42 -42
  246. package/lib/internal/_randomNumber.js.map +1 -1
  247. package/lib/internal/_randomNumber.mjs +41 -27
  248. package/lib/internal/_randomNumber.mjs.map +1 -1
  249. package/lib/internal/_randomPattern.d.ts +2 -1
  250. package/lib/internal/_randomPattern.js +19 -4
  251. package/lib/internal/_randomPattern.js.map +1 -1
  252. package/lib/internal/_randomPattern.mjs +10 -4
  253. package/lib/internal/_randomPattern.mjs.map +1 -1
  254. package/lib/internal/_randomStringLength.d.ts +33 -0
  255. package/lib/internal/_randomStringLength.js +48 -0
  256. package/lib/internal/_randomStringLength.js.map +1 -0
  257. package/lib/internal/_randomStringLength.mjs +44 -0
  258. package/lib/internal/_randomStringLength.mjs.map +1 -0
  259. package/lib/internal/_stringLength.d.ts +1 -0
  260. package/lib/internal/_stringLength.js +11 -0
  261. package/lib/internal/_stringLength.js.map +1 -0
  262. package/lib/internal/_stringLength.mjs +10 -0
  263. package/lib/internal/_stringLength.mjs.map +1 -0
  264. package/lib/internal/_validateReport.js +4 -1
  265. package/lib/internal/_validateReport.js.map +1 -1
  266. package/lib/internal/_validateReport.mjs +2 -1
  267. package/lib/internal/_validateReport.mjs.map +1 -1
  268. package/lib/internal/private/__notationRename.d.ts +14 -0
  269. package/lib/internal/private/__notationRename.js +25 -0
  270. package/lib/internal/private/__notationRename.js.map +1 -0
  271. package/lib/internal/private/__notationRename.mjs +24 -0
  272. package/lib/internal/private/__notationRename.mjs.map +1 -0
  273. package/lib/json.d.ts +2 -2
  274. package/lib/json.mjs.map +1 -1
  275. package/lib/module.d.ts +2 -2
  276. package/lib/module.js.map +1 -1
  277. package/lib/module.mjs.map +1 -1
  278. package/lib/notations.d.ts +20 -4
  279. package/lib/notations.js.map +1 -1
  280. package/lib/notations.mjs.map +1 -1
  281. package/native/adapter/plugin_options.go +117 -0
  282. package/native/adapter/plugin_options_payload_matrix_test.go +181 -0
  283. package/native/cmd/ttsc-typia/any_array_type_tags_transform_test.go +63 -9
  284. package/native/cmd/ttsc-typia/assert_guard_factory_contract_test.go +152 -0
  285. package/native/cmd/ttsc-typia/build.go +81 -64
  286. package/native/cmd/ttsc-typia/build_no_emit_preserves_analysis_options_test.go +67 -0
  287. package/native/cmd/ttsc-typia/build_no_emit_transform_diagnostics_test.go +138 -0
  288. package/native/cmd/ttsc-typia/build_plugin_options_come_from_payload_test.go +48 -0
  289. package/native/cmd/ttsc-typia/build_transactional_emit_success_test.go +81 -0
  290. package/native/cmd/ttsc-typia/build_transform_failure_atomicity_test.go +138 -0
  291. package/native/cmd/ttsc-typia/command_routes_and_diagnostics_coverage_test.go +3 -1
  292. package/native/cmd/ttsc-typia/compare_less_nan_transform_test.go +98 -0
  293. package/native/cmd/ttsc-typia/compare_native_object_overmatch_transform_test.go +161 -0
  294. package/native/cmd/ttsc-typia/compare_nondiscriminable_union_transform_test.go +343 -0
  295. package/native/cmd/ttsc-typia/compare_union_discrimination_transform_test.go +289 -0
  296. package/native/cmd/ttsc-typia/escaped_property_key_path_transform_test.go +193 -0
  297. package/native/cmd/ttsc-typia/finite_option_number_leaf_transform_test.go +240 -0
  298. package/native/cmd/ttsc-typia/functional_promised_type_transform_test.go +220 -0
  299. package/native/cmd/ttsc-typia/functional_receiver_transform_test.go +232 -0
  300. package/native/cmd/ttsc-typia/is_object_function_member_transform_test.go +205 -0
  301. package/native/cmd/ttsc-typia/json_application_alias_function_validation_transform_test.go +151 -0
  302. package/native/cmd/ttsc-typia/json_is_stringify_finite_number_transform_test.go +198 -0
  303. package/native/cmd/ttsc-typia/json_stringify_special_key_transform_test.go +238 -0
  304. package/native/cmd/ttsc-typia/main_wasm.go +21 -2
  305. package/native/cmd/ttsc-typia/native_collection_identity_is_transform_test.go +234 -0
  306. package/native/cmd/ttsc-typia/native_generic_name_guard_is_transform_test.go +194 -0
  307. package/native/cmd/ttsc-typia/native_name_collision_is_transform_test.go +204 -0
  308. package/native/cmd/ttsc-typia/non_trailing_rest_tuple_transform_test.go +23 -11
  309. package/native/cmd/ttsc-typia/notation_dynamic_keys_transform_test.go +286 -0
  310. package/native/cmd/ttsc-typia/notation_kebab_case_transform_test.go +1 -1
  311. package/native/cmd/ttsc-typia/notation_literal_collision_transform_test.go +164 -0
  312. package/native/cmd/ttsc-typia/notation_pascal_case_transform_test.go +230 -0
  313. package/native/cmd/ttsc-typia/notation_unicode_key_transform_test.go +309 -0
  314. package/native/cmd/ttsc-typia/pattern_line_terminator_escape_transform_test.go +224 -0
  315. package/native/cmd/ttsc-typia/plain_prune_union_object_overmatch_transform_test.go +219 -0
  316. package/native/cmd/ttsc-typia/plugin_options_payload_helpers_test.go +181 -0
  317. package/native/cmd/ttsc-typia/private_field_filter_is_transform_test.go +278 -0
  318. package/native/cmd/ttsc-typia/project_catalog_transform_coverage_test.go +73 -27
  319. package/native/cmd/ttsc-typia/project_dependencies_barrel_reexport_transform_test.go +120 -0
  320. package/native/cmd/ttsc-typia/project_dependencies_collapsed_alias_transform_test.go +134 -0
  321. package/native/cmd/ttsc-typia/project_dependencies_custom_lib_name_transform_test.go +135 -0
  322. package/native/cmd/ttsc-typia/project_dependencies_default_barrel_transform_test.go +114 -0
  323. package/native/cmd/ttsc-typia/project_dependencies_empty_heritage_transform_test.go +100 -0
  324. package/native/cmd/ttsc-typia/project_dependencies_envelope_transform_test.go +148 -0
  325. package/native/cmd/ttsc-typia/project_dependencies_index_signature_alias_transform_test.go +139 -0
  326. package/native/cmd/ttsc-typia/project_dependencies_local_reexport_transform_test.go +122 -0
  327. package/native/cmd/ttsc-typia/project_dependencies_signature_alias_transform_test.go +125 -0
  328. package/native/cmd/ttsc-typia/project_dependencies_star_barrel_transform_test.go +112 -0
  329. package/native/cmd/ttsc-typia/project_reference_graph_envelope_transform_test.go +190 -0
  330. package/native/cmd/ttsc-typia/protobuf_is_encode_finite_number_transform_test.go +98 -0
  331. package/native/cmd/ttsc-typia/protobuf_sequence_field_numbers_transform_test.go +52 -22
  332. package/native/cmd/ttsc-typia/symbol_key_member_filter_transform_test.go +279 -0
  333. package/native/cmd/ttsc-typia/template_interpolation_type_tags_transform_test.go +86 -23
  334. package/native/cmd/ttsc-typia/template_literal_type_tags_transform_test.go +3 -1
  335. package/native/cmd/ttsc-typia/transform.go +228 -39
  336. package/native/cmd/ttsc-typia/{transform_declaration_source_produces_no_js_test.go → transform_declaration_source_produces_no_javascript_test.go} +10 -2
  337. package/native/cmd/ttsc-typia/transform_fixtures_emit_coverage_test.go +21 -4
  338. package/native/cmd/ttsc-typia/transform_helpers_test.go +159 -1
  339. package/native/cmd/ttsc-typia/transform_plugin_options_come_from_payload_test.go +43 -0
  340. package/native/cmd/ttsc-typia/transform_single_file_failure_atomicity_test.go +114 -0
  341. package/native/cmd/ttsc-typia/transform_single_file_failure_writes_no_stdout_test.go +43 -0
  342. package/native/cmd/ttsc-typia/transform_single_file_js_distinguishes_same_basename_sources_test.go +81 -0
  343. package/native/cmd/ttsc-typia/transform_single_file_js_empty_emit_reports_no_output_test.go +100 -0
  344. package/native/cmd/ttsc-typia/transform_single_file_js_locates_output_across_layouts_test.go +160 -0
  345. package/native/cmd/ttsc-typia/transform_single_file_success_publishes_artifact_test.go +54 -0
  346. package/native/cmd/ttsc-typia/transform_wasm_host_argv_reports_diagnostics_test.go +39 -0
  347. package/native/cmd/ttsc-typia/tuple_optional_compare_clone_transform_test.go +227 -0
  348. package/native/core/factories/FormatCheatSheet.go +40 -7
  349. package/native/core/factories/IdentifierFactory.go +131 -4
  350. package/native/core/factories/MetadataCommentTagFactory.go +83 -40
  351. package/native/core/factories/MetadataTypeTagFactory.go +13 -1
  352. package/native/core/factories/NumericRangeFactory.go +60 -17
  353. package/native/core/factories/ProtobufFactory.go +7 -4
  354. package/native/core/factories/factory_utility_coverage_test.go +8 -2
  355. package/native/core/factories/format_alias_resolves_to_cheat_sheet_test.go +57 -0
  356. package/native/core/factories/format_alias_table_targets_the_cheat_sheet_test.go +44 -0
  357. package/native/core/factories/identifier_factory_postfix_escapes_every_key_test.go +147 -0
  358. package/native/core/factories/identifier_factory_postfix_survives_every_code_point_test.go +86 -0
  359. package/native/core/factories/internal/metadata/MetadataHelper.go +134 -7
  360. package/native/core/factories/internal/metadata/emplace_metadata_object.go +116 -8
  361. package/native/core/factories/internal/metadata/iterate_metadata.go +6 -0
  362. package/native/core/factories/internal/metadata/iterate_metadata_function.go +4 -11
  363. package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +8 -6
  364. package/native/core/factories/internal/metadata/iterate_metadata_map.go +9 -0
  365. package/native/core/factories/internal/metadata/iterate_metadata_native.go +27 -2
  366. package/native/core/factories/internal/metadata/iterate_metadata_set.go +9 -0
  367. package/native/core/factories/internal/metadata/js_doc_link_text_test.go +69 -0
  368. package/native/core/factories/internal/metadata/type_arguments_precondition_test.go +70 -0
  369. package/native/core/factories/metadata_comment_tag_factory_coverage_test.go +39 -0
  370. package/native/core/factories/metadata_comment_tag_factory_exclusivity_matches_interface_test.go +84 -0
  371. package/native/core/factories/metadata_type_tag_factory_accepts_legal_tag_combinations_test.go +60 -0
  372. package/native/core/factories/metadata_type_tag_factory_declarations_test.go +86 -0
  373. package/native/core/factories/metadata_type_tag_factory_keeps_bool_form_exclusivity_test.go +38 -0
  374. package/native/core/factories/metadata_type_tag_factory_rejects_cross_kind_exclusive_tags_test.go +65 -0
  375. package/native/core/factories/metadata_type_tag_factory_rejects_duplicated_array_form_tags_test.go +41 -0
  376. package/native/core/factories/numeric_range_factory_enforces_64bit_bounds_test.go +69 -0
  377. package/native/core/factories/protobuf_recovery_ownership_test.go +64 -0
  378. package/native/core/programmers/IsProgrammer.go +15 -1
  379. package/native/core/programmers/RandomProgrammer.go +51 -14
  380. package/native/core/programmers/compare/CompareEqualProgrammer.go +393 -5
  381. package/native/core/programmers/compare/CompareLessProgrammer.go +4 -2
  382. package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +4 -6
  383. package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +5 -13
  384. package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +6 -14
  385. package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +4 -6
  386. package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +49 -14
  387. package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +5 -13
  388. package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +4 -6
  389. package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +5 -13
  390. package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +5 -13
  391. package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +4 -17
  392. package/native/core/programmers/helpers/CloneJoiner.go +32 -0
  393. package/native/core/programmers/helpers/NotationJoiner.go +86 -28
  394. package/native/core/programmers/helpers/StringifyJoinder.go +32 -1
  395. package/native/core/programmers/helpers/UnionExplorer.go +203 -61
  396. package/native/core/programmers/helpers/joiner_branch_coverage_test.go +5 -3
  397. package/native/core/programmers/helpers/union_explorer_coverage_test.go +1 -1
  398. package/native/core/programmers/internal/CheckerProgrammer.go +100 -48
  399. package/native/core/programmers/iterate/check_template.go +344 -32
  400. package/native/core/programmers/iterate/json_schema_discriminator.go +36 -10
  401. package/native/core/programmers/iterate/json_schema_discriminator_declaration_syntax_test.go +205 -0
  402. package/native/core/programmers/iterate/openapi_v3_downgrader.go +641 -0
  403. package/native/core/programmers/iterate/openapi_v3_downgrader_boolean_default_test.go +95 -0
  404. package/native/core/programmers/iterate/openapi_v3_downgrader_test.go +123 -0
  405. package/native/core/programmers/iterate/template_interpolation_tags_test.go +40 -8
  406. package/native/core/programmers/iterate/template_runtime_pattern.go +52 -7
  407. package/native/core/programmers/json/JsonApplicationProgrammer.go +45 -11
  408. package/native/core/programmers/json/JsonSchemasProgrammer.go +12 -2
  409. package/native/core/programmers/llm/LlmApplicationProgrammer.go +12 -10
  410. package/native/core/programmers/llm/LlmSchemaProgrammer.go +23 -6
  411. package/native/core/programmers/llm/llm_reference_codec_test.go +24 -0
  412. package/native/core/programmers/notations/NotationGeneralProgrammer.go +183 -67
  413. package/native/core/programmers/notations/notation_general_helpers_test.go +1 -3
  414. package/native/core/programmers/notations/notation_general_programmer_pascal_multiword_test.go +72 -0
  415. package/native/core/programmers/notations/notation_general_programmer_underscore_boundary_test.go +68 -0
  416. package/native/core/programmers/plain/PlainClassifyProgrammer.go +23 -15
  417. package/native/core/programmers/plain/PlainCloneProgrammer.go +20 -7
  418. package/native/core/programmers/plain/PlainPruneProgrammer.go +19 -5
  419. package/native/core/programmers/plain/plain_tuple_seed_recovery_ownership_test.go +25 -0
  420. package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +37 -28
  421. package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +40 -21
  422. package/native/core/programmers/protobuf/protobuf_programmer_helper_coverage_test.go +26 -0
  423. package/native/core/programmers/random_programmer_length_argument_test.go +53 -0
  424. package/native/core/schemas/metadata/MetadataCollection.go +270 -20
  425. package/native/core/schemas/metadata/MetadataDependency.go +388 -0
  426. package/native/core/schemas/metadata/MetadataObjectType.go +17 -4
  427. package/native/core/schemas/metadata/metadata_collection_generic_argument_dot_test.go +122 -0
  428. package/native/core/schemas/metadata/metadata_collection_name_allocation_test.go +147 -0
  429. package/native/core/schemas/metadata/metadata_collection_openapi_name_cascade_test.go +55 -0
  430. package/native/core/schemas/metadata/metadata_collection_openapi_name_test.go +68 -0
  431. package/native/core/utils/PatternUtil.go +13 -0
  432. package/native/core/utils/PromiseTypeFactory.go +59 -0
  433. package/native/core/utils/ProtobufNameEncoder.go +8 -0
  434. package/native/core/utils/promise_type_factory_semantics_test.go +118 -0
  435. package/native/go.mod +9 -1
  436. package/native/transform/CallExpressionTransformer.go +12 -0
  437. package/native/transform/features/json/JsonApplicationTransformer.go +1 -1
  438. package/native/transform/features/json/JsonSchemaTransformer.go +1 -1
  439. package/native/transform/features/json/JsonSchemasTransformer.go +5 -4
  440. package/package.json +16 -4
  441. package/src/executable/FileSystemIdentity.ts +189 -0
  442. package/src/executable/TypiaGenerateWizard.ts +377 -110
  443. package/src/functional.ts +30 -60
  444. package/src/internal/_ProtobufReader.ts +129 -43
  445. package/src/internal/_createStandardSchema.ts +15 -1
  446. package/src/internal/_decimal.ts +69 -0
  447. package/src/internal/_httpQueryParseURLSearchParams.ts +24 -2
  448. package/src/internal/_isFormatByte.ts +2 -5
  449. package/src/internal/_isFormatDate.ts +15 -2
  450. package/src/internal/_isFormatDateTime.ts +28 -2
  451. package/src/internal/_isFormatIri.ts +5 -2
  452. package/src/internal/_isFormatIriReference.ts +11 -3
  453. package/src/internal/_isFormatUriReference.ts +1 -1
  454. package/src/internal/_isMultipleOf.ts +8 -0
  455. package/src/internal/_isTypeFloat.ts +1 -1
  456. package/src/internal/_isTypeInt64.ts +1 -0
  457. package/src/internal/_isTypeInt64Bigint.ts +12 -0
  458. package/src/internal/_isTypeUint64.ts +1 -0
  459. package/src/internal/_isTypeUint64Bigint.ts +7 -0
  460. package/src/internal/_isUniqueItems.ts +134 -132
  461. package/src/internal/_notationAny.ts +9 -4
  462. package/src/internal/_notationAssign.ts +20 -0
  463. package/src/internal/_notationCamel.ts +31 -10
  464. package/src/internal/_notationKebab.ts +11 -0
  465. package/src/internal/_notationKeyCollision.ts +9 -0
  466. package/src/internal/_notationPascal.ts +19 -6
  467. package/src/internal/_notationSnake.ts +24 -21
  468. package/src/internal/_plainCloneAny.ts +208 -33
  469. package/src/internal/_randomArray.ts +13 -4
  470. package/src/internal/_randomFormatByte.ts +4 -1
  471. package/src/internal/_randomFormatDate.ts +17 -12
  472. package/src/internal/_randomFormatDatetime.ts +15 -10
  473. package/src/internal/_randomFormatDuration.ts +16 -14
  474. package/src/internal/_randomFormatEmail.ts +8 -2
  475. package/src/internal/_randomFormatHostname.ts +48 -1
  476. package/src/internal/_randomFormatIdnEmail.ts +18 -2
  477. package/src/internal/_randomFormatIdnHostname.ts +34 -2
  478. package/src/internal/_randomFormatIpv4.ts +3 -2
  479. package/src/internal/_randomFormatIpv6.ts +3 -2
  480. package/src/internal/_randomFormatIri.ts +3 -1
  481. package/src/internal/_randomFormatIriReference.ts +3 -1
  482. package/src/internal/_randomFormatJsonPointer.ts +8 -2
  483. package/src/internal/_randomFormatPassword.ts +11 -6
  484. package/src/internal/_randomFormatRegex.ts +4 -1
  485. package/src/internal/_randomFormatRelativeJsonPointer.ts +13 -6
  486. package/src/internal/_randomFormatTime.ts +13 -10
  487. package/src/internal/_randomFormatUri.ts +3 -1
  488. package/src/internal/_randomFormatUriReference.ts +3 -1
  489. package/src/internal/_randomFormatUriTemplate.ts +3 -1
  490. package/src/internal/_randomFormatUrl.ts +25 -2
  491. package/src/internal/_randomFormatUuid.ts +10 -6
  492. package/src/internal/_randomInteger.ts +87 -40
  493. package/src/internal/_randomMultiple.ts +245 -0
  494. package/src/internal/_randomNumber.ts +72 -55
  495. package/src/internal/_randomPattern.ts +26 -4
  496. package/src/internal/_randomStringLength.ts +72 -0
  497. package/src/internal/_stringLength.ts +5 -0
  498. package/src/internal/_validateReport.ts +5 -1
  499. package/src/internal/private/__notationRename.ts +24 -0
  500. package/src/json.ts +2 -2
  501. package/src/module.ts +4 -6
  502. package/src/notations.ts +20 -4
  503. package/lib/internal/private/__notationCapitalize.d.ts +0 -1
  504. package/lib/internal/private/__notationCapitalize.js +0 -6
  505. package/lib/internal/private/__notationCapitalize.js.map +0 -1
  506. package/lib/internal/private/__notationCapitalize.mjs +0 -6
  507. package/lib/internal/private/__notationCapitalize.mjs.map +0 -1
  508. package/lib/internal/private/__notationUnsnake.d.ts +0 -4
  509. package/lib/internal/private/__notationUnsnake.js +0 -26
  510. package/lib/internal/private/__notationUnsnake.js.map +0 -1
  511. package/lib/internal/private/__notationUnsnake.mjs +0 -15
  512. package/lib/internal/private/__notationUnsnake.mjs.map +0 -1
  513. package/native/cmd/ttsc-typia/plugin_options_missing_config_test.go +0 -26
  514. package/native/cmd/ttsc-typia/plugin_options_undefined_false_test.go +0 -36
  515. package/src/internal/private/__notationCapitalize.ts +0 -2
  516. package/src/internal/private/__notationUnsnake.ts +0 -24
@@ -1 +1 @@
1
- {"version":3,"file":"TypiaGenerateWizard.mjs","names":[],"sources":["../../src/executable/TypiaGenerateWizard.ts"],"sourcesContent":["import { createCommand } from \"commander\";\nimport fs from \"fs\";\nimport inquirer from \"inquirer\";\nimport { createRequire } from \"module\";\nimport path from \"path\";\nimport { glob, isDynamicPattern } from \"tinyglobby\";\nimport type {\n ITtscCompilerDiagnostic,\n ITtscCompilerTransformation,\n} from \"ttsc\";\n\nexport namespace TypiaGenerateWizard {\n export async function generate(): Promise<void> {\n console.log(\"----------------------------------------\");\n console.log(\" Typia Generate Wizard\");\n console.log(\"----------------------------------------\");\n\n const options: IArguments = await parseArguments();\n await build(options);\n }\n\n async function parseArguments(): Promise<IArguments> {\n const command = createCommand(\"typia generate\");\n command.usage(\"[options] [files...]\");\n command.argument(\"[files...]\", \"input TypeScript source files or globs\");\n command.option(\"--input <path>\", \"input directory\");\n command.option(\"--output <directory>\", \"output directory\");\n command.option(\n \"--project <project>\",\n \"tsconfig.json/jsconfig.json file or directory\",\n );\n\n const questioned = { value: false };\n const prompt = inquirer.createPromptModule;\n\n const input = (name: string) => async (message: string) => {\n questioned.value = true;\n const result = await prompt()({\n type: \"input\",\n name,\n message,\n default: \"\",\n });\n return result[name] as string;\n };\n const configure = async (): Promise<string> => {\n const file: string | null = findProjectConfigFile(process.cwd());\n if (file === null) {\n throw new URIError(\n `Unable to find \"tsconfig.json\" or \"jsconfig.json\" file.`,\n );\n }\n return file;\n };\n\n return new Promise<IArguments>((resolve, reject) => {\n command.action(async (files: string[], options: Partial<IArguments>) => {\n try {\n if (files.length !== 0 && options.input !== undefined) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): file arguments cannot be combined with --input.\",\n );\n }\n if (files.length === 0) {\n options.input ??= await input(\"input\")(\"input directory\");\n }\n if (files.length !== 0 && options.output === undefined) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): output directory is required when file arguments are used.\",\n );\n }\n const output: string =\n options.output ?? (await input(\"output\")(\"output directory\"));\n const project: string = options.project ?? (await configure());\n if (questioned.value) console.log(\"\");\n resolve({\n input: options.input,\n output,\n project,\n files,\n });\n } catch (exp) {\n reject(exp);\n }\n });\n command.parseAsync(process.argv.slice(3), { from: \"user\" }).catch(reject);\n });\n }\n\n export interface IArguments {\n input?: string;\n output: string;\n project: string;\n files: string[];\n }\n\n async function build(location: IArguments): Promise<void> {\n location.output = path.resolve(location.output);\n location.project = resolveProjectConfigFile(location.project);\n\n const entries: IInputFile[] =\n location.files.length === 0\n ? await prepareDirectoryInput(location)\n : await prepareFileInputs(location);\n\n const binary = resolveTsgoBinary();\n const cwd = path.dirname(location.project);\n const transformed = transformProject({\n binary,\n cwd,\n tsconfig: location.project,\n });\n const outputByKey: Map<string, string> =\n indexTransformedOutputs(transformed);\n const outputs: IOutputFile[] = entries.map((entry) => {\n const output = getTransformedOutput({\n cwd,\n entry,\n outputByKey,\n });\n if (output === undefined) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): no transformed output for ${entry.file}. Check that --project includes the file.`,\n );\n }\n return { entry, output };\n });\n\n await ensureOutputDirectory(location.output);\n await ensureTargetDirectories({\n output: location.output,\n targets: outputs.map(({ entry }) => entry.target),\n });\n await ensurePhysicalTargets({\n output: location.output,\n entries: outputs.map(({ entry }) => entry),\n });\n await ensureTargetFiles(outputs.map(({ entry }) => entry));\n for (const { entry, output } of outputs) {\n await fs.promises.writeFile(entry.target, formatOutput(output), \"utf8\");\n }\n }\n\n interface IInputFile {\n file: string;\n target: string;\n }\n\n interface IOutputFile {\n entry: IInputFile;\n output: string;\n }\n\n async function ensureOutputDirectory(output: string): Promise<void> {\n if (fs.existsSync(output) === false) {\n await ensureCreatableDirectory(output);\n await fs.promises.mkdir(output, { recursive: true });\n } else {\n await ensureExistingDirectory({\n label: \"output path\",\n directory: output,\n });\n }\n }\n\n async function ensureTargetDirectories(props: {\n output: string;\n targets: string[];\n }): Promise<void> {\n const directories: Map<string, string> = new Map();\n for (const target of props.targets) {\n const directory: string = path.dirname(target);\n directories.set(filesystemKey(directory), directory);\n }\n\n for (const directory of directories.values()) {\n await ensureOutputAncestorDirectories({\n output: props.output,\n directory,\n });\n if (fs.existsSync(directory)) {\n await ensureExistingDirectory({\n label: \"output parent path\",\n directory,\n });\n }\n }\n for (const directory of directories.values()) {\n try {\n await fs.promises.mkdir(directory, { recursive: true });\n } catch (exp) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to create output parent directory ${directory}: ${formatUnknownError(exp)}`,\n );\n }\n await ensureExistingDirectory({\n label: \"output parent path\",\n directory,\n });\n }\n }\n\n async function ensureCreatableDirectory(directory: string): Promise<void> {\n const parent: string = await nearestExistingAncestor(directory);\n await ensureExistingDirectoryPath({\n label: \"output parent path\",\n directory: parent,\n });\n }\n\n async function nearestExistingAncestor(directory: string): Promise<string> {\n let current: string = path.resolve(directory);\n while (fs.existsSync(current) === false) {\n const parent: string = path.dirname(current);\n if (parent === current) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to find existing output parent path: ${directory}`,\n );\n }\n current = parent;\n }\n return current;\n }\n\n async function ensureOutputAncestorDirectories(props: {\n output: string;\n directory: string;\n }): Promise<void> {\n const output: string = path.resolve(props.output);\n const directory: string = path.resolve(props.directory);\n if (isSameOrChildPath(directory, output) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path escapes output directory: ${props.directory}`,\n );\n }\n\n const relative: string = path.relative(output, directory);\n if (relative === \"\") {\n return;\n }\n\n let current: string = output;\n for (const segment of relative.split(path.sep)) {\n current = path.join(current, segment);\n let stat: fs.Stats;\n try {\n stat = await fs.promises.lstat(current);\n } catch (exp) {\n if (isMissingFileError(exp)) {\n return;\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to inspect output parent path ${current}: ${formatUnknownError(exp)}`,\n );\n }\n if (stat.isSymbolicLink()) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path contains a symbolic link: ${current}`,\n );\n }\n if (stat.isDirectory() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path is not a directory: ${current}`,\n );\n }\n }\n }\n\n async function ensureExistingDirectory(props: {\n label: string;\n directory: string;\n }): Promise<void> {\n await ensureExistingDirectoryPath(props);\n }\n\n async function ensureExistingDirectoryPath(props: {\n label: string;\n directory: string;\n }): Promise<void> {\n const directory: string = path.resolve(props.directory);\n const parsed: path.ParsedPath = path.parse(directory);\n const relative: string = path.relative(parsed.root, directory);\n let current: string = parsed.root;\n for (const segment of relative === \"\" ? [] : relative.split(path.sep)) {\n current = path.join(current, segment);\n await ensureExistingDirectorySegment({\n label:\n filesystemKey(current) === filesystemKey(directory)\n ? props.label\n : `${props.label} ancestor`,\n directory: current,\n });\n }\n }\n\n async function ensureExistingDirectorySegment(props: {\n label: string;\n directory: string;\n }): Promise<void> {\n const stat: fs.Stats = await fs.promises.lstat(props.directory);\n if (stat.isSymbolicLink()) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${props.label} is a symbolic link: ${props.directory}`,\n );\n }\n if (stat.isDirectory() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${props.label} is not a directory: ${props.directory}`,\n );\n }\n }\n\n async function ensurePhysicalTargets(props: {\n output: string;\n entries: IInputFile[];\n }): Promise<void> {\n const output: string = await fs.promises.realpath(props.output);\n const inputs: Set<string> = new Set();\n for (const entry of props.entries) {\n inputs.add(filesystemKey(await fs.promises.realpath(entry.file)));\n }\n\n for (const entry of props.entries) {\n const parent: string = path.dirname(entry.target);\n const directory: string = await fs.promises.realpath(parent);\n if (isSameOrChildPath(directory, output) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path escapes output directory through a symbolic link: ${parent}`,\n );\n }\n\n const target: string = path.join(directory, path.basename(entry.target));\n if (inputs.has(filesystemKey(target))) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file would overwrite input file through a symbolic link: ${entry.target}`,\n );\n }\n }\n }\n\n async function ensureTargetFiles(entries: IInputFile[]): Promise<void> {\n const inputs: Set<string> = new Set();\n const files: Map<string, IInputFile> = new Map();\n for (const entry of entries) {\n inputs.add(fileIdentityKey(await fs.promises.stat(entry.file)));\n files.set(filesystemKey(entry.target), entry);\n }\n\n for (const entry of files.values()) {\n let stat: fs.Stats;\n try {\n stat = await fs.promises.lstat(entry.target);\n } catch (exp) {\n if (isMissingFileError(exp)) {\n continue;\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to inspect output file ${entry.target}: ${formatUnknownError(exp)}`,\n );\n }\n if (stat.isFile() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file path is not a regular file: ${entry.target}`,\n );\n }\n if (inputs.has(fileIdentityKey(stat))) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file would overwrite input file through a physical file alias: ${entry.target}`,\n );\n }\n if (stat.nlink > 1) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file has multiple hard links: ${entry.target}`,\n );\n }\n }\n }\n\n async function prepareDirectoryInput(\n location: IArguments,\n ): Promise<IInputFile[]> {\n if (location.input === undefined) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): input path is required.\",\n );\n }\n const input = path.resolve(location.input);\n if (fs.existsSync(input) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input path does not exist: ${input}`,\n );\n }\n if ((await isDirectory(input)) === false) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): input path is not a directory.\",\n );\n }\n\n const files: string[] = [];\n await gather({\n location: {\n input,\n output: location.output,\n },\n container: files,\n from: input,\n to: location.output,\n });\n return files.map((file) => ({\n file,\n target: path.join(location.output, path.relative(input, file)),\n }));\n }\n\n async function prepareFileInputs(\n location: IArguments,\n ): Promise<IInputFile[]> {\n const targets: Set<string> = new Set();\n const output: IInputFile[] = [];\n for (const input of await expandFileInputs(\n location.files,\n location.output,\n )) {\n const file: string = path.resolve(input);\n if (fs.existsSync(file) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input file does not exist: ${input}`,\n );\n } else if ((await isFile(file)) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input path is not a file: ${input}`,\n );\n } else if (isDeclarationFile(file)) {\n continue;\n } else if (isSupportedExtension(file) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input file is not a supported TypeScript source: ${input}`,\n );\n }\n\n const target: string = path.join(location.output, path.basename(file));\n if (isSamePath(file, target)) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file would overwrite input file: ${input}`,\n );\n }\n const key: string = filesystemKey(target);\n if (targets.has(key)) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): duplicate output filename for ${target}`,\n );\n }\n targets.add(key);\n output.push({ file, target });\n }\n if (output.length === 0) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): input files do not include any supported TypeScript source files outside the output directory.\",\n );\n }\n return output;\n }\n\n async function expandFileInputs(\n inputs: string[],\n directory: string,\n ): Promise<string[]> {\n const output: string[] = [];\n for (const input of inputs) {\n const pattern: string = toGlobPattern(input);\n if (isDynamicPattern(pattern, { caseSensitiveMatch: true })) {\n const matches: string[] = await glob(pattern, {\n absolute: true,\n caseSensitiveMatch: isCaseSensitive(),\n cwd: process.cwd(),\n onlyFiles: true,\n });\n if (matches.length === 0) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input pattern does not match any files: ${input}`,\n );\n }\n output.push(\n ...excludeOutputFiles(matches, directory).filter(\n isSupportedExtension,\n ),\n );\n } else {\n const file: string = path.resolve(input);\n if (isSameOrChildPath(file, directory) === false) {\n output.push(file);\n }\n }\n }\n return output;\n }\n\n function excludeOutputFiles(files: string[], directory: string): string[] {\n return files.filter((file) => isSameOrChildPath(file, directory) === false);\n }\n\n function toGlobPattern(input: string): string {\n return input.replace(/\\\\/g, \"/\");\n }\n\n function transformProject(props: {\n binary: string;\n cwd: string;\n tsconfig: string;\n }): Record<string, string> {\n const TtscCompiler = loadTtscCompiler();\n const result: ITtscCompilerTransformation = new TtscCompiler({\n binary: props.binary,\n cwd: props.cwd,\n tsconfig: props.tsconfig,\n }).transform();\n if (result.type === \"success\") {\n return result.typescript;\n }\n if (result.type === \"failure\") {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${formatDiagnostics(result.diagnostics)}`,\n );\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${formatUnknownError(result.error)}`,\n );\n }\n\n function resolveProjectConfigFile(project: string): string {\n const resolved: string = path.resolve(project);\n if (fs.existsSync(resolved) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): project path does not exist: ${resolved}`,\n );\n }\n\n const stat: fs.Stats = fs.statSync(resolved);\n if (stat.isDirectory()) {\n for (const filename of [\"tsconfig.json\", \"jsconfig.json\"]) {\n const candidate: string = path.join(resolved, filename);\n if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) {\n return resolveRealPath(candidate);\n }\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): project directory has no tsconfig.json or jsconfig.json: ${resolved}`,\n );\n }\n if (stat.isFile() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): project path is not a file: ${resolved}`,\n );\n }\n return resolveRealPath(resolved);\n }\n\n function findProjectConfigFile(directory: string): string | null {\n let current: string = path.resolve(directory);\n while (true) {\n for (const filename of [\"tsconfig.json\", \"jsconfig.json\"]) {\n const candidate: string = path.join(current, filename);\n if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) {\n return resolveRealPath(candidate);\n }\n }\n const parent: string = path.dirname(current);\n if (parent === current) {\n return null;\n }\n current = parent;\n }\n }\n\n function loadTtscCompiler(): typeof import(\"ttsc\").TtscCompiler {\n const packageRoot: string = resolveTypiaPackageRoot();\n const resolved: string | null = resolveFromRoots(\n \"ttsc\",\n resolveRuntimeRoots(packageRoot),\n );\n if (resolved === null) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to resolve ttsc from the current project, typia package, or workspace root. Run \"npm i -D ttsc typescript\" before.`,\n );\n }\n const imported = createRequire(resolved)(resolved) as typeof import(\"ttsc\");\n return imported.TtscCompiler;\n }\n\n function resolveTsgoBinary(): string {\n const explicit: string | undefined = process.env.TTSC_TSGO_BINARY;\n if (explicit !== undefined && explicit.length !== 0) {\n if (path.isAbsolute(explicit) && fs.existsSync(explicit)) {\n return explicit;\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): TTSC_TSGO_BINARY must be an existing absolute path: ${explicit}`,\n );\n }\n\n const packageRoot: string = resolveTypiaPackageRoot();\n const manifest: string | null = resolveFromRoots(\n \"typescript/package.json\",\n resolveRuntimeRoots(packageRoot),\n );\n if (manifest === null) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): unable to resolve typescript from the current project, typia package, or workspace root.\",\n );\n }\n\n const platform: string = `@typescript/typescript-${process.platform}-${process.arch}`;\n const platformManifest: string = createRequire(manifest).resolve(\n `${platform}/package.json`,\n );\n const binary: string = path.join(\n path.dirname(platformManifest),\n \"lib\",\n process.platform === \"win32\" ? \"tsc.exe\" : \"tsc\",\n );\n if (fs.existsSync(binary) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): TypeScript-Go executable not found: ${binary}`,\n );\n }\n return binary;\n }\n\n function resolveTypiaPackageRoot(): string {\n // The CLI entrypoint (`lib/executable/typia.js`) lives in the same\n // directory as this module, so its `process.argv[1]` path anchors the\n // walk-up identically in both the CJS and ESM builds — `__dirname` does\n // not exist in the transcoded `.mjs`.\n const current: string = path.dirname(path.resolve(process.argv[1] ?? \"\"));\n for (const directory of [\n path.resolve(current, \"..\", \"..\"),\n path.resolve(current, \"..\"),\n ]) {\n const file: string = path.join(directory, \"package.json\");\n if (fs.existsSync(file) === false) {\n continue;\n }\n try {\n const pack = JSON.parse(fs.readFileSync(file, \"utf8\")) as Partial<\n Record<\"name\", unknown>\n >;\n if (pack.name === \"typia\") {\n return directory;\n }\n } catch {\n continue;\n }\n }\n\n const resolved: string | null = resolveFromRoots(\"typia/package.json\", [\n process.cwd(),\n current,\n ]);\n if (resolved === null) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): unable to resolve typia package root.\",\n );\n }\n return path.dirname(resolved);\n }\n\n function resolveRuntimeRoots(packageRoot: string): string[] {\n return [process.cwd(), packageRoot, path.resolve(packageRoot, \"..\", \"..\")];\n }\n\n function resolveFromRoots(request: string, roots: string[]): string | null {\n for (const root of roots) {\n try {\n return require.resolve(request, { paths: [root] });\n } catch {\n continue;\n }\n }\n return null;\n }\n\n async function isDirectory(current: string): Promise<boolean> {\n const stat: fs.Stats = await fs.promises.stat(current);\n return stat.isDirectory();\n }\n\n async function isFile(current: string): Promise<boolean> {\n const stat: fs.Stats = await fs.promises.stat(current);\n return stat.isFile();\n }\n\n async function gather(props: {\n location: {\n input: string;\n output: string;\n };\n container: string[];\n from: string;\n to: string;\n }): Promise<void> {\n if (isSamePath(props.from, props.location.output)) return;\n\n for (const file of await fs.promises.readdir(props.from)) {\n const next: string = path.join(props.from, file);\n const stat: fs.Stats = await fs.promises.stat(next);\n\n if (stat.isDirectory()) {\n await gather({\n location: props.location,\n container: props.container,\n from: next,\n to: path.join(props.to, file),\n });\n continue;\n }\n if (isSupportedExtension(file)) {\n props.container.push(next);\n }\n }\n }\n\n function isSupportedExtension(filename: string): boolean {\n const normalized: string = isCaseSensitive()\n ? filename\n : filename.toLowerCase();\n return TS_PATTERN.test(normalized) && !DTS_PATTERN.test(normalized);\n }\n\n function isDeclarationFile(filename: string): boolean {\n const normalized: string = isCaseSensitive()\n ? filename\n : filename.toLowerCase();\n return DTS_PATTERN.test(normalized);\n }\n\n function formatOutput(output: string): string {\n return output.startsWith(\"// @ts-nocheck\")\n ? output\n : `// @ts-nocheck\\n${output}`;\n }\n\n function indexTransformedOutputs(\n outputs: Record<string, string>,\n ): Map<string, string> {\n const map: Map<string, string> = new Map();\n for (const [file, output] of Object.entries(outputs)) {\n map.set(projectFileKey(file), output);\n }\n return map;\n }\n\n function getTransformedOutput(props: {\n cwd: string;\n entry: IInputFile;\n outputByKey: Map<string, string>;\n }): string | undefined {\n const output = props.outputByKey.get(\n projectFileKey(projectKey(props.cwd, props.entry.file)),\n );\n if (output !== undefined) {\n return output;\n }\n\n const real: string = resolveRealPath(props.entry.file);\n if (\n isSamePath(real, props.entry.file) ||\n isSameOrChildPath(real, props.cwd) === false\n ) {\n return undefined;\n }\n return props.outputByKey.get(projectFileKey(projectKey(props.cwd, real)));\n }\n\n function projectKey(root: string, file: string): string {\n return path.relative(root, file).replace(/\\\\/g, \"/\");\n }\n\n function projectFileKey(file: string): string {\n return isCaseSensitive() ? file : file.toLowerCase();\n }\n\n function resolveRealPath(file: string): string {\n try {\n return fs.realpathSync(file);\n } catch {\n return file;\n }\n }\n\n function isSamePath(x: string, y: string): boolean {\n return filesystemKey(x) === filesystemKey(y);\n }\n\n function isSameOrChildPath(file: string, directory: string): boolean {\n const fileKey: string = filesystemKey(path.resolve(file));\n const directoryKey: string = filesystemKey(path.resolve(directory));\n const directoryPrefix: string = directoryKey.endsWith(path.sep)\n ? directoryKey\n : `${directoryKey}${path.sep}`;\n return fileKey === directoryKey || fileKey.startsWith(directoryPrefix);\n }\n\n function filesystemKey(file: string): string {\n const normalized: string = path.normalize(file);\n return isCaseSensitive() ? normalized : normalized.toLowerCase();\n }\n\n function isCaseSensitive(): boolean {\n return process.platform !== \"win32\" && process.platform !== \"darwin\";\n }\n\n function isMissingFileError(exp: unknown): boolean {\n return (\n typeof exp === \"object\" &&\n exp !== null &&\n \"code\" in exp &&\n exp.code === \"ENOENT\"\n );\n }\n\n function fileIdentityKey(stat: fs.Stats): string {\n return `${stat.dev}:${stat.ino}`;\n }\n\n function formatDiagnostics(diagnostics: ITtscCompilerDiagnostic[]): string {\n return diagnostics.length === 0\n ? \"transformation failed\"\n : diagnostics\n .map((diag) =>\n [\n diag.file ?? \"ttsc\",\n diag.line === undefined\n ? undefined\n : `${diag.line}:${diag.character ?? 1}`,\n diag.messageText,\n ]\n .filter((part) => part !== undefined && part !== \"\")\n .join(\": \"),\n )\n .join(\"\\n\");\n }\n\n function formatUnknownError(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"message\" in error &&\n typeof error.message === \"string\"\n ) {\n return error.message;\n }\n return String(error);\n }\n}\n\nconst TS_PATTERN = /\\.[cm]?tsx?$/;\nconst DTS_PATTERN = /\\.d\\.[cm]?tsx?$/;\n"],"mappings":"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"}
1
+ {"version":3,"file":"TypiaGenerateWizard.mjs","names":[],"sources":["../../src/executable/TypiaGenerateWizard.ts"],"sourcesContent":["import { createCommand } from \"commander\";\nimport fs from \"fs\";\nimport inquirer from \"inquirer\";\nimport { createRequire } from \"module\";\nimport os from \"os\";\nimport path from \"path\";\nimport { glob, isDynamicPattern } from \"tinyglobby\";\nimport type {\n ITtscCompilerDiagnostic,\n ITtscCompilerTransformation,\n} from \"ttsc\";\n\nimport { FileSystemIdentity } from \"./FileSystemIdentity\";\n\nexport namespace TypiaGenerateWizard {\n export async function generate(): Promise<void> {\n console.log(\"----------------------------------------\");\n console.log(\" Typia Generate Wizard\");\n console.log(\"----------------------------------------\");\n\n const options: IArguments = await parseArguments();\n await build(options);\n }\n\n async function parseArguments(): Promise<IArguments> {\n const command = createCommand(\"typia generate\");\n command.usage(\"[options] [files...]\");\n command.argument(\"[files...]\", \"input TypeScript source files or globs\");\n command.option(\"--input <path>\", \"input directory\");\n command.option(\"--output <directory>\", \"output directory\");\n command.option(\n \"--project <project>\",\n \"tsconfig.json/jsconfig.json file or directory\",\n );\n\n const questioned = { value: false };\n const prompt = inquirer.createPromptModule;\n\n const input = (name: string) => async (message: string) => {\n questioned.value = true;\n const result = await prompt()({\n type: \"input\",\n name,\n message,\n default: \"\",\n });\n return result[name] as string;\n };\n const configure = async (): Promise<string> => {\n const file: string | null = findProjectConfigFile(process.cwd());\n if (file === null) {\n throw new URIError(\n `Unable to find \"tsconfig.json\" or \"jsconfig.json\" file.`,\n );\n }\n return file;\n };\n\n return new Promise<IArguments>((resolve, reject) => {\n command.action(async (files: string[], options: Partial<IArguments>) => {\n try {\n if (files.length !== 0 && options.input !== undefined) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): file arguments cannot be combined with --input.\",\n );\n }\n if (files.length === 0) {\n options.input ??= await input(\"input\")(\"input directory\");\n }\n if (files.length !== 0 && options.output === undefined) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): output directory is required when file arguments are used.\",\n );\n }\n const output: string =\n options.output ?? (await input(\"output\")(\"output directory\"));\n const project: string = options.project ?? (await configure());\n if (questioned.value) console.log(\"\");\n resolve({\n input: options.input,\n output,\n project,\n files,\n });\n } catch (exp) {\n reject(exp);\n }\n });\n command.parseAsync(process.argv.slice(3), { from: \"user\" }).catch(reject);\n });\n }\n\n export interface IArguments {\n input?: string;\n output: string;\n project: string;\n files: string[];\n }\n\n async function build(location: IArguments): Promise<void> {\n location.output = path.resolve(location.output);\n location.project = resolveProjectConfigFile(location.project);\n\n const policy = new FileSystemIdentity.Policy();\n const outputProbe: string = await nearestExistingAncestor(location.output);\n await ensureExistingDirectoryPath({\n label: \"output parent path\",\n directory: outputProbe,\n });\n policy.observe(\n await FileSystemIdentity.probeDirectory(outputProbe),\n outputProbe,\n );\n policy.observe(\n await FileSystemIdentity.inspectDirectory(path.dirname(location.project)),\n path.dirname(location.project),\n );\n\n const entries: IInputFile[] =\n location.files.length === 0\n ? await prepareDirectoryInput(location, policy)\n : await prepareFileInputs(location, policy);\n const identity: FileSystemIdentity.IIdentity = policy.get();\n await inspectTargetDirectories({\n identity,\n output: location.output,\n targets: entries.map((entry) => entry.target),\n });\n\n const binary = resolveTsgoBinary();\n const cwd = path.dirname(location.project);\n const temporaryProject: ITemporaryProject = await createTemporaryProject({\n entries,\n project: location.project,\n });\n let transformed: Record<string, string>;\n try {\n transformed = transformProject({\n binary,\n cwd,\n projectRoot: cwd,\n tsconfig: temporaryProject.config,\n });\n } finally {\n await fs.promises.rm(temporaryProject.directory, {\n force: true,\n recursive: true,\n });\n }\n const outputByKey: Map<string, string> = indexTransformedOutputs(\n transformed,\n identity,\n );\n const outputs: IOutputFile[] = entries.map((entry) => {\n const output = getTransformedOutput({\n cwd,\n entry,\n identity,\n outputByKey,\n });\n if (output === undefined) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): no transformed output for ${entry.file}. Check that --project includes the file.`,\n );\n }\n return { entry, output };\n });\n\n await ensureOutputDirectory(location.output);\n await ensureTargetDirectories({\n identity,\n output: location.output,\n targets: outputs.map(({ entry }) => entry.target),\n });\n await ensurePhysicalTargets({\n identity,\n output: location.output,\n entries: outputs.map(({ entry }) => entry),\n });\n await ensureTargetFiles(\n outputs.map(({ entry }) => entry),\n identity,\n );\n for (const { entry, output } of outputs) {\n await fs.promises.writeFile(entry.target, formatOutput(output), \"utf8\");\n }\n }\n\n interface IInputFile {\n file: string;\n target: string;\n }\n\n interface IOutputFile {\n entry: IInputFile;\n output: string;\n }\n\n interface ITraversalEntry {\n file: string;\n name: string;\n stat: fs.Stats;\n }\n\n interface ITemporaryProject {\n config: string;\n directory: string;\n }\n\n async function createTemporaryProject(props: {\n entries: IInputFile[];\n project: string;\n }): Promise<ITemporaryProject> {\n const directory: string = await fs.promises.mkdtemp(\n path.join(os.tmpdir(), \"typia-generate-project-\"),\n );\n const config: string = path.join(directory, \"tsconfig.json\");\n try {\n await fs.promises.writeFile(\n config,\n JSON.stringify({\n extends: props.project,\n exclude: [],\n files: props.entries.map((entry) => compilerInputPath(entry.file)),\n include: [],\n }),\n \"utf8\",\n );\n return { config, directory };\n } catch (error) {\n await fs.promises.rm(directory, { force: true, recursive: true });\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to prepare the bounded input project: ${formatUnknownError(error)}`,\n );\n }\n }\n\n async function ensureOutputDirectory(output: string): Promise<void> {\n if (fs.existsSync(output) === false) {\n await ensureCreatableDirectory(output);\n await fs.promises.mkdir(output, { recursive: true });\n } else {\n await ensureExistingDirectory({\n label: \"output path\",\n directory: output,\n });\n }\n }\n\n async function ensureTargetDirectories(props: {\n identity: FileSystemIdentity.IIdentity;\n output: string;\n targets: string[];\n }): Promise<void> {\n await inspectTargetDirectories(props);\n const directories: Map<string, string> = targetDirectories(props);\n for (const directory of directories.values()) {\n try {\n await fs.promises.mkdir(directory, { recursive: true });\n } catch (exp) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to create output parent directory ${directory}: ${formatUnknownError(exp)}`,\n );\n }\n await ensureExistingDirectory({\n label: \"output parent path\",\n directory,\n });\n }\n }\n\n async function inspectTargetDirectories(props: {\n identity: FileSystemIdentity.IIdentity;\n output: string;\n targets: string[];\n }): Promise<void> {\n const directories: Map<string, string> = targetDirectories(props);\n for (const directory of directories.values()) {\n await ensureOutputAncestorDirectories({\n identity: props.identity,\n output: props.output,\n directory,\n });\n if (fs.existsSync(directory)) {\n await ensureExistingDirectory({\n label: \"output parent path\",\n directory,\n });\n }\n }\n }\n\n function targetDirectories(props: {\n identity: FileSystemIdentity.IIdentity;\n targets: string[];\n }): Map<string, string> {\n const directories: Map<string, string> = new Map();\n for (const target of props.targets) {\n const directory: string = path.dirname(target);\n directories.set(props.identity.filesystemKey(directory), directory);\n }\n return directories;\n }\n\n async function ensureCreatableDirectory(directory: string): Promise<void> {\n const parent: string = await nearestExistingAncestor(directory);\n await ensureExistingDirectoryPath({\n label: \"output parent path\",\n directory: parent,\n });\n }\n\n async function nearestExistingAncestor(directory: string): Promise<string> {\n let current: string = path.resolve(directory);\n while (fs.existsSync(current) === false) {\n const parent: string = path.dirname(current);\n if (parent === current) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to find existing output parent path: ${directory}`,\n );\n }\n current = parent;\n }\n return current;\n }\n\n async function ensureOutputAncestorDirectories(props: {\n identity: FileSystemIdentity.IIdentity;\n output: string;\n directory: string;\n }): Promise<void> {\n const output: string = path.resolve(props.output);\n const directory: string = path.resolve(props.directory);\n if (props.identity.contains(directory, output) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path escapes output directory: ${props.directory}`,\n );\n }\n\n const relative: string = path.relative(output, directory);\n if (relative === \"\") {\n return;\n }\n\n let current: string = output;\n for (const segment of relative.split(path.sep)) {\n current = path.join(current, segment);\n let stat: fs.Stats;\n try {\n stat = await fs.promises.lstat(current);\n } catch (exp) {\n if (isMissingFileError(exp)) {\n return;\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to inspect output parent path ${current}: ${formatUnknownError(exp)}`,\n );\n }\n if (stat.isSymbolicLink()) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path contains a symbolic link: ${current}`,\n );\n }\n if (stat.isDirectory() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path is not a directory: ${current}`,\n );\n }\n }\n }\n\n async function ensureExistingDirectory(props: {\n label: string;\n directory: string;\n }): Promise<void> {\n await ensureExistingDirectoryPath(props);\n }\n\n async function ensureExistingDirectoryPath(props: {\n label: string;\n directory: string;\n }): Promise<void> {\n const directory: string = path.resolve(props.directory);\n const parsed: path.ParsedPath = path.parse(directory);\n const relative: string = path.relative(parsed.root, directory);\n let current: string = parsed.root;\n for (const segment of relative === \"\" ? [] : relative.split(path.sep)) {\n current = path.join(current, segment);\n await ensureExistingDirectorySegment({\n label:\n path.normalize(current) === path.normalize(directory)\n ? props.label\n : `${props.label} ancestor`,\n directory: current,\n });\n }\n }\n\n async function ensureExistingDirectorySegment(props: {\n label: string;\n directory: string;\n }): Promise<void> {\n const stat: fs.Stats = await fs.promises.lstat(props.directory);\n if (stat.isSymbolicLink()) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${props.label} is a symbolic link: ${props.directory}`,\n );\n }\n if (stat.isDirectory() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${props.label} is not a directory: ${props.directory}`,\n );\n }\n }\n\n async function ensurePhysicalTargets(props: {\n identity: FileSystemIdentity.IIdentity;\n output: string;\n entries: IInputFile[];\n }): Promise<void> {\n const output: string = await fs.promises.realpath(props.output);\n const inputs: Set<string> = new Set();\n for (const entry of props.entries) {\n inputs.add(\n props.identity.filesystemKey(await fs.promises.realpath(entry.file)),\n );\n }\n\n for (const entry of props.entries) {\n const parent: string = path.dirname(entry.target);\n const directory: string = await fs.promises.realpath(parent);\n if (props.identity.contains(directory, output) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output parent path escapes output directory through a symbolic link: ${parent}`,\n );\n }\n\n const target: string = path.join(directory, path.basename(entry.target));\n if (inputs.has(props.identity.filesystemKey(target))) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file would overwrite input file through a symbolic link: ${entry.target}`,\n );\n }\n }\n }\n\n async function ensureTargetFiles(\n entries: IInputFile[],\n identity: FileSystemIdentity.IIdentity,\n ): Promise<void> {\n const inputs: Set<string> = new Set();\n const files: Map<string, IInputFile> = new Map();\n for (const entry of entries) {\n inputs.add(\n fileIdentityKey(\n await fs.promises.stat(entry.file),\n await fs.promises.realpath(entry.file),\n ),\n );\n files.set(identity.filesystemKey(entry.target), entry);\n }\n\n for (const entry of files.values()) {\n let stat: fs.Stats;\n try {\n stat = await fs.promises.lstat(entry.target);\n } catch (exp) {\n if (isMissingFileError(exp)) {\n continue;\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to inspect output file ${entry.target}: ${formatUnknownError(exp)}`,\n );\n }\n if (stat.isFile() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file path is not a regular file: ${entry.target}`,\n );\n }\n if (\n inputs.has(\n fileIdentityKey(stat, await fs.promises.realpath(entry.target)),\n )\n ) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file would overwrite input file through a physical file alias: ${entry.target}`,\n );\n }\n if (stat.nlink > 1) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file has multiple hard links: ${entry.target}`,\n );\n }\n }\n }\n\n async function prepareDirectoryInput(\n location: IArguments,\n policy: FileSystemIdentity.Policy,\n ): Promise<IInputFile[]> {\n if (location.input === undefined) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): input path is required.\",\n );\n }\n const input = path.resolve(location.input);\n if (fs.existsSync(input) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input path does not exist: ${input}`,\n );\n }\n if ((await isDirectory(input)) === false) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): input path is not a directory.\",\n );\n }\n\n const inputReal: string = await fs.promises.realpath(input);\n const outputReal: string | undefined = await optionalRealPath(\n location.output,\n );\n const files: string[] = [];\n await gather({\n container: files,\n from: input,\n inputReal,\n outputReal,\n policy,\n visitedDirectories: new Set(),\n visitedFiles: new Set(),\n });\n return files.map((file) => ({\n file,\n target: path.join(location.output, path.relative(input, file)),\n }));\n }\n\n async function prepareFileInputs(\n location: IArguments,\n policy: FileSystemIdentity.Policy,\n ): Promise<IInputFile[]> {\n const targets: Set<string> = new Set();\n const output: IInputFile[] = [];\n for (const input of await expandFileInputs(\n location.files,\n location.output,\n policy,\n )) {\n const file: string = path.resolve(input);\n policy.observe(\n await FileSystemIdentity.inspectDirectory(path.dirname(file)),\n path.dirname(file),\n );\n const identity: FileSystemIdentity.IIdentity = policy.get();\n if (fs.existsSync(file) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input file does not exist: ${input}`,\n );\n } else if ((await isFile(file)) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input path is not a file: ${input}`,\n );\n } else if (identity.isDeclarationFile(file)) {\n continue;\n } else if (identity.isSupportedExtension(file) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input file is not a supported TypeScript source: ${input}`,\n );\n }\n\n const target: string = path.join(location.output, path.basename(file));\n if (identity.isSamePath(file, target)) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): output file would overwrite input file: ${input}`,\n );\n }\n const key: string = identity.filesystemKey(target);\n if (targets.has(key)) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): duplicate output filename for ${target}`,\n );\n }\n targets.add(key);\n output.push({ file, target });\n }\n if (output.length === 0) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): input files do not include any supported TypeScript source files outside the output directory.\",\n );\n }\n return output;\n }\n\n async function expandFileInputs(\n inputs: string[],\n directory: string,\n policy: FileSystemIdentity.Policy,\n ): Promise<string[]> {\n const output: string[] = [];\n for (const input of inputs) {\n const pattern: string = toGlobPattern(input);\n if (isDynamicPattern(pattern, { caseSensitiveMatch: true })) {\n const searchDirectory: string = await globSearchDirectory(input);\n const caseSensitive: boolean | undefined =\n await FileSystemIdentity.inspectDirectory(searchDirectory);\n if (caseSensitive === undefined) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to determine filesystem case behavior for input pattern base ${searchDirectory}.`,\n );\n }\n policy.observe(caseSensitive, searchDirectory);\n const identity: FileSystemIdentity.IIdentity = policy.get();\n const matches: string[] = await glob(pattern, {\n absolute: true,\n caseSensitiveMatch: identity.caseSensitive,\n cwd: process.cwd(),\n onlyFiles: true,\n });\n if (matches.length === 0) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input pattern does not match any files: ${input}`,\n );\n }\n output.push(\n ...excludeOutputFiles(matches, directory, identity).filter((file) =>\n identity.isSupportedExtension(file),\n ),\n );\n } else {\n const file: string = path.resolve(input);\n policy.observe(\n await FileSystemIdentity.inspectDirectory(path.dirname(file)),\n path.dirname(file),\n );\n if (policy.get().contains(file, directory) === false) {\n output.push(file);\n }\n }\n }\n return output;\n }\n\n function excludeOutputFiles(\n files: string[],\n directory: string,\n identity: FileSystemIdentity.IIdentity,\n ): string[] {\n return files.filter((file) => identity.contains(file, directory) === false);\n }\n\n async function globSearchDirectory(input: string): Promise<string> {\n let current: string = path.resolve(input);\n while (\n isDynamicPattern(toGlobPattern(current), { caseSensitiveMatch: true })\n ) {\n const parent: string = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n if (fs.existsSync(current) && (await isDirectory(current))) return current;\n return nearestExistingAncestor(path.dirname(current));\n }\n\n function toGlobPattern(input: string): string {\n return input.replace(/\\\\/g, \"/\");\n }\n\n function transformProject(props: {\n binary: string;\n cwd: string;\n projectRoot: string;\n tsconfig: string;\n }): Record<string, string> {\n const TtscCompiler = loadTtscCompiler();\n const result: ITtscCompilerTransformation = new TtscCompiler({\n binary: props.binary,\n cwd: props.cwd,\n projectRoot: props.projectRoot,\n tsconfig: props.tsconfig,\n }).transform();\n if (result.type === \"success\") {\n return result.typescript;\n }\n if (result.type === \"failure\") {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${formatDiagnostics(result.diagnostics)}`,\n );\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): ${formatUnknownError(result.error)}`,\n );\n }\n\n function resolveProjectConfigFile(project: string): string {\n const resolved: string = path.resolve(project);\n if (fs.existsSync(resolved) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): project path does not exist: ${resolved}`,\n );\n }\n\n const stat: fs.Stats = fs.statSync(resolved);\n if (stat.isDirectory()) {\n for (const filename of [\"tsconfig.json\", \"jsconfig.json\"]) {\n const candidate: string = path.join(resolved, filename);\n if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) {\n return resolveRealPath(candidate);\n }\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): project directory has no tsconfig.json or jsconfig.json: ${resolved}`,\n );\n }\n if (stat.isFile() === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): project path is not a file: ${resolved}`,\n );\n }\n return resolveRealPath(resolved);\n }\n\n function findProjectConfigFile(directory: string): string | null {\n let current: string = path.resolve(directory);\n while (true) {\n for (const filename of [\"tsconfig.json\", \"jsconfig.json\"]) {\n const candidate: string = path.join(current, filename);\n if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) {\n return resolveRealPath(candidate);\n }\n }\n const parent: string = path.dirname(current);\n if (parent === current) {\n return null;\n }\n current = parent;\n }\n }\n\n function loadTtscCompiler(): typeof import(\"ttsc\").TtscCompiler {\n const packageRoot: string = resolveTypiaPackageRoot();\n const resolved: string | null = resolveFromRoots(\n \"ttsc\",\n resolveRuntimeRoots(packageRoot),\n );\n if (resolved === null) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to resolve ttsc from the current project, typia package, or workspace root. Run \"npm i -D ttsc typescript\" before.`,\n );\n }\n const imported = createRequire(resolved)(resolved) as typeof import(\"ttsc\");\n return imported.TtscCompiler;\n }\n\n function resolveTsgoBinary(): string {\n const explicit: string | undefined = process.env.TTSC_TSGO_BINARY;\n if (explicit !== undefined && explicit.length !== 0) {\n if (path.isAbsolute(explicit) && fs.existsSync(explicit)) {\n return explicit;\n }\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): TTSC_TSGO_BINARY must be an existing absolute path: ${explicit}`,\n );\n }\n\n const packageRoot: string = resolveTypiaPackageRoot();\n const manifest: string | null = resolveFromRoots(\n \"typescript/package.json\",\n resolveRuntimeRoots(packageRoot),\n );\n if (manifest === null) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): unable to resolve typescript from the current project, typia package, or workspace root.\",\n );\n }\n\n const platform: string = `@typescript/typescript-${process.platform}-${process.arch}`;\n const platformManifest: string = createRequire(manifest).resolve(\n `${platform}/package.json`,\n );\n const binary: string = path.join(\n path.dirname(platformManifest),\n \"lib\",\n process.platform === \"win32\" ? \"tsc.exe\" : \"tsc\",\n );\n if (fs.existsSync(binary) === false) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): TypeScript-Go executable not found: ${binary}`,\n );\n }\n return binary;\n }\n\n function resolveTypiaPackageRoot(): string {\n // The CLI entrypoint (`lib/executable/typia.js`) lives in the same\n // directory as this module, so its `process.argv[1]` path anchors the\n // walk-up identically in both the CJS and ESM builds — `__dirname` does\n // not exist in the transcoded `.mjs`.\n const current: string = path.dirname(path.resolve(process.argv[1] ?? \"\"));\n for (const directory of [\n path.resolve(current, \"..\", \"..\"),\n path.resolve(current, \"..\"),\n ]) {\n const file: string = path.join(directory, \"package.json\");\n if (fs.existsSync(file) === false) {\n continue;\n }\n try {\n const pack = JSON.parse(fs.readFileSync(file, \"utf8\")) as Partial<\n Record<\"name\", unknown>\n >;\n if (pack.name === \"typia\") {\n return directory;\n }\n } catch {\n continue;\n }\n }\n\n const resolved: string | null = resolveFromRoots(\"typia/package.json\", [\n process.cwd(),\n current,\n ]);\n if (resolved === null) {\n throw new URIError(\n \"Error on TypiaGenerateWizard.generate(): unable to resolve typia package root.\",\n );\n }\n return path.dirname(resolved);\n }\n\n function resolveRuntimeRoots(packageRoot: string): string[] {\n return [process.cwd(), packageRoot, path.resolve(packageRoot, \"..\", \"..\")];\n }\n\n function resolveFromRoots(request: string, roots: string[]): string | null {\n for (const root of roots) {\n try {\n return createRequire(path.join(root, \"package.json\")).resolve(request);\n } catch {\n continue;\n }\n }\n return null;\n }\n\n async function isDirectory(current: string): Promise<boolean> {\n const stat: fs.Stats = await fs.promises.stat(current);\n return stat.isDirectory();\n }\n\n async function isFile(current: string): Promise<boolean> {\n const stat: fs.Stats = await fs.promises.stat(current);\n return stat.isFile();\n }\n\n async function gather(props: {\n container: string[];\n from: string;\n inputReal: string;\n outputReal: string | undefined;\n policy: FileSystemIdentity.Policy;\n visitedDirectories: Set<string>;\n visitedFiles: Set<string>;\n }): Promise<void> {\n const currentReal: string = await resolveTraversalPath(props.from);\n if (\n props.outputReal !== undefined &&\n isPhysicalSameOrChildPath(currentReal, props.outputReal)\n )\n return;\n ensurePhysicalInputContainment({\n file: props.from,\n input: props.inputReal,\n real: currentReal,\n });\n\n const currentStat: fs.Stats = await fs.promises.stat(props.from);\n const directoryIdentity: string = fileIdentityKey(currentStat, currentReal);\n if (props.visitedDirectories.has(directoryIdentity)) {\n const lexicalStat: fs.Stats = await fs.promises.lstat(props.from);\n if (lexicalStat.isSymbolicLink()) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input directory link revisits a physical directory: ${props.from}.`,\n );\n }\n return;\n }\n props.visitedDirectories.add(directoryIdentity);\n\n props.policy.observe(\n await FileSystemIdentity.inspectDirectory(props.from),\n props.from,\n );\n const identity: FileSystemIdentity.IIdentity = props.policy.get();\n const entries: ITraversalEntry[] = await Promise.all(\n (await fs.promises.readdir(props.from)).map(async (name) => {\n const file: string = path.join(props.from, name);\n try {\n return { file, name, stat: await fs.promises.lstat(file) };\n } catch (error) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to inspect input path ${file}: ${formatUnknownError(error)}`,\n );\n }\n }),\n );\n entries.sort((x, y) => {\n const linkOrder: number =\n Number(x.stat.isSymbolicLink()) - Number(y.stat.isSymbolicLink());\n return linkOrder !== 0 ? linkOrder : x.name.localeCompare(y.name);\n });\n\n for (const entry of entries) {\n let stat: fs.Stats;\n let real: string;\n try {\n stat = await fs.promises.stat(entry.file);\n real = await fs.promises.realpath(entry.file);\n } catch (error) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input link target is missing or unreadable: ${entry.file}: ${formatUnknownError(error)}`,\n );\n }\n\n if (\n props.outputReal !== undefined &&\n isPhysicalSameOrChildPath(real, props.outputReal)\n )\n continue;\n ensurePhysicalInputContainment({\n file: entry.file,\n input: props.inputReal,\n real,\n });\n\n if (stat.isDirectory()) {\n await gather({ ...props, from: entry.file });\n continue;\n }\n if (\n stat.isFile() === false ||\n identity.isSupportedExtension(entry.name) === false\n )\n continue;\n\n const fileIdentity: string = fileIdentityKey(stat, real);\n if (props.visitedFiles.has(fileIdentity)) continue;\n props.visitedFiles.add(fileIdentity);\n props.container.push(entry.file);\n }\n }\n\n function formatOutput(output: string): string {\n return output.startsWith(\"// @ts-nocheck\")\n ? output\n : `// @ts-nocheck\\n${output}`;\n }\n\n function indexTransformedOutputs(\n outputs: Record<string, string>,\n identity: FileSystemIdentity.IIdentity,\n ): Map<string, string> {\n const map: Map<string, string> = new Map();\n for (const [file, output] of Object.entries(outputs)) {\n const key: string = identity.projectFileKey(file);\n if (map.has(key)) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): transformed outputs have ambiguous filesystem identities: ${file}.`,\n );\n }\n map.set(key, output);\n }\n return map;\n }\n\n function getTransformedOutput(props: {\n cwd: string;\n entry: IInputFile;\n identity: FileSystemIdentity.IIdentity;\n outputByKey: Map<string, string>;\n }): string | undefined {\n const output = props.outputByKey.get(\n props.identity.projectFileKey(projectKey(props.cwd, props.entry.file)),\n );\n if (output !== undefined) {\n return output;\n }\n\n const compilerFile: string = compilerInputPath(props.entry.file);\n if (\n props.identity.isSamePath(compilerFile, props.entry.file) === false &&\n props.identity.contains(compilerFile, props.cwd)\n ) {\n const compiled: string | undefined = props.outputByKey.get(\n props.identity.projectFileKey(projectKey(props.cwd, compilerFile)),\n );\n if (compiled !== undefined) return compiled;\n }\n\n const real: string = resolveRealPath(props.entry.file);\n if (\n props.identity.isSamePath(real, props.entry.file) ||\n props.identity.contains(real, props.cwd) === false\n ) {\n return undefined;\n }\n return props.outputByKey.get(\n props.identity.projectFileKey(projectKey(props.cwd, real)),\n );\n }\n\n function projectKey(root: string, file: string): string {\n return path.relative(root, file).replace(/\\\\/g, \"/\");\n }\n\n function resolveRealPath(file: string): string {\n try {\n return fs.realpathSync(file);\n } catch {\n return file;\n }\n }\n\n function compilerInputPath(file: string): string {\n try {\n if (fs.lstatSync(file).isSymbolicLink()) {\n return path.join(\n resolveRealPath(path.dirname(file)),\n path.basename(file),\n );\n }\n } catch {\n return file;\n }\n return resolveRealPath(file);\n }\n\n async function optionalRealPath(file: string): Promise<string | undefined> {\n try {\n return await fs.promises.realpath(file);\n } catch (error) {\n if (isMissingFileError(error)) return undefined;\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to resolve path ${file}: ${formatUnknownError(error)}`,\n );\n }\n }\n\n async function resolveTraversalPath(file: string): Promise<string> {\n try {\n return await fs.promises.realpath(file);\n } catch (error) {\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): unable to resolve input path ${file}: ${formatUnknownError(error)}`,\n );\n }\n }\n\n function ensurePhysicalInputContainment(props: {\n file: string;\n input: string;\n real: string;\n }): void {\n if (isPhysicalSameOrChildPath(props.real, props.input)) return;\n throw new URIError(\n `Error on TypiaGenerateWizard.generate(): input path resolves outside the input directory: ${props.file}.`,\n );\n }\n\n function isPhysicalSameOrChildPath(file: string, directory: string): boolean {\n const relative: string = path.relative(directory, file);\n return (\n relative === \"\" ||\n (relative !== \"..\" &&\n relative.startsWith(`..${path.sep}`) === false &&\n path.isAbsolute(relative) === false)\n );\n }\n\n function isMissingFileError(exp: unknown): boolean {\n return (\n typeof exp === \"object\" &&\n exp !== null &&\n \"code\" in exp &&\n exp.code === \"ENOENT\"\n );\n }\n\n function fileIdentityKey(stat: fs.Stats, realpath: string): string {\n return stat.ino === 0\n ? `path:${path.normalize(realpath)}`\n : `inode:${stat.dev}:${stat.ino}`;\n }\n\n function formatDiagnostics(diagnostics: ITtscCompilerDiagnostic[]): string {\n return diagnostics.length === 0\n ? \"transformation failed\"\n : diagnostics\n .map((diag) =>\n [\n diag.file ?? \"ttsc\",\n diag.line === undefined\n ? undefined\n : `${diag.line}:${diag.character ?? 1}`,\n diag.messageText,\n ]\n .filter((part) => part !== undefined && part !== \"\")\n .join(\": \"),\n )\n .join(\"\\n\");\n }\n\n function formatUnknownError(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"message\" in error &&\n typeof error.message === \"string\"\n ) {\n return error.message;\n }\n return String(error);\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import { IValidation } from "@typia/interface";
2
2
  import { TypeGuardError } from "./TypeGuardError";
3
+ type FunctionalIs<T extends (...args: any[]) => any> = T extends (this: infer This, ...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (this: This, ...args: Arguments) => Promise<R | null> : (this: This, ...args: Arguments) => Output | null : never;
4
+ type FunctionalValidate<T extends (...args: any[]) => any> = T extends (this: infer This, ...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (this: This, ...args: Arguments) => Promise<IValidation<R>> : (this: This, ...args: Arguments) => IValidation<Output> : never;
3
5
  /**
4
6
  * Wraps function to assert both parameters and return value.
5
7
  *
@@ -162,7 +164,7 @@ export declare function assertEqualsReturn<T extends (...args: any[]) => any>(fu
162
164
  * @param func Function to wrap
163
165
  * @returns Wrapped function returning `Output | null`
164
166
  */
165
- export declare function isFunction<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<R | null> : (...args: Arguments) => Output | null : never;
167
+ export declare function isFunction<T extends (...args: any[]) => any>(func: T): FunctionalIs<T>;
166
168
  /**
167
169
  * Wraps function to test parameters only.
168
170
  *
@@ -181,7 +183,7 @@ export declare function isFunction<T extends (...args: any[]) => any>(func: T):
181
183
  * @param func Function to wrap
182
184
  * @returns Wrapped function returning `Output | null`
183
185
  */
184
- export declare function isParameters<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<R | null> : (...args: Arguments) => Output | null : never;
186
+ export declare function isParameters<T extends (...args: any[]) => any>(func: T): FunctionalIs<T>;
185
187
  /**
186
188
  * Wraps function to test return value only.
187
189
  *
@@ -200,7 +202,7 @@ export declare function isParameters<T extends (...args: any[]) => any>(func: T)
200
202
  * @param func Function to wrap
201
203
  * @returns Wrapped function returning `Output | null`
202
204
  */
203
- export declare function isReturn<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<R | null> : (...args: Arguments) => Output | null : never;
205
+ export declare function isReturn<T extends (...args: any[]) => any>(func: T): FunctionalIs<T>;
204
206
  /**
205
207
  * Wraps function to test parameters and return value with strict equality.
206
208
  *
@@ -219,7 +221,7 @@ export declare function isReturn<T extends (...args: any[]) => any>(func: T): T
219
221
  * @param func Function to wrap
220
222
  * @returns Wrapped function returning `Output | null`
221
223
  */
222
- export declare function equalsFunction<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<R | null> : (...args: Arguments) => Output | null : never;
224
+ export declare function equalsFunction<T extends (...args: any[]) => any>(func: T): FunctionalIs<T>;
223
225
  /**
224
226
  * Wraps function to test parameters with strict equality.
225
227
  *
@@ -238,7 +240,7 @@ export declare function equalsFunction<T extends (...args: any[]) => any>(func:
238
240
  * @param func Function to wrap
239
241
  * @returns Wrapped function returning `Output | null`
240
242
  */
241
- export declare function equalsParameters<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<R | null> : (...args: Arguments) => Output | null : never;
243
+ export declare function equalsParameters<T extends (...args: any[]) => any>(func: T): FunctionalIs<T>;
242
244
  /**
243
245
  * Wraps function to test return value with strict equality.
244
246
  *
@@ -257,7 +259,7 @@ export declare function equalsParameters<T extends (...args: any[]) => any>(func
257
259
  * @param func Function to wrap
258
260
  * @returns Wrapped function returning `Output | null`
259
261
  */
260
- export declare function equalsReturn<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<R | null> : (...args: Arguments) => Output | null : never;
262
+ export declare function equalsReturn<T extends (...args: any[]) => any>(func: T): FunctionalIs<T>;
261
263
  /**
262
264
  * Wraps function to validate both parameters and return value.
263
265
  *
@@ -280,7 +282,7 @@ export declare function equalsReturn<T extends (...args: any[]) => any>(func: T)
280
282
  * @param func Function to wrap
281
283
  * @returns Wrapped function returning {@link IValidation}
282
284
  */
283
- export declare function validateFunction<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<IValidation<R>> : (...args: Arguments) => IValidation<Output> : never;
285
+ export declare function validateFunction<T extends (...args: any[]) => any>(func: T): FunctionalValidate<T>;
284
286
  /**
285
287
  * Wraps function to validate parameters only.
286
288
  *
@@ -300,7 +302,7 @@ export declare function validateFunction<T extends (...args: any[]) => any>(func
300
302
  * @param func Function to wrap
301
303
  * @returns Wrapped function returning {@link IValidation}
302
304
  */
303
- export declare function validateParameters<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<IValidation<R>> : (...args: Arguments) => IValidation<Output> : never;
305
+ export declare function validateParameters<T extends (...args: any[]) => any>(func: T): FunctionalValidate<T>;
304
306
  /**
305
307
  * Wraps function to validate return value only.
306
308
  *
@@ -320,7 +322,7 @@ export declare function validateParameters<T extends (...args: any[]) => any>(fu
320
322
  * @param func Function to wrap
321
323
  * @returns Wrapped function returning {@link IValidation}
322
324
  */
323
- export declare function validateReturn<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<IValidation<R>> : (...args: Arguments) => IValidation<Output> : never;
325
+ export declare function validateReturn<T extends (...args: any[]) => any>(func: T): FunctionalValidate<T>;
324
326
  /**
325
327
  * Wraps function to validate parameters and return value with strict equality.
326
328
  *
@@ -343,7 +345,7 @@ export declare function validateReturn<T extends (...args: any[]) => any>(func:
343
345
  * @param func Function to wrap
344
346
  * @returns Wrapped function returning {@link IValidation}
345
347
  */
346
- export declare function validateEqualsFunction<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<IValidation<R>> : (...args: Arguments) => IValidation<Output> : never;
348
+ export declare function validateEqualsFunction<T extends (...args: any[]) => any>(func: T): FunctionalValidate<T>;
347
349
  /**
348
350
  * Wraps function to validate parameters with strict equality.
349
351
  *
@@ -363,7 +365,7 @@ export declare function validateEqualsFunction<T extends (...args: any[]) => any
363
365
  * @param func Function to wrap
364
366
  * @returns Wrapped function returning {@link IValidation}
365
367
  */
366
- export declare function validateEqualsParameters<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<IValidation<R>> : (...args: Arguments) => IValidation<Output> : never;
368
+ export declare function validateEqualsParameters<T extends (...args: any[]) => any>(func: T): FunctionalValidate<T>;
367
369
  /**
368
370
  * Wraps function to validate return value with strict equality.
369
371
  *
@@ -383,4 +385,5 @@ export declare function validateEqualsParameters<T extends (...args: any[]) => a
383
385
  * @param func Function to wrap
384
386
  * @returns Wrapped function returning {@link IValidation}
385
387
  */
386
- export declare function validateEqualsReturn<T extends (...args: any[]) => any>(func: T): T extends (...args: infer Arguments) => infer Output ? Output extends Promise<infer R> ? (...args: Arguments) => Promise<IValidation<R>> : (...args: Arguments) => IValidation<Output> : never;
388
+ export declare function validateEqualsReturn<T extends (...args: any[]) => any>(func: T): FunctionalValidate<T>;
389
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"functional.js","sourceRoot":"","sources":["../src/functional.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAGA,gGAA6F;AAwC7F,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,2BAA2B,CAAC,CAAC;AAC7D,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,6BAA6B,CAAC,CAAC;AAC/D,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,yBAAyB,CAAC,CAAC;AAC3D,CAAC;AAgCD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,iCAAiC,CAAC,CAAC;AACnE,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,mCAAmC,CAAC,CAAC;AACrE,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,+BAA+B,CAAC,CAAC;AACjE,CAAC;AA+BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,uBAAuB,CAAC,CAAC;AACzD,CAAC;AA4BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,yBAAyB,CAAC,CAAC;AAC3D,CAAC;AA4BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,qBAAqB,CAAC,CAAC;AACvD,CAAC;AA4BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,2BAA2B,CAAC,CAAC;AAC7D,CAAC;AA4BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,6BAA6B,CAAC,CAAC;AAC/D,CAAC;AA4BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,yBAAyB,CAAC,CAAC;AAC3D,CAAC;AAmCD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,6BAA6B,CAAC,CAAC;AAC/D,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,+BAA+B,CAAC,CAAC;AACjE,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,2BAA2B,CAAC,CAAC;AAC7D,CAAC;AAgCD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,mCAAmC,CAAC,CAAC;AACrE,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,qCAAqC,CAAC,CAAC;AACvE,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,iCAAiC,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"functional.js","sourceRoot":"","sources":["../src/functional.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAGA,gGAA6F;AA0D7F,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,2BAA2B,CAAC,CAAC;AAC7D,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,6BAA6B,CAAC,CAAC;AAC/D,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,yBAAyB,CAAC,CAAC;AAC3D,CAAC;AAgCD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,iCAAiC,CAAC,CAAC;AACnE,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,mCAAmC,CAAC,CAAC;AACrE,CAAC;AA6BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,+BAA+B,CAAC,CAAC;AACjE,CAAC;AA2BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,uBAAuB,CAAC,CAAC;AACzD,CAAC;AAwBD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,yBAAyB,CAAC,CAAC;AAC3D,CAAC;AAwBD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,qBAAqB,CAAC,CAAC;AACvD,CAAC;AAwBD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,2BAA2B,CAAC,CAAC;AAC7D,CAAC;AAwBD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,6BAA6B,CAAC,CAAC;AAC/D,CAAC;AAwBD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,yBAAyB,CAAC,CAAC;AAC3D,CAAC;AA+BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,6BAA6B,CAAC,CAAC;AAC/D,CAAC;AAyBD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,+BAA+B,CAAC,CAAC;AACjE,CAAC;AAyBD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,2BAA2B,CAAC,CAAC;AAC7D,CAAC;AA4BD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,mCAAmC,CAAC,CAAC;AACrE,CAAC;AAyBD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,qCAAqC,CAAC,CAAC;AACvE,CAAC;AAyBD,gBAAgB;AAChB;IACE,IAAA,6DAA6B,EAAC,iCAAiC,CAAC,CAAC;AACnE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"functional.mjs","names":[],"sources":["../src/functional.ts"],"sourcesContent":["import { IValidation } from \"@typia/interface\";\n\nimport { TypeGuardError } from \"./TypeGuardError\";\nimport { NoTransformConfigurationError } from \"./transformers/NoTransformConfigurationError\";\n\n/* ===========================================================\n FUNCTIONAL\n - ASSERT\n - IS\n - VALIDATE\n==============================================================\n ASSERT\n----------------------------------------------------------- */\n/**\n * Wraps function to assert both parameters and return value.\n *\n * Wraps the target function and validates all parameters before calling and\n * return value after calling through {@link assert}. Throws on first mismatch.\n *\n * Error path format:\n *\n * - Parameter errors: `$input.parameters[0].property`\n * - Return errors: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link assertParameters} — Validates parameters only\n * - {@link assertReturn} — Validates return value only\n * - {@link validateFunction} — Collects all errors instead of throwing\n * - {@link assertEqualsFunction} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When parameter or return value type mismatch\n */\nexport function assertFunction<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertFunction(): never {\n NoTransformConfigurationError(\"functional.assertFunction\");\n}\n\n/**\n * Wraps function to assert parameters only.\n *\n * Wraps the target function and validates all parameters before calling through\n * {@link assert}. Return value is not validated. Throws on first mismatch.\n *\n * Error path format: `$input.parameters[0].property`\n *\n * Related functions:\n *\n * - {@link assertFunction} — Also validates return value\n * - {@link assertReturn} — Validates return value only\n * - {@link validateParameters} — Collects all errors instead of throwing\n * - {@link assertEqualsParameters} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When parameter type mismatch\n */\nexport function assertParameters<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertParameters(): never {\n NoTransformConfigurationError(\"functional.assertParameters\");\n}\n\n/**\n * Wraps function to assert return value only.\n *\n * Wraps the target function and validates return value after calling through\n * {@link assert}. Parameters are not validated. Throws on mismatch.\n *\n * Error path format: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link assertFunction} — Also validates parameters\n * - {@link assertParameters} — Validates parameters only\n * - {@link validateReturn} — Collects all errors instead of throwing\n * - {@link assertEqualsReturn} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When return value type mismatch\n */\nexport function assertReturn<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertReturn(): never {\n NoTransformConfigurationError(\"functional.assertReturn\");\n}\n\n/**\n * Wraps function to assert parameters and return value with strict equality.\n *\n * Wraps the target function and validates through {@link assertEquals}. Also\n * rejects extra properties not defined in type. Throws on first mismatch.\n *\n * Error path format:\n *\n * - Parameter errors: `$input.parameters[0].property`\n * - Return errors: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link assertFunction} — Allows extra properties\n * - {@link assertEqualsParameters} — Validates parameters only\n * - {@link assertEqualsReturn} — Validates return value only\n * - {@link validateEqualsFunction} — Collects all errors instead of throwing\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When type mismatch or extra property detected\n */\nexport function assertEqualsFunction<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertEqualsFunction(): never {\n NoTransformConfigurationError(\"functional.assertEqualsFunction\");\n}\n\n/**\n * Wraps function to assert parameters with strict equality.\n *\n * Wraps the target function and validates parameters through\n * {@link assertEquals}. Also rejects extra properties. Return value is not\n * validated.\n *\n * Error path format: `$input.parameters[0].property`\n *\n * Related functions:\n *\n * - {@link assertParameters} — Allows extra properties\n * - {@link assertEqualsFunction} — Also validates return value\n * - {@link validateEqualsParameters} — Collects all errors instead of throwing\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When type mismatch or extra property detected\n */\nexport function assertEqualsParameters<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertEqualsParameters(): never {\n NoTransformConfigurationError(\"functional.assertEqualsParameters\");\n}\n\n/**\n * Wraps function to assert return value with strict equality.\n *\n * Wraps the target function and validates return value through\n * {@link assertEquals}. Also rejects extra properties. Parameters are not\n * validated.\n *\n * Error path format: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link assertReturn} — Allows extra properties\n * - {@link assertEqualsFunction} — Also validates parameters\n * - {@link validateEqualsReturn} — Collects all errors instead of throwing\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When type mismatch or extra property detected\n */\nexport function assertEqualsReturn<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertEqualsReturn(): never {\n NoTransformConfigurationError(\"functional.assertEqualsReturn\");\n}\n\n/* -----------------------------------------------------------\n IS\n----------------------------------------------------------- */\n/**\n * Wraps function to test both parameters and return value.\n *\n * Wraps the target function and checks all parameters before calling and return\n * value after calling through {@link is}. Returns `null` on mismatch.\n *\n * Related functions:\n *\n * - {@link isParameters} — Tests parameters only\n * - {@link isReturn} — Tests return value only\n * - {@link assertFunction} — Throws with error details on mismatch\n * - {@link validateFunction} — Returns all error details\n * - {@link equalsFunction} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function isFunction<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<R | null>\n : (...args: Arguments) => Output | null\n : never;\n\n/** @internal */\nexport function isFunction(): never {\n NoTransformConfigurationError(\"functional.isFunction\");\n}\n\n/**\n * Wraps function to test parameters only.\n *\n * Wraps the target function and checks all parameters before calling through\n * {@link is}. Return value is not checked. Returns `null` on mismatch.\n *\n * Related functions:\n *\n * - {@link isFunction} — Also tests return value\n * - {@link isReturn} — Tests return value only\n * - {@link assertParameters} — Throws with error details\n * - {@link validateParameters} — Returns all error details\n * - {@link equalsParameters} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function isParameters<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<R | null>\n : (...args: Arguments) => Output | null\n : never;\n\n/** @internal */\nexport function isParameters(): never {\n NoTransformConfigurationError(\"functional.isParameters\");\n}\n\n/**\n * Wraps function to test return value only.\n *\n * Wraps the target function and checks return value after calling through\n * {@link is}. Parameters are not checked. Returns `null` on mismatch.\n *\n * Related functions:\n *\n * - {@link isFunction} — Also tests parameters\n * - {@link isParameters} — Tests parameters only\n * - {@link assertReturn} — Throws with error details\n * - {@link validateReturn} — Returns all error details\n * - {@link equalsReturn} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function isReturn<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<R | null>\n : (...args: Arguments) => Output | null\n : never;\n\n/** @internal */\nexport function isReturn(): never {\n NoTransformConfigurationError(\"functional.isReturn\");\n}\n\n/**\n * Wraps function to test parameters and return value with strict equality.\n *\n * Wraps the target function and checks through {@link equals}. Also rejects\n * extra properties not defined in type. Returns `null` on mismatch.\n *\n * Related functions:\n *\n * - {@link isFunction} — Allows extra properties\n * - {@link equalsParameters} — Tests parameters only\n * - {@link equalsReturn} — Tests return value only\n * - {@link assertEqualsFunction} — Throws with error details\n * - {@link validateEqualsFunction} — Returns all error details\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function equalsFunction<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<R | null>\n : (...args: Arguments) => Output | null\n : never;\n\n/** @internal */\nexport function equalsFunction(): never {\n NoTransformConfigurationError(\"functional.equalsFunction\");\n}\n\n/**\n * Wraps function to test parameters with strict equality.\n *\n * Wraps the target function and checks parameters through {@link equals}. Also\n * rejects extra properties. Return value is not checked.\n *\n * Related functions:\n *\n * - {@link isParameters} — Allows extra properties\n * - {@link equalsFunction} — Also tests return value\n * - {@link equalsReturn} — Tests return value only\n * - {@link assertEqualsParameters} — Throws with error details\n * - {@link validateEqualsParameters} — Returns all error details\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function equalsParameters<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<R | null>\n : (...args: Arguments) => Output | null\n : never;\n\n/** @internal */\nexport function equalsParameters(): never {\n NoTransformConfigurationError(\"functional.equalsParameters\");\n}\n\n/**\n * Wraps function to test return value with strict equality.\n *\n * Wraps the target function and checks return value through {@link equals}. Also\n * rejects extra properties. Parameters are not checked.\n *\n * Related functions:\n *\n * - {@link isReturn} — Allows extra properties\n * - {@link equalsFunction} — Also tests parameters\n * - {@link equalsParameters} — Tests parameters only\n * - {@link assertEqualsReturn} — Throws with error details\n * - {@link validateEqualsReturn} — Returns all error details\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function equalsReturn<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<R | null>\n : (...args: Arguments) => Output | null\n : never;\n\n/** @internal */\nexport function equalsReturn(): never {\n NoTransformConfigurationError(\"functional.equalsReturn\");\n}\n\n/* -----------------------------------------------------------\n VALIDATE\n----------------------------------------------------------- */\n/**\n * Wraps function to validate both parameters and return value.\n *\n * Wraps the target function and validates all parameters before calling and\n * return value after calling through {@link validate}. Collects all errors.\n *\n * Error path format:\n *\n * - Parameter errors: `$input.parameters[0].property`\n * - Return errors: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link validateParameters} — Validates parameters only\n * - {@link validateReturn} — Validates return value only\n * - {@link assertFunction} — Throws on first error\n * - {@link validateEqualsFunction} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateFunction<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<IValidation<R>>\n : (...args: Arguments) => IValidation<Output>\n : never;\n\n/** @internal */\nexport function validateFunction(): never {\n NoTransformConfigurationError(\"functional.validateFunction\");\n}\n\n/**\n * Wraps function to validate parameters only.\n *\n * Wraps the target function and validates all parameters before calling through\n * {@link validate}. Return value is not validated. Collects all errors.\n *\n * Error path format: `$input.parameters[0].property`\n *\n * Related functions:\n *\n * - {@link validateFunction} — Also validates return value\n * - {@link validateReturn} — Validates return value only\n * - {@link assertParameters} — Throws on first error\n * - {@link validateEqualsParameters} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateParameters<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<IValidation<R>>\n : (...args: Arguments) => IValidation<Output>\n : never;\n\n/** @internal */\nexport function validateParameters(): never {\n NoTransformConfigurationError(\"functional.validateParameters\");\n}\n\n/**\n * Wraps function to validate return value only.\n *\n * Wraps the target function and validates return value after calling through\n * {@link validate}. Parameters are not validated. Collects all errors.\n *\n * Error path format: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link validateFunction} — Also validates parameters\n * - {@link validateParameters} — Validates parameters only\n * - {@link assertReturn} — Throws on first error\n * - {@link validateEqualsReturn} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateReturn<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<IValidation<R>>\n : (...args: Arguments) => IValidation<Output>\n : never;\n\n/** @internal */\nexport function validateReturn(): never {\n NoTransformConfigurationError(\"functional.validateReturn\");\n}\n\n/**\n * Wraps function to validate parameters and return value with strict equality.\n *\n * Wraps the target function and validates through {@link validateEquals}. Also\n * rejects extra properties not defined in type. Collects all errors.\n *\n * Error path format:\n *\n * - Parameter errors: `$input.parameters[0].property`\n * - Return errors: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link validateFunction} — Allows extra properties\n * - {@link validateEqualsParameters} — Validates parameters only\n * - {@link validateEqualsReturn} — Validates return value only\n * - {@link assertEqualsFunction} — Throws on first error\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateEqualsFunction<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<IValidation<R>>\n : (...args: Arguments) => IValidation<Output>\n : never;\n\n/** @internal */\nexport function validateEqualsFunction(): never {\n NoTransformConfigurationError(\"functional.validateEqualsFunction\");\n}\n\n/**\n * Wraps function to validate parameters with strict equality.\n *\n * Wraps the target function and validates parameters through\n * {@link validateEquals}. Also rejects extra properties. Return value is not\n * validated.\n *\n * Error path format: `$input.parameters[0].property`\n *\n * Related functions:\n *\n * - {@link validateParameters} — Allows extra properties\n * - {@link validateEqualsFunction} — Also validates return value\n * - {@link assertEqualsParameters} — Throws on first error\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateEqualsParameters<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<IValidation<R>>\n : (...args: Arguments) => IValidation<Output>\n : never;\n\n/** @internal */\nexport function validateEqualsParameters(): never {\n NoTransformConfigurationError(\"functional.validateEqualsParameters\");\n}\n\n/**\n * Wraps function to validate return value with strict equality.\n *\n * Wraps the target function and validates return value through\n * {@link validateEquals}. Also rejects extra properties. Parameters are not\n * validated.\n *\n * Error path format: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link validateReturn} — Allows extra properties\n * - {@link validateEqualsFunction} — Also validates parameters\n * - {@link assertEqualsReturn} — Throws on first error\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateEqualsReturn<T extends (...args: any[]) => any>(\n func: T,\n): T extends (...args: infer Arguments) => infer Output\n ? Output extends Promise<infer R>\n ? (...args: Arguments) => Promise<IValidation<R>>\n : (...args: Arguments) => IValidation<Output>\n : never;\n\n/** @internal */\nexport function validateEqualsReturn(): never {\n NoTransformConfigurationError(\"functional.validateEqualsReturn\");\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA4CA,SAAgB,iBAAwB;CACtC,8BAA8B,2BAA2B;AAC3D;;AA8BA,SAAgB,mBAA0B;CACxC,8BAA8B,6BAA6B;AAC7D;;AA8BA,SAAgB,eAAsB;CACpC,8BAA8B,yBAAyB;AACzD;;AAiCA,SAAgB,uBAA8B;CAC5C,8BAA8B,iCAAiC;AACjE;;AA8BA,SAAgB,yBAAgC;CAC9C,8BAA8B,mCAAmC;AACnE;;AA8BA,SAAgB,qBAA4B;CAC1C,8BAA8B,+BAA+B;AAC/D;;AAgCA,SAAgB,aAAoB;CAClC,8BAA8B,uBAAuB;AACvD;;AA6BA,SAAgB,eAAsB;CACpC,8BAA8B,yBAAyB;AACzD;;AA6BA,SAAgB,WAAkB;CAChC,8BAA8B,qBAAqB;AACrD;;AA6BA,SAAgB,iBAAwB;CACtC,8BAA8B,2BAA2B;AAC3D;;AA6BA,SAAgB,mBAA0B;CACxC,8BAA8B,6BAA6B;AAC7D;;AA6BA,SAAgB,eAAsB;CACpC,8BAA8B,yBAAyB;AACzD;;AAoCA,SAAgB,mBAA0B;CACxC,8BAA8B,6BAA6B;AAC7D;;AA8BA,SAAgB,qBAA4B;CAC1C,8BAA8B,+BAA+B;AAC/D;;AA8BA,SAAgB,iBAAwB;CACtC,8BAA8B,2BAA2B;AAC3D;;AAiCA,SAAgB,yBAAgC;CAC9C,8BAA8B,mCAAmC;AACnE;;AA8BA,SAAgB,2BAAkC;CAChD,8BAA8B,qCAAqC;AACrE;;AA8BA,SAAgB,uBAA8B;CAC5C,8BAA8B,iCAAiC;AACjE"}
1
+ {"version":3,"file":"functional.mjs","names":[],"sources":["../src/functional.ts"],"sourcesContent":["import { IValidation } from \"@typia/interface\";\n\nimport { TypeGuardError } from \"./TypeGuardError\";\nimport { NoTransformConfigurationError } from \"./transformers/NoTransformConfigurationError\";\n\ntype FunctionalIs<T extends (...args: any[]) => any> = T extends (\n this: infer This,\n ...args: infer Arguments\n) => infer Output\n ? Output extends Promise<infer R>\n ? (this: This, ...args: Arguments) => Promise<R | null>\n : (this: This, ...args: Arguments) => Output | null\n : never;\n\ntype FunctionalValidate<T extends (...args: any[]) => any> = T extends (\n this: infer This,\n ...args: infer Arguments\n) => infer Output\n ? Output extends Promise<infer R>\n ? (this: This, ...args: Arguments) => Promise<IValidation<R>>\n : (this: This, ...args: Arguments) => IValidation<Output>\n : never;\n\n/* ===========================================================\n FUNCTIONAL\n - ASSERT\n - IS\n - VALIDATE\n==============================================================\n ASSERT\n----------------------------------------------------------- */\n/**\n * Wraps function to assert both parameters and return value.\n *\n * Wraps the target function and validates all parameters before calling and\n * return value after calling through {@link assert}. Throws on first mismatch.\n *\n * Error path format:\n *\n * - Parameter errors: `$input.parameters[0].property`\n * - Return errors: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link assertParameters} — Validates parameters only\n * - {@link assertReturn} — Validates return value only\n * - {@link validateFunction} — Collects all errors instead of throwing\n * - {@link assertEqualsFunction} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When parameter or return value type mismatch\n */\nexport function assertFunction<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertFunction(): never {\n NoTransformConfigurationError(\"functional.assertFunction\");\n}\n\n/**\n * Wraps function to assert parameters only.\n *\n * Wraps the target function and validates all parameters before calling through\n * {@link assert}. Return value is not validated. Throws on first mismatch.\n *\n * Error path format: `$input.parameters[0].property`\n *\n * Related functions:\n *\n * - {@link assertFunction} — Also validates return value\n * - {@link assertReturn} — Validates return value only\n * - {@link validateParameters} — Collects all errors instead of throwing\n * - {@link assertEqualsParameters} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When parameter type mismatch\n */\nexport function assertParameters<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertParameters(): never {\n NoTransformConfigurationError(\"functional.assertParameters\");\n}\n\n/**\n * Wraps function to assert return value only.\n *\n * Wraps the target function and validates return value after calling through\n * {@link assert}. Parameters are not validated. Throws on mismatch.\n *\n * Error path format: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link assertFunction} — Also validates parameters\n * - {@link assertParameters} — Validates parameters only\n * - {@link validateReturn} — Collects all errors instead of throwing\n * - {@link assertEqualsReturn} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When return value type mismatch\n */\nexport function assertReturn<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertReturn(): never {\n NoTransformConfigurationError(\"functional.assertReturn\");\n}\n\n/**\n * Wraps function to assert parameters and return value with strict equality.\n *\n * Wraps the target function and validates through {@link assertEquals}. Also\n * rejects extra properties not defined in type. Throws on first mismatch.\n *\n * Error path format:\n *\n * - Parameter errors: `$input.parameters[0].property`\n * - Return errors: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link assertFunction} — Allows extra properties\n * - {@link assertEqualsParameters} — Validates parameters only\n * - {@link assertEqualsReturn} — Validates return value only\n * - {@link validateEqualsFunction} — Collects all errors instead of throwing\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When type mismatch or extra property detected\n */\nexport function assertEqualsFunction<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertEqualsFunction(): never {\n NoTransformConfigurationError(\"functional.assertEqualsFunction\");\n}\n\n/**\n * Wraps function to assert parameters with strict equality.\n *\n * Wraps the target function and validates parameters through\n * {@link assertEquals}. Also rejects extra properties. Return value is not\n * validated.\n *\n * Error path format: `$input.parameters[0].property`\n *\n * Related functions:\n *\n * - {@link assertParameters} — Allows extra properties\n * - {@link assertEqualsFunction} — Also validates return value\n * - {@link validateEqualsParameters} — Collects all errors instead of throwing\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When type mismatch or extra property detected\n */\nexport function assertEqualsParameters<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertEqualsParameters(): never {\n NoTransformConfigurationError(\"functional.assertEqualsParameters\");\n}\n\n/**\n * Wraps function to assert return value with strict equality.\n *\n * Wraps the target function and validates return value through\n * {@link assertEquals}. Also rejects extra properties. Parameters are not\n * validated.\n *\n * Error path format: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link assertReturn} — Allows extra properties\n * - {@link assertEqualsFunction} — Also validates parameters\n * - {@link validateEqualsReturn} — Collects all errors instead of throwing\n *\n * @template T Target function type\n * @param func Function to wrap\n * @param errorFactory Custom error factory receiving\n * {@link TypeGuardError.IProps}\n * @returns Wrapped function with same signature\n * @throws {TypeGuardError} When type mismatch or extra property detected\n */\nexport function assertEqualsReturn<T extends (...args: any[]) => any>(\n func: T,\n errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),\n): T;\n\n/** @internal */\nexport function assertEqualsReturn(): never {\n NoTransformConfigurationError(\"functional.assertEqualsReturn\");\n}\n\n/* -----------------------------------------------------------\n IS\n----------------------------------------------------------- */\n/**\n * Wraps function to test both parameters and return value.\n *\n * Wraps the target function and checks all parameters before calling and return\n * value after calling through {@link is}. Returns `null` on mismatch.\n *\n * Related functions:\n *\n * - {@link isParameters} — Tests parameters only\n * - {@link isReturn} — Tests return value only\n * - {@link assertFunction} — Throws with error details on mismatch\n * - {@link validateFunction} — Returns all error details\n * - {@link equalsFunction} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function isFunction<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalIs<T>;\n\n/** @internal */\nexport function isFunction(): never {\n NoTransformConfigurationError(\"functional.isFunction\");\n}\n\n/**\n * Wraps function to test parameters only.\n *\n * Wraps the target function and checks all parameters before calling through\n * {@link is}. Return value is not checked. Returns `null` on mismatch.\n *\n * Related functions:\n *\n * - {@link isFunction} — Also tests return value\n * - {@link isReturn} — Tests return value only\n * - {@link assertParameters} — Throws with error details\n * - {@link validateParameters} — Returns all error details\n * - {@link equalsParameters} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function isParameters<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalIs<T>;\n\n/** @internal */\nexport function isParameters(): never {\n NoTransformConfigurationError(\"functional.isParameters\");\n}\n\n/**\n * Wraps function to test return value only.\n *\n * Wraps the target function and checks return value after calling through\n * {@link is}. Parameters are not checked. Returns `null` on mismatch.\n *\n * Related functions:\n *\n * - {@link isFunction} — Also tests parameters\n * - {@link isParameters} — Tests parameters only\n * - {@link assertReturn} — Throws with error details\n * - {@link validateReturn} — Returns all error details\n * - {@link equalsReturn} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function isReturn<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalIs<T>;\n\n/** @internal */\nexport function isReturn(): never {\n NoTransformConfigurationError(\"functional.isReturn\");\n}\n\n/**\n * Wraps function to test parameters and return value with strict equality.\n *\n * Wraps the target function and checks through {@link equals}. Also rejects\n * extra properties not defined in type. Returns `null` on mismatch.\n *\n * Related functions:\n *\n * - {@link isFunction} — Allows extra properties\n * - {@link equalsParameters} — Tests parameters only\n * - {@link equalsReturn} — Tests return value only\n * - {@link assertEqualsFunction} — Throws with error details\n * - {@link validateEqualsFunction} — Returns all error details\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function equalsFunction<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalIs<T>;\n\n/** @internal */\nexport function equalsFunction(): never {\n NoTransformConfigurationError(\"functional.equalsFunction\");\n}\n\n/**\n * Wraps function to test parameters with strict equality.\n *\n * Wraps the target function and checks parameters through {@link equals}. Also\n * rejects extra properties. Return value is not checked.\n *\n * Related functions:\n *\n * - {@link isParameters} — Allows extra properties\n * - {@link equalsFunction} — Also tests return value\n * - {@link equalsReturn} — Tests return value only\n * - {@link assertEqualsParameters} — Throws with error details\n * - {@link validateEqualsParameters} — Returns all error details\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function equalsParameters<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalIs<T>;\n\n/** @internal */\nexport function equalsParameters(): never {\n NoTransformConfigurationError(\"functional.equalsParameters\");\n}\n\n/**\n * Wraps function to test return value with strict equality.\n *\n * Wraps the target function and checks return value through {@link equals}. Also\n * rejects extra properties. Parameters are not checked.\n *\n * Related functions:\n *\n * - {@link isReturn} — Allows extra properties\n * - {@link equalsFunction} — Also tests parameters\n * - {@link equalsParameters} — Tests parameters only\n * - {@link assertEqualsReturn} — Throws with error details\n * - {@link validateEqualsReturn} — Returns all error details\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning `Output | null`\n */\nexport function equalsReturn<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalIs<T>;\n\n/** @internal */\nexport function equalsReturn(): never {\n NoTransformConfigurationError(\"functional.equalsReturn\");\n}\n\n/* -----------------------------------------------------------\n VALIDATE\n----------------------------------------------------------- */\n/**\n * Wraps function to validate both parameters and return value.\n *\n * Wraps the target function and validates all parameters before calling and\n * return value after calling through {@link validate}. Collects all errors.\n *\n * Error path format:\n *\n * - Parameter errors: `$input.parameters[0].property`\n * - Return errors: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link validateParameters} — Validates parameters only\n * - {@link validateReturn} — Validates return value only\n * - {@link assertFunction} — Throws on first error\n * - {@link validateEqualsFunction} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateFunction<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalValidate<T>;\n\n/** @internal */\nexport function validateFunction(): never {\n NoTransformConfigurationError(\"functional.validateFunction\");\n}\n\n/**\n * Wraps function to validate parameters only.\n *\n * Wraps the target function and validates all parameters before calling through\n * {@link validate}. Return value is not validated. Collects all errors.\n *\n * Error path format: `$input.parameters[0].property`\n *\n * Related functions:\n *\n * - {@link validateFunction} — Also validates return value\n * - {@link validateReturn} — Validates return value only\n * - {@link assertParameters} — Throws on first error\n * - {@link validateEqualsParameters} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateParameters<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalValidate<T>;\n\n/** @internal */\nexport function validateParameters(): never {\n NoTransformConfigurationError(\"functional.validateParameters\");\n}\n\n/**\n * Wraps function to validate return value only.\n *\n * Wraps the target function and validates return value after calling through\n * {@link validate}. Parameters are not validated. Collects all errors.\n *\n * Error path format: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link validateFunction} — Also validates parameters\n * - {@link validateParameters} — Validates parameters only\n * - {@link assertReturn} — Throws on first error\n * - {@link validateEqualsReturn} — Also rejects extra properties\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateReturn<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalValidate<T>;\n\n/** @internal */\nexport function validateReturn(): never {\n NoTransformConfigurationError(\"functional.validateReturn\");\n}\n\n/**\n * Wraps function to validate parameters and return value with strict equality.\n *\n * Wraps the target function and validates through {@link validateEquals}. Also\n * rejects extra properties not defined in type. Collects all errors.\n *\n * Error path format:\n *\n * - Parameter errors: `$input.parameters[0].property`\n * - Return errors: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link validateFunction} — Allows extra properties\n * - {@link validateEqualsParameters} — Validates parameters only\n * - {@link validateEqualsReturn} — Validates return value only\n * - {@link assertEqualsFunction} — Throws on first error\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateEqualsFunction<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalValidate<T>;\n\n/** @internal */\nexport function validateEqualsFunction(): never {\n NoTransformConfigurationError(\"functional.validateEqualsFunction\");\n}\n\n/**\n * Wraps function to validate parameters with strict equality.\n *\n * Wraps the target function and validates parameters through\n * {@link validateEquals}. Also rejects extra properties. Return value is not\n * validated.\n *\n * Error path format: `$input.parameters[0].property`\n *\n * Related functions:\n *\n * - {@link validateParameters} — Allows extra properties\n * - {@link validateEqualsFunction} — Also validates return value\n * - {@link assertEqualsParameters} — Throws on first error\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateEqualsParameters<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalValidate<T>;\n\n/** @internal */\nexport function validateEqualsParameters(): never {\n NoTransformConfigurationError(\"functional.validateEqualsParameters\");\n}\n\n/**\n * Wraps function to validate return value with strict equality.\n *\n * Wraps the target function and validates return value through\n * {@link validateEquals}. Also rejects extra properties. Parameters are not\n * validated.\n *\n * Error path format: `$input.return.property`\n *\n * Related functions:\n *\n * - {@link validateReturn} — Allows extra properties\n * - {@link validateEqualsFunction} — Also validates parameters\n * - {@link assertEqualsReturn} — Throws on first error\n *\n * @template T Target function type\n * @param func Function to wrap\n * @returns Wrapped function returning {@link IValidation}\n */\nexport function validateEqualsReturn<T extends (...args: any[]) => any>(\n func: T,\n): FunctionalValidate<T>;\n\n/** @internal */\nexport function validateEqualsReturn(): never {\n NoTransformConfigurationError(\"functional.validateEqualsReturn\");\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA8DA,SAAgB,iBAAwB;CACtC,8BAA8B,2BAA2B;AAC3D;;AA8BA,SAAgB,mBAA0B;CACxC,8BAA8B,6BAA6B;AAC7D;;AA8BA,SAAgB,eAAsB;CACpC,8BAA8B,yBAAyB;AACzD;;AAiCA,SAAgB,uBAA8B;CAC5C,8BAA8B,iCAAiC;AACjE;;AA8BA,SAAgB,yBAAgC;CAC9C,8BAA8B,mCAAmC;AACnE;;AA8BA,SAAgB,qBAA4B;CAC1C,8BAA8B,+BAA+B;AAC/D;;AA4BA,SAAgB,aAAoB;CAClC,8BAA8B,uBAAuB;AACvD;;AAyBA,SAAgB,eAAsB;CACpC,8BAA8B,yBAAyB;AACzD;;AAyBA,SAAgB,WAAkB;CAChC,8BAA8B,qBAAqB;AACrD;;AAyBA,SAAgB,iBAAwB;CACtC,8BAA8B,2BAA2B;AAC3D;;AAyBA,SAAgB,mBAA0B;CACxC,8BAA8B,6BAA6B;AAC7D;;AAyBA,SAAgB,eAAsB;CACpC,8BAA8B,yBAAyB;AACzD;;AAgCA,SAAgB,mBAA0B;CACxC,8BAA8B,6BAA6B;AAC7D;;AA0BA,SAAgB,qBAA4B;CAC1C,8BAA8B,+BAA+B;AAC/D;;AA0BA,SAAgB,iBAAwB;CACtC,8BAA8B,2BAA2B;AAC3D;;AA6BA,SAAgB,yBAAgC;CAC9C,8BAA8B,mCAAmC;AACnE;;AA0BA,SAAgB,2BAAkC;CAChD,8BAA8B,qCAAqC;AACrE;;AA0BA,SAAgB,uBAA8B;CAC5C,8BAA8B,iCAAiC;AACjE"}
@@ -6,6 +6,8 @@ export declare class _ProtobufReader {
6
6
  private ptr;
7
7
  /** DataView for buffer. */
8
8
  private view;
9
+ /** Current length-delimited boundary. */
10
+ private end;
9
11
  constructor(buf: Uint8Array);
10
12
  index(): number;
11
13
  size(): number;
@@ -20,10 +22,25 @@ export declare class _ProtobufReader {
20
22
  double(): number;
21
23
  bytes(): Uint8Array;
22
24
  string(): string;
25
+ fork(): number;
26
+ close(previous: number): void;
27
+ /** Advance by exactly `length` bytes, for every length including zero. */
23
28
  skip(length: number): void;
29
+ /**
30
+ * Advance by exactly one varint, which carries no length prefix.
31
+ *
32
+ * A varint terminates at its first byte without the continuation bit, and may
33
+ * occupy no more than {@link VARINT_MAX_BYTES}. Reading past that limit would
34
+ * accept a varint that `varint32` and `varint64` could not, making the limit
35
+ * depend on which method happens to consume the value.
36
+ */
37
+ skipVarint(): void;
24
38
  skipType(wireType: ProtobufWire): void;
25
39
  private varint32;
26
40
  private varint64;
27
41
  private u8;
28
42
  private u8n;
43
+ private take;
44
+ private atomic;
45
+ private validate;
29
46
  }