typia 13.0.1-dev.20260703.1 → 13.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1298) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +169 -171
  3. package/lib/TypeGuardError.mjs +42 -3
  4. package/lib/TypeGuardError.mjs.map +1 -1
  5. package/lib/_virtual/_rolldown/runtime.mjs +17 -0
  6. package/lib/compare.mjs +39 -3
  7. package/lib/compare.mjs.map +1 -1
  8. package/lib/executable/TypiaGenerateWizard.js +7 -2
  9. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  10. package/lib/executable/TypiaGenerateWizard.mjs +474 -3
  11. package/lib/executable/TypiaGenerateWizard.mjs.map +1 -1
  12. package/lib/executable/generate/ttsc.js +11 -8
  13. package/lib/executable/generate/ttsc.js.map +1 -1
  14. package/lib/executable/generate/ttsc.mjs +37 -3
  15. package/lib/executable/generate/ttsc.mjs.map +1 -1
  16. package/lib/executable/typia.js +10 -4
  17. package/lib/executable/typia.js.map +1 -1
  18. package/lib/executable/typia.mjs +59 -3
  19. package/lib/executable/typia.mjs.map +1 -1
  20. package/lib/functional.mjs +99 -3
  21. package/lib/functional.mjs.map +1 -1
  22. package/lib/http.mjs +139 -3
  23. package/lib/http.mjs.map +1 -1
  24. package/lib/index.mjs +18 -2
  25. package/lib/index.mjs.map +1 -1
  26. package/lib/internal/_IProtobufWriter.mjs +0 -3
  27. package/lib/internal/_ProtobufReader.js +7 -6
  28. package/lib/internal/_ProtobufReader.js.map +1 -1
  29. package/lib/internal/_ProtobufReader.mjs +140 -3
  30. package/lib/internal/_ProtobufReader.mjs.map +1 -1
  31. package/lib/internal/_ProtobufSizer.mjs +84 -3
  32. package/lib/internal/_ProtobufSizer.mjs.map +1 -1
  33. package/lib/internal/_ProtobufWriter.mjs +94 -3
  34. package/lib/internal/_ProtobufWriter.mjs.map +1 -1
  35. package/lib/internal/_accessExpressionAsString.mjs +46 -3
  36. package/lib/internal/_accessExpressionAsString.mjs.map +1 -1
  37. package/lib/internal/_assertGuard.mjs +11 -3
  38. package/lib/internal/_assertGuard.mjs.map +1 -1
  39. package/lib/internal/_coerceLlmArguments.mjs +7 -3
  40. package/lib/internal/_coerceLlmArguments.mjs.map +1 -1
  41. package/lib/internal/_createStandardSchema.mjs +64 -3
  42. package/lib/internal/_createStandardSchema.mjs.map +1 -1
  43. package/lib/internal/_functionalTypeGuardErrorFactory.mjs +7 -3
  44. package/lib/internal/_functionalTypeGuardErrorFactory.mjs.map +1 -1
  45. package/lib/internal/_httpFormDataReadArray.mjs +6 -3
  46. package/lib/internal/_httpFormDataReadArray.mjs.map +1 -1
  47. package/lib/internal/_httpFormDataReadBigint.mjs +13 -3
  48. package/lib/internal/_httpFormDataReadBigint.mjs.map +1 -1
  49. package/lib/internal/_httpFormDataReadBlob.mjs +6 -3
  50. package/lib/internal/_httpFormDataReadBlob.mjs.map +1 -1
  51. package/lib/internal/_httpFormDataReadBoolean.mjs +6 -3
  52. package/lib/internal/_httpFormDataReadBoolean.mjs.map +1 -1
  53. package/lib/internal/_httpFormDataReadFile.mjs +6 -3
  54. package/lib/internal/_httpFormDataReadFile.mjs.map +1 -1
  55. package/lib/internal/_httpFormDataReadNumber.mjs +10 -3
  56. package/lib/internal/_httpFormDataReadNumber.mjs.map +1 -1
  57. package/lib/internal/_httpFormDataReadString.mjs +6 -3
  58. package/lib/internal/_httpFormDataReadString.mjs.map +1 -1
  59. package/lib/internal/_httpHeaderReadBigint.mjs +13 -3
  60. package/lib/internal/_httpHeaderReadBigint.mjs.map +1 -1
  61. package/lib/internal/_httpHeaderReadBoolean.mjs +6 -3
  62. package/lib/internal/_httpHeaderReadBoolean.mjs.map +1 -1
  63. package/lib/internal/_httpHeaderReadNumber.mjs +10 -3
  64. package/lib/internal/_httpHeaderReadNumber.mjs.map +1 -1
  65. package/lib/internal/_httpParameterReadBigint.mjs +13 -3
  66. package/lib/internal/_httpParameterReadBigint.mjs.map +1 -1
  67. package/lib/internal/_httpParameterReadBoolean.mjs +6 -3
  68. package/lib/internal/_httpParameterReadBoolean.mjs.map +1 -1
  69. package/lib/internal/_httpParameterReadNumber.mjs +10 -3
  70. package/lib/internal/_httpParameterReadNumber.mjs.map +1 -1
  71. package/lib/internal/_httpParameterReadString.mjs +6 -3
  72. package/lib/internal/_httpParameterReadString.mjs.map +1 -1
  73. package/lib/internal/_httpQueryParseURLSearchParams.mjs +13 -3
  74. package/lib/internal/_httpQueryParseURLSearchParams.mjs.map +1 -1
  75. package/lib/internal/_httpQueryReadArray.mjs +6 -3
  76. package/lib/internal/_httpQueryReadArray.mjs.map +1 -1
  77. package/lib/internal/_httpQueryReadBigint.mjs +13 -3
  78. package/lib/internal/_httpQueryReadBigint.mjs.map +1 -1
  79. package/lib/internal/_httpQueryReadBoolean.mjs +6 -3
  80. package/lib/internal/_httpQueryReadBoolean.mjs.map +1 -1
  81. package/lib/internal/_httpQueryReadNumber.mjs +10 -3
  82. package/lib/internal/_httpQueryReadNumber.mjs.map +1 -1
  83. package/lib/internal/_httpQueryReadString.mjs +6 -3
  84. package/lib/internal/_httpQueryReadString.mjs.map +1 -1
  85. package/lib/internal/_isBetween.mjs +6 -3
  86. package/lib/internal/_isBetween.mjs.map +1 -1
  87. package/lib/internal/_isBigintString.mjs +13 -3
  88. package/lib/internal/_isBigintString.mjs.map +1 -1
  89. package/lib/internal/_isFormatByte.mjs +10 -3
  90. package/lib/internal/_isFormatByte.mjs.map +1 -1
  91. package/lib/internal/_isFormatDate.mjs +7 -3
  92. package/lib/internal/_isFormatDate.mjs.map +1 -1
  93. package/lib/internal/_isFormatDateTime.mjs +7 -3
  94. package/lib/internal/_isFormatDateTime.mjs.map +1 -1
  95. package/lib/internal/_isFormatDuration.mjs +7 -3
  96. package/lib/internal/_isFormatDuration.mjs.map +1 -1
  97. package/lib/internal/_isFormatEmail.mjs +7 -3
  98. package/lib/internal/_isFormatEmail.mjs.map +1 -1
  99. package/lib/internal/_isFormatHostname.mjs +7 -3
  100. package/lib/internal/_isFormatHostname.mjs.map +1 -1
  101. package/lib/internal/_isFormatIdnEmail.mjs +7 -3
  102. package/lib/internal/_isFormatIdnEmail.mjs.map +1 -1
  103. package/lib/internal/_isFormatIdnHostname.mjs +7 -3
  104. package/lib/internal/_isFormatIdnHostname.mjs.map +1 -1
  105. package/lib/internal/_isFormatIpv4.mjs +7 -3
  106. package/lib/internal/_isFormatIpv4.mjs.map +1 -1
  107. package/lib/internal/_isFormatIpv6.mjs +7 -3
  108. package/lib/internal/_isFormatIpv6.mjs.map +1 -1
  109. package/lib/internal/_isFormatIri.mjs +7 -3
  110. package/lib/internal/_isFormatIri.mjs.map +1 -1
  111. package/lib/internal/_isFormatIriReference.mjs +7 -3
  112. package/lib/internal/_isFormatIriReference.mjs.map +1 -1
  113. package/lib/internal/_isFormatJsonPointer.mjs +7 -3
  114. package/lib/internal/_isFormatJsonPointer.mjs.map +1 -1
  115. package/lib/internal/_isFormatPassword.mjs +6 -3
  116. package/lib/internal/_isFormatPassword.mjs.map +1 -1
  117. package/lib/internal/_isFormatRegex.mjs +13 -3
  118. package/lib/internal/_isFormatRegex.mjs.map +1 -1
  119. package/lib/internal/_isFormatRelativeJsonPointer.mjs +7 -3
  120. package/lib/internal/_isFormatRelativeJsonPointer.mjs.map +1 -1
  121. package/lib/internal/_isFormatTime.mjs +7 -3
  122. package/lib/internal/_isFormatTime.mjs.map +1 -1
  123. package/lib/internal/_isFormatUri.mjs +8 -3
  124. package/lib/internal/_isFormatUri.mjs.map +1 -1
  125. package/lib/internal/_isFormatUriReference.mjs +7 -3
  126. package/lib/internal/_isFormatUriReference.mjs.map +1 -1
  127. package/lib/internal/_isFormatUriTemplate.mjs +7 -3
  128. package/lib/internal/_isFormatUriTemplate.mjs.map +1 -1
  129. package/lib/internal/_isFormatUrl.mjs +7 -3
  130. package/lib/internal/_isFormatUrl.mjs.map +1 -1
  131. package/lib/internal/_isFormatUuid.mjs +7 -3
  132. package/lib/internal/_isFormatUuid.mjs.map +1 -1
  133. package/lib/internal/_isTypeFloat.mjs +8 -3
  134. package/lib/internal/_isTypeFloat.mjs.map +1 -1
  135. package/lib/internal/_isTypeInt16.mjs +8 -3
  136. package/lib/internal/_isTypeInt16.mjs.map +1 -1
  137. package/lib/internal/_isTypeInt32.mjs +8 -3
  138. package/lib/internal/_isTypeInt32.mjs.map +1 -1
  139. package/lib/internal/_isTypeInt64.mjs +8 -3
  140. package/lib/internal/_isTypeInt64.mjs.map +1 -1
  141. package/lib/internal/_isTypeInt8.mjs +8 -3
  142. package/lib/internal/_isTypeInt8.mjs.map +1 -1
  143. package/lib/internal/_isTypeUint16.mjs +8 -3
  144. package/lib/internal/_isTypeUint16.mjs.map +1 -1
  145. package/lib/internal/_isTypeUint32.mjs +8 -3
  146. package/lib/internal/_isTypeUint32.mjs.map +1 -1
  147. package/lib/internal/_isTypeUint64.mjs +8 -3
  148. package/lib/internal/_isTypeUint64.mjs.map +1 -1
  149. package/lib/internal/_isTypeUint8.mjs +8 -3
  150. package/lib/internal/_isTypeUint8.mjs.map +1 -1
  151. package/lib/internal/_isUniqueItems.mjs +67 -3
  152. package/lib/internal/_isUniqueItems.mjs.map +1 -1
  153. package/lib/internal/_jsonStringifyNumber.mjs +6 -3
  154. package/lib/internal/_jsonStringifyNumber.mjs.map +1 -1
  155. package/lib/internal/_jsonStringifyRest.mjs +8 -3
  156. package/lib/internal/_jsonStringifyRest.mjs.map +1 -1
  157. package/lib/internal/_jsonStringifyString.mjs +34 -3
  158. package/lib/internal/_jsonStringifyString.mjs.map +1 -1
  159. package/lib/internal/_jsonStringifyTail.mjs +6 -3
  160. package/lib/internal/_jsonStringifyTail.mjs.map +1 -1
  161. package/lib/internal/_llmApplicationFinalize.mjs +19 -3
  162. package/lib/internal/_llmApplicationFinalize.mjs.map +1 -1
  163. package/lib/internal/_notationAny.mjs +18 -3
  164. package/lib/internal/_notationAny.mjs.map +1 -1
  165. package/lib/internal/_notationCamel.mjs +11 -3
  166. package/lib/internal/_notationCamel.mjs.map +1 -1
  167. package/lib/internal/_notationPascal.mjs +11 -3
  168. package/lib/internal/_notationPascal.mjs.map +1 -1
  169. package/lib/internal/_notationSnake.mjs +32 -3
  170. package/lib/internal/_notationSnake.mjs.map +1 -1
  171. package/lib/internal/_parseLlmArguments.mjs +7 -3
  172. package/lib/internal/_parseLlmArguments.mjs.map +1 -1
  173. package/lib/internal/_plainCloneAny.mjs +35 -3
  174. package/lib/internal/_plainCloneAny.mjs.map +1 -1
  175. package/lib/internal/_randomArray.mjs +22 -3
  176. package/lib/internal/_randomArray.mjs.map +1 -1
  177. package/lib/internal/_randomBigint.mjs +7 -3
  178. package/lib/internal/_randomBigint.mjs.map +1 -1
  179. package/lib/internal/_randomBoolean.mjs +6 -3
  180. package/lib/internal/_randomBoolean.mjs.map +1 -1
  181. package/lib/internal/_randomFormatByte.mjs +7 -3
  182. package/lib/internal/_randomFormatByte.mjs.map +1 -1
  183. package/lib/internal/_randomFormatDate.mjs +11 -3
  184. package/lib/internal/_randomFormatDate.mjs.map +1 -1
  185. package/lib/internal/_randomFormatDatetime.mjs +11 -3
  186. package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
  187. package/lib/internal/_randomFormatDuration.mjs +26 -3
  188. package/lib/internal/_randomFormatDuration.mjs.map +1 -1
  189. package/lib/internal/_randomFormatEmail.mjs +12 -3
  190. package/lib/internal/_randomFormatEmail.mjs.map +1 -1
  191. package/lib/internal/_randomFormatHostname.mjs +12 -3
  192. package/lib/internal/_randomFormatHostname.mjs.map +1 -1
  193. package/lib/internal/_randomFormatIdnEmail.mjs +7 -3
  194. package/lib/internal/_randomFormatIdnEmail.mjs.map +1 -1
  195. package/lib/internal/_randomFormatIdnHostname.mjs +7 -3
  196. package/lib/internal/_randomFormatIdnHostname.mjs.map +1 -1
  197. package/lib/internal/_randomFormatIpv4.mjs +12 -3
  198. package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
  199. package/lib/internal/_randomFormatIpv6.mjs +12 -3
  200. package/lib/internal/_randomFormatIpv6.mjs.map +1 -1
  201. package/lib/internal/_randomFormatIri.mjs +7 -3
  202. package/lib/internal/_randomFormatIri.mjs.map +1 -1
  203. package/lib/internal/_randomFormatIriReference.mjs +7 -3
  204. package/lib/internal/_randomFormatIriReference.mjs.map +1 -1
  205. package/lib/internal/_randomFormatJsonPointer.mjs +12 -3
  206. package/lib/internal/_randomFormatJsonPointer.mjs.map +1 -1
  207. package/lib/internal/_randomFormatPassword.mjs +11 -3
  208. package/lib/internal/_randomFormatPassword.mjs.map +1 -1
  209. package/lib/internal/_randomFormatRegex.mjs +7 -3
  210. package/lib/internal/_randomFormatRegex.mjs.map +1 -1
  211. package/lib/internal/_randomFormatRelativeJsonPointer.mjs +11 -3
  212. package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
  213. package/lib/internal/_randomFormatTime.mjs +12 -3
  214. package/lib/internal/_randomFormatTime.mjs.map +1 -1
  215. package/lib/internal/_randomFormatUri.mjs +7 -3
  216. package/lib/internal/_randomFormatUri.mjs.map +1 -1
  217. package/lib/internal/_randomFormatUriReference.mjs +7 -3
  218. package/lib/internal/_randomFormatUriReference.mjs.map +1 -1
  219. package/lib/internal/_randomFormatUriTemplate.mjs +7 -3
  220. package/lib/internal/_randomFormatUriTemplate.mjs.map +1 -1
  221. package/lib/internal/_randomFormatUrl.mjs +12 -3
  222. package/lib/internal/_randomFormatUrl.mjs.map +1 -1
  223. package/lib/internal/_randomFormatUuid.mjs +9 -3
  224. package/lib/internal/_randomFormatUuid.mjs.map +1 -1
  225. package/lib/internal/_randomInteger.mjs +31 -3
  226. package/lib/internal/_randomInteger.mjs.map +1 -1
  227. package/lib/internal/_randomNumber.mjs +45 -3
  228. package/lib/internal/_randomNumber.mjs.map +1 -1
  229. package/lib/internal/_randomPattern.mjs +14 -3
  230. package/lib/internal/_randomPattern.mjs.map +1 -1
  231. package/lib/internal/_randomPick.mjs +12 -3
  232. package/lib/internal/_randomPick.mjs.map +1 -1
  233. package/lib/internal/_randomString.mjs +23 -3
  234. package/lib/internal/_randomString.mjs.map +1 -1
  235. package/lib/internal/_throwTypeGuardError.mjs +9 -3
  236. package/lib/internal/_throwTypeGuardError.mjs.map +1 -1
  237. package/lib/internal/_validateReport.mjs +23 -3
  238. package/lib/internal/_validateReport.mjs.map +1 -1
  239. package/lib/internal/private/__notationCapitalize.mjs +6 -3
  240. package/lib/internal/private/__notationCapitalize.mjs.map +1 -1
  241. package/lib/internal/private/__notationUnsnake.mjs +15 -3
  242. package/lib/internal/private/__notationUnsnake.mjs.map +1 -1
  243. package/lib/json.mjs +94 -3
  244. package/lib/json.mjs.map +1 -1
  245. package/lib/llm.mjs +54 -3
  246. package/lib/llm.mjs.map +1 -1
  247. package/lib/module.mjs +131 -2
  248. package/lib/module.mjs.map +1 -1
  249. package/lib/notations.mjs +169 -3
  250. package/lib/notations.mjs.map +1 -1
  251. package/lib/plain.mjs +119 -3
  252. package/lib/plain.mjs.map +1 -1
  253. package/lib/protobuf.mjs +94 -3
  254. package/lib/protobuf.mjs.map +1 -1
  255. package/lib/re-exports.d.ts +2 -1
  256. package/lib/re-exports.js +5 -1
  257. package/lib/re-exports.js.map +1 -1
  258. package/lib/re-exports.mjs +2 -2
  259. package/lib/reflect.mjs +29 -3
  260. package/lib/reflect.mjs.map +1 -1
  261. package/lib/transform.mjs +15 -2
  262. package/lib/transform.mjs.map +1 -1
  263. package/lib/transformers/NoTransformConfigurationError.mjs +19 -3
  264. package/lib/transformers/NoTransformConfigurationError.mjs.map +1 -1
  265. package/native/adapter/adapter.go +29 -29
  266. package/native/adapter/adapter_options_branch_matrix_test.go +54 -54
  267. package/native/adapter/visit.go +173 -173
  268. package/native/adapter/visit_property_chain_edges_test.go +129 -129
  269. package/native/cmd/ttsc-typia/any_array_type_tags_transform_test.go +204 -204
  270. package/native/cmd/ttsc-typia/atomic_intersection_schema_transform_test.go +148 -148
  271. package/native/cmd/ttsc-typia/boolean_literal_discriminant_schema_transform_test.go +374 -374
  272. package/native/cmd/ttsc-typia/build.go +188 -188
  273. package/native/cmd/ttsc-typia/build_reports_semantic_diagnostics_test.go +34 -34
  274. package/native/cmd/ttsc-typia/build_reports_syntactic_diagnostics_test.go +34 -34
  275. package/native/cmd/ttsc-typia/command_routes_and_diagnostics_coverage_test.go +314 -314
  276. package/native/cmd/ttsc-typia/compare_equal_cover_transform_test.go +271 -271
  277. package/native/cmd/ttsc-typia/compare_less_transform_test.go +180 -180
  278. package/native/cmd/ttsc-typia/compare_method_delegation_transform_test.go +173 -173
  279. package/native/cmd/ttsc-typia/demo_rejects_bad_flag_test.go +25 -25
  280. package/native/cmd/ttsc-typia/diagnostics.go +51 -51
  281. package/native/cmd/ttsc-typia/dynamic_key_path_helper_alias_transform_test.go +159 -159
  282. package/native/cmd/ttsc-typia/exclude_type_tag_transform_test.go +176 -176
  283. package/native/cmd/ttsc-typia/inline_type_display_name_transform_test.go +290 -290
  284. package/native/cmd/ttsc-typia/instance_union_create_is_transform_test.go +248 -248
  285. package/native/cmd/ttsc-typia/intersection_all_never_union_transform_test.go +168 -168
  286. package/native/cmd/ttsc-typia/intersection_brand_transform_test.go +267 -267
  287. package/native/cmd/ttsc-typia/intersection_nonsensible_backstop_transform_test.go +157 -132
  288. package/native/cmd/ttsc-typia/intersection_union_validation_transform_test.go +590 -590
  289. package/native/cmd/ttsc-typia/json_is_stringify_scoped_checker_transform_test.go +206 -0
  290. package/native/cmd/ttsc-typia/json_stringify_constant_atomic_union_transform_test.go +171 -171
  291. package/native/cmd/ttsc-typia/main.go +97 -97
  292. package/native/cmd/ttsc-typia/main_wasm.go +226 -226
  293. package/native/cmd/ttsc-typia/non_trailing_rest_tuple_transform_test.go +156 -156
  294. package/native/cmd/ttsc-typia/notation_kebab_case_transform_test.go +186 -186
  295. package/native/cmd/ttsc-typia/nullable_primitive_property_is_transform_test.go +236 -236
  296. package/native/cmd/ttsc-typia/object_custom_tag_validation_transform_test.go +332 -332
  297. package/native/cmd/ttsc-typia/object_union_explicit_pointer_schema_transform_test.go +269 -269
  298. package/native/cmd/ttsc-typia/plain_classify_class_ref_transform_test.go +261 -261
  299. package/native/cmd/ttsc-typia/plain_classify_container_seed_transform_test.go +144 -144
  300. package/native/cmd/ttsc-typia/plain_classify_cross_module_extra_transform_test.go +211 -211
  301. package/native/cmd/ttsc-typia/plain_classify_deep_nested_transform_test.go +184 -184
  302. package/native/cmd/ttsc-typia/plain_classify_field_copy_transform_test.go +204 -204
  303. package/native/cmd/ttsc-typia/plain_classify_from_new_transform_test.go +465 -465
  304. package/native/cmd/ttsc-typia/plain_classify_strategy_edges_transform_test.go +519 -519
  305. package/native/cmd/ttsc-typia/plain_classify_union_transform_test.go +149 -149
  306. package/native/cmd/ttsc-typia/plain_classify_validated_union_transform_test.go +212 -212
  307. package/native/cmd/ttsc-typia/plain_clone_bigint_wrapper_transform_test.go +153 -153
  308. package/native/cmd/ttsc-typia/plugin_options_missing_config_test.go +26 -26
  309. package/native/cmd/ttsc-typia/plugin_options_undefined_false_test.go +36 -36
  310. package/native/cmd/ttsc-typia/project_catalog_transform_coverage_test.go +73 -73
  311. package/native/cmd/ttsc-typia/protobuf_object_generic_union_encode_transform_test.go +248 -248
  312. package/native/cmd/ttsc-typia/protobuf_sequence_field_numbers_transform_test.go +107 -107
  313. package/native/cmd/ttsc-typia/random_recursive_min_items_diagnostic_test.go +234 -234
  314. package/native/cmd/ttsc-typia/random_unsatisfiable_recursive_diagnostic_test.go +146 -146
  315. package/native/cmd/ttsc-typia/recursive_visit_tracking_transform_test.go +473 -473
  316. package/native/cmd/ttsc-typia/run_default_build_route_test.go +31 -31
  317. package/native/cmd/ttsc-typia/schema_dts_role_transform_test.go +404 -404
  318. package/native/cmd/ttsc-typia/shallow_depth_argument_error_transform_test.go +88 -88
  319. package/native/cmd/ttsc-typia/shallow_depth_limit_transform_test.go +278 -278
  320. package/native/cmd/ttsc-typia/shallow_depth_runtime_test.go +173 -173
  321. package/native/cmd/ttsc-typia/shallow_factory_depth_runtime_test.go +171 -171
  322. package/native/cmd/ttsc-typia/shallow_nested_depth_transform_test.go +148 -148
  323. package/native/cmd/ttsc-typia/template_interpolation_type_tags_transform_test.go +322 -322
  324. package/native/cmd/ttsc-typia/template_literal_type_tags_transform_test.go +162 -162
  325. package/native/cmd/ttsc-typia/transform.go +270 -270
  326. package/native/cmd/ttsc-typia/transform_declaration_source_produces_no_js_test.go +59 -59
  327. package/native/cmd/ttsc-typia/transform_diagnostics_preserve_details_test.go +203 -203
  328. package/native/cmd/ttsc-typia/transform_fixtures_emit_coverage_test.go +528 -528
  329. package/native/cmd/ttsc-typia/transform_helpers_test.go +155 -155
  330. package/native/core/context/EmitFactory.go +39 -39
  331. package/native/core/context/IProgrammerProps.go +14 -14
  332. package/native/core/context/ITransformOptions.go +9 -9
  333. package/native/core/context/ITypiaContext.go +36 -36
  334. package/native/core/context/ImportProgrammer.go +388 -354
  335. package/native/core/context/TransformerError.go +117 -117
  336. package/native/core/context/import_programmer_module_identifier_test.go +29 -0
  337. package/native/core/context/import_programmer_statement_coverage_test.go +71 -71
  338. package/native/core/context/index.go +1 -1
  339. package/native/core/context/transformer_error_formatting_test.go +100 -100
  340. package/native/core/factories/CommentFactory.go +27 -27
  341. package/native/core/factories/ExpressionFactory.go +357 -357
  342. package/native/core/factories/FormatCheatSheet.go +30 -30
  343. package/native/core/factories/IdentifierFactory.go +172 -172
  344. package/native/core/factories/JsonMetadataFactory.go +154 -154
  345. package/native/core/factories/LiteralFactory.go +319 -282
  346. package/native/core/factories/MetadataCommentTagFactory.go +446 -446
  347. package/native/core/factories/MetadataFactory.go +543 -543
  348. package/native/core/factories/MetadataTypeTagFactory.go +560 -560
  349. package/native/core/factories/MetadataTypeTagSchemaFactory.go +117 -117
  350. package/native/core/factories/NumericRangeFactory.go +132 -132
  351. package/native/core/factories/ProtobufFactory.go +1090 -1090
  352. package/native/core/factories/StatementFactory.go +114 -114
  353. package/native/core/factories/TemplateFactory.go +82 -82
  354. package/native/core/factories/TypeFactory.go +176 -176
  355. package/native/core/factories/ValueFactory.go +43 -43
  356. package/native/core/factories/factory_utility_coverage_test.go +1006 -1006
  357. package/native/core/factories/index.go +1 -1
  358. package/native/core/factories/internal/metadata/IMetadataIteratorProps.go +70 -70
  359. package/native/core/factories/internal/metadata/MetadataHelper.go +425 -425
  360. package/native/core/factories/internal/metadata/comment_tags_coverage_test.go +184 -184
  361. package/native/core/factories/internal/metadata/emend_metadata_atomics.go +80 -80
  362. package/native/core/factories/internal/metadata/emplace_metadata_alias.go +41 -41
  363. package/native/core/factories/internal/metadata/emplace_metadata_array_type.go +44 -44
  364. package/native/core/factories/internal/metadata/emplace_metadata_object.go +599 -599
  365. package/native/core/factories/internal/metadata/emplace_metadata_tuple.go +69 -69
  366. package/native/core/factories/internal/metadata/explore_metadata.go +75 -75
  367. package/native/core/factories/internal/metadata/iterate_metadata.go +55 -55
  368. package/native/core/factories/internal/metadata/iterate_metadata_alias.go +36 -36
  369. package/native/core/factories/internal/metadata/iterate_metadata_array.go +77 -77
  370. package/native/core/factories/internal/metadata/iterate_metadata_atomic.go +63 -63
  371. package/native/core/factories/internal/metadata/iterate_metadata_coalesce.go +30 -30
  372. package/native/core/factories/internal/metadata/iterate_metadata_collection.go +366 -366
  373. package/native/core/factories/internal/metadata/iterate_metadata_collection_branch_matrix_test.go +201 -201
  374. package/native/core/factories/internal/metadata/iterate_metadata_comment_tags.go +34 -34
  375. package/native/core/factories/internal/metadata/iterate_metadata_constant.go +139 -139
  376. package/native/core/factories/internal/metadata/iterate_metadata_escape.go +56 -56
  377. package/native/core/factories/internal/metadata/iterate_metadata_function.go +93 -93
  378. package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +1054 -1054
  379. package/native/core/factories/internal/metadata/iterate_metadata_intersection_brand_coverage_test.go +114 -114
  380. package/native/core/factories/internal/metadata/iterate_metadata_intersection_coverage_test.go +106 -106
  381. package/native/core/factories/internal/metadata/iterate_metadata_intersection_shareable_name_test.go +22 -22
  382. package/native/core/factories/internal/metadata/iterate_metadata_map.go +55 -55
  383. package/native/core/factories/internal/metadata/iterate_metadata_native.go +122 -122
  384. package/native/core/factories/internal/metadata/iterate_metadata_object.go +35 -35
  385. package/native/core/factories/internal/metadata/iterate_metadata_set.go +41 -41
  386. package/native/core/factories/internal/metadata/iterate_metadata_sort.go +202 -202
  387. package/native/core/factories/internal/metadata/iterate_metadata_template.go +41 -41
  388. package/native/core/factories/internal/metadata/iterate_metadata_tuple.go +24 -24
  389. package/native/core/factories/internal/metadata/iterate_metadata_union.go +40 -40
  390. package/native/core/factories/internal/metadata/js_doc_parameter_name_reads_qualified_name_test.go +55 -55
  391. package/native/core/factories/internal/metadata/optional_coalesce_coverage_test.go +38 -38
  392. package/native/core/factories/internal/metadata/sort_constants_coverage_test.go +63 -63
  393. package/native/core/factories/json_metadata_factory_dedupes_bigint_diagnostics_test.go +36 -36
  394. package/native/core/factories/json_metadata_factory_rejects_bigint_native_test.go +29 -29
  395. package/native/core/factories/literal_factory_ordered_object_marshals_json_test.go +40 -0
  396. package/native/core/factories/metadata_comment_tag_factory_coverage_test.go +239 -239
  397. package/native/core/factories/protobuf_factory_rejects_invalid_field_names_test.go +75 -75
  398. package/native/core/index.go +1 -1
  399. package/native/core/programmers/AssertProgrammer.go +511 -511
  400. package/native/core/programmers/IsProgrammer.go +418 -419
  401. package/native/core/programmers/RandomProgrammer.go +1448 -1448
  402. package/native/core/programmers/ValidateProgrammer.go +488 -488
  403. package/native/core/programmers/compare/CompareEqualProgrammer.go +668 -668
  404. package/native/core/programmers/compare/CompareLessProgrammer.go +489 -489
  405. package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +172 -172
  406. package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +135 -135
  407. package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +131 -131
  408. package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +106 -106
  409. package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +222 -222
  410. package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +129 -129
  411. package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +172 -172
  412. package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +252 -252
  413. package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +147 -147
  414. package/native/core/programmers/functional/functional_assert_helper_coverage_test.go +26 -26
  415. package/native/core/programmers/functional/index.go +1 -1
  416. package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +53 -53
  417. package/native/core/programmers/helpers/AtomicPredicator.go +75 -75
  418. package/native/core/programmers/helpers/ClassifyJoiner.go +174 -174
  419. package/native/core/programmers/helpers/CloneJoiner.go +307 -307
  420. package/native/core/programmers/helpers/FunctionProgrammer.go +218 -218
  421. package/native/core/programmers/helpers/HttpMetadataUtil.go +30 -30
  422. package/native/core/programmers/helpers/ICheckEntry.go +14 -14
  423. package/native/core/programmers/helpers/IExpressionEntry.go +15 -15
  424. package/native/core/programmers/helpers/ModuloText.go +26 -26
  425. package/native/core/programmers/helpers/NotationJoiner.go +204 -204
  426. package/native/core/programmers/helpers/OptionPredicator.go +39 -39
  427. package/native/core/programmers/helpers/ProtobufUtil.go +273 -273
  428. package/native/core/programmers/helpers/ProtobufWire.go +14 -14
  429. package/native/core/programmers/helpers/PruneJoiner.go +290 -290
  430. package/native/core/programmers/helpers/RandomJoiner.go +805 -805
  431. package/native/core/programmers/helpers/StringifyJoinder.go +409 -409
  432. package/native/core/programmers/helpers/StringifyPredicator.go +25 -25
  433. package/native/core/programmers/helpers/UnionExplorer.go +966 -966
  434. package/native/core/programmers/helpers/UnionPredicator.go +92 -92
  435. package/native/core/programmers/helpers/clone_joiner_optional_condition_test.go +70 -70
  436. package/native/core/programmers/helpers/disable_function_programmer_declare.go +10 -10
  437. package/native/core/programmers/helpers/function_programmer_unique_names_test.go +54 -54
  438. package/native/core/programmers/helpers/joiner_branch_coverage_test.go +147 -147
  439. package/native/core/programmers/helpers/random_joiner_recursive_array_guard_test.go +166 -166
  440. package/native/core/programmers/helpers/union_explorer_coverage_test.go +135 -135
  441. package/native/core/programmers/helpers/union_predicator_checks_neighbor_flag_test.go +34 -34
  442. package/native/core/programmers/helpers/union_predicator_skips_atomic_like_native_fields_test.go +65 -65
  443. package/native/core/programmers/helpers/union_predicator_skips_collection_bucket_fields_test.go +72 -72
  444. package/native/core/programmers/helpers/union_predicator_skips_shared_native_names_test.go +239 -239
  445. package/native/core/programmers/helpers/union_predicator_skips_shared_object_fields_test.go +43 -43
  446. package/native/core/programmers/helpers/union_predicator_skips_shared_template_fields_test.go +57 -57
  447. package/native/core/programmers/http/HttpAssertFormDataProgrammer.go +116 -116
  448. package/native/core/programmers/http/HttpAssertHeadersProgrammer.go +59 -59
  449. package/native/core/programmers/http/HttpAssertQueryProgrammer.go +71 -71
  450. package/native/core/programmers/http/HttpFormDataProgrammer.go +416 -416
  451. package/native/core/programmers/http/HttpHeadersProgrammer.go +428 -428
  452. package/native/core/programmers/http/HttpIsFormDataProgrammer.go +142 -142
  453. package/native/core/programmers/http/HttpIsHeadersProgrammer.go +53 -53
  454. package/native/core/programmers/http/HttpIsQueryProgrammer.go +65 -65
  455. package/native/core/programmers/http/HttpParameterProgrammer.go +190 -190
  456. package/native/core/programmers/http/HttpQueryProgrammer.go +484 -484
  457. package/native/core/programmers/http/HttpValidateFormDataProgrammer.go +110 -110
  458. package/native/core/programmers/http/HttpValidateHeadersProgrammer.go +56 -56
  459. package/native/core/programmers/http/HttpValidateQueryProgrammer.go +68 -68
  460. package/native/core/programmers/http/http_programmer_helper_coverage_test.go +120 -120
  461. package/native/core/programmers/http/index.go +1 -1
  462. package/native/core/programmers/index.go +1 -1
  463. package/native/core/programmers/internal/CheckerProgrammer.go +2064 -2064
  464. package/native/core/programmers/internal/FeatureProgrammer.go +1361 -1361
  465. package/native/core/programmers/internal/feature_programmer_visit_guard_test.go +70 -70
  466. package/native/core/programmers/internal/internal_utility_coverage_test.go +384 -384
  467. package/native/core/programmers/iterate/check_array_length.go +64 -64
  468. package/native/core/programmers/iterate/check_bigint.go +78 -78
  469. package/native/core/programmers/iterate/check_dynamic_key.go +271 -271
  470. package/native/core/programmers/iterate/check_dynamic_key_tag_rows_test.go +46 -46
  471. package/native/core/programmers/iterate/check_dynamic_properties.go +292 -292
  472. package/native/core/programmers/iterate/check_everything.go +33 -33
  473. package/native/core/programmers/iterate/check_exclude.go +88 -88
  474. package/native/core/programmers/iterate/check_native.go +38 -38
  475. package/native/core/programmers/iterate/check_number.go +180 -180
  476. package/native/core/programmers/iterate/check_object.go +113 -113
  477. package/native/core/programmers/iterate/check_object_strict_optional_undefined_test.go +74 -74
  478. package/native/core/programmers/iterate/check_object_type_tags.go +64 -64
  479. package/native/core/programmers/iterate/check_string.go +78 -78
  480. package/native/core/programmers/iterate/check_template.go +346 -346
  481. package/native/core/programmers/iterate/check_union_array_like.go +422 -422
  482. package/native/core/programmers/iterate/decode_union_object.go +157 -157
  483. package/native/core/programmers/iterate/feature_object_entries.go +188 -188
  484. package/native/core/programmers/iterate/iterate_check_coverage_test.go +178 -178
  485. package/native/core/programmers/iterate/iterate_utility_coverage_test.go +302 -302
  486. package/native/core/programmers/iterate/json_schema_alias.go +62 -62
  487. package/native/core/programmers/iterate/json_schema_array.go +66 -66
  488. package/native/core/programmers/iterate/json_schema_bigint.go +17 -17
  489. package/native/core/programmers/iterate/json_schema_boolean.go +17 -17
  490. package/native/core/programmers/iterate/json_schema_constant.go +53 -53
  491. package/native/core/programmers/iterate/json_schema_description.go +21 -21
  492. package/native/core/programmers/iterate/json_schema_discriminator.go +57 -57
  493. package/native/core/programmers/iterate/json_schema_escaped.go +68 -68
  494. package/native/core/programmers/iterate/json_schema_jsDocTags.go +48 -48
  495. package/native/core/programmers/iterate/json_schema_native.go +106 -106
  496. package/native/core/programmers/iterate/json_schema_number.go +17 -17
  497. package/native/core/programmers/iterate/json_schema_object.go +187 -184
  498. package/native/core/programmers/iterate/json_schema_plugin.go +47 -47
  499. package/native/core/programmers/iterate/json_schema_station.go +251 -251
  500. package/native/core/programmers/iterate/json_schema_string.go +17 -17
  501. package/native/core/programmers/iterate/json_schema_template.go +63 -63
  502. package/native/core/programmers/iterate/json_schema_title.go +25 -25
  503. package/native/core/programmers/iterate/json_schema_tuple.go +41 -41
  504. package/native/core/programmers/iterate/metadata_to_pattern.go +64 -64
  505. package/native/core/programmers/iterate/postfix_of_tuple.go +12 -12
  506. package/native/core/programmers/iterate/prune_object_properties.go +105 -105
  507. package/native/core/programmers/iterate/stringify_dynamic_properties.go +219 -219
  508. package/native/core/programmers/iterate/stringify_native.go +14 -14
  509. package/native/core/programmers/iterate/stringify_regular_properties.go +112 -112
  510. package/native/core/programmers/iterate/template_interpolation_tags_test.go +495 -495
  511. package/native/core/programmers/iterate/template_runtime_pattern.go +262 -262
  512. package/native/core/programmers/iterate/template_to_pattern.go +29 -29
  513. package/native/core/programmers/iterate/wrap_metadata_rest_tuple.go +23 -23
  514. package/native/core/programmers/json/JsonApplicationProgrammer.go +380 -380
  515. package/native/core/programmers/json/JsonAssertParseProgrammer.go +115 -115
  516. package/native/core/programmers/json/JsonAssertStringifyProgrammer.go +108 -108
  517. package/native/core/programmers/json/JsonIsParseProgrammer.go +162 -162
  518. package/native/core/programmers/json/JsonIsStringifyProgrammer.go +113 -113
  519. package/native/core/programmers/json/JsonSchemaProgrammer.go +94 -94
  520. package/native/core/programmers/json/JsonSchemasProgrammer.go +142 -142
  521. package/native/core/programmers/json/JsonStringifyProgrammer.go +1528 -1508
  522. package/native/core/programmers/json/JsonValidateParseProgrammer.go +105 -105
  523. package/native/core/programmers/json/JsonValidateStringifyProgrammer.go +126 -126
  524. package/native/core/programmers/json/index.go +1 -1
  525. package/native/core/programmers/json/json_schema_programmer_coverage_test.go +198 -198
  526. package/native/core/programmers/json/json_schemas_programmer_dedupes_bigint_diagnostics_test.go +37 -37
  527. package/native/core/programmers/json/json_schemas_programmer_rejects_bigint_native_test.go +29 -29
  528. package/native/core/programmers/json/json_stringify_programmer_coverage_test.go +422 -422
  529. package/native/core/programmers/llm/LlmApplicationProgrammer.go +526 -526
  530. package/native/core/programmers/llm/LlmCoerceProgrammer.go +109 -109
  531. package/native/core/programmers/llm/LlmControllerProgrammer.go +51 -51
  532. package/native/core/programmers/llm/LlmMetadataFactory.go +89 -89
  533. package/native/core/programmers/llm/LlmParametersProgrammer.go +141 -141
  534. package/native/core/programmers/llm/LlmParseProgrammer.go +121 -121
  535. package/native/core/programmers/llm/LlmSchemaProgrammer.go +902 -846
  536. package/native/core/programmers/llm/LlmStructuredOutputProgrammer.go +147 -147
  537. package/native/core/programmers/llm/index.go +1 -1
  538. package/native/core/programmers/llm/llm_application_programmer_coverage_test.go +166 -166
  539. package/native/core/programmers/llm/llm_schema_programmer_coverage_test.go +282 -282
  540. package/native/core/programmers/llm/llm_schema_programmer_dedupes_bigint_diagnostics_test.go +38 -38
  541. package/native/core/programmers/llm/llm_schema_programmer_rejects_bigint_native_test.go +30 -30
  542. package/native/core/programmers/llm/llm_schema_programmer_rejects_exclude_tag_in_strict_test.go +52 -52
  543. package/native/core/programmers/notations/NotationAssertGeneralProgrammer.go +107 -107
  544. package/native/core/programmers/notations/NotationGeneralProgrammer.go +1441 -1441
  545. package/native/core/programmers/notations/NotationIsGeneralProgrammer.go +112 -112
  546. package/native/core/programmers/notations/NotationValidateGeneralProgrammer.go +131 -131
  547. package/native/core/programmers/notations/index.go +1 -1
  548. package/native/core/programmers/notations/notation_general_helpers_test.go +395 -395
  549. package/native/core/programmers/notations/notation_general_programmer_snake_prefix_test.go +44 -44
  550. package/native/core/programmers/plain/PlainAssertClassifyProgrammer.go +111 -111
  551. package/native/core/programmers/plain/PlainAssertCloneProgrammer.go +102 -102
  552. package/native/core/programmers/plain/PlainAssertPruneProgrammer.go +117 -117
  553. package/native/core/programmers/plain/PlainClassifyProgrammer.go +2205 -2205
  554. package/native/core/programmers/plain/PlainCloneProgrammer.go +1254 -1254
  555. package/native/core/programmers/plain/PlainIsCloneProgrammer.go +117 -117
  556. package/native/core/programmers/plain/PlainIsPruneProgrammer.go +106 -106
  557. package/native/core/programmers/plain/PlainPruneProgrammer.go +837 -837
  558. package/native/core/programmers/plain/PlainValidateClassifyProgrammer.go +127 -127
  559. package/native/core/programmers/plain/PlainValidateCloneProgrammer.go +123 -123
  560. package/native/core/programmers/plain/PlainValidatePruneProgrammer.go +114 -114
  561. package/native/core/programmers/plain/index.go +1 -1
  562. package/native/core/programmers/plain/plain_programmer_helper_coverage_test.go +284 -284
  563. package/native/core/programmers/plain/plain_prune_programmer_branch_matrix_test.go +145 -145
  564. package/native/core/programmers/programmer_direct_helper_coverage_test.go +70 -70
  565. package/native/core/programmers/protobuf/ProtobufAssertDecodeProgrammer.go +125 -125
  566. package/native/core/programmers/protobuf/ProtobufAssertEncodeProgrammer.go +143 -143
  567. package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +861 -861
  568. package/native/core/programmers/protobuf/ProtobufEncodeProgrammer.go +1269 -1269
  569. package/native/core/programmers/protobuf/ProtobufIsDecodeProgrammer.go +122 -122
  570. package/native/core/programmers/protobuf/ProtobufIsEncodeProgrammer.go +115 -115
  571. package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +269 -269
  572. package/native/core/programmers/protobuf/ProtobufValidateDecodeProgrammer.go +111 -111
  573. package/native/core/programmers/protobuf/ProtobufValidateEncodeProgrammer.go +145 -145
  574. package/native/core/programmers/protobuf/index.go +1 -1
  575. package/native/core/programmers/protobuf/protobuf_programmer_helper_coverage_test.go +454 -454
  576. package/native/core/programmers/random_programmer_helper_coverage_test.go +367 -367
  577. package/native/core/programmers/random_programmer_min_items_tag_test.go +44 -44
  578. package/native/core/programmers/reflect/ReflectLiteralsProgrammer.go +125 -125
  579. package/native/core/schemas/index.go +1 -1
  580. package/native/core/schemas/metadata/IMetadataDictionary.go +8 -8
  581. package/native/core/schemas/metadata/IMetadataTypeTagSequence.go +53 -53
  582. package/native/core/schemas/metadata/MetadataAlias.go +36 -36
  583. package/native/core/schemas/metadata/MetadataAliasType.go +64 -64
  584. package/native/core/schemas/metadata/MetadataApplication.go +41 -41
  585. package/native/core/schemas/metadata/MetadataArray.go +36 -36
  586. package/native/core/schemas/metadata/MetadataArrayType.go +59 -59
  587. package/native/core/schemas/metadata/MetadataAtomic.go +69 -69
  588. package/native/core/schemas/metadata/MetadataCollection.go +698 -698
  589. package/native/core/schemas/metadata/MetadataComponents.go +122 -122
  590. package/native/core/schemas/metadata/MetadataConstant.go +47 -47
  591. package/native/core/schemas/metadata/MetadataConstantValue.go +97 -97
  592. package/native/core/schemas/metadata/MetadataEscaped.go +40 -40
  593. package/native/core/schemas/metadata/MetadataFunction.go +46 -46
  594. package/native/core/schemas/metadata/MetadataMap.go +45 -45
  595. package/native/core/schemas/metadata/MetadataNative.go +72 -72
  596. package/native/core/schemas/metadata/MetadataObject.go +36 -36
  597. package/native/core/schemas/metadata/MetadataObjectType.go +223 -223
  598. package/native/core/schemas/metadata/MetadataParameter.go +46 -46
  599. package/native/core/schemas/metadata/MetadataProperty.go +50 -50
  600. package/native/core/schemas/metadata/MetadataSchema.go +1485 -1485
  601. package/native/core/schemas/metadata/MetadataSet.go +41 -41
  602. package/native/core/schemas/metadata/MetadataTemplate.go +70 -70
  603. package/native/core/schemas/metadata/MetadataTuple.go +20 -20
  604. package/native/core/schemas/metadata/MetadataTupleType.go +69 -69
  605. package/native/core/schemas/metadata/index.go +1 -1
  606. package/native/core/schemas/metadata/metadata_object_type_required_literal_property_test.go +51 -51
  607. package/native/core/schemas/metadata/metadata_schema_covers_tag_matrix_test.go +125 -125
  608. package/native/core/schemas/metadata/metadata_schema_sole_literal_caches_pointer_test.go +38 -38
  609. package/native/core/schemas/metadata/schema_sequence_and_json_coverage_test.go +427 -427
  610. package/native/core/schemas/protobuf/IProtobufProperty.go +6 -6
  611. package/native/core/schemas/protobuf/IProtobufPropertyType.go +55 -55
  612. package/native/core/schemas/protobuf/IProtobufSchema.go +54 -54
  613. package/native/core/schemas/protobuf/index.go +1 -1
  614. package/native/core/schemas/protobuf/protobuf_marker_coverage_test.go +58 -58
  615. package/native/core/typings/Writable.go +5 -5
  616. package/native/core/utils/PatternUtil.go +57 -57
  617. package/native/core/utils/ProtobufNameEncoder.go +47 -47
  618. package/native/go.mod +31 -31
  619. package/native/go.sum +22 -22
  620. package/native/go.work +22 -22
  621. package/native/transform/CallExpressionTransformer.go +719 -719
  622. package/native/transform/FileTransformer.go +221 -221
  623. package/native/transform/ITransformProps.go +5 -5
  624. package/native/transform/ImportTransformer.go +285 -285
  625. package/native/transform/NodeTransformer.go +25 -25
  626. package/native/transform/TransformerError.go +11 -11
  627. package/native/transform/TypiaGenerator.go +171 -171
  628. package/native/transform/call_expression_transformer_registry_coverage_test.go +53 -53
  629. package/native/transform/call_expression_transformer_target_test.go +46 -46
  630. package/native/transform/features/AssertTransformer.go +39 -39
  631. package/native/transform/features/CreateAssertTransformer.go +39 -39
  632. package/native/transform/features/CreateIsTransformer.go +35 -35
  633. package/native/transform/features/CreateRandomTransformer.go +47 -47
  634. package/native/transform/features/CreateShallowTransformer.go +33 -33
  635. package/native/transform/features/CreateValidateTransformer.go +35 -35
  636. package/native/transform/features/IsTransformer.go +35 -35
  637. package/native/transform/features/RandomTransformer.go +54 -54
  638. package/native/transform/features/ShallowTransformer.go +65 -65
  639. package/native/transform/features/ValidateTransformer.go +35 -35
  640. package/native/transform/features/compare/CompareCoverTransformer.go +14 -14
  641. package/native/transform/features/compare/CompareCreateCoverTransformer.go +14 -14
  642. package/native/transform/features/compare/CompareCreateEqualTransformer.go +14 -14
  643. package/native/transform/features/compare/CompareCreateLessTransformer.go +14 -14
  644. package/native/transform/features/compare/CompareEqualTransformer.go +73 -73
  645. package/native/transform/features/compare/CompareLessTransformer.go +71 -71
  646. package/native/transform/features/feature_transformer_entry_coverage_test.go +59 -59
  647. package/native/transform/features/functional/FunctionalGenericTransformer.go +70 -70
  648. package/native/transform/features/http/CreateHttpAssertFormDataTransformer.go +22 -22
  649. package/native/transform/features/http/CreateHttpAssertHeadersTransformer.go +22 -22
  650. package/native/transform/features/http/CreateHttpAssertQueryTransformer.go +28 -28
  651. package/native/transform/features/http/CreateHttpFormDataTransformer.go +22 -22
  652. package/native/transform/features/http/CreateHttpHeadersTransformer.go +22 -22
  653. package/native/transform/features/http/CreateHttpIsFormDataTransformer.go +22 -22
  654. package/native/transform/features/http/CreateHttpIsHeadersTransformer.go +22 -22
  655. package/native/transform/features/http/CreateHttpIsQueryTransformer.go +28 -28
  656. package/native/transform/features/http/CreateHttpParameterTransformer.go +22 -22
  657. package/native/transform/features/http/CreateHttpQueryTransformer.go +28 -28
  658. package/native/transform/features/http/CreateHttpValidateFormDataTransformer.go +22 -22
  659. package/native/transform/features/http/CreateHttpValidateHeadersTransformer.go +22 -22
  660. package/native/transform/features/http/CreateHttpValidateQueryTransformer.go +28 -28
  661. package/native/transform/features/http/HttpAssertFormDataTransformer.go +22 -22
  662. package/native/transform/features/http/HttpAssertHeadersTransformer.go +22 -22
  663. package/native/transform/features/http/HttpAssertQueryTransformer.go +28 -28
  664. package/native/transform/features/http/HttpFormDataTransformer.go +22 -22
  665. package/native/transform/features/http/HttpHeadersTransformer.go +22 -22
  666. package/native/transform/features/http/HttpIsFormDataTransformer.go +22 -22
  667. package/native/transform/features/http/HttpIsHeadersTransformer.go +22 -22
  668. package/native/transform/features/http/HttpIsQueryTransformer.go +28 -28
  669. package/native/transform/features/http/HttpParameterTransformer.go +22 -22
  670. package/native/transform/features/http/HttpQueryTransformer.go +28 -28
  671. package/native/transform/features/http/HttpValidateFormDataTransformer.go +22 -22
  672. package/native/transform/features/http/HttpValidateHeadersTransformer.go +22 -22
  673. package/native/transform/features/http/HttpValidateQueryTransformer.go +28 -28
  674. package/native/transform/features/http/http_transformer_entry_coverage_test.go +65 -65
  675. package/native/transform/features/json/JsonApplicationTransformer.go +75 -75
  676. package/native/transform/features/json/JsonAssertParseTransformer.go +22 -22
  677. package/native/transform/features/json/JsonAssertStringifyTransformer.go +22 -22
  678. package/native/transform/features/json/JsonCreateAssertParseTransformer.go +22 -22
  679. package/native/transform/features/json/JsonCreateAssertStringifyTransformer.go +22 -22
  680. package/native/transform/features/json/JsonCreateIsParseTransformer.go +22 -22
  681. package/native/transform/features/json/JsonCreateIsStringifyTransformer.go +22 -22
  682. package/native/transform/features/json/JsonCreateStringifyTransformer.go +22 -22
  683. package/native/transform/features/json/JsonCreateValidateParseTransformer.go +22 -22
  684. package/native/transform/features/json/JsonCreateValidateStringifyProgrammer.go +22 -22
  685. package/native/transform/features/json/JsonIsParseTransformer.go +22 -22
  686. package/native/transform/features/json/JsonIsStringifyTransformer.go +22 -22
  687. package/native/transform/features/json/JsonSchemaTransformer.go +175 -175
  688. package/native/transform/features/json/JsonSchemasTransformer.go +109 -109
  689. package/native/transform/features/json/JsonStringifyTransformer.go +22 -22
  690. package/native/transform/features/json/JsonValidateParseTransformer.go +22 -22
  691. package/native/transform/features/json/JsonValidateStringifyTransformer.go +22 -22
  692. package/native/transform/features/json/json_transformer_entry_coverage_test.go +56 -56
  693. package/native/transform/features/llm/LlmApplicationTransformer.go +54 -54
  694. package/native/transform/features/llm/LlmCoerceTransformer.go +63 -63
  695. package/native/transform/features/llm/LlmControllerTransformer.go +59 -59
  696. package/native/transform/features/llm/LlmCreateCoerceTransformer.go +54 -54
  697. package/native/transform/features/llm/LlmCreateParseTransformer.go +54 -54
  698. package/native/transform/features/llm/LlmParametersTransformer.go +49 -49
  699. package/native/transform/features/llm/LlmParseTransformer.go +63 -63
  700. package/native/transform/features/llm/LlmSchemaTransformer.go +167 -167
  701. package/native/transform/features/llm/LlmStructuredOutputTransformer.go +55 -55
  702. package/native/transform/features/llm/llm_transformer_entry_coverage_test.go +48 -48
  703. package/native/transform/features/notations/NotationAssertGeneralTransformer.go +27 -27
  704. package/native/transform/features/notations/NotationCreateAssertGeneralTransformer.go +27 -27
  705. package/native/transform/features/notations/NotationCreateGeneralTransformer.go +27 -27
  706. package/native/transform/features/notations/NotationCreateIsGeneralTransformer.go +27 -27
  707. package/native/transform/features/notations/NotationCreateValidateGeneralTransformer.go +27 -27
  708. package/native/transform/features/notations/NotationGeneralTransformer.go +36 -36
  709. package/native/transform/features/notations/NotationIsGeneralTransformer.go +27 -27
  710. package/native/transform/features/notations/NotationValidateGeneralTransformer.go +27 -27
  711. package/native/transform/features/notations/notation_transformer_entry_coverage_test.go +58 -58
  712. package/native/transform/features/plain/PlainAssertClassifyTransformer.go +22 -22
  713. package/native/transform/features/plain/PlainAssertCloneTransformer.go +22 -22
  714. package/native/transform/features/plain/PlainAssertPruneTransformer.go +22 -22
  715. package/native/transform/features/plain/PlainClassifyTransformer.go +22 -22
  716. package/native/transform/features/plain/PlainCloneTransformer.go +22 -22
  717. package/native/transform/features/plain/PlainCreateAssertClassifyTransformer.go +22 -22
  718. package/native/transform/features/plain/PlainCreateAssertCloneTransformer.go +22 -22
  719. package/native/transform/features/plain/PlainCreateAssertPruneTransformer.go +22 -22
  720. package/native/transform/features/plain/PlainCreateClassifyTransformer.go +22 -22
  721. package/native/transform/features/plain/PlainCreateCloneTransformer.go +22 -22
  722. package/native/transform/features/plain/PlainCreateIsCloneTransformer.go +22 -22
  723. package/native/transform/features/plain/PlainCreateIsPruneTransformer.go +22 -22
  724. package/native/transform/features/plain/PlainCreatePruneTransformer.go +22 -22
  725. package/native/transform/features/plain/PlainCreateValidateClassifyTransformer.go +22 -22
  726. package/native/transform/features/plain/PlainCreateValidateCloneTransformer.go +22 -22
  727. package/native/transform/features/plain/PlainCreateValidatePruneTransformer.go +22 -22
  728. package/native/transform/features/plain/PlainIsCloneTransformer.go +22 -22
  729. package/native/transform/features/plain/PlainIsPruneTransformer.go +22 -22
  730. package/native/transform/features/plain/PlainPruneTransformer.go +22 -22
  731. package/native/transform/features/plain/PlainValidateClassifyTransformer.go +22 -22
  732. package/native/transform/features/plain/PlainValidateCloneTransformer.go +22 -22
  733. package/native/transform/features/plain/PlainValidatePruneTransformer.go +22 -22
  734. package/native/transform/features/plain/plain_transformer_entry_coverage_test.go +61 -61
  735. package/native/transform/features/protobuf/ProtobufAssertDecodeTransformer.go +22 -22
  736. package/native/transform/features/protobuf/ProtobufAssertEncodeTransformer.go +22 -22
  737. package/native/transform/features/protobuf/ProtobufCreateAssertDecodeTransformer.go +22 -22
  738. package/native/transform/features/protobuf/ProtobufCreateAssertEncodeTransformer.go +22 -22
  739. package/native/transform/features/protobuf/ProtobufCreateDecodeTransformer.go +22 -22
  740. package/native/transform/features/protobuf/ProtobufCreateEncodeTransformer.go +22 -22
  741. package/native/transform/features/protobuf/ProtobufCreateIsDecodeTransformer.go +22 -22
  742. package/native/transform/features/protobuf/ProtobufCreateIsEncodeTransformer.go +22 -22
  743. package/native/transform/features/protobuf/ProtobufCreateValidateDecodeTransformer.go +22 -22
  744. package/native/transform/features/protobuf/ProtobufCreateValidateEncodeTransformer.go +22 -22
  745. package/native/transform/features/protobuf/ProtobufDecodeTransformer.go +22 -22
  746. package/native/transform/features/protobuf/ProtobufEncodeTransformer.go +22 -22
  747. package/native/transform/features/protobuf/ProtobufIsDecodeTransformer.go +22 -22
  748. package/native/transform/features/protobuf/ProtobufIsEncodeTransformer.go +22 -22
  749. package/native/transform/features/protobuf/ProtobufMessageTransformer.go +31 -31
  750. package/native/transform/features/protobuf/ProtobufValidateDecodeTransformer.go +22 -22
  751. package/native/transform/features/protobuf/ProtobufValidateEncodeTransformer.go +22 -22
  752. package/native/transform/features/protobuf/protobuf_transformer_entry_coverage_test.go +56 -56
  753. package/native/transform/features/reflect/ReflectLiteralsTransformer.go +32 -32
  754. package/native/transform/features/reflect/ReflectMetadataTransformer.go +73 -73
  755. package/native/transform/features/reflect/ReflectNameTransformer.go +100 -100
  756. package/native/transform/features/reflect/ReflectSchemaTransformer.go +153 -153
  757. package/native/transform/features/reflect/ReflectSchemasTransformer.go +68 -68
  758. package/native/transform/features/reflect/reflect_metadata_transformer_edge_branches_test.go +55 -55
  759. package/native/transform/features/reflect/reflect_transformer_entry_coverage_test.go +47 -47
  760. package/native/transform/file_transformer_coverage_test.go +94 -94
  761. package/native/transform/import_transformer_coverage_test.go +153 -153
  762. package/native/transform/index.go +1 -1
  763. package/native/transform/internal/GenericTransformer.go +236 -236
  764. package/native/transform/transform.go +57 -57
  765. package/native/transform/typia_generator_helpers_coverage_test.go +166 -166
  766. package/package.json +8 -15
  767. package/src/executable/TypiaGenerateWizard.ts +5 -1
  768. package/src/executable/generate/ttsc.ts +3 -4
  769. package/src/executable/typia.ts +8 -4
  770. package/src/internal/_ProtobufReader.ts +187 -187
  771. package/src/internal/_randomArray.ts +34 -34
  772. package/src/internal/_randomString.ts +30 -30
  773. package/src/re-exports.ts +8 -3
  774. package/src/transform.ts +21 -21
  775. package/lib/TypeGuardError2.mjs +0 -55
  776. package/lib/TypeGuardError2.mjs.map +0 -1
  777. package/lib/_virtual/NoTransformConfigurationError.mjs +0 -4
  778. package/lib/_virtual/NoTransformConfigurationError.mjs.map +0 -1
  779. package/lib/_virtual/TypeGuardError.mjs +0 -4
  780. package/lib/_virtual/TypeGuardError.mjs.map +0 -1
  781. package/lib/_virtual/TypiaGenerateWizard.mjs +0 -4
  782. package/lib/_virtual/TypiaGenerateWizard.mjs.map +0 -1
  783. package/lib/_virtual/_IProtobufWriter.mjs +0 -4
  784. package/lib/_virtual/_IProtobufWriter.mjs.map +0 -1
  785. package/lib/_virtual/_ProtobufReader.mjs +0 -4
  786. package/lib/_virtual/_ProtobufReader.mjs.map +0 -1
  787. package/lib/_virtual/_ProtobufSizer.mjs +0 -4
  788. package/lib/_virtual/_ProtobufSizer.mjs.map +0 -1
  789. package/lib/_virtual/_ProtobufWriter.mjs +0 -4
  790. package/lib/_virtual/_ProtobufWriter.mjs.map +0 -1
  791. package/lib/_virtual/__notationCapitalize.mjs +0 -4
  792. package/lib/_virtual/__notationCapitalize.mjs.map +0 -1
  793. package/lib/_virtual/__notationUnsnake.mjs +0 -4
  794. package/lib/_virtual/__notationUnsnake.mjs.map +0 -1
  795. package/lib/_virtual/_accessExpressionAsString.mjs +0 -4
  796. package/lib/_virtual/_accessExpressionAsString.mjs.map +0 -1
  797. package/lib/_virtual/_assertGuard.mjs +0 -4
  798. package/lib/_virtual/_assertGuard.mjs.map +0 -1
  799. package/lib/_virtual/_coerceLlmArguments.mjs +0 -4
  800. package/lib/_virtual/_coerceLlmArguments.mjs.map +0 -1
  801. package/lib/_virtual/_commander.mjs +0 -7
  802. package/lib/_virtual/_commander.mjs.map +0 -1
  803. package/lib/_virtual/_commonjsHelpers.mjs +0 -35
  804. package/lib/_virtual/_commonjsHelpers.mjs.map +0 -1
  805. package/lib/_virtual/_createStandardSchema.mjs +0 -4
  806. package/lib/_virtual/_createStandardSchema.mjs.map +0 -1
  807. package/lib/_virtual/_functionalTypeGuardErrorFactory.mjs +0 -4
  808. package/lib/_virtual/_functionalTypeGuardErrorFactory.mjs.map +0 -1
  809. package/lib/_virtual/_httpFormDataReadArray.mjs +0 -4
  810. package/lib/_virtual/_httpFormDataReadArray.mjs.map +0 -1
  811. package/lib/_virtual/_httpFormDataReadBigint.mjs +0 -4
  812. package/lib/_virtual/_httpFormDataReadBigint.mjs.map +0 -1
  813. package/lib/_virtual/_httpFormDataReadBlob.mjs +0 -4
  814. package/lib/_virtual/_httpFormDataReadBlob.mjs.map +0 -1
  815. package/lib/_virtual/_httpFormDataReadBoolean.mjs +0 -4
  816. package/lib/_virtual/_httpFormDataReadBoolean.mjs.map +0 -1
  817. package/lib/_virtual/_httpFormDataReadFile.mjs +0 -4
  818. package/lib/_virtual/_httpFormDataReadFile.mjs.map +0 -1
  819. package/lib/_virtual/_httpFormDataReadNumber.mjs +0 -4
  820. package/lib/_virtual/_httpFormDataReadNumber.mjs.map +0 -1
  821. package/lib/_virtual/_httpFormDataReadString.mjs +0 -4
  822. package/lib/_virtual/_httpFormDataReadString.mjs.map +0 -1
  823. package/lib/_virtual/_httpHeaderReadBigint.mjs +0 -4
  824. package/lib/_virtual/_httpHeaderReadBigint.mjs.map +0 -1
  825. package/lib/_virtual/_httpHeaderReadBoolean.mjs +0 -4
  826. package/lib/_virtual/_httpHeaderReadBoolean.mjs.map +0 -1
  827. package/lib/_virtual/_httpHeaderReadNumber.mjs +0 -4
  828. package/lib/_virtual/_httpHeaderReadNumber.mjs.map +0 -1
  829. package/lib/_virtual/_httpParameterReadBigint.mjs +0 -4
  830. package/lib/_virtual/_httpParameterReadBigint.mjs.map +0 -1
  831. package/lib/_virtual/_httpParameterReadBoolean.mjs +0 -4
  832. package/lib/_virtual/_httpParameterReadBoolean.mjs.map +0 -1
  833. package/lib/_virtual/_httpParameterReadNumber.mjs +0 -4
  834. package/lib/_virtual/_httpParameterReadNumber.mjs.map +0 -1
  835. package/lib/_virtual/_httpParameterReadString.mjs +0 -4
  836. package/lib/_virtual/_httpParameterReadString.mjs.map +0 -1
  837. package/lib/_virtual/_httpQueryParseURLSearchParams.mjs +0 -4
  838. package/lib/_virtual/_httpQueryParseURLSearchParams.mjs.map +0 -1
  839. package/lib/_virtual/_httpQueryReadArray.mjs +0 -4
  840. package/lib/_virtual/_httpQueryReadArray.mjs.map +0 -1
  841. package/lib/_virtual/_httpQueryReadBigint.mjs +0 -4
  842. package/lib/_virtual/_httpQueryReadBigint.mjs.map +0 -1
  843. package/lib/_virtual/_httpQueryReadBoolean.mjs +0 -4
  844. package/lib/_virtual/_httpQueryReadBoolean.mjs.map +0 -1
  845. package/lib/_virtual/_httpQueryReadNumber.mjs +0 -4
  846. package/lib/_virtual/_httpQueryReadNumber.mjs.map +0 -1
  847. package/lib/_virtual/_httpQueryReadString.mjs +0 -4
  848. package/lib/_virtual/_httpQueryReadString.mjs.map +0 -1
  849. package/lib/_virtual/_inquirer.mjs +0 -7
  850. package/lib/_virtual/_inquirer.mjs.map +0 -1
  851. package/lib/_virtual/_isBetween.mjs +0 -4
  852. package/lib/_virtual/_isBetween.mjs.map +0 -1
  853. package/lib/_virtual/_isBigintString.mjs +0 -4
  854. package/lib/_virtual/_isBigintString.mjs.map +0 -1
  855. package/lib/_virtual/_isFormatByte.mjs +0 -4
  856. package/lib/_virtual/_isFormatByte.mjs.map +0 -1
  857. package/lib/_virtual/_isFormatDate.mjs +0 -4
  858. package/lib/_virtual/_isFormatDate.mjs.map +0 -1
  859. package/lib/_virtual/_isFormatDateTime.mjs +0 -4
  860. package/lib/_virtual/_isFormatDateTime.mjs.map +0 -1
  861. package/lib/_virtual/_isFormatDuration.mjs +0 -4
  862. package/lib/_virtual/_isFormatDuration.mjs.map +0 -1
  863. package/lib/_virtual/_isFormatEmail.mjs +0 -4
  864. package/lib/_virtual/_isFormatEmail.mjs.map +0 -1
  865. package/lib/_virtual/_isFormatHostname.mjs +0 -4
  866. package/lib/_virtual/_isFormatHostname.mjs.map +0 -1
  867. package/lib/_virtual/_isFormatIdnEmail.mjs +0 -4
  868. package/lib/_virtual/_isFormatIdnEmail.mjs.map +0 -1
  869. package/lib/_virtual/_isFormatIdnHostname.mjs +0 -4
  870. package/lib/_virtual/_isFormatIdnHostname.mjs.map +0 -1
  871. package/lib/_virtual/_isFormatIpv4.mjs +0 -4
  872. package/lib/_virtual/_isFormatIpv4.mjs.map +0 -1
  873. package/lib/_virtual/_isFormatIpv6.mjs +0 -4
  874. package/lib/_virtual/_isFormatIpv6.mjs.map +0 -1
  875. package/lib/_virtual/_isFormatIri.mjs +0 -4
  876. package/lib/_virtual/_isFormatIri.mjs.map +0 -1
  877. package/lib/_virtual/_isFormatIriReference.mjs +0 -4
  878. package/lib/_virtual/_isFormatIriReference.mjs.map +0 -1
  879. package/lib/_virtual/_isFormatJsonPointer.mjs +0 -4
  880. package/lib/_virtual/_isFormatJsonPointer.mjs.map +0 -1
  881. package/lib/_virtual/_isFormatPassword.mjs +0 -4
  882. package/lib/_virtual/_isFormatPassword.mjs.map +0 -1
  883. package/lib/_virtual/_isFormatRegex.mjs +0 -4
  884. package/lib/_virtual/_isFormatRegex.mjs.map +0 -1
  885. package/lib/_virtual/_isFormatRelativeJsonPointer.mjs +0 -4
  886. package/lib/_virtual/_isFormatRelativeJsonPointer.mjs.map +0 -1
  887. package/lib/_virtual/_isFormatTime.mjs +0 -4
  888. package/lib/_virtual/_isFormatTime.mjs.map +0 -1
  889. package/lib/_virtual/_isFormatUri.mjs +0 -4
  890. package/lib/_virtual/_isFormatUri.mjs.map +0 -1
  891. package/lib/_virtual/_isFormatUriReference.mjs +0 -4
  892. package/lib/_virtual/_isFormatUriReference.mjs.map +0 -1
  893. package/lib/_virtual/_isFormatUriTemplate.mjs +0 -4
  894. package/lib/_virtual/_isFormatUriTemplate.mjs.map +0 -1
  895. package/lib/_virtual/_isFormatUrl.mjs +0 -4
  896. package/lib/_virtual/_isFormatUrl.mjs.map +0 -1
  897. package/lib/_virtual/_isFormatUuid.mjs +0 -4
  898. package/lib/_virtual/_isFormatUuid.mjs.map +0 -1
  899. package/lib/_virtual/_isTypeFloat.mjs +0 -4
  900. package/lib/_virtual/_isTypeFloat.mjs.map +0 -1
  901. package/lib/_virtual/_isTypeInt16.mjs +0 -4
  902. package/lib/_virtual/_isTypeInt16.mjs.map +0 -1
  903. package/lib/_virtual/_isTypeInt32.mjs +0 -4
  904. package/lib/_virtual/_isTypeInt32.mjs.map +0 -1
  905. package/lib/_virtual/_isTypeInt64.mjs +0 -4
  906. package/lib/_virtual/_isTypeInt64.mjs.map +0 -1
  907. package/lib/_virtual/_isTypeInt8.mjs +0 -4
  908. package/lib/_virtual/_isTypeInt8.mjs.map +0 -1
  909. package/lib/_virtual/_isTypeUint16.mjs +0 -4
  910. package/lib/_virtual/_isTypeUint16.mjs.map +0 -1
  911. package/lib/_virtual/_isTypeUint32.mjs +0 -4
  912. package/lib/_virtual/_isTypeUint32.mjs.map +0 -1
  913. package/lib/_virtual/_isTypeUint64.mjs +0 -4
  914. package/lib/_virtual/_isTypeUint64.mjs.map +0 -1
  915. package/lib/_virtual/_isTypeUint8.mjs +0 -4
  916. package/lib/_virtual/_isTypeUint8.mjs.map +0 -1
  917. package/lib/_virtual/_isUniqueItems.mjs +0 -4
  918. package/lib/_virtual/_isUniqueItems.mjs.map +0 -1
  919. package/lib/_virtual/_jsonStringifyNumber.mjs +0 -4
  920. package/lib/_virtual/_jsonStringifyNumber.mjs.map +0 -1
  921. package/lib/_virtual/_jsonStringifyRest.mjs +0 -4
  922. package/lib/_virtual/_jsonStringifyRest.mjs.map +0 -1
  923. package/lib/_virtual/_jsonStringifyString.mjs +0 -4
  924. package/lib/_virtual/_jsonStringifyString.mjs.map +0 -1
  925. package/lib/_virtual/_jsonStringifyTail.mjs +0 -4
  926. package/lib/_virtual/_jsonStringifyTail.mjs.map +0 -1
  927. package/lib/_virtual/_llmApplicationFinalize.mjs +0 -4
  928. package/lib/_virtual/_llmApplicationFinalize.mjs.map +0 -1
  929. package/lib/_virtual/_node_child_process.mjs +0 -7
  930. package/lib/_virtual/_node_child_process.mjs.map +0 -1
  931. package/lib/_virtual/_node_fs.mjs +0 -7
  932. package/lib/_virtual/_node_fs.mjs.map +0 -1
  933. package/lib/_virtual/_node_module.mjs +0 -7
  934. package/lib/_virtual/_node_module.mjs.map +0 -1
  935. package/lib/_virtual/_node_path.mjs +0 -7
  936. package/lib/_virtual/_node_path.mjs.map +0 -1
  937. package/lib/_virtual/_notationAny.mjs +0 -4
  938. package/lib/_virtual/_notationAny.mjs.map +0 -1
  939. package/lib/_virtual/_notationCamel.mjs +0 -4
  940. package/lib/_virtual/_notationCamel.mjs.map +0 -1
  941. package/lib/_virtual/_notationPascal.mjs +0 -4
  942. package/lib/_virtual/_notationPascal.mjs.map +0 -1
  943. package/lib/_virtual/_notationSnake.mjs +0 -4
  944. package/lib/_virtual/_notationSnake.mjs.map +0 -1
  945. package/lib/_virtual/_parseLlmArguments.mjs +0 -4
  946. package/lib/_virtual/_parseLlmArguments.mjs.map +0 -1
  947. package/lib/_virtual/_plainCloneAny.mjs +0 -4
  948. package/lib/_virtual/_plainCloneAny.mjs.map +0 -1
  949. package/lib/_virtual/_randexp.mjs +0 -7
  950. package/lib/_virtual/_randexp.mjs.map +0 -1
  951. package/lib/_virtual/_randomArray.mjs +0 -4
  952. package/lib/_virtual/_randomArray.mjs.map +0 -1
  953. package/lib/_virtual/_randomBigint.mjs +0 -4
  954. package/lib/_virtual/_randomBigint.mjs.map +0 -1
  955. package/lib/_virtual/_randomBoolean.mjs +0 -4
  956. package/lib/_virtual/_randomBoolean.mjs.map +0 -1
  957. package/lib/_virtual/_randomFormatByte.mjs +0 -4
  958. package/lib/_virtual/_randomFormatByte.mjs.map +0 -1
  959. package/lib/_virtual/_randomFormatDate.mjs +0 -4
  960. package/lib/_virtual/_randomFormatDate.mjs.map +0 -1
  961. package/lib/_virtual/_randomFormatDatetime.mjs +0 -4
  962. package/lib/_virtual/_randomFormatDatetime.mjs.map +0 -1
  963. package/lib/_virtual/_randomFormatDuration.mjs +0 -4
  964. package/lib/_virtual/_randomFormatDuration.mjs.map +0 -1
  965. package/lib/_virtual/_randomFormatEmail.mjs +0 -4
  966. package/lib/_virtual/_randomFormatEmail.mjs.map +0 -1
  967. package/lib/_virtual/_randomFormatHostname.mjs +0 -4
  968. package/lib/_virtual/_randomFormatHostname.mjs.map +0 -1
  969. package/lib/_virtual/_randomFormatIdnEmail.mjs +0 -4
  970. package/lib/_virtual/_randomFormatIdnEmail.mjs.map +0 -1
  971. package/lib/_virtual/_randomFormatIdnHostname.mjs +0 -4
  972. package/lib/_virtual/_randomFormatIdnHostname.mjs.map +0 -1
  973. package/lib/_virtual/_randomFormatIpv4.mjs +0 -4
  974. package/lib/_virtual/_randomFormatIpv4.mjs.map +0 -1
  975. package/lib/_virtual/_randomFormatIpv6.mjs +0 -4
  976. package/lib/_virtual/_randomFormatIpv6.mjs.map +0 -1
  977. package/lib/_virtual/_randomFormatIri.mjs +0 -4
  978. package/lib/_virtual/_randomFormatIri.mjs.map +0 -1
  979. package/lib/_virtual/_randomFormatIriReference.mjs +0 -4
  980. package/lib/_virtual/_randomFormatIriReference.mjs.map +0 -1
  981. package/lib/_virtual/_randomFormatJsonPointer.mjs +0 -4
  982. package/lib/_virtual/_randomFormatJsonPointer.mjs.map +0 -1
  983. package/lib/_virtual/_randomFormatPassword.mjs +0 -4
  984. package/lib/_virtual/_randomFormatPassword.mjs.map +0 -1
  985. package/lib/_virtual/_randomFormatRegex.mjs +0 -4
  986. package/lib/_virtual/_randomFormatRegex.mjs.map +0 -1
  987. package/lib/_virtual/_randomFormatRelativeJsonPointer.mjs +0 -4
  988. package/lib/_virtual/_randomFormatRelativeJsonPointer.mjs.map +0 -1
  989. package/lib/_virtual/_randomFormatTime.mjs +0 -4
  990. package/lib/_virtual/_randomFormatTime.mjs.map +0 -1
  991. package/lib/_virtual/_randomFormatUri.mjs +0 -4
  992. package/lib/_virtual/_randomFormatUri.mjs.map +0 -1
  993. package/lib/_virtual/_randomFormatUriReference.mjs +0 -4
  994. package/lib/_virtual/_randomFormatUriReference.mjs.map +0 -1
  995. package/lib/_virtual/_randomFormatUriTemplate.mjs +0 -4
  996. package/lib/_virtual/_randomFormatUriTemplate.mjs.map +0 -1
  997. package/lib/_virtual/_randomFormatUrl.mjs +0 -4
  998. package/lib/_virtual/_randomFormatUrl.mjs.map +0 -1
  999. package/lib/_virtual/_randomFormatUuid.mjs +0 -4
  1000. package/lib/_virtual/_randomFormatUuid.mjs.map +0 -1
  1001. package/lib/_virtual/_randomInteger.mjs +0 -4
  1002. package/lib/_virtual/_randomInteger.mjs.map +0 -1
  1003. package/lib/_virtual/_randomNumber.mjs +0 -4
  1004. package/lib/_virtual/_randomNumber.mjs.map +0 -1
  1005. package/lib/_virtual/_randomPattern.mjs +0 -4
  1006. package/lib/_virtual/_randomPattern.mjs.map +0 -1
  1007. package/lib/_virtual/_randomPick.mjs +0 -4
  1008. package/lib/_virtual/_randomPick.mjs.map +0 -1
  1009. package/lib/_virtual/_randomString.mjs +0 -4
  1010. package/lib/_virtual/_randomString.mjs.map +0 -1
  1011. package/lib/_virtual/_throwTypeGuardError.mjs +0 -4
  1012. package/lib/_virtual/_throwTypeGuardError.mjs.map +0 -1
  1013. package/lib/_virtual/_tinyglobby.mjs +0 -7
  1014. package/lib/_virtual/_tinyglobby.mjs.map +0 -1
  1015. package/lib/_virtual/_validateReport.mjs +0 -4
  1016. package/lib/_virtual/_validateReport.mjs.map +0 -1
  1017. package/lib/_virtual/compare.mjs +0 -4
  1018. package/lib/_virtual/compare.mjs.map +0 -1
  1019. package/lib/_virtual/functional.mjs +0 -4
  1020. package/lib/_virtual/functional.mjs.map +0 -1
  1021. package/lib/_virtual/http.mjs +0 -4
  1022. package/lib/_virtual/http.mjs.map +0 -1
  1023. package/lib/_virtual/index.mjs +0 -4
  1024. package/lib/_virtual/index.mjs.map +0 -1
  1025. package/lib/_virtual/json.mjs +0 -4
  1026. package/lib/_virtual/json.mjs.map +0 -1
  1027. package/lib/_virtual/llm.mjs +0 -4
  1028. package/lib/_virtual/llm.mjs.map +0 -1
  1029. package/lib/_virtual/module.mjs +0 -4
  1030. package/lib/_virtual/module.mjs.map +0 -1
  1031. package/lib/_virtual/notations.mjs +0 -4
  1032. package/lib/_virtual/notations.mjs.map +0 -1
  1033. package/lib/_virtual/plain.mjs +0 -4
  1034. package/lib/_virtual/plain.mjs.map +0 -1
  1035. package/lib/_virtual/protobuf.mjs +0 -4
  1036. package/lib/_virtual/protobuf.mjs.map +0 -1
  1037. package/lib/_virtual/re-exports.mjs +0 -4
  1038. package/lib/_virtual/re-exports.mjs.map +0 -1
  1039. package/lib/_virtual/reflect.mjs +0 -4
  1040. package/lib/_virtual/reflect.mjs.map +0 -1
  1041. package/lib/_virtual/transform.mjs +0 -4
  1042. package/lib/_virtual/transform.mjs.map +0 -1
  1043. package/lib/_virtual/ttsc.mjs +0 -4
  1044. package/lib/_virtual/ttsc.mjs.map +0 -1
  1045. package/lib/_virtual/typia.mjs +0 -4
  1046. package/lib/_virtual/typia.mjs.map +0 -1
  1047. package/lib/compare2.mjs +0 -39
  1048. package/lib/compare2.mjs.map +0 -1
  1049. package/lib/executable/TypiaGenerateWizard2.mjs +0 -719
  1050. package/lib/executable/TypiaGenerateWizard2.mjs.map +0 -1
  1051. package/lib/executable/generate/ttsc2.mjs +0 -56
  1052. package/lib/executable/generate/ttsc2.mjs.map +0 -1
  1053. package/lib/executable/typia2.mjs +0 -88
  1054. package/lib/executable/typia2.mjs.map +0 -1
  1055. package/lib/functional2.mjs +0 -99
  1056. package/lib/functional2.mjs.map +0 -1
  1057. package/lib/http2.mjs +0 -139
  1058. package/lib/http2.mjs.map +0 -1
  1059. package/lib/index2.mjs +0 -53
  1060. package/lib/index2.mjs.map +0 -1
  1061. package/lib/internal/_IProtobufWriter.mjs.map +0 -1
  1062. package/lib/internal/_IProtobufWriter2.mjs +0 -6
  1063. package/lib/internal/_IProtobufWriter2.mjs.map +0 -1
  1064. package/lib/internal/_ProtobufReader2.mjs +0 -169
  1065. package/lib/internal/_ProtobufReader2.mjs.map +0 -1
  1066. package/lib/internal/_ProtobufSizer2.mjs +0 -119
  1067. package/lib/internal/_ProtobufSizer2.mjs.map +0 -1
  1068. package/lib/internal/_ProtobufWriter2.mjs +0 -107
  1069. package/lib/internal/_ProtobufWriter2.mjs.map +0 -1
  1070. package/lib/internal/_accessExpressionAsString2.mjs +0 -49
  1071. package/lib/internal/_accessExpressionAsString2.mjs.map +0 -1
  1072. package/lib/internal/_assertGuard2.mjs +0 -20
  1073. package/lib/internal/_assertGuard2.mjs.map +0 -1
  1074. package/lib/internal/_coerceLlmArguments2.mjs +0 -11
  1075. package/lib/internal/_coerceLlmArguments2.mjs.map +0 -1
  1076. package/lib/internal/_createStandardSchema2.mjs +0 -138
  1077. package/lib/internal/_createStandardSchema2.mjs.map +0 -1
  1078. package/lib/internal/_functionalTypeGuardErrorFactory2.mjs +0 -12
  1079. package/lib/internal/_functionalTypeGuardErrorFactory2.mjs.map +0 -1
  1080. package/lib/internal/_httpFormDataReadArray2.mjs +0 -9
  1081. package/lib/internal/_httpFormDataReadArray2.mjs.map +0 -1
  1082. package/lib/internal/_httpFormDataReadBigint2.mjs +0 -23
  1083. package/lib/internal/_httpFormDataReadBigint2.mjs.map +0 -1
  1084. package/lib/internal/_httpFormDataReadBlob2.mjs +0 -15
  1085. package/lib/internal/_httpFormDataReadBlob2.mjs.map +0 -1
  1086. package/lib/internal/_httpFormDataReadBoolean2.mjs +0 -21
  1087. package/lib/internal/_httpFormDataReadBoolean2.mjs.map +0 -1
  1088. package/lib/internal/_httpFormDataReadFile2.mjs +0 -15
  1089. package/lib/internal/_httpFormDataReadFile2.mjs.map +0 -1
  1090. package/lib/internal/_httpFormDataReadNumber2.mjs +0 -19
  1091. package/lib/internal/_httpFormDataReadNumber2.mjs.map +0 -1
  1092. package/lib/internal/_httpFormDataReadString2.mjs +0 -15
  1093. package/lib/internal/_httpFormDataReadString2.mjs.map +0 -1
  1094. package/lib/internal/_httpHeaderReadBigint2.mjs +0 -17
  1095. package/lib/internal/_httpHeaderReadBigint2.mjs.map +0 -1
  1096. package/lib/internal/_httpHeaderReadBoolean2.mjs +0 -15
  1097. package/lib/internal/_httpHeaderReadBoolean2.mjs.map +0 -1
  1098. package/lib/internal/_httpHeaderReadNumber2.mjs +0 -13
  1099. package/lib/internal/_httpHeaderReadNumber2.mjs.map +0 -1
  1100. package/lib/internal/_httpParameterReadBigint2.mjs +0 -17
  1101. package/lib/internal/_httpParameterReadBigint2.mjs.map +0 -1
  1102. package/lib/internal/_httpParameterReadBoolean2.mjs +0 -15
  1103. package/lib/internal/_httpParameterReadBoolean2.mjs.map +0 -1
  1104. package/lib/internal/_httpParameterReadNumber2.mjs +0 -13
  1105. package/lib/internal/_httpParameterReadNumber2.mjs.map +0 -1
  1106. package/lib/internal/_httpParameterReadString2.mjs +0 -9
  1107. package/lib/internal/_httpParameterReadString2.mjs.map +0 -1
  1108. package/lib/internal/_httpQueryParseURLSearchParams2.mjs +0 -16
  1109. package/lib/internal/_httpQueryParseURLSearchParams2.mjs.map +0 -1
  1110. package/lib/internal/_httpQueryReadArray2.mjs +0 -9
  1111. package/lib/internal/_httpQueryReadArray2.mjs.map +0 -1
  1112. package/lib/internal/_httpQueryReadBigint2.mjs +0 -17
  1113. package/lib/internal/_httpQueryReadBigint2.mjs.map +0 -1
  1114. package/lib/internal/_httpQueryReadBoolean2.mjs +0 -19
  1115. package/lib/internal/_httpQueryReadBoolean2.mjs.map +0 -1
  1116. package/lib/internal/_httpQueryReadNumber2.mjs +0 -13
  1117. package/lib/internal/_httpQueryReadNumber2.mjs.map +0 -1
  1118. package/lib/internal/_httpQueryReadString2.mjs +0 -9
  1119. package/lib/internal/_httpQueryReadString2.mjs.map +0 -1
  1120. package/lib/internal/_isBetween2.mjs +0 -9
  1121. package/lib/internal/_isBetween2.mjs.map +0 -1
  1122. package/lib/internal/_isBigintString2.mjs +0 -17
  1123. package/lib/internal/_isBigintString2.mjs.map +0 -1
  1124. package/lib/internal/_isFormatByte2.mjs +0 -13
  1125. package/lib/internal/_isFormatByte2.mjs.map +0 -1
  1126. package/lib/internal/_isFormatDate2.mjs +0 -10
  1127. package/lib/internal/_isFormatDate2.mjs.map +0 -1
  1128. package/lib/internal/_isFormatDateTime2.mjs +0 -10
  1129. package/lib/internal/_isFormatDateTime2.mjs.map +0 -1
  1130. package/lib/internal/_isFormatDuration2.mjs +0 -10
  1131. package/lib/internal/_isFormatDuration2.mjs.map +0 -1
  1132. package/lib/internal/_isFormatEmail2.mjs +0 -10
  1133. package/lib/internal/_isFormatEmail2.mjs.map +0 -1
  1134. package/lib/internal/_isFormatHostname2.mjs +0 -10
  1135. package/lib/internal/_isFormatHostname2.mjs.map +0 -1
  1136. package/lib/internal/_isFormatIdnEmail2.mjs +0 -10
  1137. package/lib/internal/_isFormatIdnEmail2.mjs.map +0 -1
  1138. package/lib/internal/_isFormatIdnHostname2.mjs +0 -10
  1139. package/lib/internal/_isFormatIdnHostname2.mjs.map +0 -1
  1140. package/lib/internal/_isFormatIpv42.mjs +0 -10
  1141. package/lib/internal/_isFormatIpv42.mjs.map +0 -1
  1142. package/lib/internal/_isFormatIpv62.mjs +0 -10
  1143. package/lib/internal/_isFormatIpv62.mjs.map +0 -1
  1144. package/lib/internal/_isFormatIri2.mjs +0 -10
  1145. package/lib/internal/_isFormatIri2.mjs.map +0 -1
  1146. package/lib/internal/_isFormatIriReference2.mjs +0 -10
  1147. package/lib/internal/_isFormatIriReference2.mjs.map +0 -1
  1148. package/lib/internal/_isFormatJsonPointer2.mjs +0 -10
  1149. package/lib/internal/_isFormatJsonPointer2.mjs.map +0 -1
  1150. package/lib/internal/_isFormatPassword2.mjs +0 -9
  1151. package/lib/internal/_isFormatPassword2.mjs.map +0 -1
  1152. package/lib/internal/_isFormatRegex2.mjs +0 -17
  1153. package/lib/internal/_isFormatRegex2.mjs.map +0 -1
  1154. package/lib/internal/_isFormatRelativeJsonPointer2.mjs +0 -10
  1155. package/lib/internal/_isFormatRelativeJsonPointer2.mjs.map +0 -1
  1156. package/lib/internal/_isFormatTime2.mjs +0 -10
  1157. package/lib/internal/_isFormatTime2.mjs.map +0 -1
  1158. package/lib/internal/_isFormatUri2.mjs +0 -11
  1159. package/lib/internal/_isFormatUri2.mjs.map +0 -1
  1160. package/lib/internal/_isFormatUriReference2.mjs +0 -10
  1161. package/lib/internal/_isFormatUriReference2.mjs.map +0 -1
  1162. package/lib/internal/_isFormatUriTemplate2.mjs +0 -10
  1163. package/lib/internal/_isFormatUriTemplate2.mjs.map +0 -1
  1164. package/lib/internal/_isFormatUrl2.mjs +0 -10
  1165. package/lib/internal/_isFormatUrl2.mjs.map +0 -1
  1166. package/lib/internal/_isFormatUuid2.mjs +0 -10
  1167. package/lib/internal/_isFormatUuid2.mjs.map +0 -1
  1168. package/lib/internal/_isTypeFloat2.mjs +0 -11
  1169. package/lib/internal/_isTypeFloat2.mjs.map +0 -1
  1170. package/lib/internal/_isTypeInt162.mjs +0 -11
  1171. package/lib/internal/_isTypeInt162.mjs.map +0 -1
  1172. package/lib/internal/_isTypeInt322.mjs +0 -11
  1173. package/lib/internal/_isTypeInt322.mjs.map +0 -1
  1174. package/lib/internal/_isTypeInt642.mjs +0 -11
  1175. package/lib/internal/_isTypeInt642.mjs.map +0 -1
  1176. package/lib/internal/_isTypeInt82.mjs +0 -11
  1177. package/lib/internal/_isTypeInt82.mjs.map +0 -1
  1178. package/lib/internal/_isTypeUint162.mjs +0 -11
  1179. package/lib/internal/_isTypeUint162.mjs.map +0 -1
  1180. package/lib/internal/_isTypeUint322.mjs +0 -11
  1181. package/lib/internal/_isTypeUint322.mjs.map +0 -1
  1182. package/lib/internal/_isTypeUint642.mjs +0 -11
  1183. package/lib/internal/_isTypeUint642.mjs.map +0 -1
  1184. package/lib/internal/_isTypeUint82.mjs +0 -11
  1185. package/lib/internal/_isTypeUint82.mjs.map +0 -1
  1186. package/lib/internal/_isUniqueItems2.mjs +0 -143
  1187. package/lib/internal/_isUniqueItems2.mjs.map +0 -1
  1188. package/lib/internal/_jsonStringifyNumber2.mjs +0 -9
  1189. package/lib/internal/_jsonStringifyNumber2.mjs.map +0 -1
  1190. package/lib/internal/_jsonStringifyRest2.mjs +0 -11
  1191. package/lib/internal/_jsonStringifyRest2.mjs.map +0 -1
  1192. package/lib/internal/_jsonStringifyString2.mjs +0 -45
  1193. package/lib/internal/_jsonStringifyString2.mjs.map +0 -1
  1194. package/lib/internal/_jsonStringifyTail2.mjs +0 -9
  1195. package/lib/internal/_jsonStringifyTail2.mjs.map +0 -1
  1196. package/lib/internal/_llmApplicationFinalize2.mjs +0 -11
  1197. package/lib/internal/_llmApplicationFinalize2.mjs.map +0 -1
  1198. package/lib/internal/_notationAny2.mjs +0 -42
  1199. package/lib/internal/_notationAny2.mjs.map +0 -1
  1200. package/lib/internal/_notationCamel2.mjs +0 -21
  1201. package/lib/internal/_notationCamel2.mjs.map +0 -1
  1202. package/lib/internal/_notationPascal2.mjs +0 -17
  1203. package/lib/internal/_notationPascal2.mjs.map +0 -1
  1204. package/lib/internal/_notationSnake2.mjs +0 -54
  1205. package/lib/internal/_notationSnake2.mjs.map +0 -1
  1206. package/lib/internal/_parseLlmArguments2.mjs +0 -11
  1207. package/lib/internal/_parseLlmArguments2.mjs.map +0 -1
  1208. package/lib/internal/_plainCloneAny2.mjs +0 -67
  1209. package/lib/internal/_plainCloneAny2.mjs.map +0 -1
  1210. package/lib/internal/_randomArray2.mjs +0 -31
  1211. package/lib/internal/_randomArray2.mjs.map +0 -1
  1212. package/lib/internal/_randomBigint2.mjs +0 -12
  1213. package/lib/internal/_randomBigint2.mjs.map +0 -1
  1214. package/lib/internal/_randomBoolean2.mjs +0 -9
  1215. package/lib/internal/_randomBoolean2.mjs.map +0 -1
  1216. package/lib/internal/_randomFormatByte2.mjs +0 -10
  1217. package/lib/internal/_randomFormatByte2.mjs.map +0 -1
  1218. package/lib/internal/_randomFormatDate2.mjs +0 -20
  1219. package/lib/internal/_randomFormatDate2.mjs.map +0 -1
  1220. package/lib/internal/_randomFormatDatetime2.mjs +0 -18
  1221. package/lib/internal/_randomFormatDatetime2.mjs.map +0 -1
  1222. package/lib/internal/_randomFormatDuration2.mjs +0 -35
  1223. package/lib/internal/_randomFormatDuration2.mjs.map +0 -1
  1224. package/lib/internal/_randomFormatEmail2.mjs +0 -17
  1225. package/lib/internal/_randomFormatEmail2.mjs.map +0 -1
  1226. package/lib/internal/_randomFormatHostname2.mjs +0 -13
  1227. package/lib/internal/_randomFormatHostname2.mjs.map +0 -1
  1228. package/lib/internal/_randomFormatIdnEmail2.mjs +0 -12
  1229. package/lib/internal/_randomFormatIdnEmail2.mjs.map +0 -1
  1230. package/lib/internal/_randomFormatIdnHostname2.mjs +0 -12
  1231. package/lib/internal/_randomFormatIdnHostname2.mjs.map +0 -1
  1232. package/lib/internal/_randomFormatIpv42.mjs +0 -17
  1233. package/lib/internal/_randomFormatIpv42.mjs.map +0 -1
  1234. package/lib/internal/_randomFormatIpv62.mjs +0 -17
  1235. package/lib/internal/_randomFormatIpv62.mjs.map +0 -1
  1236. package/lib/internal/_randomFormatIri2.mjs +0 -12
  1237. package/lib/internal/_randomFormatIri2.mjs.map +0 -1
  1238. package/lib/internal/_randomFormatIriReference2.mjs +0 -12
  1239. package/lib/internal/_randomFormatIriReference2.mjs.map +0 -1
  1240. package/lib/internal/_randomFormatJsonPointer2.mjs +0 -13
  1241. package/lib/internal/_randomFormatJsonPointer2.mjs.map +0 -1
  1242. package/lib/internal/_randomFormatPassword2.mjs +0 -16
  1243. package/lib/internal/_randomFormatPassword2.mjs.map +0 -1
  1244. package/lib/internal/_randomFormatRegex2.mjs +0 -10
  1245. package/lib/internal/_randomFormatRegex2.mjs.map +0 -1
  1246. package/lib/internal/_randomFormatRelativeJsonPointer2.mjs +0 -16
  1247. package/lib/internal/_randomFormatRelativeJsonPointer2.mjs.map +0 -1
  1248. package/lib/internal/_randomFormatTime2.mjs +0 -19
  1249. package/lib/internal/_randomFormatTime2.mjs.map +0 -1
  1250. package/lib/internal/_randomFormatUri2.mjs +0 -12
  1251. package/lib/internal/_randomFormatUri2.mjs.map +0 -1
  1252. package/lib/internal/_randomFormatUriReference2.mjs +0 -12
  1253. package/lib/internal/_randomFormatUriReference2.mjs.map +0 -1
  1254. package/lib/internal/_randomFormatUriTemplate2.mjs +0 -12
  1255. package/lib/internal/_randomFormatUriTemplate2.mjs.map +0 -1
  1256. package/lib/internal/_randomFormatUrl2.mjs +0 -17
  1257. package/lib/internal/_randomFormatUrl2.mjs.map +0 -1
  1258. package/lib/internal/_randomFormatUuid2.mjs +0 -13
  1259. package/lib/internal/_randomFormatUuid2.mjs.map +0 -1
  1260. package/lib/internal/_randomInteger2.mjs +0 -47
  1261. package/lib/internal/_randomInteger2.mjs.map +0 -1
  1262. package/lib/internal/_randomNumber2.mjs +0 -66
  1263. package/lib/internal/_randomNumber2.mjs.map +0 -1
  1264. package/lib/internal/_randomPattern2.mjs +0 -22
  1265. package/lib/internal/_randomPattern2.mjs.map +0 -1
  1266. package/lib/internal/_randomPick2.mjs +0 -17
  1267. package/lib/internal/_randomPick2.mjs.map +0 -1
  1268. package/lib/internal/_randomString2.mjs +0 -32
  1269. package/lib/internal/_randomString2.mjs.map +0 -1
  1270. package/lib/internal/_throwTypeGuardError2.mjs +0 -14
  1271. package/lib/internal/_throwTypeGuardError2.mjs.map +0 -1
  1272. package/lib/internal/_validateReport2.mjs +0 -29
  1273. package/lib/internal/_validateReport2.mjs.map +0 -1
  1274. package/lib/internal/private/__notationCapitalize2.mjs +0 -9
  1275. package/lib/internal/private/__notationCapitalize2.mjs.map +0 -1
  1276. package/lib/internal/private/__notationUnsnake2.mjs +0 -29
  1277. package/lib/internal/private/__notationUnsnake2.mjs.map +0 -1
  1278. package/lib/json2.mjs +0 -94
  1279. package/lib/json2.mjs.map +0 -1
  1280. package/lib/llm2.mjs +0 -54
  1281. package/lib/llm2.mjs.map +0 -1
  1282. package/lib/module2.mjs +0 -185
  1283. package/lib/module2.mjs.map +0 -1
  1284. package/lib/notations2.mjs +0 -169
  1285. package/lib/notations2.mjs.map +0 -1
  1286. package/lib/plain2.mjs +0 -119
  1287. package/lib/plain2.mjs.map +0 -1
  1288. package/lib/protobuf2.mjs +0 -94
  1289. package/lib/protobuf2.mjs.map +0 -1
  1290. package/lib/re-exports.mjs.map +0 -1
  1291. package/lib/re-exports2.mjs +0 -17
  1292. package/lib/re-exports2.mjs.map +0 -1
  1293. package/lib/reflect2.mjs +0 -29
  1294. package/lib/reflect2.mjs.map +0 -1
  1295. package/lib/transform2.mjs +0 -26
  1296. package/lib/transform2.mjs.map +0 -1
  1297. package/lib/transformers/NoTransformConfigurationError2.mjs +0 -21
  1298. package/lib/transformers/NoTransformConfigurationError2.mjs.map +0 -1
@@ -1,495 +1,495 @@
1
- //go:build typia_native_internal
2
- // +build typia_native_internal
3
-
4
- package iterate
5
-
6
- import (
7
- "strings"
8
- "testing"
9
-
10
- shimast "github.com/microsoft/typescript-go/shim/ast"
11
- shimprinter "github.com/microsoft/typescript-go/shim/printer"
12
- nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
13
- nativehelpers "github.com/samchon/typia/packages/typia/native/core/programmers/helpers"
14
- nativemetadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
15
- )
16
-
17
- // TestTemplateCountCapturingGroups counts regex capturing groups.
18
- //
19
- // The running capture index that maps a constrained placeholder to its
20
- // `match[index]` slot is driven entirely by this counter, so it must agree with
21
- // how a JS engine numbers groups: count an unescaped `(` that does not open an
22
- // inline `(?...)` group, and skip escaped parens — including a literal paren
23
- // that follows an escaped backslash.
24
- //
25
- // 1. Count bare, alternation, nested, and non-capturing patterns.
26
- // 2. Count the numeric span (only inline groups) as zero.
27
- // 3. Count escaped parens as zero and a real group after `\\` as one.
28
- func TestTemplateCountCapturingGroups(t *testing.T) {
29
- cases := []struct {
30
- pattern string
31
- want int
32
- }{
33
- {"", 0},
34
- {"(.*)", 1},
35
- {"[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?", 0},
36
- {"(a|b|c)", 1},
37
- {"(a(b)c)", 2},
38
- {"\\(literal\\)", 0},
39
- {"\\\\(group)", 1},
40
- {"(?:no)(yes)", 1},
41
- {"(.*)-([+-]?\\d+)", 2},
42
- {"([\\s\\S]*)", 1},
43
- }
44
- for _, tc := range cases {
45
- if got := template_count_capturing_groups(tc.pattern); got != tc.want {
46
- t.Fatalf("count(%q) = %d, want %d", tc.pattern, got, tc.want)
47
- }
48
- }
49
- }
50
-
51
- // TestTemplateFullyConstrained gates which tag matrices earn a capture.
52
- //
53
- // A placeholder is only captured when every OR row contributes at least one
54
- // validate-able tag; otherwise some row admits the base type unconditionally and
55
- // honoring the others would reject values the type accepts.
56
- //
57
- // 1. Reject nil and empty matrices.
58
- // 2. Accept a matrix whose every row has a validate-able tag.
59
- // 3. Reject a matrix with a row of only non-validating tags.
60
- func TestTemplateFullyConstrained(t *testing.T) {
61
- validating := nativemetadata.IMetadataTypeTag{Name: "Minimum<0>", Validate: "0 <= $input"}
62
- schemaOnly := nativemetadata.IMetadataTypeTag{Name: "Format<\"uuid\">"}
63
- cases := []struct {
64
- name string
65
- tags [][]nativemetadata.IMetadataTypeTag
66
- want bool
67
- }{
68
- {"nil", nil, false},
69
- {"empty", [][]nativemetadata.IMetadataTypeTag{}, false},
70
- {"single", [][]nativemetadata.IMetadataTypeTag{{validating}}, true},
71
- {"mixed-row", [][]nativemetadata.IMetadataTypeTag{{schemaOnly, validating}}, true},
72
- {"schema-only-row", [][]nativemetadata.IMetadataTypeTag{{schemaOnly}}, false},
73
- {"one-unconstrained-row", [][]nativemetadata.IMetadataTypeTag{{validating}, {schemaOnly}}, false},
74
- }
75
- for _, tc := range cases {
76
- if got := template_fully_constrained(tc.tags); got != tc.want {
77
- t.Fatalf("template_fully_constrained(%s) = %v, want %v", tc.name, got, tc.want)
78
- }
79
- }
80
- }
81
-
82
- // TestTemplateConstrainedCapture decides which placeholders earn a capture.
83
- //
84
- // Only a sole, required, non-nullable `number`, `bigint`, or `string` primitive
85
- // carrying a fully runtime-checkable tag matrix is captured; boolean/union/
86
- // constant placeholders, schema-only tags, and nullable/optional placeholders
87
- // fall back to structural-only matching.
88
- //
89
- // 1. Accept number, bigint, and string placeholders with validating tags.
90
- // 2. Reject boolean, unconstrained, nullable, optional, multi-bucket.
91
- func TestTemplateConstrainedCapture(t *testing.T) {
92
- minimum := [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "0 <= $input"}}}
93
-
94
- if atomic, kind, ok := template_constrained_capture(iterateTemplateAtomic("number", minimum)); ok == false || kind != "number" || atomic == nil {
95
- t.Fatal("number placeholder with a validating tag should be captured")
96
- }
97
- if _, kind, ok := template_constrained_capture(iterateTemplateAtomic("string", [][]nativemetadata.IMetadataTypeTag{{{Name: "MinLength<3>", Validate: "$input.length >= 3"}}})); ok == false || kind != "string" {
98
- t.Fatal("string placeholder with a validating tag should be captured")
99
- }
100
- if _, kind, ok := template_constrained_capture(iterateTemplateAtomic("bigint", [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "BigInt(0) <= $input"}}})); ok == false || kind != "bigint" {
101
- t.Fatal("bigint placeholder with a validating tag should be captured")
102
- }
103
-
104
- reject := func(label string, meta *nativemetadata.MetadataSchema) {
105
- if _, _, ok := template_constrained_capture(meta); ok {
106
- t.Fatalf("%s should not be captured", label)
107
- }
108
- }
109
- reject("nil", nil)
110
- reject("boolean", iterateTemplateAtomic("boolean", minimum))
111
- reject("unconstrained number", iterateTemplateAtomic("number", nil))
112
-
113
- nullable := iterateTemplateAtomic("number", minimum)
114
- nullable.Nullable = true
115
- reject("nullable", nullable)
116
-
117
- optional := iterateTemplateAtomic("number", minimum)
118
- optional.Required = false
119
- optional.Optional = true
120
- reject("optional", optional)
121
-
122
- twoAtomics := iterateTemplateAtomic("number", minimum)
123
- twoAtomics.Atomics = append(twoAtomics.Atomics, nativemetadata.MetadataAtomic_create(nativemetadata.MetadataAtomic{Type: "string"}))
124
- reject("two atomics", twoAtomics)
125
-
126
- withConstant := iterateTemplateAtomic("number", minimum)
127
- withConstant.Constants = append(withConstant.Constants, nativemetadata.MetadataConstant_create(nativemetadata.MetadataConstant{
128
- Type: "string",
129
- Values: []*nativemetadata.MetadataConstantValue{nativemetadata.MetadataConstantValue_create(nativemetadata.MetadataConstantValue{Value: "x"})},
130
- }))
131
- reject("multi bucket", withConstant)
132
- }
133
-
134
- // TestTemplateRuntimePattern maps placeholders to stable capture indices.
135
- //
136
- // The structural regex mirrors metadata_to_pattern verbatim except that a
137
- // constrained numeric placeholder is wrapped and a constrained string lowers to
138
- // the newline-inclusive `([\s\S]*)`; every constrained placeholder must be
139
- // assigned the capture index a JS engine would give it — counting the
140
- // preexisting `(.*)`/alternation groups of unconstrained neighbors.
141
- //
142
- // 1. A leading literal plus a constrained number captures at index 1.
143
- // 2. `${n}-${n}` keeps both numbers ("-" is not number-extendable) at 1 and 2;
144
- // a string with a sibling absorbs the separator and falls back entirely.
145
- // 3. A sole constrained string lowers to `([\s\S]*)`, anchored.
146
- // 4. A constrained bigint lowers to the integer-only `([+-]?\d+)`, anchored.
147
- // 5. A constrained placeholder adjacent to a variable-width neighbor falls back.
148
- // 6. A template with no constrained placeholder yields no captures and the
149
- // historical pattern.
150
- func TestTemplateRuntimePattern(t *testing.T) {
151
- number := iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "0 <= $input"}}})
152
- numberB := iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{{Name: "Maximum<9>", Validate: "$input <= 9"}}})
153
- str := iterateTemplateAtomic("string", [][]nativemetadata.IMetadataTypeTag{{{Name: "MinLength<3>", Validate: "$input.length >= 3"}}})
154
- numberSpan := "[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?"
155
-
156
- pattern, captures := template_runtime_pattern([]*nativemetadata.MetadataSchema{iterateLiteral("v"), number})
157
- if want := "^v(" + numberSpan + ")$"; pattern != want {
158
- t.Fatalf("leading-literal pattern = %q, want %q", pattern, want)
159
- }
160
- if len(captures) != 1 || captures[0].Index != 1 || captures[0].Kind != "number" {
161
- t.Fatalf("leading-literal captures = %#v", captures)
162
- }
163
-
164
- // `${n}-${n}`: "-" is not in a number's right-extension set, so both numbers
165
- // are pinned and capture at indices 1 and 2.
166
- _, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{number, iterateLiteral("-"), numberB})
167
- if len(captures) != 2 || captures[0].Index != 1 || captures[0].Kind != "number" || captures[1].Index != 2 || captures[1].Kind != "number" {
168
- t.Fatalf("number-'-'-number captures = %#v", captures)
169
- }
170
-
171
- // A string with a sibling absorbs the "-" (greedy `[\s\S]*`), unpinning both
172
- // itself and the number, so the whole template falls back to no captures.
173
- _, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{str, iterateLiteral("-"), numberB})
174
- if len(captures) != 0 {
175
- t.Fatalf("string-with-sibling template must fall back, got %#v", captures)
176
- }
177
-
178
- // A constrained string captures every character (newlines included) via
179
- // `([\s\S]*)`, not the newline-blind `(.*)`.
180
- pattern, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{iterateLiteral("L:"), str})
181
- if want := "^L:([\\s\\S]*)$"; pattern != want {
182
- t.Fatalf("constrained-string pattern = %q, want %q", pattern, want)
183
- }
184
- if len(captures) != 1 || captures[0].Index != 1 || captures[0].Kind != "string" {
185
- t.Fatalf("constrained-string captures = %#v", captures)
186
- }
187
-
188
- // A constrained bigint captures an integer only, so BigInt(...) cannot throw.
189
- big := iterateTemplateAtomic("bigint", [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "BigInt(0) <= $input"}}})
190
- pattern, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{iterateLiteral("#"), big})
191
- if want := "^#([+-]?\\d+)$"; pattern != want {
192
- t.Fatalf("constrained-bigint pattern = %q, want %q", pattern, want)
193
- }
194
- if len(captures) != 1 || captures[0].Index != 1 || captures[0].Kind != "bigint" {
195
- t.Fatalf("constrained-bigint captures = %#v", captures)
196
- }
197
-
198
- // A constrained placeholder adjacent to a variable-width neighbor (here an
199
- // unconstrained string before the number, with no literal between) is
200
- // ambiguous under greedy matching, so it falls back to structural-only
201
- // matching with no capture — rather than risking a false negative.
202
- _, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{iterateAtomic("string"), number})
203
- if len(captures) != 0 {
204
- t.Fatalf("number adjacent to a variable-width neighbor must not be captured, got %#v", captures)
205
- }
206
- _, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{str, numberB})
207
- if len(captures) != 0 {
208
- t.Fatalf("two adjacent constrained placeholders must both fall back, got %#v", captures)
209
- }
210
-
211
- pattern, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{iterateLiteral("plain"), iterateAtomic("string")})
212
- if len(captures) != 0 {
213
- t.Fatalf("unconstrained template should have no captures, got %#v", captures)
214
- }
215
- if want := "^plain(.*)"; pattern != want {
216
- t.Fatalf("unconstrained pattern = %q, want %q", pattern, want)
217
- }
218
- }
219
-
220
- // TestTemplateClearBoundary gates capture on boundaries the greedy regex pins.
221
- //
222
- // A placeholder is captured only when, on each side, the template edge or a
223
- // literal whose first character its relevant variable neighbor cannot absorb
224
- // pins it; otherwise the split can slide and it falls back.
225
- //
226
- // 1. A single literal segment is a boundary; an atomic, a multi-value constant,
227
- // and nil are not.
228
- // 2. Sole / literal-fenced placeholders clear; an adjacent variable does not.
229
- // 3. `${n}-${n}` clears ("-" not number-extendable); `${n}.${n}` does not (".").
230
- // 4. A string before a sibling absorbs the separator, unpinning both itself and
231
- // the number; a number before a string keeps both.
232
- func TestTemplateClearBoundary(t *testing.T) {
233
- num := iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "0 <= $input"}}})
234
- str := iterateTemplateAtomic("string", [][]nativemetadata.IMetadataTypeTag{{{Name: "MinLength<1>", Validate: "$input.length >= 1"}}})
235
- bint := iterateTemplateAtomic("bigint", nil)
236
- multi := nativemetadata.MetadataSchema_initialize()
237
- multi.Constants = append(multi.Constants, nativemetadata.MetadataConstant_create(nativemetadata.MetadataConstant{
238
- Type: "string",
239
- Values: []*nativemetadata.MetadataConstantValue{
240
- nativemetadata.MetadataConstantValue_create(nativemetadata.MetadataConstantValue{Value: "a"}),
241
- nativemetadata.MetadataConstantValue_create(nativemetadata.MetadataConstantValue{Value: "bb"}),
242
- },
243
- }))
244
-
245
- if template_is_literal(iterateLiteral("x")) == false {
246
- t.Fatal("a single literal segment must count as a boundary")
247
- }
248
- for label, meta := range map[string]*nativemetadata.MetadataSchema{"atomic": num, "multi-constant": multi, "nil": nil} {
249
- if template_is_literal(meta) {
250
- t.Fatalf("%s must not count as a boundary", label)
251
- }
252
- }
253
-
254
- type clearCase struct {
255
- name string
256
- row []*nativemetadata.MetadataSchema
257
- i int
258
- want bool
259
- }
260
- for _, c := range []clearCase{
261
- {"sole", []*nativemetadata.MetadataSchema{num}, 0, true},
262
- {"fenced by literals", []*nativemetadata.MetadataSchema{iterateLiteral("a"), num, iterateLiteral("b")}, 1, true},
263
- {"adjacent variable", []*nativemetadata.MetadataSchema{num, num}, 0, false},
264
- {"num-'-'-num left", []*nativemetadata.MetadataSchema{num, iterateLiteral("-"), num}, 0, true},
265
- {"num-'-'-num right", []*nativemetadata.MetadataSchema{num, iterateLiteral("-"), num}, 2, true},
266
- {"num-'.'-num (decimal absorbs)", []*nativemetadata.MetadataSchema{num, iterateLiteral("."), num}, 0, false},
267
- {"string absorbs separator", []*nativemetadata.MetadataSchema{str, iterateLiteral("-"), num}, 0, false},
268
- {"number unpinned by left string", []*nativemetadata.MetadataSchema{str, iterateLiteral("-"), num}, 2, false},
269
- {"number before string, number pinned", []*nativemetadata.MetadataSchema{num, iterateLiteral("-"), str}, 0, true},
270
- {"number before string, string pinned", []*nativemetadata.MetadataSchema{num, iterateLiteral("-"), str}, 2, true},
271
- // An empty separator literal has no first character to absorb, so the
272
- // boundary is treated as pinned.
273
- {"empty separator literal", []*nativemetadata.MetadataSchema{num, iterateLiteral(""), num}, 0, true},
274
- // A bigint neighbor lowers to the decimal NUMBER span, so it absorbs "."
275
- // too (a constrained number after a bigint must fall back).
276
- {"bigint absorbs decimal", []*nativemetadata.MetadataSchema{bint, iterateLiteral("."), num}, 2, false},
277
- } {
278
- if got := template_clear_boundary(c.row, c.i); got != c.want {
279
- t.Fatalf("clear_boundary(%s) = %v, want %v", c.name, got, c.want)
280
- }
281
- }
282
- }
283
-
284
- // TestTemplateBoundaryHelpers covers the right-extension, kind, and literal-first
285
- // primitives that drive template_clear_boundary.
286
- //
287
- // 1. right_extends: number and bigint grow through digit/'.'/e but not their
288
- // sign; string/other through anything.
289
- // 2. variable_kind: number/bigint/string atomics map to themselves; everything
290
- // else (boolean, constant-only, nil) is conservatively "string".
291
- // 3. literal_first: the text's first rune, or not-ok for empty/non-literal/nil.
292
- func TestTemplateBoundaryHelpers(t *testing.T) {
293
- for _, c := range []struct {
294
- kind string
295
- ch rune
296
- want bool
297
- }{
298
- {"number", '5', true}, {"number", '.', true}, {"number", 'e', true}, {"number", 'E', true},
299
- {"number", '-', false}, {"number", '%', false},
300
- {"bigint", '5', true}, {"bigint", '.', true}, {"bigint", '-', false},
301
- {"string", '%', true}, {"boolean", 't', true},
302
- } {
303
- if got := template_right_extends(c.kind, c.ch); got != c.want {
304
- t.Fatalf("right_extends(%q, %q) = %v, want %v", c.kind, c.ch, got, c.want)
305
- }
306
- }
307
-
308
- for _, c := range []struct {
309
- name string
310
- meta *nativemetadata.MetadataSchema
311
- want string
312
- }{
313
- {"number", iterateTemplateAtomic("number", nil), "number"},
314
- {"bigint", iterateTemplateAtomic("bigint", nil), "bigint"},
315
- {"string", iterateTemplateAtomic("string", nil), "string"},
316
- {"boolean", iterateTemplateAtomic("boolean", nil), "string"},
317
- {"constant-only", iterateLiteral("x"), "string"},
318
- {"nil", nil, "string"},
319
- } {
320
- if got := template_variable_kind(c.meta); got != c.want {
321
- t.Fatalf("variable_kind(%s) = %q, want %q", c.name, got, c.want)
322
- }
323
- }
324
-
325
- if r, ok := template_literal_first(iterateLiteral("abc")); ok == false || r != 'a' {
326
- t.Fatalf("literal_first(abc) = %q,%v", r, ok)
327
- }
328
- for label, meta := range map[string]*nativemetadata.MetadataSchema{
329
- "empty": iterateLiteral(""),
330
- "non-literal": iterateTemplateAtomic("number", nil),
331
- "nil": nil,
332
- } {
333
- if _, ok := template_literal_first(meta); ok {
334
- t.Fatalf("literal_first(%s) should be not-ok", label)
335
- }
336
- }
337
- }
338
-
339
- // TestCheckTemplateInterpolationConditions wires placeholder tags into the
340
- // checker entry and inline union expressions.
341
- //
342
- // A sole template threads its placeholder tags through the entry conditions
343
- // (one condition per tag for single-row matrices, one collapsed condition for a
344
- // union matrix), composing with whole-string tags as a single AND row; a union
345
- // of templates inlines them into the member expression instead.
346
- //
347
- // 1. Sole template, single-row numeric matrix → one row, two conditions.
348
- // 2. Sole template, multi-row matrix → one collapsed condition naming both.
349
- // 3. Sole template, whole-string tag only → unchanged whole-string conditions.
350
- // 4. Sole template, string placeholder with an exclude tag → string conditions.
351
- // 5. Union of constrained templates → no entry conditions, non-nil expression.
352
- func TestCheckTemplateInterpolationConditions(t *testing.T) {
353
- emit := shimprinter.NewEmitContext()
354
- factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
355
- input := factory.NewIdentifier("input")
356
- context := nativecontext.ITypiaContext{Emit: emit}
357
-
358
- call := func(templates []*nativemetadata.MetadataTemplate) nativehelpers.ICheckEntry {
359
- return Check_template(Check_templateProps{
360
- Context: context,
361
- Templates: templates,
362
- Input: input,
363
- Emit: emit,
364
- })
365
- }
366
-
367
- // 1. single-row numeric matrix
368
- percent := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
369
- iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{
370
- {Name: "Minimum<0>", Validate: "0 <= $input"},
371
- {Name: "Maximum<100>", Validate: "$input <= 100"},
372
- }}),
373
- iterateLiteral("%"),
374
- }, nil)
375
- entry := call([]*nativemetadata.MetadataTemplate{percent})
376
- if entry.Expression == nil || len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 2 {
377
- t.Fatalf("percent entry must hold one row of two conditions, got %#v", entry.Conditions)
378
- }
379
-
380
- // 2. multi-row (union) matrix collapses to a single OR'd condition
381
- multi := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
382
- iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{
383
- {{Name: "Minimum<0>", Validate: "0 <= $input"}},
384
- {{Name: "Maximum<9>", Validate: "$input <= 9"}},
385
- }),
386
- }, nil)
387
- entry = call([]*nativemetadata.MetadataTemplate{multi})
388
- if len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 1 {
389
- t.Fatalf("multi-row matrix must collapse to one condition, got %#v", entry.Conditions)
390
- }
391
- if expected := entry.Conditions[0][0].Expected; !strings.Contains(expected, " | ") {
392
- t.Fatalf("collapsed expected should disjoin both rows, got %q", expected)
393
- }
394
-
395
- // 2b. bigint placeholder routes through the numeric path with a BigInt(...) input
396
- bigEntry := call([]*nativemetadata.MetadataTemplate{iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
397
- iterateLiteral("#"),
398
- iterateTemplateAtomic("bigint", [][]nativemetadata.IMetadataTypeTag{{
399
- {Name: "Minimum<0>", Validate: "BigInt(0) <= $input"},
400
- }}),
401
- }, nil)})
402
- if bigEntry.Expression == nil || len(bigEntry.Conditions) != 1 || len(bigEntry.Conditions[0]) != 1 {
403
- t.Fatalf("bigint entry must hold one row of one condition, got %#v", bigEntry.Conditions)
404
- }
405
-
406
- // 3. whole-string tag only — interpolation path is inert, output unchanged
407
- wholeOnly := iterateTemplateLiteral(
408
- []*nativemetadata.MetadataSchema{iterateLiteral("prefix"), iterateAtomic("string")},
409
- [][]nativemetadata.IMetadataTypeTag{{{Name: "MaxLength<5>", Validate: "$input.length <= 5"}}},
410
- )
411
- entry = call([]*nativemetadata.MetadataTemplate{wholeOnly})
412
- if len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 1 {
413
- t.Fatalf("whole-string-only template should keep its single condition, got %#v", entry.Conditions)
414
- }
415
-
416
- // 4. string placeholder carrying a validating tag and an exclude tag
417
- excluded := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
418
- iterateLiteral("ID"),
419
- iterateTemplateAtomic("string", [][]nativemetadata.IMetadataTypeTag{{
420
- {Name: "MinLength<2>", Validate: "$input.length >= 2"},
421
- {Name: "Exclude", Kind: "exclude", Schema: map[string]any{"not": map[string]any{"enum": []any{"no"}}}},
422
- }}),
423
- }, nil)
424
- entry = call([]*nativemetadata.MetadataTemplate{excluded})
425
- if len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 2 {
426
- t.Fatalf("string placeholder should emit a length and an exclude condition, got %#v", entry.Conditions)
427
- }
428
-
429
- // 4b. number placeholder carrying a validating tag and an exclude tag
430
- numberExcluded := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
431
- iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{
432
- {Name: "Minimum<0>", Validate: "0 <= $input"},
433
- {Name: "Exclude", Kind: "exclude", Schema: map[string]any{"not": map[string]any{"enum": []any{5}}}},
434
- }}),
435
- iterateLiteral("u"),
436
- }, nil)
437
- entry = call([]*nativemetadata.MetadataTemplate{numberExcluded})
438
- if len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 2 {
439
- t.Fatalf("number placeholder should emit a minimum and an exclude condition, got %#v", entry.Conditions)
440
- }
441
-
442
- // 5. union exercising every inline branch: interpolation-only (percent),
443
- // multi-row interpolation (multi), whole-string + interpolation combined, and
444
- // a tagless member whose inline expression collapses to nil.
445
- combined := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
446
- iterateLiteral("q"),
447
- iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "0 <= $input"}}}),
448
- }, [][]nativemetadata.IMetadataTypeTag{{{Name: "MaxLength<5>", Validate: "$input.length <= 5"}}})
449
- tagless := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
450
- iterateLiteral("x"),
451
- iterateAtomic("string"),
452
- }, nil)
453
- union := call([]*nativemetadata.MetadataTemplate{percent, multi, combined, tagless})
454
- if union.Expression == nil {
455
- t.Fatal("union template expression must not be nil")
456
- }
457
- if union.Conditions != nil {
458
- t.Fatalf("union template must not carry entry conditions, got %#v", union.Conditions)
459
- }
460
-
461
- // 6. whole-string tags exercising the exclude branch and an empty
462
- // (non-validating) row of check_template_type_tags / check_template_inline_tags.
463
- wsExclude := iterateTemplateLiteral(
464
- []*nativemetadata.MetadataSchema{iterateLiteral("p"), iterateAtomic("string")},
465
- [][]nativemetadata.IMetadataTypeTag{
466
- {
467
- {Name: "MaxLength<5>", Validate: "$input.length <= 5"},
468
- {Name: "Exclude", Kind: "exclude", Schema: map[string]any{"not": map[string]any{"enum": []any{"no"}}}},
469
- },
470
- {{Name: "Format<\"uuid\">"}}, // non-validating only → skipped row
471
- },
472
- )
473
- entry = call([]*nativemetadata.MetadataTemplate{wsExclude})
474
- if len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 2 {
475
- t.Fatalf("whole-string exclude should emit length + exclude, got %#v", entry.Conditions)
476
- }
477
- if unionWs := call([]*nativemetadata.MetadataTemplate{wsExclude, wsExclude}); unionWs.Expression == nil {
478
- t.Fatal("union whole-string inline expression must not be nil")
479
- }
480
-
481
- // 7. reducing an empty slice yields a literal (true/false) keyword.
482
- if check_template_reduce(nil, shimast.KindBarBarToken) == nil {
483
- t.Fatal("empty reduce should yield a keyword")
484
- }
485
- }
486
-
487
- func iterateTemplateAtomic(kind string, tags [][]nativemetadata.IMetadataTypeTag) *nativemetadata.MetadataSchema {
488
- meta := nativemetadata.MetadataSchema_initialize()
489
- meta.Atomics = append(meta.Atomics, nativemetadata.MetadataAtomic_create(nativemetadata.MetadataAtomic{Type: kind, Tags: tags}))
490
- return meta
491
- }
492
-
493
- func iterateTemplateLiteral(row []*nativemetadata.MetadataSchema, tags [][]nativemetadata.IMetadataTypeTag) *nativemetadata.MetadataTemplate {
494
- return &nativemetadata.MetadataTemplate{Row: row, Tags: tags}
495
- }
1
+ //go:build typia_native_internal
2
+ // +build typia_native_internal
3
+
4
+ package iterate
5
+
6
+ import (
7
+ "strings"
8
+ "testing"
9
+
10
+ shimast "github.com/microsoft/typescript-go/shim/ast"
11
+ shimprinter "github.com/microsoft/typescript-go/shim/printer"
12
+ nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
13
+ nativehelpers "github.com/samchon/typia/packages/typia/native/core/programmers/helpers"
14
+ nativemetadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
15
+ )
16
+
17
+ // TestTemplateCountCapturingGroups counts regex capturing groups.
18
+ //
19
+ // The running capture index that maps a constrained placeholder to its
20
+ // `match[index]` slot is driven entirely by this counter, so it must agree with
21
+ // how a JS engine numbers groups: count an unescaped `(` that does not open an
22
+ // inline `(?...)` group, and skip escaped parens — including a literal paren
23
+ // that follows an escaped backslash.
24
+ //
25
+ // 1. Count bare, alternation, nested, and non-capturing patterns.
26
+ // 2. Count the numeric span (only inline groups) as zero.
27
+ // 3. Count escaped parens as zero and a real group after `\\` as one.
28
+ func TestTemplateCountCapturingGroups(t *testing.T) {
29
+ cases := []struct {
30
+ pattern string
31
+ want int
32
+ }{
33
+ {"", 0},
34
+ {"(.*)", 1},
35
+ {"[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?", 0},
36
+ {"(a|b|c)", 1},
37
+ {"(a(b)c)", 2},
38
+ {"\\(literal\\)", 0},
39
+ {"\\\\(group)", 1},
40
+ {"(?:no)(yes)", 1},
41
+ {"(.*)-([+-]?\\d+)", 2},
42
+ {"([\\s\\S]*)", 1},
43
+ }
44
+ for _, tc := range cases {
45
+ if got := template_count_capturing_groups(tc.pattern); got != tc.want {
46
+ t.Fatalf("count(%q) = %d, want %d", tc.pattern, got, tc.want)
47
+ }
48
+ }
49
+ }
50
+
51
+ // TestTemplateFullyConstrained gates which tag matrices earn a capture.
52
+ //
53
+ // A placeholder is only captured when every OR row contributes at least one
54
+ // validate-able tag; otherwise some row admits the base type unconditionally and
55
+ // honoring the others would reject values the type accepts.
56
+ //
57
+ // 1. Reject nil and empty matrices.
58
+ // 2. Accept a matrix whose every row has a validate-able tag.
59
+ // 3. Reject a matrix with a row of only non-validating tags.
60
+ func TestTemplateFullyConstrained(t *testing.T) {
61
+ validating := nativemetadata.IMetadataTypeTag{Name: "Minimum<0>", Validate: "0 <= $input"}
62
+ schemaOnly := nativemetadata.IMetadataTypeTag{Name: "Format<\"uuid\">"}
63
+ cases := []struct {
64
+ name string
65
+ tags [][]nativemetadata.IMetadataTypeTag
66
+ want bool
67
+ }{
68
+ {"nil", nil, false},
69
+ {"empty", [][]nativemetadata.IMetadataTypeTag{}, false},
70
+ {"single", [][]nativemetadata.IMetadataTypeTag{{validating}}, true},
71
+ {"mixed-row", [][]nativemetadata.IMetadataTypeTag{{schemaOnly, validating}}, true},
72
+ {"schema-only-row", [][]nativemetadata.IMetadataTypeTag{{schemaOnly}}, false},
73
+ {"one-unconstrained-row", [][]nativemetadata.IMetadataTypeTag{{validating}, {schemaOnly}}, false},
74
+ }
75
+ for _, tc := range cases {
76
+ if got := template_fully_constrained(tc.tags); got != tc.want {
77
+ t.Fatalf("template_fully_constrained(%s) = %v, want %v", tc.name, got, tc.want)
78
+ }
79
+ }
80
+ }
81
+
82
+ // TestTemplateConstrainedCapture decides which placeholders earn a capture.
83
+ //
84
+ // Only a sole, required, non-nullable `number`, `bigint`, or `string` primitive
85
+ // carrying a fully runtime-checkable tag matrix is captured; boolean/union/
86
+ // constant placeholders, schema-only tags, and nullable/optional placeholders
87
+ // fall back to structural-only matching.
88
+ //
89
+ // 1. Accept number, bigint, and string placeholders with validating tags.
90
+ // 2. Reject boolean, unconstrained, nullable, optional, multi-bucket.
91
+ func TestTemplateConstrainedCapture(t *testing.T) {
92
+ minimum := [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "0 <= $input"}}}
93
+
94
+ if atomic, kind, ok := template_constrained_capture(iterateTemplateAtomic("number", minimum)); ok == false || kind != "number" || atomic == nil {
95
+ t.Fatal("number placeholder with a validating tag should be captured")
96
+ }
97
+ if _, kind, ok := template_constrained_capture(iterateTemplateAtomic("string", [][]nativemetadata.IMetadataTypeTag{{{Name: "MinLength<3>", Validate: "$input.length >= 3"}}})); ok == false || kind != "string" {
98
+ t.Fatal("string placeholder with a validating tag should be captured")
99
+ }
100
+ if _, kind, ok := template_constrained_capture(iterateTemplateAtomic("bigint", [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "BigInt(0) <= $input"}}})); ok == false || kind != "bigint" {
101
+ t.Fatal("bigint placeholder with a validating tag should be captured")
102
+ }
103
+
104
+ reject := func(label string, meta *nativemetadata.MetadataSchema) {
105
+ if _, _, ok := template_constrained_capture(meta); ok {
106
+ t.Fatalf("%s should not be captured", label)
107
+ }
108
+ }
109
+ reject("nil", nil)
110
+ reject("boolean", iterateTemplateAtomic("boolean", minimum))
111
+ reject("unconstrained number", iterateTemplateAtomic("number", nil))
112
+
113
+ nullable := iterateTemplateAtomic("number", minimum)
114
+ nullable.Nullable = true
115
+ reject("nullable", nullable)
116
+
117
+ optional := iterateTemplateAtomic("number", minimum)
118
+ optional.Required = false
119
+ optional.Optional = true
120
+ reject("optional", optional)
121
+
122
+ twoAtomics := iterateTemplateAtomic("number", minimum)
123
+ twoAtomics.Atomics = append(twoAtomics.Atomics, nativemetadata.MetadataAtomic_create(nativemetadata.MetadataAtomic{Type: "string"}))
124
+ reject("two atomics", twoAtomics)
125
+
126
+ withConstant := iterateTemplateAtomic("number", minimum)
127
+ withConstant.Constants = append(withConstant.Constants, nativemetadata.MetadataConstant_create(nativemetadata.MetadataConstant{
128
+ Type: "string",
129
+ Values: []*nativemetadata.MetadataConstantValue{nativemetadata.MetadataConstantValue_create(nativemetadata.MetadataConstantValue{Value: "x"})},
130
+ }))
131
+ reject("multi bucket", withConstant)
132
+ }
133
+
134
+ // TestTemplateRuntimePattern maps placeholders to stable capture indices.
135
+ //
136
+ // The structural regex mirrors metadata_to_pattern verbatim except that a
137
+ // constrained numeric placeholder is wrapped and a constrained string lowers to
138
+ // the newline-inclusive `([\s\S]*)`; every constrained placeholder must be
139
+ // assigned the capture index a JS engine would give it — counting the
140
+ // preexisting `(.*)`/alternation groups of unconstrained neighbors.
141
+ //
142
+ // 1. A leading literal plus a constrained number captures at index 1.
143
+ // 2. `${n}-${n}` keeps both numbers ("-" is not number-extendable) at 1 and 2;
144
+ // a string with a sibling absorbs the separator and falls back entirely.
145
+ // 3. A sole constrained string lowers to `([\s\S]*)`, anchored.
146
+ // 4. A constrained bigint lowers to the integer-only `([+-]?\d+)`, anchored.
147
+ // 5. A constrained placeholder adjacent to a variable-width neighbor falls back.
148
+ // 6. A template with no constrained placeholder yields no captures and the
149
+ // historical pattern.
150
+ func TestTemplateRuntimePattern(t *testing.T) {
151
+ number := iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "0 <= $input"}}})
152
+ numberB := iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{{Name: "Maximum<9>", Validate: "$input <= 9"}}})
153
+ str := iterateTemplateAtomic("string", [][]nativemetadata.IMetadataTypeTag{{{Name: "MinLength<3>", Validate: "$input.length >= 3"}}})
154
+ numberSpan := "[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?"
155
+
156
+ pattern, captures := template_runtime_pattern([]*nativemetadata.MetadataSchema{iterateLiteral("v"), number})
157
+ if want := "^v(" + numberSpan + ")$"; pattern != want {
158
+ t.Fatalf("leading-literal pattern = %q, want %q", pattern, want)
159
+ }
160
+ if len(captures) != 1 || captures[0].Index != 1 || captures[0].Kind != "number" {
161
+ t.Fatalf("leading-literal captures = %#v", captures)
162
+ }
163
+
164
+ // `${n}-${n}`: "-" is not in a number's right-extension set, so both numbers
165
+ // are pinned and capture at indices 1 and 2.
166
+ _, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{number, iterateLiteral("-"), numberB})
167
+ if len(captures) != 2 || captures[0].Index != 1 || captures[0].Kind != "number" || captures[1].Index != 2 || captures[1].Kind != "number" {
168
+ t.Fatalf("number-'-'-number captures = %#v", captures)
169
+ }
170
+
171
+ // A string with a sibling absorbs the "-" (greedy `[\s\S]*`), unpinning both
172
+ // itself and the number, so the whole template falls back to no captures.
173
+ _, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{str, iterateLiteral("-"), numberB})
174
+ if len(captures) != 0 {
175
+ t.Fatalf("string-with-sibling template must fall back, got %#v", captures)
176
+ }
177
+
178
+ // A constrained string captures every character (newlines included) via
179
+ // `([\s\S]*)`, not the newline-blind `(.*)`.
180
+ pattern, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{iterateLiteral("L:"), str})
181
+ if want := "^L:([\\s\\S]*)$"; pattern != want {
182
+ t.Fatalf("constrained-string pattern = %q, want %q", pattern, want)
183
+ }
184
+ if len(captures) != 1 || captures[0].Index != 1 || captures[0].Kind != "string" {
185
+ t.Fatalf("constrained-string captures = %#v", captures)
186
+ }
187
+
188
+ // A constrained bigint captures an integer only, so BigInt(...) cannot throw.
189
+ big := iterateTemplateAtomic("bigint", [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "BigInt(0) <= $input"}}})
190
+ pattern, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{iterateLiteral("#"), big})
191
+ if want := "^#([+-]?\\d+)$"; pattern != want {
192
+ t.Fatalf("constrained-bigint pattern = %q, want %q", pattern, want)
193
+ }
194
+ if len(captures) != 1 || captures[0].Index != 1 || captures[0].Kind != "bigint" {
195
+ t.Fatalf("constrained-bigint captures = %#v", captures)
196
+ }
197
+
198
+ // A constrained placeholder adjacent to a variable-width neighbor (here an
199
+ // unconstrained string before the number, with no literal between) is
200
+ // ambiguous under greedy matching, so it falls back to structural-only
201
+ // matching with no capture — rather than risking a false negative.
202
+ _, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{iterateAtomic("string"), number})
203
+ if len(captures) != 0 {
204
+ t.Fatalf("number adjacent to a variable-width neighbor must not be captured, got %#v", captures)
205
+ }
206
+ _, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{str, numberB})
207
+ if len(captures) != 0 {
208
+ t.Fatalf("two adjacent constrained placeholders must both fall back, got %#v", captures)
209
+ }
210
+
211
+ pattern, captures = template_runtime_pattern([]*nativemetadata.MetadataSchema{iterateLiteral("plain"), iterateAtomic("string")})
212
+ if len(captures) != 0 {
213
+ t.Fatalf("unconstrained template should have no captures, got %#v", captures)
214
+ }
215
+ if want := "^plain(.*)"; pattern != want {
216
+ t.Fatalf("unconstrained pattern = %q, want %q", pattern, want)
217
+ }
218
+ }
219
+
220
+ // TestTemplateClearBoundary gates capture on boundaries the greedy regex pins.
221
+ //
222
+ // A placeholder is captured only when, on each side, the template edge or a
223
+ // literal whose first character its relevant variable neighbor cannot absorb
224
+ // pins it; otherwise the split can slide and it falls back.
225
+ //
226
+ // 1. A single literal segment is a boundary; an atomic, a multi-value constant,
227
+ // and nil are not.
228
+ // 2. Sole / literal-fenced placeholders clear; an adjacent variable does not.
229
+ // 3. `${n}-${n}` clears ("-" not number-extendable); `${n}.${n}` does not (".").
230
+ // 4. A string before a sibling absorbs the separator, unpinning both itself and
231
+ // the number; a number before a string keeps both.
232
+ func TestTemplateClearBoundary(t *testing.T) {
233
+ num := iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "0 <= $input"}}})
234
+ str := iterateTemplateAtomic("string", [][]nativemetadata.IMetadataTypeTag{{{Name: "MinLength<1>", Validate: "$input.length >= 1"}}})
235
+ bint := iterateTemplateAtomic("bigint", nil)
236
+ multi := nativemetadata.MetadataSchema_initialize()
237
+ multi.Constants = append(multi.Constants, nativemetadata.MetadataConstant_create(nativemetadata.MetadataConstant{
238
+ Type: "string",
239
+ Values: []*nativemetadata.MetadataConstantValue{
240
+ nativemetadata.MetadataConstantValue_create(nativemetadata.MetadataConstantValue{Value: "a"}),
241
+ nativemetadata.MetadataConstantValue_create(nativemetadata.MetadataConstantValue{Value: "bb"}),
242
+ },
243
+ }))
244
+
245
+ if template_is_literal(iterateLiteral("x")) == false {
246
+ t.Fatal("a single literal segment must count as a boundary")
247
+ }
248
+ for label, meta := range map[string]*nativemetadata.MetadataSchema{"atomic": num, "multi-constant": multi, "nil": nil} {
249
+ if template_is_literal(meta) {
250
+ t.Fatalf("%s must not count as a boundary", label)
251
+ }
252
+ }
253
+
254
+ type clearCase struct {
255
+ name string
256
+ row []*nativemetadata.MetadataSchema
257
+ i int
258
+ want bool
259
+ }
260
+ for _, c := range []clearCase{
261
+ {"sole", []*nativemetadata.MetadataSchema{num}, 0, true},
262
+ {"fenced by literals", []*nativemetadata.MetadataSchema{iterateLiteral("a"), num, iterateLiteral("b")}, 1, true},
263
+ {"adjacent variable", []*nativemetadata.MetadataSchema{num, num}, 0, false},
264
+ {"num-'-'-num left", []*nativemetadata.MetadataSchema{num, iterateLiteral("-"), num}, 0, true},
265
+ {"num-'-'-num right", []*nativemetadata.MetadataSchema{num, iterateLiteral("-"), num}, 2, true},
266
+ {"num-'.'-num (decimal absorbs)", []*nativemetadata.MetadataSchema{num, iterateLiteral("."), num}, 0, false},
267
+ {"string absorbs separator", []*nativemetadata.MetadataSchema{str, iterateLiteral("-"), num}, 0, false},
268
+ {"number unpinned by left string", []*nativemetadata.MetadataSchema{str, iterateLiteral("-"), num}, 2, false},
269
+ {"number before string, number pinned", []*nativemetadata.MetadataSchema{num, iterateLiteral("-"), str}, 0, true},
270
+ {"number before string, string pinned", []*nativemetadata.MetadataSchema{num, iterateLiteral("-"), str}, 2, true},
271
+ // An empty separator literal has no first character to absorb, so the
272
+ // boundary is treated as pinned.
273
+ {"empty separator literal", []*nativemetadata.MetadataSchema{num, iterateLiteral(""), num}, 0, true},
274
+ // A bigint neighbor lowers to the decimal NUMBER span, so it absorbs "."
275
+ // too (a constrained number after a bigint must fall back).
276
+ {"bigint absorbs decimal", []*nativemetadata.MetadataSchema{bint, iterateLiteral("."), num}, 2, false},
277
+ } {
278
+ if got := template_clear_boundary(c.row, c.i); got != c.want {
279
+ t.Fatalf("clear_boundary(%s) = %v, want %v", c.name, got, c.want)
280
+ }
281
+ }
282
+ }
283
+
284
+ // TestTemplateBoundaryHelpers covers the right-extension, kind, and literal-first
285
+ // primitives that drive template_clear_boundary.
286
+ //
287
+ // 1. right_extends: number and bigint grow through digit/'.'/e but not their
288
+ // sign; string/other through anything.
289
+ // 2. variable_kind: number/bigint/string atomics map to themselves; everything
290
+ // else (boolean, constant-only, nil) is conservatively "string".
291
+ // 3. literal_first: the text's first rune, or not-ok for empty/non-literal/nil.
292
+ func TestTemplateBoundaryHelpers(t *testing.T) {
293
+ for _, c := range []struct {
294
+ kind string
295
+ ch rune
296
+ want bool
297
+ }{
298
+ {"number", '5', true}, {"number", '.', true}, {"number", 'e', true}, {"number", 'E', true},
299
+ {"number", '-', false}, {"number", '%', false},
300
+ {"bigint", '5', true}, {"bigint", '.', true}, {"bigint", '-', false},
301
+ {"string", '%', true}, {"boolean", 't', true},
302
+ } {
303
+ if got := template_right_extends(c.kind, c.ch); got != c.want {
304
+ t.Fatalf("right_extends(%q, %q) = %v, want %v", c.kind, c.ch, got, c.want)
305
+ }
306
+ }
307
+
308
+ for _, c := range []struct {
309
+ name string
310
+ meta *nativemetadata.MetadataSchema
311
+ want string
312
+ }{
313
+ {"number", iterateTemplateAtomic("number", nil), "number"},
314
+ {"bigint", iterateTemplateAtomic("bigint", nil), "bigint"},
315
+ {"string", iterateTemplateAtomic("string", nil), "string"},
316
+ {"boolean", iterateTemplateAtomic("boolean", nil), "string"},
317
+ {"constant-only", iterateLiteral("x"), "string"},
318
+ {"nil", nil, "string"},
319
+ } {
320
+ if got := template_variable_kind(c.meta); got != c.want {
321
+ t.Fatalf("variable_kind(%s) = %q, want %q", c.name, got, c.want)
322
+ }
323
+ }
324
+
325
+ if r, ok := template_literal_first(iterateLiteral("abc")); ok == false || r != 'a' {
326
+ t.Fatalf("literal_first(abc) = %q,%v", r, ok)
327
+ }
328
+ for label, meta := range map[string]*nativemetadata.MetadataSchema{
329
+ "empty": iterateLiteral(""),
330
+ "non-literal": iterateTemplateAtomic("number", nil),
331
+ "nil": nil,
332
+ } {
333
+ if _, ok := template_literal_first(meta); ok {
334
+ t.Fatalf("literal_first(%s) should be not-ok", label)
335
+ }
336
+ }
337
+ }
338
+
339
+ // TestCheckTemplateInterpolationConditions wires placeholder tags into the
340
+ // checker entry and inline union expressions.
341
+ //
342
+ // A sole template threads its placeholder tags through the entry conditions
343
+ // (one condition per tag for single-row matrices, one collapsed condition for a
344
+ // union matrix), composing with whole-string tags as a single AND row; a union
345
+ // of templates inlines them into the member expression instead.
346
+ //
347
+ // 1. Sole template, single-row numeric matrix → one row, two conditions.
348
+ // 2. Sole template, multi-row matrix → one collapsed condition naming both.
349
+ // 3. Sole template, whole-string tag only → unchanged whole-string conditions.
350
+ // 4. Sole template, string placeholder with an exclude tag → string conditions.
351
+ // 5. Union of constrained templates → no entry conditions, non-nil expression.
352
+ func TestCheckTemplateInterpolationConditions(t *testing.T) {
353
+ emit := shimprinter.NewEmitContext()
354
+ factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
355
+ input := factory.NewIdentifier("input")
356
+ context := nativecontext.ITypiaContext{Emit: emit}
357
+
358
+ call := func(templates []*nativemetadata.MetadataTemplate) nativehelpers.ICheckEntry {
359
+ return Check_template(Check_templateProps{
360
+ Context: context,
361
+ Templates: templates,
362
+ Input: input,
363
+ Emit: emit,
364
+ })
365
+ }
366
+
367
+ // 1. single-row numeric matrix
368
+ percent := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
369
+ iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{
370
+ {Name: "Minimum<0>", Validate: "0 <= $input"},
371
+ {Name: "Maximum<100>", Validate: "$input <= 100"},
372
+ }}),
373
+ iterateLiteral("%"),
374
+ }, nil)
375
+ entry := call([]*nativemetadata.MetadataTemplate{percent})
376
+ if entry.Expression == nil || len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 2 {
377
+ t.Fatalf("percent entry must hold one row of two conditions, got %#v", entry.Conditions)
378
+ }
379
+
380
+ // 2. multi-row (union) matrix collapses to a single OR'd condition
381
+ multi := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
382
+ iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{
383
+ {{Name: "Minimum<0>", Validate: "0 <= $input"}},
384
+ {{Name: "Maximum<9>", Validate: "$input <= 9"}},
385
+ }),
386
+ }, nil)
387
+ entry = call([]*nativemetadata.MetadataTemplate{multi})
388
+ if len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 1 {
389
+ t.Fatalf("multi-row matrix must collapse to one condition, got %#v", entry.Conditions)
390
+ }
391
+ if expected := entry.Conditions[0][0].Expected; !strings.Contains(expected, " | ") {
392
+ t.Fatalf("collapsed expected should disjoin both rows, got %q", expected)
393
+ }
394
+
395
+ // 2b. bigint placeholder routes through the numeric path with a BigInt(...) input
396
+ bigEntry := call([]*nativemetadata.MetadataTemplate{iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
397
+ iterateLiteral("#"),
398
+ iterateTemplateAtomic("bigint", [][]nativemetadata.IMetadataTypeTag{{
399
+ {Name: "Minimum<0>", Validate: "BigInt(0) <= $input"},
400
+ }}),
401
+ }, nil)})
402
+ if bigEntry.Expression == nil || len(bigEntry.Conditions) != 1 || len(bigEntry.Conditions[0]) != 1 {
403
+ t.Fatalf("bigint entry must hold one row of one condition, got %#v", bigEntry.Conditions)
404
+ }
405
+
406
+ // 3. whole-string tag only — interpolation path is inert, output unchanged
407
+ wholeOnly := iterateTemplateLiteral(
408
+ []*nativemetadata.MetadataSchema{iterateLiteral("prefix"), iterateAtomic("string")},
409
+ [][]nativemetadata.IMetadataTypeTag{{{Name: "MaxLength<5>", Validate: "$input.length <= 5"}}},
410
+ )
411
+ entry = call([]*nativemetadata.MetadataTemplate{wholeOnly})
412
+ if len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 1 {
413
+ t.Fatalf("whole-string-only template should keep its single condition, got %#v", entry.Conditions)
414
+ }
415
+
416
+ // 4. string placeholder carrying a validating tag and an exclude tag
417
+ excluded := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
418
+ iterateLiteral("ID"),
419
+ iterateTemplateAtomic("string", [][]nativemetadata.IMetadataTypeTag{{
420
+ {Name: "MinLength<2>", Validate: "$input.length >= 2"},
421
+ {Name: "Exclude", Kind: "exclude", Schema: map[string]any{"not": map[string]any{"enum": []any{"no"}}}},
422
+ }}),
423
+ }, nil)
424
+ entry = call([]*nativemetadata.MetadataTemplate{excluded})
425
+ if len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 2 {
426
+ t.Fatalf("string placeholder should emit a length and an exclude condition, got %#v", entry.Conditions)
427
+ }
428
+
429
+ // 4b. number placeholder carrying a validating tag and an exclude tag
430
+ numberExcluded := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
431
+ iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{
432
+ {Name: "Minimum<0>", Validate: "0 <= $input"},
433
+ {Name: "Exclude", Kind: "exclude", Schema: map[string]any{"not": map[string]any{"enum": []any{5}}}},
434
+ }}),
435
+ iterateLiteral("u"),
436
+ }, nil)
437
+ entry = call([]*nativemetadata.MetadataTemplate{numberExcluded})
438
+ if len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 2 {
439
+ t.Fatalf("number placeholder should emit a minimum and an exclude condition, got %#v", entry.Conditions)
440
+ }
441
+
442
+ // 5. union exercising every inline branch: interpolation-only (percent),
443
+ // multi-row interpolation (multi), whole-string + interpolation combined, and
444
+ // a tagless member whose inline expression collapses to nil.
445
+ combined := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
446
+ iterateLiteral("q"),
447
+ iterateTemplateAtomic("number", [][]nativemetadata.IMetadataTypeTag{{{Name: "Minimum<0>", Validate: "0 <= $input"}}}),
448
+ }, [][]nativemetadata.IMetadataTypeTag{{{Name: "MaxLength<5>", Validate: "$input.length <= 5"}}})
449
+ tagless := iterateTemplateLiteral([]*nativemetadata.MetadataSchema{
450
+ iterateLiteral("x"),
451
+ iterateAtomic("string"),
452
+ }, nil)
453
+ union := call([]*nativemetadata.MetadataTemplate{percent, multi, combined, tagless})
454
+ if union.Expression == nil {
455
+ t.Fatal("union template expression must not be nil")
456
+ }
457
+ if union.Conditions != nil {
458
+ t.Fatalf("union template must not carry entry conditions, got %#v", union.Conditions)
459
+ }
460
+
461
+ // 6. whole-string tags exercising the exclude branch and an empty
462
+ // (non-validating) row of check_template_type_tags / check_template_inline_tags.
463
+ wsExclude := iterateTemplateLiteral(
464
+ []*nativemetadata.MetadataSchema{iterateLiteral("p"), iterateAtomic("string")},
465
+ [][]nativemetadata.IMetadataTypeTag{
466
+ {
467
+ {Name: "MaxLength<5>", Validate: "$input.length <= 5"},
468
+ {Name: "Exclude", Kind: "exclude", Schema: map[string]any{"not": map[string]any{"enum": []any{"no"}}}},
469
+ },
470
+ {{Name: "Format<\"uuid\">"}}, // non-validating only → skipped row
471
+ },
472
+ )
473
+ entry = call([]*nativemetadata.MetadataTemplate{wsExclude})
474
+ if len(entry.Conditions) != 1 || len(entry.Conditions[0]) != 2 {
475
+ t.Fatalf("whole-string exclude should emit length + exclude, got %#v", entry.Conditions)
476
+ }
477
+ if unionWs := call([]*nativemetadata.MetadataTemplate{wsExclude, wsExclude}); unionWs.Expression == nil {
478
+ t.Fatal("union whole-string inline expression must not be nil")
479
+ }
480
+
481
+ // 7. reducing an empty slice yields a literal (true/false) keyword.
482
+ if check_template_reduce(nil, shimast.KindBarBarToken) == nil {
483
+ t.Fatal("empty reduce should yield a keyword")
484
+ }
485
+ }
486
+
487
+ func iterateTemplateAtomic(kind string, tags [][]nativemetadata.IMetadataTypeTag) *nativemetadata.MetadataSchema {
488
+ meta := nativemetadata.MetadataSchema_initialize()
489
+ meta.Atomics = append(meta.Atomics, nativemetadata.MetadataAtomic_create(nativemetadata.MetadataAtomic{Type: kind, Tags: tags}))
490
+ return meta
491
+ }
492
+
493
+ func iterateTemplateLiteral(row []*nativemetadata.MetadataSchema, tags [][]nativemetadata.IMetadataTypeTag) *nativemetadata.MetadataTemplate {
494
+ return &nativemetadata.MetadataTemplate{Row: row, Tags: tags}
495
+ }