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,1006 +1,1006 @@
1
- //go:build typia_native_internal
2
- // +build typia_native_internal
3
-
4
- package factories
5
-
6
- import (
7
- "math/big"
8
- "os"
9
- "path/filepath"
10
- "strings"
11
- "testing"
12
-
13
- shimast "github.com/microsoft/typescript-go/shim/ast"
14
- shimchecker "github.com/microsoft/typescript-go/shim/checker"
15
- shimprinter "github.com/microsoft/typescript-go/shim/printer"
16
- "github.com/samchon/ttsc/packages/ttsc/driver"
17
- schemametadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
18
- nativeprotobuf "github.com/samchon/typia/packages/typia/native/core/schemas/protobuf"
19
- )
20
-
21
- // TestFactoryUtilityCoverage covers small factory helpers.
22
- //
23
- // Most factory paths are exercised through TypeScript transforms, but simple
24
- // AST helper branches and text-formatting helpers do not need a compiler
25
- // program. This test keeps those deterministic helper checks local to the
26
- // factories package.
27
- //
28
- // 1. Generate numeric range predicates for all supported numeric tags.
29
- // 2. Exercise bigint, object, currying, self-call, and escaped-text helpers.
30
- // 3. Cover comment merging and statement helper branches.
31
- // 4. Verify fallback AST, literal, protobuf, sequence validation, and type-tag factory paths.
32
- // 5. Resolve TypeScript checker-backed type names and synthetic function declarations.
33
- func TestFactoryUtilityCoverage(t *testing.T) {
34
- emit := shimprinter.NewEmitContext()
35
- input := expressionFactory_factory.NewIdentifier("input")
36
- for _, name := range []string{"int32", "uint32", "int64", "uint64", "float", "double", "unknown"} {
37
- if NumericRangeFactory.Number(name, input) == nil {
38
- t.Fatalf("number range %s returned nil", name)
39
- }
40
- }
41
- for _, name := range []string{"uint64", "int64"} {
42
- if NumericRangeFactory.Bigint(name, input) == nil {
43
- t.Fatalf("bigint range %s returned nil", name)
44
- }
45
- }
46
-
47
- if ExpressionFactory.Bigint("123") == nil {
48
- t.Fatal("bigint expression returned nil")
49
- }
50
- if ExpressionFactory.Number(-12) == nil ||
51
- ExpressionFactory.Number(float32(1.5)) == nil ||
52
- ExpressionFactory.Number("7") == nil {
53
- t.Fatal("number expression branch returned nil")
54
- }
55
- if ExpressionFactory.IsRequired(input) == nil {
56
- t.Fatal("required expression returned nil")
57
- }
58
- if ExpressionFactory.IsArray(input) == nil ||
59
- ExpressionFactory.IsObject(ExpressionFactory_IsObjectProps{Input: input, CheckNull: true, CheckArray: true}) == nil ||
60
- ExpressionFactory.IsInstanceOf("Date", input) == nil ||
61
- ExpressionFactory.Coalesce(input, expressionFactory_factory.NewIdentifier("fallback")) == nil {
62
- t.Fatal("basic expression factory branch returned nil")
63
- }
64
- if ExpressionFactory.Currying(ExpressionFactory_CurryingProps{
65
- Function: expressionFactory_factory.NewIdentifier("fn"),
66
- Arguments: nil,
67
- }) == nil {
68
- t.Fatal("zero-argument currying returned nil")
69
- }
70
- if ExpressionFactory.Currying(ExpressionFactory_CurryingProps{
71
- Function: expressionFactory_factory.NewIdentifier("fn"),
72
- Arguments: []*shimast.Expression{
73
- expressionFactory_factory.NewIdentifier("a"),
74
- expressionFactory_factory.NewIdentifier("b"),
75
- },
76
- }) == nil {
77
- t.Fatal("multi-argument currying returned nil")
78
- }
79
- call := expressionFactory_factory.NewCallExpression(
80
- expressionFactory_factory.NewIdentifier("already"),
81
- nil,
82
- nil,
83
- nil,
84
- shimast.NodeFlagsNone,
85
- )
86
- if ExpressionFactory.SelfCall(emit, call) != call {
87
- t.Fatal("self-call should return call expressions unchanged")
88
- }
89
- if ExpressionFactory.SelfCall(emit, StatementFactory.Block(input), TypeFactory.Keyword("string")) == nil {
90
- t.Fatal("self-call should wrap non-call bodies")
91
- }
92
- if ExpressionFactory.GetEscapedText(ExpressionFactory_GetEscapedTextProps{}) != "" {
93
- t.Fatal("nil escaped text should be empty")
94
- }
95
- if ExpressionFactory.GetEscapedText(ExpressionFactory_GetEscapedTextProps{Input: input}) != "input" {
96
- t.Fatal("identifier escaped text mismatch")
97
- }
98
- if ExpressionFactory.GetEscapedText(ExpressionFactory_GetEscapedTextProps{
99
- Input: expressionFactory_factory.NewStringLiteral("text", shimast.TokenFlagsNone),
100
- }) != "text" {
101
- t.Fatal("string escaped text mismatch")
102
- }
103
- access := IdentifierFactory.Access(emit, input, "field")
104
- if IdentifierFactory.GetName(access) != "input.field" {
105
- t.Fatalf("property access name mismatch: %s", IdentifierFactory.GetName(access))
106
- }
107
- element := IdentifierFactory.Access(emit, input, "not valid")
108
- if IdentifierFactory.GetName(element) != "input[not valid]" {
109
- t.Fatalf("element access name mismatch: %s", IdentifierFactory.GetName(element))
110
- }
111
- if IdentifierFactory.GetName(nil) != "unknown" {
112
- t.Fatal("nil identifier name should be unknown")
113
- }
114
- if TypeFactory.GetReturnTypeOfClassMethod(TypeFactory_GetReturnTypeOfClassMethodProps{}) != nil {
115
- t.Fatal("nil checker and class should not produce a return type")
116
- }
117
- if TypeFactory.GetFunction(nil) != nil || TypeFactory.GetFunction(&shimchecker.Type{}) != nil {
118
- t.Fatal("nil or zero types should not produce function declarations")
119
- }
120
- if TypeFactory.GetFullName(TypeFactory_GetFullNameProps{}) != "" {
121
- t.Fatal("nil full name lookup should be empty")
122
- }
123
- if typeFactory_get_name(nil) != "__type" {
124
- t.Fatal("nil type factory internals should use fallback values")
125
- }
126
- for _, keyword := range []string{"void", "any", "unknown", "boolean", "number", "bigint", "string"} {
127
- if TypeFactory.Keyword(keyword) == nil {
128
- t.Fatalf("keyword %s returned nil", keyword)
129
- }
130
- }
131
- typeDir := t.TempDir()
132
- if err := os.MkdirAll(filepath.Join(typeDir, "src"), 0o755); err != nil {
133
- t.Fatalf("mkdir type factory fixture: %v", err)
134
- }
135
- if err := os.WriteFile(filepath.Join(typeDir, "tsconfig.json"), []byte(`{
136
- "compilerOptions": {
137
- "target": "ES2022",
138
- "module": "commonjs",
139
- "moduleResolution": "bundler",
140
- "ignoreDeprecations": "6.0",
141
- "strict": true,
142
- "skipLibCheck": true
143
- },
144
- "include": ["src"]
145
- }
146
- `), 0o644); err != nil {
147
- t.Fatalf("write type factory tsconfig: %v", err)
148
- }
149
- if err := os.WriteFile(filepath.Join(typeDir, "src", "main.ts"), []byte(`
150
- export function declared(): string { return ""; }
151
- export const holder = { assigned: () => "" };
152
- export class Example {
153
- field = () => "field";
154
- value = 1;
155
- method(): number { return 1; }
156
- }
157
- export interface Box<T> { value: T; }
158
- export let example!: Example;
159
- export let box!: Box<string>;
160
- export let promised!: Promise<string>;
161
- export let inter!: { left: string } & { right: number };
162
- export namespace Outer {
163
- export interface Inner { label: string; }
164
- }
165
- export let inner!: Outer.Inner;
166
- `), 0o644); err != nil {
167
- t.Fatalf("write type factory source: %v", err)
168
- }
169
- prog, diags, err := driver.LoadProgram(typeDir, "tsconfig.json", driver.LoadProgramOptions{})
170
- if err != nil {
171
- t.Fatalf("load type factory program: %v", err)
172
- }
173
- if len(diags) != 0 {
174
- t.Fatalf("type factory fixture diagnostics: %+v", diags)
175
- }
176
- defer prog.Close()
177
- source := prog.SourceFile(filepath.Join(typeDir, "src", "main.ts"))
178
- if source == nil {
179
- t.Fatal("type factory source file was not loaded")
180
- }
181
- statements := source.Statements.Nodes
182
- if len(statements) < 10 {
183
- t.Fatalf("type factory fixture expected statements, got %d", len(statements))
184
- }
185
- variableType := func(index int) *shimchecker.Type {
186
- declarations := statements[index].AsVariableStatement().DeclarationList.AsVariableDeclarationList().Declarations.Nodes
187
- if len(declarations) == 0 {
188
- t.Fatalf("variable statement %d has no declarations", index)
189
- }
190
- return prog.Checker.GetTypeAtLocation(declarations[0])
191
- }
192
- if !TypeFactory.IsFunction(prog.Checker.GetTypeAtLocation(statements[0])) {
193
- t.Fatal("function declaration should be recognized as function-like")
194
- }
195
- holderType := variableType(1)
196
- assignedSymbol := prog.Checker.GetPropertyOfType(holderType, "assigned")
197
- if assignedSymbol == nil {
198
- t.Fatal("holder.assigned symbol was not found")
199
- }
200
- assignedType := prog.Checker.GetTypeOfSymbolAtLocation(assignedSymbol, assignedSymbol.ValueDeclaration)
201
- assignedDeclaredType := shimchecker.Checker_getTypeOfSymbol(prog.Checker, assignedSymbol)
202
- if TypeFactory.GetFunction(assignedDeclaredType) == nil && TypeFactory.GetFunction(assignedType) == nil {
203
- t.Fatal("property assignment initializer should be recognized as function-like")
204
- }
205
- exampleType := variableType(4)
206
- fieldSymbol := prog.Checker.GetPropertyOfType(exampleType, "field")
207
- if fieldSymbol == nil {
208
- t.Fatal("example.field symbol was not found")
209
- }
210
- fieldType := prog.Checker.GetTypeOfSymbolAtLocation(fieldSymbol, fieldSymbol.ValueDeclaration)
211
- fieldDeclaredType := shimchecker.Checker_getTypeOfSymbol(prog.Checker, fieldSymbol)
212
- if TypeFactory.GetFunction(fieldDeclaredType) == nil && TypeFactory.GetFunction(fieldType) == nil {
213
- t.Fatal("property declaration initializer should be recognized as function-like")
214
- }
215
- if TypeFactory.GetReturnTypeOfClassMethod(TypeFactory_GetReturnTypeOfClassMethodProps{
216
- Checker: prog.Checker,
217
- Class: exampleType,
218
- Function: "method",
219
- }) == nil {
220
- t.Fatal("class method return type should be resolved")
221
- }
222
- if TypeFactory.GetReturnTypeOfClassMethod(TypeFactory_GetReturnTypeOfClassMethodProps{
223
- Checker: prog.Checker,
224
- Class: exampleType,
225
- Function: "missing",
226
- }) != nil || TypeFactory.GetReturnTypeOfClassMethod(TypeFactory_GetReturnTypeOfClassMethodProps{
227
- Checker: prog.Checker,
228
- Class: exampleType,
229
- Function: "value",
230
- }) != nil {
231
- t.Fatal("missing or non-call class properties should not produce return types")
232
- }
233
- for _, tc := range []struct {
234
- name string
235
- index int
236
- contains string
237
- }{
238
- {name: "generic", index: 5, contains: "Box<string>"},
239
- {name: "promise", index: 6, contains: "string"},
240
- {name: "intersection", index: 7, contains: " & "},
241
- {name: "namespace", index: 9, contains: "Outer.Inner"},
242
- } {
243
- fullName := TypeFactory.GetFullName(TypeFactory_GetFullNameProps{
244
- Checker: prog.Checker,
245
- Type: variableType(tc.index),
246
- })
247
- if !strings.Contains(fullName, tc.contains) {
248
- t.Fatalf("%s full name %q did not contain %q", tc.name, fullName, tc.contains)
249
- }
250
- }
251
- if IdentifierFactory.Postfix("field") != "\".field\"" ||
252
- IdentifierFactory.Postfix("not valid") == "" {
253
- t.Fatal("identifier postfix formatting mismatch")
254
- }
255
- if IdentifierFactory.Parameter("value", nil, nil) == nil ||
256
- IdentifierFactory.Parameter(input, TypeFactory.Keyword("string"), nil) == nil ||
257
- IdentifierFactory.Parameter(123, nil, expressionFactory_factory.NewToken(shimast.KindQuestionToken)) == nil {
258
- t.Fatal("identifier parameter branch returned nil")
259
- }
260
-
261
- description := CommentFactory.Description(nil)
262
- if description != nil {
263
- t.Fatal("description placeholder should stay nil")
264
- }
265
- merged := CommentFactory.Merge([]CommentFactory_SymbolDisplayPart{
266
- {Text: "a\r\n"},
267
- {Text: "b"},
268
- })
269
- if merged != "a\nb" {
270
- t.Fatalf("comment merge mismatch: %q", merged)
271
- }
272
- if StatementFactory.Entry(StatementFactory_EntryProps{Key: "k", Value: "v"}) == nil {
273
- t.Fatal("entry statement returned nil")
274
- }
275
- if StatementFactory.Mut(StatementFactory_MutProps{Name: "mutable"}) == nil ||
276
- StatementFactory.Constant(StatementFactory_ConstantProps{Name: "constant"}) == nil {
277
- t.Fatal("variable statement helper returned nil")
278
- }
279
- if StatementFactory.Transpile("expr") == nil {
280
- t.Fatal("transpile statement returned nil")
281
- }
282
- if StatementFactory.Block(input) == nil {
283
- t.Fatal("block statement returned nil")
284
- }
285
- if ValueFactory.BOOLEAN(true).Kind != shimast.KindTrueKeyword ||
286
- ValueFactory.BOOLEAN(false).Kind != shimast.KindFalseKeyword {
287
- t.Fatal("boolean value factory returned wrong keyword")
288
- }
289
- if LiteralFactory.Write(big.NewInt(10)) == nil {
290
- t.Fatal("bigint literal branch returned nil")
291
- }
292
- type literalStruct struct {
293
- Name string
294
- Age int
295
- skip string
296
- }
297
- literalPointer := 11
298
- if LiteralFactory.Write(nil) == nil ||
299
- LiteralFactory.Write([]any{"a", 1, true}) == nil ||
300
- LiteralFactory.Write(map[string]any{"type": "string", "skip": nil}) == nil ||
301
- LiteralFactory.Write(literalStruct{Name: "sam", Age: 1}) == nil ||
302
- LiteralFactory.Write(&literalPointer) == nil ||
303
- LiteralFactory.Write(func() {}) == nil {
304
- t.Fatal("literal factory branch returned nil")
305
- }
306
- if TemplateFactory.Generate([]*shimast.Expression{
307
- expressionFactory_factory.NewStringLiteral("a", shimast.TokenFlagsNone),
308
- expressionFactory_factory.NewStringLiteral("b", shimast.TokenFlagsNone),
309
- }) == nil || TemplateFactory.Generate([]*shimast.Expression{
310
- expressionFactory_factory.NewStringLiteral("a", shimast.TokenFlagsNone),
311
- input,
312
- expressionFactory_factory.NewStringLiteral("b", shimast.TokenFlagsNone),
313
- }) == nil {
314
- t.Fatal("template factory branch returned nil")
315
- }
316
- importer := factoryUtilityImporter{}
317
- for _, script := range []string{
318
- "$input;",
319
- "$importInternal(\"helper\");",
320
- "$importInstance(\"Thing\", \"pkg\");",
321
- "$importNamespace(\"NS\", \"pkg\");",
322
- "$importDefault(\"Default\", \"pkg\", false);",
323
- } {
324
- if ExpressionFactory.Transpile(ExpressionFactory_TranspileProps{
325
- Importer: importer,
326
- Script: script,
327
- })(input) == nil {
328
- t.Fatalf("expression transpile returned nil for %s", script)
329
- }
330
- }
331
- if FormatCheatSheet["password"] != "true" ||
332
- formatCheatSheet_RegexCall("/x/") != "/x/.test($input)" {
333
- t.Fatal("format cheat sheet helper returned unexpected output")
334
- }
335
- if !strings.Contains(expressionFactory_random_format_uuid(), "-") {
336
- t.Fatal("random uuid should include separators")
337
- }
338
-
339
- if MetadataTypeTagFactory.Is(nil) {
340
- t.Fatal("nil object should not be recognized as a typia tag")
341
- }
342
- tagShape := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
343
- Name: "TagShape",
344
- Properties: []*schemametadata.MetadataProperty{
345
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("target"), Value: factoryUtilityLiteralMetadata("string")}),
346
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("kind"), Value: factoryUtilityLiteralMetadata("format")}),
347
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("value"), Value: factoryUtilityLiteralMetadata("uuid")}),
348
- },
349
- })
350
- tagValue := schemametadata.MetadataSchema_initialize()
351
- tagValue.Required = false
352
- tagValue.Optional = true
353
- tagValue.Objects = append(tagValue.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{Type: tagShape}))
354
- tagContainer := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
355
- Name: "Tagged",
356
- Properties: []*schemametadata.MetadataProperty{
357
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("typia.tag"), Value: tagValue}),
358
- },
359
- })
360
- if !MetadataTypeTagFactory.Is(tagContainer) {
361
- t.Fatal("valid typia tag object shape was not recognized")
362
- }
363
- typeTagErrors := []MetadataFactory_IError{}
364
- analyzed := MetadataTypeTagFactory.Analyze(struct {
365
- Errors *[]MetadataFactory_IError
366
- Type string
367
- Objects []*schemametadata.MetadataObjectType
368
- Explore MetadataFactory_IExplore
369
- }{
370
- Errors: &typeTagErrors,
371
- Type: "string",
372
- Objects: []*schemametadata.MetadataObjectType{tagContainer},
373
- })
374
- if len(analyzed) != 1 || analyzed[0].Target != "string" || analyzed[0].Kind != "format" || analyzed[0].Value != "uuid" {
375
- t.Fatal("metadata type tag analysis should produce a valid string format tag")
376
- }
377
- validateObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
378
- Name: "ValidateRecord",
379
- Properties: []*schemametadata.MetadataProperty{
380
- factoryUtilityTagProperty("string", factoryUtilityLiteralMetadata("return true")),
381
- factoryUtilityTagProperty("number", factoryUtilityLiteralMetadata("return false")),
382
- },
383
- })
384
- schemaObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
385
- Name: "SchemaRecord",
386
- Properties: []*schemametadata.MetadataProperty{
387
- factoryUtilityTagProperty("label", factoryUtilityLiteralMetadata("ok")),
388
- },
389
- })
390
- richTag := factoryUtilityTagContainer("RichTag",
391
- factoryUtilityTagProperty("target", factoryUtilityStringUnionMetadata("string", "number")),
392
- factoryUtilityTagProperty("kind", factoryUtilityLiteralMetadata("range")),
393
- factoryUtilityTagProperty("value", factoryUtilityLiteralMetadata("minimum")),
394
- factoryUtilityTagProperty("exclusive", factoryUtilityStringTupleMetadata("format")),
395
- factoryUtilityTagProperty("validate", factoryUtilityObjectMetadata(validateObject)),
396
- factoryUtilityTagProperty("schema", factoryUtilityObjectMetadata(schemaObject)),
397
- )
398
- richAnalyzed := MetadataTypeTagFactory.Analyze(struct {
399
- Errors *[]MetadataFactory_IError
400
- Type string
401
- Objects []*schemametadata.MetadataObjectType
402
- Explore MetadataFactory_IExplore
403
- }{
404
- Errors: &typeTagErrors,
405
- Type: "number",
406
- Objects: []*schemametadata.MetadataObjectType{richTag},
407
- })
408
- if len(richAnalyzed) != 1 ||
409
- richAnalyzed[0].Target != "number" ||
410
- richAnalyzed[0].Validate != "return false" ||
411
- richAnalyzed[0].Schema == nil {
412
- t.Fatal("rich metadata type tag analysis missed validate or schema fields")
413
- }
414
- invalidTagErrors := []MetadataFactory_IError{}
415
- invalidOuter := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{Name: "InvalidOuter"})
416
- requiredTop := factoryUtilityTagContainer("RequiredTop",
417
- factoryUtilityTagProperty("target", factoryUtilityLiteralMetadata("string")),
418
- factoryUtilityTagProperty("kind", factoryUtilityLiteralMetadata("format")),
419
- factoryUtilityTagProperty("value", factoryUtilityLiteralMetadata("uuid")),
420
- )
421
- requiredTop.Properties[0].Value.Required = true
422
- requiredTop.Properties[0].Value.Optional = false
423
- missingEssential := factoryUtilityTagContainer("MissingEssential",
424
- factoryUtilityTagProperty("target", factoryUtilityLiteralMetadata("string")),
425
- )
426
- invalidProperty := factoryUtilityTagContainer("InvalidProperty",
427
- factoryUtilityTagProperty("target", factoryUtilityLiteralMetadata("symbol")),
428
- factoryUtilityTagProperty("kind", factoryUtilityAtomicMetadata("string")),
429
- factoryUtilityTagProperty("value", factoryUtilityAtomicMetadata("number")),
430
- factoryUtilityTagProperty("exclusive", factoryUtilityAtomicMetadata("boolean")),
431
- factoryUtilityTagProperty("validate", factoryUtilityAtomicMetadata("string")),
432
- factoryUtilityTagProperty("schema", factoryUtilityAtomicMetadata("string")),
433
- )
434
- nilTag := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
435
- Name: "NilTag",
436
- Properties: []*schemametadata.MetadataProperty{
437
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("typia.tag"), Value: schemametadata.MetadataSchema_initialize()}),
438
- },
439
- })
440
- invalidAnalyzed := MetadataTypeTagFactory.Analyze(struct {
441
- Errors *[]MetadataFactory_IError
442
- Type string
443
- Objects []*schemametadata.MetadataObjectType
444
- Explore MetadataFactory_IExplore
445
- }{
446
- Errors: &invalidTagErrors,
447
- Type: "string",
448
- Objects: []*schemametadata.MetadataObjectType{
449
- invalidOuter,
450
- requiredTop,
451
- missingEssential,
452
- invalidProperty,
453
- nilTag,
454
- tagContainer,
455
- },
456
- })
457
- if len(invalidAnalyzed) != 0 || len(invalidTagErrors) == 0 {
458
- t.Fatalf("invalid metadata type tags should be reported and filtered out: analyzed=%d errors=%d", len(invalidAnalyzed), len(invalidTagErrors))
459
- }
460
- typeTagReports := []string{}
461
- typeTagReport := func(next struct {
462
- Property *string
463
- Message string
464
- }) bool {
465
- typeTagReports = append(typeTagReports, next.Message)
466
- return false
467
- }
468
- MetadataTypeTagFactory.Validate(struct {
469
- Report func(struct {
470
- Property *string
471
- Message string
472
- }) bool
473
- Type string
474
- Tags []schemametadata.IMetadataTypeTag
475
- }{Report: typeTagReport, Type: "string", Tags: []schemametadata.IMetadataTypeTag{{Target: "number", Kind: "format"}}})
476
- MetadataTypeTagFactory.Validate(struct {
477
- Report func(struct {
478
- Property *string
479
- Message string
480
- }) bool
481
- Type string
482
- Tags []schemametadata.IMetadataTypeTag
483
- }{
484
- Report: typeTagReport,
485
- Type: "string",
486
- Tags: []schemametadata.IMetadataTypeTag{
487
- {Target: "string", Kind: "format", Name: "uuid", Exclusive: true},
488
- {Target: "string", Kind: "format", Name: "email", Exclusive: true},
489
- },
490
- })
491
- MetadataTypeTagFactory.Validate(struct {
492
- Report func(struct {
493
- Property *string
494
- Message string
495
- }) bool
496
- Type string
497
- Tags []schemametadata.IMetadataTypeTag
498
- }{
499
- Report: typeTagReport,
500
- Type: "string",
501
- Tags: []schemametadata.IMetadataTypeTag{
502
- {Target: "string", Kind: "range", Name: "minimum", Exclusive: []string{"maximum"}},
503
- {Target: "string", Kind: "range", Name: "maximum", Exclusive: []string{"minimum"}},
504
- },
505
- })
506
- invalidExclusiveReports := []string{}
507
- _ = metadataTypeTagFactory_get_exclusive(struct {
508
- Report func(struct {
509
- Property *string
510
- Message string
511
- }) bool
512
- Key string
513
- Value *schemametadata.MetadataSchema
514
- }{Report: func(next struct {
515
- Property *string
516
- Message string
517
- }) bool {
518
- invalidExclusiveReports = append(invalidExclusiveReports, next.Message)
519
- return false
520
- }, Key: "exclusive", Value: factoryUtilityStringTupleMetadata("ok", "")})
521
- if len(typeTagReports) != 3 ||
522
- len(invalidExclusiveReports) == 0 ||
523
- metadataTypeTagFactory_property_value(nil) != nil ||
524
- !metadataTypeTagFactory_some([]string{"a", "b"}, func(value string) bool { return value == "b" }) {
525
- t.Fatal("metadata type tag validation helper branches were not exercised")
526
- }
527
- if !strings.Contains(metadataTypeTagFactory_essentialFieldsMessage(), "'target'") {
528
- t.Fatal("essential field message should mention target")
529
- }
530
- reports := []string{}
531
- typeTagObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
532
- Name: "TypeTagSchema",
533
- Properties: []*schemametadata.MetadataProperty{
534
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("literal"), Value: factoryUtilityLiteralMetadata("value")}),
535
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("nullable"), Value: func() *schemametadata.MetadataSchema {
536
- meta := schemametadata.MetadataSchema_initialize()
537
- meta.Nullable = true
538
- meta.Required = false
539
- meta.Optional = true
540
- return meta
541
- }()}),
542
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("tuple"), Value: func() *schemametadata.MetadataSchema {
543
- meta := schemametadata.MetadataSchema_initialize()
544
- meta.Tuples = append(meta.Tuples, schemametadata.MetadataTuple_create(schemametadata.MetadataTuple{
545
- Type: schemametadata.MetadataTupleType_create(schemametadata.MetadataTupleType{
546
- Name: "Tuple",
547
- Elements: []*schemametadata.MetadataSchema{factoryUtilityLiteralMetadata("a"), factoryUtilityLiteralMetadata("b")},
548
- Nullables: []bool{},
549
- }),
550
- }))
551
- return meta
552
- }()}),
553
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("invalid"), Value: func() *schemametadata.MetadataSchema {
554
- meta := schemametadata.MetadataSchema_initialize()
555
- meta.Any = true
556
- return meta
557
- }()}),
558
- },
559
- })
560
- if objectSchema := MetadataTypeTagSchemaFactory.Object(struct {
561
- Report func(msg string) bool
562
- Object *schemametadata.MetadataObjectType
563
- }{
564
- Report: func(msg string) bool {
565
- reports = append(reports, msg)
566
- return false
567
- },
568
- Object: typeTagObject,
569
- }); objectSchema["literal"] != "value" || objectSchema["tuple"] == nil || len(reports) == 0 {
570
- t.Fatal("type tag schema factory returned unexpected output")
571
- }
572
-
573
- if protobufFactory_getBigintType([]any{uint64(1), "2"}) != "uint64" ||
574
- protobufFactory_getBigintType([]any{int64(-1)}) != "int64" {
575
- t.Fatal("protobuf bigint type inference mismatch")
576
- }
577
- if protobufFactory_getNumberType([]any{1, int64(2)}) != "int32" ||
578
- protobufFactory_getNumberType([]any{int64(2147483648)}) != "int64" ||
579
- protobufFactory_getNumberType([]any{float32(1.5)}) != "double" {
580
- t.Fatal("protobuf number type inference mismatch")
581
- }
582
- if protobufFactory_toFloat("3.5") != 3.5 {
583
- t.Fatal("protobuf fallback float conversion mismatch")
584
- }
585
- if protobufFactory_toFloat(float64(4.5)) != 4.5 ||
586
- protobufFactory_toFloat(uint64(5)) != 5 {
587
- t.Fatal("protobuf numeric float conversion mismatch")
588
- }
589
- for raw, expected := range map[any]int{
590
- int64(8): 8,
591
- float64(9): 9,
592
- "10": 10,
593
- } {
594
- if value := protobufFactory_getSequence([]schemametadata.IMetadataTypeTag{{Kind: "sequence", Schema: map[string]any{"x-protobuf-sequence": raw}}}); value == nil || *value != expected {
595
- t.Fatalf("protobuf sequence conversion mismatch for %v", raw)
596
- }
597
- }
598
- for _, tags := range [][]schemametadata.IMetadataTypeTag{
599
- {{Kind: "format"}},
600
- {{Kind: "sequence", Schema: "invalid"}},
601
- {{Kind: "sequence", Schema: map[string]any{}}},
602
- {{Kind: "sequence", Schema: map[string]any{"x-protobuf-sequence": "bad"}}},
603
- } {
604
- if protobufFactory_getSequence(tags) != nil {
605
- t.Fatal("invalid protobuf sequence tag should not resolve")
606
- }
607
- }
608
- if len(protobufFactory_firstTags(nil)) != 0 || protobufFactory_size(nil) != 0 {
609
- t.Fatal("protobuf empty helper fallback mismatch")
610
- }
611
-
612
- sequence := 7
613
- tagged := []*schemametadata.MetadataConstantValue{
614
- schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{
615
- Value: int64(-3),
616
- Tags: [][]schemametadata.IMetadataTypeTag{{
617
- {Kind: "type", Value: "int64"},
618
- {Kind: "sequence", Schema: map[string]any{"x-protobuf-sequence": sequence}},
619
- }},
620
- }),
621
- schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{
622
- Value: uint64(5),
623
- Tags: nil,
624
- }),
625
- }
626
- if values := protobufFactory_constantValues(tagged); len(values) != 2 || values[0] != int64(-3) {
627
- t.Fatal("protobuf constant value extraction mismatch")
628
- }
629
- bigints := map[string]*int{}
630
- protobufFactory_decodeBigint(bigints, tagged, "uint64")
631
- if bigints["int64"] == nil || *bigints["int64"] != sequence {
632
- t.Fatal("protobuf bigint tag decoding missed explicit type sequence")
633
- }
634
- if _, ok := bigints["uint64"]; !ok {
635
- t.Fatal("protobuf bigint tag decoding missed fallback type")
636
- }
637
-
638
- numbers := map[string]*int{}
639
- protobufFactory_decodeNumber(numbers, []*schemametadata.MetadataConstantValue{
640
- schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{
641
- Value: 1.5,
642
- Tags: [][]schemametadata.IMetadataTypeTag{{
643
- {Kind: "type", Value: "float"},
644
- {Kind: "sequence", Schema: map[string]any{"x-protobuf-sequence": sequence}},
645
- }},
646
- }),
647
- schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{
648
- Value: 3,
649
- Tags: nil,
650
- }),
651
- }, "double")
652
- if numbers["float"] == nil || *numbers["float"] != sequence {
653
- t.Fatal("protobuf number tag decoding missed explicit type sequence")
654
- }
655
- if _, ok := numbers["double"]; !ok {
656
- t.Fatal("protobuf number tag decoding missed fallback type")
657
- }
658
- protoMeta := schemametadata.MetadataSchema_initialize()
659
- protoMeta.Constants = append(protoMeta.Constants,
660
- schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
661
- Type: "boolean",
662
- Values: []*schemametadata.MetadataConstantValue{
663
- schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: true, Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(11)}}}),
664
- },
665
- }),
666
- schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
667
- Type: "bigint",
668
- Values: tagged,
669
- }),
670
- schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
671
- Type: "number",
672
- Values: []*schemametadata.MetadataConstantValue{
673
- schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: 1.5, Tags: [][]schemametadata.IMetadataTypeTag{{{Kind: "type", Value: "float"}, factoryUtilitySequenceTag(12)}}}),
674
- },
675
- }),
676
- schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
677
- Type: "string",
678
- Values: []*schemametadata.MetadataConstantValue{
679
- schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: "literal", Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(13)}}}),
680
- },
681
- }),
682
- )
683
- protoMeta.Templates = append(protoMeta.Templates, schemametadata.MetadataTemplate_create(schemametadata.MetadataTemplate{
684
- Row: []*schemametadata.MetadataSchema{factoryUtilityLiteralMetadata("template")},
685
- Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(14)}},
686
- }))
687
- protoMeta.Atomics = append(protoMeta.Atomics,
688
- schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: "boolean", Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(15)}}}),
689
- schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: "bigint", Tags: [][]schemametadata.IMetadataTypeTag{{{Kind: "type", Value: "uint64"}, factoryUtilitySequenceTag(16)}}}),
690
- schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: "number", Tags: [][]schemametadata.IMetadataTypeTag{{{Kind: "type", Value: "uint32"}, factoryUtilitySequenceTag(17)}}}),
691
- schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: "string", Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(18)}}}),
692
- )
693
- if len(protobufFactory_emplaceAtomic(protoMeta)) == 0 ||
694
- len(protobufFactory_getAtomics(protoMeta)) == 0 ||
695
- len(protobufFactory_getNumbers(protoMeta)) == 0 ||
696
- len(protobufFactory_getBigints(protoMeta)) == 0 {
697
- t.Fatal("protobuf atomic metadata helpers did not read rich metadata")
698
- }
699
- bytesMeta := schemametadata.MetadataSchema_initialize()
700
- bytesMeta.Natives = append(bytesMeta.Natives, schemametadata.MetadataNative_create(schemametadata.MetadataNative{Name: "Uint8Array"}))
701
- if _, ok := protobufFactory_emplaceSchema(bytesMeta).(nativeprotobuf.IProtobufSchema_IByte); !ok {
702
- t.Fatal("Uint8Array metadata should emplace as protobuf bytes")
703
- }
704
- dynamicObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
705
- Name: "Dynamic",
706
- Properties: []*schemametadata.MetadataProperty{
707
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
708
- Key: factoryUtilityAtomicMetadata("string"),
709
- Value: factoryUtilityAtomicMetadata("number"),
710
- }),
711
- },
712
- })
713
- dynamicMeta := schemametadata.MetadataSchema_initialize()
714
- dynamicMeta.Objects = append(dynamicMeta.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{Type: dynamicObject}))
715
- if _, ok := protobufFactory_emplaceSchema(dynamicMeta).(nativeprotobuf.IProtobufSchema_IMap); !ok {
716
- t.Fatal("dynamic object metadata should emplace as protobuf map")
717
- }
718
- mapMeta := schemametadata.MetadataSchema_initialize()
719
- mapMeta.Maps = append(mapMeta.Maps, schemametadata.MetadataMap_create(schemametadata.MetadataMap{
720
- Key: factoryUtilityAtomicMetadata("string"),
721
- Value: factoryUtilityAtomicMetadata("number"),
722
- }))
723
- if _, ok := protobufFactory_emplaceSchema(mapMeta).(nativeprotobuf.IProtobufSchema_IMap); !ok {
724
- t.Fatal("map metadata should emplace as protobuf map")
725
- }
726
- factoryUtilityMustPanic(t, func() {
727
- protobufFactory_emplaceSchema(schemametadata.MetadataSchema_initialize())
728
- })
729
-
730
- sequenceErrors := []string{}
731
- seenSequences := map[int]bool{}
732
- addSequence := func(value int) bool {
733
- if seenSequences[value] {
734
- return false
735
- }
736
- seenSequences[value] = true
737
- return true
738
- }
739
- protobufFactory_validateInstanceSequence("array", [][]schemametadata.IMetadataTypeTag{
740
- {factoryUtilitySequenceTag(1)},
741
- {},
742
- }, &sequenceErrors, addSequence)
743
- protobufFactory_validateInstanceSequence("object", [][]schemametadata.IMetadataTypeTag{
744
- {factoryUtilitySequenceTag(2)},
745
- {factoryUtilitySequenceTag(3)},
746
- }, &sequenceErrors, addSequence)
747
- protobufFactory_validateInstanceSequence("map", [][]schemametadata.IMetadataTypeTag{
748
- {factoryUtilitySequenceTag(1)},
749
- }, &sequenceErrors, addSequence)
750
- protobufFactory_validateUniqueSequence("number type", map[int]bool{4: true, 5: true}, 2, 2, &sequenceErrors, addSequence)
751
- protobufFactory_validateUniqueSequence("string type", map[int]bool{6: true}, 2, 1, &sequenceErrors, addSequence)
752
- if len(sequenceErrors) < 4 {
753
- t.Fatalf("protobuf sequence validation did not report expected errors: %v", sequenceErrors)
754
- }
755
- propertyErrors := []string{}
756
- propertyMeta := schemametadata.MetadataSchema_initialize()
757
- propertyMeta.Constants = append(propertyMeta.Constants, protoMeta.Constants...)
758
- propertyMeta.Atomics = append(propertyMeta.Atomics, protoMeta.Atomics...)
759
- propertyMeta.Arrays = append(propertyMeta.Arrays, schemametadata.MetadataArray_create(schemametadata.MetadataArray{
760
- Type: schemametadata.MetadataArrayType_create(schemametadata.MetadataArrayType{Name: "Numbers", Value: factoryUtilityAtomicMetadata("number")}),
761
- Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(11)}},
762
- }))
763
- propertyMeta.Objects = append(propertyMeta.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{
764
- Type: dynamicObject,
765
- Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(19)}},
766
- }))
767
- propertyMeta.Maps = append(propertyMeta.Maps, schemametadata.MetadataMap_create(schemametadata.MetadataMap{
768
- Key: factoryUtilityAtomicMetadata("string"),
769
- Value: factoryUtilityAtomicMetadata("number"),
770
- Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(20)}},
771
- }))
772
- propertyMeta.Natives = append(propertyMeta.Natives, schemametadata.MetadataNative_create(schemametadata.MetadataNative{
773
- Name: "Uint8Array",
774
- Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(21)}},
775
- }))
776
- protobufFactory_validateProperty(propertyMeta, &propertyErrors)
777
- if len(propertyErrors) == 0 {
778
- t.Fatal("protobuf property validation should detect duplicate sequence rows")
779
- }
780
- duplicateObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
781
- Name: "DuplicateSequences",
782
- Properties: []*schemametadata.MetadataProperty{
783
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
784
- Key: factoryUtilityLiteralMetadata("first"),
785
- Value: factoryUtilitySequenceStringMetadata(30),
786
- }),
787
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
788
- Key: factoryUtilityLiteralMetadata("second"),
789
- Value: factoryUtilitySequenceStringMetadata(30),
790
- }),
791
- },
792
- })
793
- protobufFactory_validateObject(duplicateObject, &propertyErrors)
794
- if len(propertyErrors) < 2 {
795
- t.Fatal("protobuf object validation should detect duplicated property sequences")
796
- }
797
- emplaceObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
798
- Name: "EmplaceObject",
799
- Properties: []*schemametadata.MetadataProperty{
800
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
801
- Key: factoryUtilityLiteralMetadata("fixed"),
802
- Value: factoryUtilitySequenceStringMetadata(2),
803
- }),
804
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
805
- Key: factoryUtilityLiteralMetadata("floating"),
806
- Value: factoryUtilityAtomicMetadata("number"),
807
- }),
808
- },
809
- })
810
- ProtobufFactory.EmplaceObject(emplaceObject)
811
- if emplaceObject.Properties[1].Of_protobuf_ == nil ||
812
- emplaceObject.Properties[1].Of_protobuf_.Fixed {
813
- t.Fatal("protobuf object emplace should assign indexes to non-fixed properties")
814
- }
815
- shapeErrors := []string{}
816
- recordShape := func(msg string) { shapeErrors = append(shapeErrors, msg) }
817
- protobufFactory_validateShape(factoryUtilityArrayMetadata(factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("string"))), recordShape)
818
- optionalArray := factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("string"))
819
- optionalArray.Arrays[0].Type.Value.Optional = true
820
- optionalArray.Arrays[0].Type.Value.Required = false
821
- protobufFactory_validateShape(optionalArray, recordShape)
822
- unionArray := factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("string"))
823
- unionArray.Arrays[0].Type.Value.Atomics = append(unionArray.Arrays[0].Type.Value.Atomics, schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: "number"}))
824
- protobufFactory_validateShape(unionArray, recordShape)
825
- mapArray := factoryUtilityArrayMetadata(mapMeta)
826
- protobufFactory_validateShape(mapArray, recordShape)
827
- mixedObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
828
- Name: "Mixed",
829
- Properties: []*schemametadata.MetadataProperty{
830
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("fixed"), Value: factoryUtilityAtomicMetadata("string")}),
831
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityAtomicMetadata("string"), Value: factoryUtilityAtomicMetadata("number")}),
832
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityAtomicMetadata("number"), Value: factoryUtilityAtomicMetadata("boolean")}),
833
- },
834
- })
835
- mixedMeta := schemametadata.MetadataSchema_initialize()
836
- mixedMeta.Objects = append(mixedMeta.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{Type: mixedObject}))
837
- protobufFactory_validateShape(mixedMeta, recordShape)
838
- dynamicArrayObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
839
- Name: "DynamicArray",
840
- Properties: []*schemametadata.MetadataProperty{
841
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityAtomicMetadata("string"), Value: factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("string"))}),
842
- },
843
- })
844
- dynamicArrayMeta := schemametadata.MetadataSchema_initialize()
845
- dynamicArrayMeta.Objects = append(dynamicArrayMeta.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{Type: dynamicArrayObject}))
846
- protobufFactory_validateShape(dynamicArrayMeta, recordShape)
847
- invalidMap := schemametadata.MetadataSchema_initialize()
848
- invalidMap.Maps = append(invalidMap.Maps, schemametadata.MetadataMap_create(schemametadata.MetadataMap{
849
- Key: factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("string")),
850
- Value: factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("number")),
851
- }))
852
- protobufFactory_validateShape(invalidMap, recordShape)
853
- if len(shapeErrors) < 7 {
854
- t.Fatalf("protobuf shape validation missed branch errors: %v", shapeErrors)
855
- }
856
- if protobufFactory_propertyIndex(nil) != nil {
857
- t.Fatal("unknown protobuf property type should not have an index")
858
- }
859
- }
860
-
861
- type factoryUtilityImporter struct{}
862
-
863
- func (factoryUtilityImporter) Internal(name string) *shimast.Node {
864
- return expressionFactory_factory.NewIdentifier(name)
865
- }
866
-
867
- func factoryUtilitySequenceTag(value int) schemametadata.IMetadataTypeTag {
868
- return schemametadata.IMetadataTypeTag{
869
- Kind: "sequence",
870
- Schema: map[string]any{"x-protobuf-sequence": value},
871
- }
872
- }
873
-
874
- func factoryUtilityMustPanic(t *testing.T, run func()) {
875
- t.Helper()
876
- defer func() {
877
- if recover() == nil {
878
- t.Fatal("expected helper to panic")
879
- }
880
- }()
881
- run()
882
- }
883
-
884
- func (factoryUtilityImporter) Instance(props ExpressionFactory_IInstance) *shimast.Node {
885
- return expressionFactory_factory.NewIdentifier(props.Name)
886
- }
887
-
888
- func (factoryUtilityImporter) Namespace(props ExpressionFactory_INamespace) *shimast.Node {
889
- return expressionFactory_factory.NewIdentifier(props.Name)
890
- }
891
-
892
- func (factoryUtilityImporter) Default(props ExpressionFactory_IDefault) *shimast.Node {
893
- return expressionFactory_factory.NewIdentifier(props.Name)
894
- }
895
-
896
- func factoryUtilityLiteralMetadata(value string) *schemametadata.MetadataSchema {
897
- meta := schemametadata.MetadataSchema_initialize()
898
- meta.Constants = append(meta.Constants, schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
899
- Type: "string",
900
- Values: []*schemametadata.MetadataConstantValue{
901
- schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: value}),
902
- },
903
- }))
904
- return meta
905
- }
906
-
907
- func factoryUtilityStringUnionMetadata(values ...string) *schemametadata.MetadataSchema {
908
- meta := schemametadata.MetadataSchema_initialize()
909
- constants := make([]*schemametadata.MetadataConstantValue, 0, len(values))
910
- for _, value := range values {
911
- constants = append(constants, schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: value}))
912
- }
913
- meta.Constants = append(meta.Constants, schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
914
- Type: "string",
915
- Values: constants,
916
- }))
917
- return meta
918
- }
919
-
920
- func factoryUtilityBooleanMetadata(value bool) *schemametadata.MetadataSchema {
921
- meta := schemametadata.MetadataSchema_initialize()
922
- meta.Constants = append(meta.Constants, schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
923
- Type: "boolean",
924
- Values: []*schemametadata.MetadataConstantValue{
925
- schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: value}),
926
- },
927
- }))
928
- return meta
929
- }
930
-
931
- func factoryUtilityObjectMetadata(object *schemametadata.MetadataObjectType) *schemametadata.MetadataSchema {
932
- meta := schemametadata.MetadataSchema_initialize()
933
- meta.Objects = append(meta.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{Type: object}))
934
- return meta
935
- }
936
-
937
- func factoryUtilityStringTupleMetadata(values ...string) *schemametadata.MetadataSchema {
938
- meta := schemametadata.MetadataSchema_initialize()
939
- elements := make([]*schemametadata.MetadataSchema, 0, len(values))
940
- for _, value := range values {
941
- if value == "" {
942
- elements = append(elements, factoryUtilityAtomicMetadata("string"))
943
- } else {
944
- elements = append(elements, factoryUtilityLiteralMetadata(value))
945
- }
946
- }
947
- meta.Tuples = append(meta.Tuples, schemametadata.MetadataTuple_create(schemametadata.MetadataTuple{
948
- Type: schemametadata.MetadataTupleType_create(schemametadata.MetadataTupleType{
949
- Name: "ExclusiveTuple",
950
- Elements: elements,
951
- Nullables: []bool{},
952
- }),
953
- }))
954
- return meta
955
- }
956
-
957
- func factoryUtilityTagProperty(key string, value *schemametadata.MetadataSchema) *schemametadata.MetadataProperty {
958
- return schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
959
- Key: factoryUtilityLiteralMetadata(key),
960
- Value: value,
961
- })
962
- }
963
-
964
- func factoryUtilityTagContainer(name string, properties ...*schemametadata.MetadataProperty) *schemametadata.MetadataObjectType {
965
- tagValue := schemametadata.MetadataSchema_initialize()
966
- tagValue.Required = false
967
- tagValue.Optional = true
968
- tagValue.Objects = append(tagValue.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{
969
- Type: schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
970
- Name: name + "Shape",
971
- Properties: properties,
972
- }),
973
- }))
974
- return schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
975
- Name: name,
976
- Properties: []*schemametadata.MetadataProperty{
977
- schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
978
- Key: factoryUtilityLiteralMetadata("typia.tag"),
979
- Value: tagValue,
980
- }),
981
- },
982
- })
983
- }
984
-
985
- func factoryUtilityAtomicMetadata(name string) *schemametadata.MetadataSchema {
986
- meta := schemametadata.MetadataSchema_initialize()
987
- meta.Atomics = append(meta.Atomics, schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: name}))
988
- return meta
989
- }
990
-
991
- func factoryUtilityArrayMetadata(value *schemametadata.MetadataSchema) *schemametadata.MetadataSchema {
992
- meta := schemametadata.MetadataSchema_initialize()
993
- meta.Arrays = append(meta.Arrays, schemametadata.MetadataArray_create(schemametadata.MetadataArray{
994
- Type: schemametadata.MetadataArrayType_create(schemametadata.MetadataArrayType{Name: "Array<" + value.GetName() + ">", Value: value}),
995
- }))
996
- return meta
997
- }
998
-
999
- func factoryUtilitySequenceStringMetadata(sequence int) *schemametadata.MetadataSchema {
1000
- meta := schemametadata.MetadataSchema_initialize()
1001
- meta.Atomics = append(meta.Atomics, schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{
1002
- Type: "string",
1003
- Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(sequence)}},
1004
- }))
1005
- return meta
1006
- }
1
+ //go:build typia_native_internal
2
+ // +build typia_native_internal
3
+
4
+ package factories
5
+
6
+ import (
7
+ "math/big"
8
+ "os"
9
+ "path/filepath"
10
+ "strings"
11
+ "testing"
12
+
13
+ shimast "github.com/microsoft/typescript-go/shim/ast"
14
+ shimchecker "github.com/microsoft/typescript-go/shim/checker"
15
+ shimprinter "github.com/microsoft/typescript-go/shim/printer"
16
+ "github.com/samchon/ttsc/packages/ttsc/driver"
17
+ schemametadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
18
+ nativeprotobuf "github.com/samchon/typia/packages/typia/native/core/schemas/protobuf"
19
+ )
20
+
21
+ // TestFactoryUtilityCoverage covers small factory helpers.
22
+ //
23
+ // Most factory paths are exercised through TypeScript transforms, but simple
24
+ // AST helper branches and text-formatting helpers do not need a compiler
25
+ // program. This test keeps those deterministic helper checks local to the
26
+ // factories package.
27
+ //
28
+ // 1. Generate numeric range predicates for all supported numeric tags.
29
+ // 2. Exercise bigint, object, currying, self-call, and escaped-text helpers.
30
+ // 3. Cover comment merging and statement helper branches.
31
+ // 4. Verify fallback AST, literal, protobuf, sequence validation, and type-tag factory paths.
32
+ // 5. Resolve TypeScript checker-backed type names and synthetic function declarations.
33
+ func TestFactoryUtilityCoverage(t *testing.T) {
34
+ emit := shimprinter.NewEmitContext()
35
+ input := expressionFactory_factory.NewIdentifier("input")
36
+ for _, name := range []string{"int32", "uint32", "int64", "uint64", "float", "double", "unknown"} {
37
+ if NumericRangeFactory.Number(name, input) == nil {
38
+ t.Fatalf("number range %s returned nil", name)
39
+ }
40
+ }
41
+ for _, name := range []string{"uint64", "int64"} {
42
+ if NumericRangeFactory.Bigint(name, input) == nil {
43
+ t.Fatalf("bigint range %s returned nil", name)
44
+ }
45
+ }
46
+
47
+ if ExpressionFactory.Bigint("123") == nil {
48
+ t.Fatal("bigint expression returned nil")
49
+ }
50
+ if ExpressionFactory.Number(-12) == nil ||
51
+ ExpressionFactory.Number(float32(1.5)) == nil ||
52
+ ExpressionFactory.Number("7") == nil {
53
+ t.Fatal("number expression branch returned nil")
54
+ }
55
+ if ExpressionFactory.IsRequired(input) == nil {
56
+ t.Fatal("required expression returned nil")
57
+ }
58
+ if ExpressionFactory.IsArray(input) == nil ||
59
+ ExpressionFactory.IsObject(ExpressionFactory_IsObjectProps{Input: input, CheckNull: true, CheckArray: true}) == nil ||
60
+ ExpressionFactory.IsInstanceOf("Date", input) == nil ||
61
+ ExpressionFactory.Coalesce(input, expressionFactory_factory.NewIdentifier("fallback")) == nil {
62
+ t.Fatal("basic expression factory branch returned nil")
63
+ }
64
+ if ExpressionFactory.Currying(ExpressionFactory_CurryingProps{
65
+ Function: expressionFactory_factory.NewIdentifier("fn"),
66
+ Arguments: nil,
67
+ }) == nil {
68
+ t.Fatal("zero-argument currying returned nil")
69
+ }
70
+ if ExpressionFactory.Currying(ExpressionFactory_CurryingProps{
71
+ Function: expressionFactory_factory.NewIdentifier("fn"),
72
+ Arguments: []*shimast.Expression{
73
+ expressionFactory_factory.NewIdentifier("a"),
74
+ expressionFactory_factory.NewIdentifier("b"),
75
+ },
76
+ }) == nil {
77
+ t.Fatal("multi-argument currying returned nil")
78
+ }
79
+ call := expressionFactory_factory.NewCallExpression(
80
+ expressionFactory_factory.NewIdentifier("already"),
81
+ nil,
82
+ nil,
83
+ nil,
84
+ shimast.NodeFlagsNone,
85
+ )
86
+ if ExpressionFactory.SelfCall(emit, call) != call {
87
+ t.Fatal("self-call should return call expressions unchanged")
88
+ }
89
+ if ExpressionFactory.SelfCall(emit, StatementFactory.Block(input), TypeFactory.Keyword("string")) == nil {
90
+ t.Fatal("self-call should wrap non-call bodies")
91
+ }
92
+ if ExpressionFactory.GetEscapedText(ExpressionFactory_GetEscapedTextProps{}) != "" {
93
+ t.Fatal("nil escaped text should be empty")
94
+ }
95
+ if ExpressionFactory.GetEscapedText(ExpressionFactory_GetEscapedTextProps{Input: input}) != "input" {
96
+ t.Fatal("identifier escaped text mismatch")
97
+ }
98
+ if ExpressionFactory.GetEscapedText(ExpressionFactory_GetEscapedTextProps{
99
+ Input: expressionFactory_factory.NewStringLiteral("text", shimast.TokenFlagsNone),
100
+ }) != "text" {
101
+ t.Fatal("string escaped text mismatch")
102
+ }
103
+ access := IdentifierFactory.Access(emit, input, "field")
104
+ if IdentifierFactory.GetName(access) != "input.field" {
105
+ t.Fatalf("property access name mismatch: %s", IdentifierFactory.GetName(access))
106
+ }
107
+ element := IdentifierFactory.Access(emit, input, "not valid")
108
+ if IdentifierFactory.GetName(element) != "input[not valid]" {
109
+ t.Fatalf("element access name mismatch: %s", IdentifierFactory.GetName(element))
110
+ }
111
+ if IdentifierFactory.GetName(nil) != "unknown" {
112
+ t.Fatal("nil identifier name should be unknown")
113
+ }
114
+ if TypeFactory.GetReturnTypeOfClassMethod(TypeFactory_GetReturnTypeOfClassMethodProps{}) != nil {
115
+ t.Fatal("nil checker and class should not produce a return type")
116
+ }
117
+ if TypeFactory.GetFunction(nil) != nil || TypeFactory.GetFunction(&shimchecker.Type{}) != nil {
118
+ t.Fatal("nil or zero types should not produce function declarations")
119
+ }
120
+ if TypeFactory.GetFullName(TypeFactory_GetFullNameProps{}) != "" {
121
+ t.Fatal("nil full name lookup should be empty")
122
+ }
123
+ if typeFactory_get_name(nil) != "__type" {
124
+ t.Fatal("nil type factory internals should use fallback values")
125
+ }
126
+ for _, keyword := range []string{"void", "any", "unknown", "boolean", "number", "bigint", "string"} {
127
+ if TypeFactory.Keyword(keyword) == nil {
128
+ t.Fatalf("keyword %s returned nil", keyword)
129
+ }
130
+ }
131
+ typeDir := t.TempDir()
132
+ if err := os.MkdirAll(filepath.Join(typeDir, "src"), 0o755); err != nil {
133
+ t.Fatalf("mkdir type factory fixture: %v", err)
134
+ }
135
+ if err := os.WriteFile(filepath.Join(typeDir, "tsconfig.json"), []byte(`{
136
+ "compilerOptions": {
137
+ "target": "ES2022",
138
+ "module": "commonjs",
139
+ "moduleResolution": "bundler",
140
+ "ignoreDeprecations": "6.0",
141
+ "strict": true,
142
+ "skipLibCheck": true
143
+ },
144
+ "include": ["src"]
145
+ }
146
+ `), 0o644); err != nil {
147
+ t.Fatalf("write type factory tsconfig: %v", err)
148
+ }
149
+ if err := os.WriteFile(filepath.Join(typeDir, "src", "main.ts"), []byte(`
150
+ export function declared(): string { return ""; }
151
+ export const holder = { assigned: () => "" };
152
+ export class Example {
153
+ field = () => "field";
154
+ value = 1;
155
+ method(): number { return 1; }
156
+ }
157
+ export interface Box<T> { value: T; }
158
+ export let example!: Example;
159
+ export let box!: Box<string>;
160
+ export let promised!: Promise<string>;
161
+ export let inter!: { left: string } & { right: number };
162
+ export namespace Outer {
163
+ export interface Inner { label: string; }
164
+ }
165
+ export let inner!: Outer.Inner;
166
+ `), 0o644); err != nil {
167
+ t.Fatalf("write type factory source: %v", err)
168
+ }
169
+ prog, diags, err := driver.LoadProgram(typeDir, "tsconfig.json", driver.LoadProgramOptions{})
170
+ if err != nil {
171
+ t.Fatalf("load type factory program: %v", err)
172
+ }
173
+ if len(diags) != 0 {
174
+ t.Fatalf("type factory fixture diagnostics: %+v", diags)
175
+ }
176
+ defer prog.Close()
177
+ source := prog.SourceFile(filepath.Join(typeDir, "src", "main.ts"))
178
+ if source == nil {
179
+ t.Fatal("type factory source file was not loaded")
180
+ }
181
+ statements := source.Statements.Nodes
182
+ if len(statements) < 10 {
183
+ t.Fatalf("type factory fixture expected statements, got %d", len(statements))
184
+ }
185
+ variableType := func(index int) *shimchecker.Type {
186
+ declarations := statements[index].AsVariableStatement().DeclarationList.AsVariableDeclarationList().Declarations.Nodes
187
+ if len(declarations) == 0 {
188
+ t.Fatalf("variable statement %d has no declarations", index)
189
+ }
190
+ return prog.Checker.GetTypeAtLocation(declarations[0])
191
+ }
192
+ if !TypeFactory.IsFunction(prog.Checker.GetTypeAtLocation(statements[0])) {
193
+ t.Fatal("function declaration should be recognized as function-like")
194
+ }
195
+ holderType := variableType(1)
196
+ assignedSymbol := prog.Checker.GetPropertyOfType(holderType, "assigned")
197
+ if assignedSymbol == nil {
198
+ t.Fatal("holder.assigned symbol was not found")
199
+ }
200
+ assignedType := prog.Checker.GetTypeOfSymbolAtLocation(assignedSymbol, assignedSymbol.ValueDeclaration)
201
+ assignedDeclaredType := shimchecker.Checker_getTypeOfSymbol(prog.Checker, assignedSymbol)
202
+ if TypeFactory.GetFunction(assignedDeclaredType) == nil && TypeFactory.GetFunction(assignedType) == nil {
203
+ t.Fatal("property assignment initializer should be recognized as function-like")
204
+ }
205
+ exampleType := variableType(4)
206
+ fieldSymbol := prog.Checker.GetPropertyOfType(exampleType, "field")
207
+ if fieldSymbol == nil {
208
+ t.Fatal("example.field symbol was not found")
209
+ }
210
+ fieldType := prog.Checker.GetTypeOfSymbolAtLocation(fieldSymbol, fieldSymbol.ValueDeclaration)
211
+ fieldDeclaredType := shimchecker.Checker_getTypeOfSymbol(prog.Checker, fieldSymbol)
212
+ if TypeFactory.GetFunction(fieldDeclaredType) == nil && TypeFactory.GetFunction(fieldType) == nil {
213
+ t.Fatal("property declaration initializer should be recognized as function-like")
214
+ }
215
+ if TypeFactory.GetReturnTypeOfClassMethod(TypeFactory_GetReturnTypeOfClassMethodProps{
216
+ Checker: prog.Checker,
217
+ Class: exampleType,
218
+ Function: "method",
219
+ }) == nil {
220
+ t.Fatal("class method return type should be resolved")
221
+ }
222
+ if TypeFactory.GetReturnTypeOfClassMethod(TypeFactory_GetReturnTypeOfClassMethodProps{
223
+ Checker: prog.Checker,
224
+ Class: exampleType,
225
+ Function: "missing",
226
+ }) != nil || TypeFactory.GetReturnTypeOfClassMethod(TypeFactory_GetReturnTypeOfClassMethodProps{
227
+ Checker: prog.Checker,
228
+ Class: exampleType,
229
+ Function: "value",
230
+ }) != nil {
231
+ t.Fatal("missing or non-call class properties should not produce return types")
232
+ }
233
+ for _, tc := range []struct {
234
+ name string
235
+ index int
236
+ contains string
237
+ }{
238
+ {name: "generic", index: 5, contains: "Box<string>"},
239
+ {name: "promise", index: 6, contains: "string"},
240
+ {name: "intersection", index: 7, contains: " & "},
241
+ {name: "namespace", index: 9, contains: "Outer.Inner"},
242
+ } {
243
+ fullName := TypeFactory.GetFullName(TypeFactory_GetFullNameProps{
244
+ Checker: prog.Checker,
245
+ Type: variableType(tc.index),
246
+ })
247
+ if !strings.Contains(fullName, tc.contains) {
248
+ t.Fatalf("%s full name %q did not contain %q", tc.name, fullName, tc.contains)
249
+ }
250
+ }
251
+ if IdentifierFactory.Postfix("field") != "\".field\"" ||
252
+ IdentifierFactory.Postfix("not valid") == "" {
253
+ t.Fatal("identifier postfix formatting mismatch")
254
+ }
255
+ if IdentifierFactory.Parameter("value", nil, nil) == nil ||
256
+ IdentifierFactory.Parameter(input, TypeFactory.Keyword("string"), nil) == nil ||
257
+ IdentifierFactory.Parameter(123, nil, expressionFactory_factory.NewToken(shimast.KindQuestionToken)) == nil {
258
+ t.Fatal("identifier parameter branch returned nil")
259
+ }
260
+
261
+ description := CommentFactory.Description(nil)
262
+ if description != nil {
263
+ t.Fatal("description placeholder should stay nil")
264
+ }
265
+ merged := CommentFactory.Merge([]CommentFactory_SymbolDisplayPart{
266
+ {Text: "a\r\n"},
267
+ {Text: "b"},
268
+ })
269
+ if merged != "a\nb" {
270
+ t.Fatalf("comment merge mismatch: %q", merged)
271
+ }
272
+ if StatementFactory.Entry(StatementFactory_EntryProps{Key: "k", Value: "v"}) == nil {
273
+ t.Fatal("entry statement returned nil")
274
+ }
275
+ if StatementFactory.Mut(StatementFactory_MutProps{Name: "mutable"}) == nil ||
276
+ StatementFactory.Constant(StatementFactory_ConstantProps{Name: "constant"}) == nil {
277
+ t.Fatal("variable statement helper returned nil")
278
+ }
279
+ if StatementFactory.Transpile("expr") == nil {
280
+ t.Fatal("transpile statement returned nil")
281
+ }
282
+ if StatementFactory.Block(input) == nil {
283
+ t.Fatal("block statement returned nil")
284
+ }
285
+ if ValueFactory.BOOLEAN(true).Kind != shimast.KindTrueKeyword ||
286
+ ValueFactory.BOOLEAN(false).Kind != shimast.KindFalseKeyword {
287
+ t.Fatal("boolean value factory returned wrong keyword")
288
+ }
289
+ if LiteralFactory.Write(big.NewInt(10)) == nil {
290
+ t.Fatal("bigint literal branch returned nil")
291
+ }
292
+ type literalStruct struct {
293
+ Name string
294
+ Age int
295
+ skip string
296
+ }
297
+ literalPointer := 11
298
+ if LiteralFactory.Write(nil) == nil ||
299
+ LiteralFactory.Write([]any{"a", 1, true}) == nil ||
300
+ LiteralFactory.Write(map[string]any{"type": "string", "skip": nil}) == nil ||
301
+ LiteralFactory.Write(literalStruct{Name: "sam", Age: 1}) == nil ||
302
+ LiteralFactory.Write(&literalPointer) == nil ||
303
+ LiteralFactory.Write(func() {}) == nil {
304
+ t.Fatal("literal factory branch returned nil")
305
+ }
306
+ if TemplateFactory.Generate([]*shimast.Expression{
307
+ expressionFactory_factory.NewStringLiteral("a", shimast.TokenFlagsNone),
308
+ expressionFactory_factory.NewStringLiteral("b", shimast.TokenFlagsNone),
309
+ }) == nil || TemplateFactory.Generate([]*shimast.Expression{
310
+ expressionFactory_factory.NewStringLiteral("a", shimast.TokenFlagsNone),
311
+ input,
312
+ expressionFactory_factory.NewStringLiteral("b", shimast.TokenFlagsNone),
313
+ }) == nil {
314
+ t.Fatal("template factory branch returned nil")
315
+ }
316
+ importer := factoryUtilityImporter{}
317
+ for _, script := range []string{
318
+ "$input;",
319
+ "$importInternal(\"helper\");",
320
+ "$importInstance(\"Thing\", \"pkg\");",
321
+ "$importNamespace(\"NS\", \"pkg\");",
322
+ "$importDefault(\"Default\", \"pkg\", false);",
323
+ } {
324
+ if ExpressionFactory.Transpile(ExpressionFactory_TranspileProps{
325
+ Importer: importer,
326
+ Script: script,
327
+ })(input) == nil {
328
+ t.Fatalf("expression transpile returned nil for %s", script)
329
+ }
330
+ }
331
+ if FormatCheatSheet["password"] != "true" ||
332
+ formatCheatSheet_RegexCall("/x/") != "/x/.test($input)" {
333
+ t.Fatal("format cheat sheet helper returned unexpected output")
334
+ }
335
+ if !strings.Contains(expressionFactory_random_format_uuid(), "-") {
336
+ t.Fatal("random uuid should include separators")
337
+ }
338
+
339
+ if MetadataTypeTagFactory.Is(nil) {
340
+ t.Fatal("nil object should not be recognized as a typia tag")
341
+ }
342
+ tagShape := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
343
+ Name: "TagShape",
344
+ Properties: []*schemametadata.MetadataProperty{
345
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("target"), Value: factoryUtilityLiteralMetadata("string")}),
346
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("kind"), Value: factoryUtilityLiteralMetadata("format")}),
347
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("value"), Value: factoryUtilityLiteralMetadata("uuid")}),
348
+ },
349
+ })
350
+ tagValue := schemametadata.MetadataSchema_initialize()
351
+ tagValue.Required = false
352
+ tagValue.Optional = true
353
+ tagValue.Objects = append(tagValue.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{Type: tagShape}))
354
+ tagContainer := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
355
+ Name: "Tagged",
356
+ Properties: []*schemametadata.MetadataProperty{
357
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("typia.tag"), Value: tagValue}),
358
+ },
359
+ })
360
+ if !MetadataTypeTagFactory.Is(tagContainer) {
361
+ t.Fatal("valid typia tag object shape was not recognized")
362
+ }
363
+ typeTagErrors := []MetadataFactory_IError{}
364
+ analyzed := MetadataTypeTagFactory.Analyze(struct {
365
+ Errors *[]MetadataFactory_IError
366
+ Type string
367
+ Objects []*schemametadata.MetadataObjectType
368
+ Explore MetadataFactory_IExplore
369
+ }{
370
+ Errors: &typeTagErrors,
371
+ Type: "string",
372
+ Objects: []*schemametadata.MetadataObjectType{tagContainer},
373
+ })
374
+ if len(analyzed) != 1 || analyzed[0].Target != "string" || analyzed[0].Kind != "format" || analyzed[0].Value != "uuid" {
375
+ t.Fatal("metadata type tag analysis should produce a valid string format tag")
376
+ }
377
+ validateObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
378
+ Name: "ValidateRecord",
379
+ Properties: []*schemametadata.MetadataProperty{
380
+ factoryUtilityTagProperty("string", factoryUtilityLiteralMetadata("return true")),
381
+ factoryUtilityTagProperty("number", factoryUtilityLiteralMetadata("return false")),
382
+ },
383
+ })
384
+ schemaObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
385
+ Name: "SchemaRecord",
386
+ Properties: []*schemametadata.MetadataProperty{
387
+ factoryUtilityTagProperty("label", factoryUtilityLiteralMetadata("ok")),
388
+ },
389
+ })
390
+ richTag := factoryUtilityTagContainer("RichTag",
391
+ factoryUtilityTagProperty("target", factoryUtilityStringUnionMetadata("string", "number")),
392
+ factoryUtilityTagProperty("kind", factoryUtilityLiteralMetadata("range")),
393
+ factoryUtilityTagProperty("value", factoryUtilityLiteralMetadata("minimum")),
394
+ factoryUtilityTagProperty("exclusive", factoryUtilityStringTupleMetadata("format")),
395
+ factoryUtilityTagProperty("validate", factoryUtilityObjectMetadata(validateObject)),
396
+ factoryUtilityTagProperty("schema", factoryUtilityObjectMetadata(schemaObject)),
397
+ )
398
+ richAnalyzed := MetadataTypeTagFactory.Analyze(struct {
399
+ Errors *[]MetadataFactory_IError
400
+ Type string
401
+ Objects []*schemametadata.MetadataObjectType
402
+ Explore MetadataFactory_IExplore
403
+ }{
404
+ Errors: &typeTagErrors,
405
+ Type: "number",
406
+ Objects: []*schemametadata.MetadataObjectType{richTag},
407
+ })
408
+ if len(richAnalyzed) != 1 ||
409
+ richAnalyzed[0].Target != "number" ||
410
+ richAnalyzed[0].Validate != "return false" ||
411
+ richAnalyzed[0].Schema == nil {
412
+ t.Fatal("rich metadata type tag analysis missed validate or schema fields")
413
+ }
414
+ invalidTagErrors := []MetadataFactory_IError{}
415
+ invalidOuter := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{Name: "InvalidOuter"})
416
+ requiredTop := factoryUtilityTagContainer("RequiredTop",
417
+ factoryUtilityTagProperty("target", factoryUtilityLiteralMetadata("string")),
418
+ factoryUtilityTagProperty("kind", factoryUtilityLiteralMetadata("format")),
419
+ factoryUtilityTagProperty("value", factoryUtilityLiteralMetadata("uuid")),
420
+ )
421
+ requiredTop.Properties[0].Value.Required = true
422
+ requiredTop.Properties[0].Value.Optional = false
423
+ missingEssential := factoryUtilityTagContainer("MissingEssential",
424
+ factoryUtilityTagProperty("target", factoryUtilityLiteralMetadata("string")),
425
+ )
426
+ invalidProperty := factoryUtilityTagContainer("InvalidProperty",
427
+ factoryUtilityTagProperty("target", factoryUtilityLiteralMetadata("symbol")),
428
+ factoryUtilityTagProperty("kind", factoryUtilityAtomicMetadata("string")),
429
+ factoryUtilityTagProperty("value", factoryUtilityAtomicMetadata("number")),
430
+ factoryUtilityTagProperty("exclusive", factoryUtilityAtomicMetadata("boolean")),
431
+ factoryUtilityTagProperty("validate", factoryUtilityAtomicMetadata("string")),
432
+ factoryUtilityTagProperty("schema", factoryUtilityAtomicMetadata("string")),
433
+ )
434
+ nilTag := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
435
+ Name: "NilTag",
436
+ Properties: []*schemametadata.MetadataProperty{
437
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("typia.tag"), Value: schemametadata.MetadataSchema_initialize()}),
438
+ },
439
+ })
440
+ invalidAnalyzed := MetadataTypeTagFactory.Analyze(struct {
441
+ Errors *[]MetadataFactory_IError
442
+ Type string
443
+ Objects []*schemametadata.MetadataObjectType
444
+ Explore MetadataFactory_IExplore
445
+ }{
446
+ Errors: &invalidTagErrors,
447
+ Type: "string",
448
+ Objects: []*schemametadata.MetadataObjectType{
449
+ invalidOuter,
450
+ requiredTop,
451
+ missingEssential,
452
+ invalidProperty,
453
+ nilTag,
454
+ tagContainer,
455
+ },
456
+ })
457
+ if len(invalidAnalyzed) != 0 || len(invalidTagErrors) == 0 {
458
+ t.Fatalf("invalid metadata type tags should be reported and filtered out: analyzed=%d errors=%d", len(invalidAnalyzed), len(invalidTagErrors))
459
+ }
460
+ typeTagReports := []string{}
461
+ typeTagReport := func(next struct {
462
+ Property *string
463
+ Message string
464
+ }) bool {
465
+ typeTagReports = append(typeTagReports, next.Message)
466
+ return false
467
+ }
468
+ MetadataTypeTagFactory.Validate(struct {
469
+ Report func(struct {
470
+ Property *string
471
+ Message string
472
+ }) bool
473
+ Type string
474
+ Tags []schemametadata.IMetadataTypeTag
475
+ }{Report: typeTagReport, Type: "string", Tags: []schemametadata.IMetadataTypeTag{{Target: "number", Kind: "format"}}})
476
+ MetadataTypeTagFactory.Validate(struct {
477
+ Report func(struct {
478
+ Property *string
479
+ Message string
480
+ }) bool
481
+ Type string
482
+ Tags []schemametadata.IMetadataTypeTag
483
+ }{
484
+ Report: typeTagReport,
485
+ Type: "string",
486
+ Tags: []schemametadata.IMetadataTypeTag{
487
+ {Target: "string", Kind: "format", Name: "uuid", Exclusive: true},
488
+ {Target: "string", Kind: "format", Name: "email", Exclusive: true},
489
+ },
490
+ })
491
+ MetadataTypeTagFactory.Validate(struct {
492
+ Report func(struct {
493
+ Property *string
494
+ Message string
495
+ }) bool
496
+ Type string
497
+ Tags []schemametadata.IMetadataTypeTag
498
+ }{
499
+ Report: typeTagReport,
500
+ Type: "string",
501
+ Tags: []schemametadata.IMetadataTypeTag{
502
+ {Target: "string", Kind: "range", Name: "minimum", Exclusive: []string{"maximum"}},
503
+ {Target: "string", Kind: "range", Name: "maximum", Exclusive: []string{"minimum"}},
504
+ },
505
+ })
506
+ invalidExclusiveReports := []string{}
507
+ _ = metadataTypeTagFactory_get_exclusive(struct {
508
+ Report func(struct {
509
+ Property *string
510
+ Message string
511
+ }) bool
512
+ Key string
513
+ Value *schemametadata.MetadataSchema
514
+ }{Report: func(next struct {
515
+ Property *string
516
+ Message string
517
+ }) bool {
518
+ invalidExclusiveReports = append(invalidExclusiveReports, next.Message)
519
+ return false
520
+ }, Key: "exclusive", Value: factoryUtilityStringTupleMetadata("ok", "")})
521
+ if len(typeTagReports) != 3 ||
522
+ len(invalidExclusiveReports) == 0 ||
523
+ metadataTypeTagFactory_property_value(nil) != nil ||
524
+ !metadataTypeTagFactory_some([]string{"a", "b"}, func(value string) bool { return value == "b" }) {
525
+ t.Fatal("metadata type tag validation helper branches were not exercised")
526
+ }
527
+ if !strings.Contains(metadataTypeTagFactory_essentialFieldsMessage(), "'target'") {
528
+ t.Fatal("essential field message should mention target")
529
+ }
530
+ reports := []string{}
531
+ typeTagObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
532
+ Name: "TypeTagSchema",
533
+ Properties: []*schemametadata.MetadataProperty{
534
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("literal"), Value: factoryUtilityLiteralMetadata("value")}),
535
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("nullable"), Value: func() *schemametadata.MetadataSchema {
536
+ meta := schemametadata.MetadataSchema_initialize()
537
+ meta.Nullable = true
538
+ meta.Required = false
539
+ meta.Optional = true
540
+ return meta
541
+ }()}),
542
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("tuple"), Value: func() *schemametadata.MetadataSchema {
543
+ meta := schemametadata.MetadataSchema_initialize()
544
+ meta.Tuples = append(meta.Tuples, schemametadata.MetadataTuple_create(schemametadata.MetadataTuple{
545
+ Type: schemametadata.MetadataTupleType_create(schemametadata.MetadataTupleType{
546
+ Name: "Tuple",
547
+ Elements: []*schemametadata.MetadataSchema{factoryUtilityLiteralMetadata("a"), factoryUtilityLiteralMetadata("b")},
548
+ Nullables: []bool{},
549
+ }),
550
+ }))
551
+ return meta
552
+ }()}),
553
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("invalid"), Value: func() *schemametadata.MetadataSchema {
554
+ meta := schemametadata.MetadataSchema_initialize()
555
+ meta.Any = true
556
+ return meta
557
+ }()}),
558
+ },
559
+ })
560
+ if objectSchema := MetadataTypeTagSchemaFactory.Object(struct {
561
+ Report func(msg string) bool
562
+ Object *schemametadata.MetadataObjectType
563
+ }{
564
+ Report: func(msg string) bool {
565
+ reports = append(reports, msg)
566
+ return false
567
+ },
568
+ Object: typeTagObject,
569
+ }); objectSchema["literal"] != "value" || objectSchema["tuple"] == nil || len(reports) == 0 {
570
+ t.Fatal("type tag schema factory returned unexpected output")
571
+ }
572
+
573
+ if protobufFactory_getBigintType([]any{uint64(1), "2"}) != "uint64" ||
574
+ protobufFactory_getBigintType([]any{int64(-1)}) != "int64" {
575
+ t.Fatal("protobuf bigint type inference mismatch")
576
+ }
577
+ if protobufFactory_getNumberType([]any{1, int64(2)}) != "int32" ||
578
+ protobufFactory_getNumberType([]any{int64(2147483648)}) != "int64" ||
579
+ protobufFactory_getNumberType([]any{float32(1.5)}) != "double" {
580
+ t.Fatal("protobuf number type inference mismatch")
581
+ }
582
+ if protobufFactory_toFloat("3.5") != 3.5 {
583
+ t.Fatal("protobuf fallback float conversion mismatch")
584
+ }
585
+ if protobufFactory_toFloat(float64(4.5)) != 4.5 ||
586
+ protobufFactory_toFloat(uint64(5)) != 5 {
587
+ t.Fatal("protobuf numeric float conversion mismatch")
588
+ }
589
+ for raw, expected := range map[any]int{
590
+ int64(8): 8,
591
+ float64(9): 9,
592
+ "10": 10,
593
+ } {
594
+ if value := protobufFactory_getSequence([]schemametadata.IMetadataTypeTag{{Kind: "sequence", Schema: map[string]any{"x-protobuf-sequence": raw}}}); value == nil || *value != expected {
595
+ t.Fatalf("protobuf sequence conversion mismatch for %v", raw)
596
+ }
597
+ }
598
+ for _, tags := range [][]schemametadata.IMetadataTypeTag{
599
+ {{Kind: "format"}},
600
+ {{Kind: "sequence", Schema: "invalid"}},
601
+ {{Kind: "sequence", Schema: map[string]any{}}},
602
+ {{Kind: "sequence", Schema: map[string]any{"x-protobuf-sequence": "bad"}}},
603
+ } {
604
+ if protobufFactory_getSequence(tags) != nil {
605
+ t.Fatal("invalid protobuf sequence tag should not resolve")
606
+ }
607
+ }
608
+ if len(protobufFactory_firstTags(nil)) != 0 || protobufFactory_size(nil) != 0 {
609
+ t.Fatal("protobuf empty helper fallback mismatch")
610
+ }
611
+
612
+ sequence := 7
613
+ tagged := []*schemametadata.MetadataConstantValue{
614
+ schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{
615
+ Value: int64(-3),
616
+ Tags: [][]schemametadata.IMetadataTypeTag{{
617
+ {Kind: "type", Value: "int64"},
618
+ {Kind: "sequence", Schema: map[string]any{"x-protobuf-sequence": sequence}},
619
+ }},
620
+ }),
621
+ schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{
622
+ Value: uint64(5),
623
+ Tags: nil,
624
+ }),
625
+ }
626
+ if values := protobufFactory_constantValues(tagged); len(values) != 2 || values[0] != int64(-3) {
627
+ t.Fatal("protobuf constant value extraction mismatch")
628
+ }
629
+ bigints := map[string]*int{}
630
+ protobufFactory_decodeBigint(bigints, tagged, "uint64")
631
+ if bigints["int64"] == nil || *bigints["int64"] != sequence {
632
+ t.Fatal("protobuf bigint tag decoding missed explicit type sequence")
633
+ }
634
+ if _, ok := bigints["uint64"]; !ok {
635
+ t.Fatal("protobuf bigint tag decoding missed fallback type")
636
+ }
637
+
638
+ numbers := map[string]*int{}
639
+ protobufFactory_decodeNumber(numbers, []*schemametadata.MetadataConstantValue{
640
+ schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{
641
+ Value: 1.5,
642
+ Tags: [][]schemametadata.IMetadataTypeTag{{
643
+ {Kind: "type", Value: "float"},
644
+ {Kind: "sequence", Schema: map[string]any{"x-protobuf-sequence": sequence}},
645
+ }},
646
+ }),
647
+ schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{
648
+ Value: 3,
649
+ Tags: nil,
650
+ }),
651
+ }, "double")
652
+ if numbers["float"] == nil || *numbers["float"] != sequence {
653
+ t.Fatal("protobuf number tag decoding missed explicit type sequence")
654
+ }
655
+ if _, ok := numbers["double"]; !ok {
656
+ t.Fatal("protobuf number tag decoding missed fallback type")
657
+ }
658
+ protoMeta := schemametadata.MetadataSchema_initialize()
659
+ protoMeta.Constants = append(protoMeta.Constants,
660
+ schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
661
+ Type: "boolean",
662
+ Values: []*schemametadata.MetadataConstantValue{
663
+ schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: true, Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(11)}}}),
664
+ },
665
+ }),
666
+ schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
667
+ Type: "bigint",
668
+ Values: tagged,
669
+ }),
670
+ schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
671
+ Type: "number",
672
+ Values: []*schemametadata.MetadataConstantValue{
673
+ schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: 1.5, Tags: [][]schemametadata.IMetadataTypeTag{{{Kind: "type", Value: "float"}, factoryUtilitySequenceTag(12)}}}),
674
+ },
675
+ }),
676
+ schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
677
+ Type: "string",
678
+ Values: []*schemametadata.MetadataConstantValue{
679
+ schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: "literal", Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(13)}}}),
680
+ },
681
+ }),
682
+ )
683
+ protoMeta.Templates = append(protoMeta.Templates, schemametadata.MetadataTemplate_create(schemametadata.MetadataTemplate{
684
+ Row: []*schemametadata.MetadataSchema{factoryUtilityLiteralMetadata("template")},
685
+ Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(14)}},
686
+ }))
687
+ protoMeta.Atomics = append(protoMeta.Atomics,
688
+ schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: "boolean", Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(15)}}}),
689
+ schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: "bigint", Tags: [][]schemametadata.IMetadataTypeTag{{{Kind: "type", Value: "uint64"}, factoryUtilitySequenceTag(16)}}}),
690
+ schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: "number", Tags: [][]schemametadata.IMetadataTypeTag{{{Kind: "type", Value: "uint32"}, factoryUtilitySequenceTag(17)}}}),
691
+ schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: "string", Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(18)}}}),
692
+ )
693
+ if len(protobufFactory_emplaceAtomic(protoMeta)) == 0 ||
694
+ len(protobufFactory_getAtomics(protoMeta)) == 0 ||
695
+ len(protobufFactory_getNumbers(protoMeta)) == 0 ||
696
+ len(protobufFactory_getBigints(protoMeta)) == 0 {
697
+ t.Fatal("protobuf atomic metadata helpers did not read rich metadata")
698
+ }
699
+ bytesMeta := schemametadata.MetadataSchema_initialize()
700
+ bytesMeta.Natives = append(bytesMeta.Natives, schemametadata.MetadataNative_create(schemametadata.MetadataNative{Name: "Uint8Array"}))
701
+ if _, ok := protobufFactory_emplaceSchema(bytesMeta).(nativeprotobuf.IProtobufSchema_IByte); !ok {
702
+ t.Fatal("Uint8Array metadata should emplace as protobuf bytes")
703
+ }
704
+ dynamicObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
705
+ Name: "Dynamic",
706
+ Properties: []*schemametadata.MetadataProperty{
707
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
708
+ Key: factoryUtilityAtomicMetadata("string"),
709
+ Value: factoryUtilityAtomicMetadata("number"),
710
+ }),
711
+ },
712
+ })
713
+ dynamicMeta := schemametadata.MetadataSchema_initialize()
714
+ dynamicMeta.Objects = append(dynamicMeta.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{Type: dynamicObject}))
715
+ if _, ok := protobufFactory_emplaceSchema(dynamicMeta).(nativeprotobuf.IProtobufSchema_IMap); !ok {
716
+ t.Fatal("dynamic object metadata should emplace as protobuf map")
717
+ }
718
+ mapMeta := schemametadata.MetadataSchema_initialize()
719
+ mapMeta.Maps = append(mapMeta.Maps, schemametadata.MetadataMap_create(schemametadata.MetadataMap{
720
+ Key: factoryUtilityAtomicMetadata("string"),
721
+ Value: factoryUtilityAtomicMetadata("number"),
722
+ }))
723
+ if _, ok := protobufFactory_emplaceSchema(mapMeta).(nativeprotobuf.IProtobufSchema_IMap); !ok {
724
+ t.Fatal("map metadata should emplace as protobuf map")
725
+ }
726
+ factoryUtilityMustPanic(t, func() {
727
+ protobufFactory_emplaceSchema(schemametadata.MetadataSchema_initialize())
728
+ })
729
+
730
+ sequenceErrors := []string{}
731
+ seenSequences := map[int]bool{}
732
+ addSequence := func(value int) bool {
733
+ if seenSequences[value] {
734
+ return false
735
+ }
736
+ seenSequences[value] = true
737
+ return true
738
+ }
739
+ protobufFactory_validateInstanceSequence("array", [][]schemametadata.IMetadataTypeTag{
740
+ {factoryUtilitySequenceTag(1)},
741
+ {},
742
+ }, &sequenceErrors, addSequence)
743
+ protobufFactory_validateInstanceSequence("object", [][]schemametadata.IMetadataTypeTag{
744
+ {factoryUtilitySequenceTag(2)},
745
+ {factoryUtilitySequenceTag(3)},
746
+ }, &sequenceErrors, addSequence)
747
+ protobufFactory_validateInstanceSequence("map", [][]schemametadata.IMetadataTypeTag{
748
+ {factoryUtilitySequenceTag(1)},
749
+ }, &sequenceErrors, addSequence)
750
+ protobufFactory_validateUniqueSequence("number type", map[int]bool{4: true, 5: true}, 2, 2, &sequenceErrors, addSequence)
751
+ protobufFactory_validateUniqueSequence("string type", map[int]bool{6: true}, 2, 1, &sequenceErrors, addSequence)
752
+ if len(sequenceErrors) < 4 {
753
+ t.Fatalf("protobuf sequence validation did not report expected errors: %v", sequenceErrors)
754
+ }
755
+ propertyErrors := []string{}
756
+ propertyMeta := schemametadata.MetadataSchema_initialize()
757
+ propertyMeta.Constants = append(propertyMeta.Constants, protoMeta.Constants...)
758
+ propertyMeta.Atomics = append(propertyMeta.Atomics, protoMeta.Atomics...)
759
+ propertyMeta.Arrays = append(propertyMeta.Arrays, schemametadata.MetadataArray_create(schemametadata.MetadataArray{
760
+ Type: schemametadata.MetadataArrayType_create(schemametadata.MetadataArrayType{Name: "Numbers", Value: factoryUtilityAtomicMetadata("number")}),
761
+ Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(11)}},
762
+ }))
763
+ propertyMeta.Objects = append(propertyMeta.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{
764
+ Type: dynamicObject,
765
+ Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(19)}},
766
+ }))
767
+ propertyMeta.Maps = append(propertyMeta.Maps, schemametadata.MetadataMap_create(schemametadata.MetadataMap{
768
+ Key: factoryUtilityAtomicMetadata("string"),
769
+ Value: factoryUtilityAtomicMetadata("number"),
770
+ Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(20)}},
771
+ }))
772
+ propertyMeta.Natives = append(propertyMeta.Natives, schemametadata.MetadataNative_create(schemametadata.MetadataNative{
773
+ Name: "Uint8Array",
774
+ Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(21)}},
775
+ }))
776
+ protobufFactory_validateProperty(propertyMeta, &propertyErrors)
777
+ if len(propertyErrors) == 0 {
778
+ t.Fatal("protobuf property validation should detect duplicate sequence rows")
779
+ }
780
+ duplicateObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
781
+ Name: "DuplicateSequences",
782
+ Properties: []*schemametadata.MetadataProperty{
783
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
784
+ Key: factoryUtilityLiteralMetadata("first"),
785
+ Value: factoryUtilitySequenceStringMetadata(30),
786
+ }),
787
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
788
+ Key: factoryUtilityLiteralMetadata("second"),
789
+ Value: factoryUtilitySequenceStringMetadata(30),
790
+ }),
791
+ },
792
+ })
793
+ protobufFactory_validateObject(duplicateObject, &propertyErrors)
794
+ if len(propertyErrors) < 2 {
795
+ t.Fatal("protobuf object validation should detect duplicated property sequences")
796
+ }
797
+ emplaceObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
798
+ Name: "EmplaceObject",
799
+ Properties: []*schemametadata.MetadataProperty{
800
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
801
+ Key: factoryUtilityLiteralMetadata("fixed"),
802
+ Value: factoryUtilitySequenceStringMetadata(2),
803
+ }),
804
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
805
+ Key: factoryUtilityLiteralMetadata("floating"),
806
+ Value: factoryUtilityAtomicMetadata("number"),
807
+ }),
808
+ },
809
+ })
810
+ ProtobufFactory.EmplaceObject(emplaceObject)
811
+ if emplaceObject.Properties[1].Of_protobuf_ == nil ||
812
+ emplaceObject.Properties[1].Of_protobuf_.Fixed {
813
+ t.Fatal("protobuf object emplace should assign indexes to non-fixed properties")
814
+ }
815
+ shapeErrors := []string{}
816
+ recordShape := func(msg string) { shapeErrors = append(shapeErrors, msg) }
817
+ protobufFactory_validateShape(factoryUtilityArrayMetadata(factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("string"))), recordShape)
818
+ optionalArray := factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("string"))
819
+ optionalArray.Arrays[0].Type.Value.Optional = true
820
+ optionalArray.Arrays[0].Type.Value.Required = false
821
+ protobufFactory_validateShape(optionalArray, recordShape)
822
+ unionArray := factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("string"))
823
+ unionArray.Arrays[0].Type.Value.Atomics = append(unionArray.Arrays[0].Type.Value.Atomics, schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: "number"}))
824
+ protobufFactory_validateShape(unionArray, recordShape)
825
+ mapArray := factoryUtilityArrayMetadata(mapMeta)
826
+ protobufFactory_validateShape(mapArray, recordShape)
827
+ mixedObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
828
+ Name: "Mixed",
829
+ Properties: []*schemametadata.MetadataProperty{
830
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityLiteralMetadata("fixed"), Value: factoryUtilityAtomicMetadata("string")}),
831
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityAtomicMetadata("string"), Value: factoryUtilityAtomicMetadata("number")}),
832
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityAtomicMetadata("number"), Value: factoryUtilityAtomicMetadata("boolean")}),
833
+ },
834
+ })
835
+ mixedMeta := schemametadata.MetadataSchema_initialize()
836
+ mixedMeta.Objects = append(mixedMeta.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{Type: mixedObject}))
837
+ protobufFactory_validateShape(mixedMeta, recordShape)
838
+ dynamicArrayObject := schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
839
+ Name: "DynamicArray",
840
+ Properties: []*schemametadata.MetadataProperty{
841
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{Key: factoryUtilityAtomicMetadata("string"), Value: factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("string"))}),
842
+ },
843
+ })
844
+ dynamicArrayMeta := schemametadata.MetadataSchema_initialize()
845
+ dynamicArrayMeta.Objects = append(dynamicArrayMeta.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{Type: dynamicArrayObject}))
846
+ protobufFactory_validateShape(dynamicArrayMeta, recordShape)
847
+ invalidMap := schemametadata.MetadataSchema_initialize()
848
+ invalidMap.Maps = append(invalidMap.Maps, schemametadata.MetadataMap_create(schemametadata.MetadataMap{
849
+ Key: factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("string")),
850
+ Value: factoryUtilityArrayMetadata(factoryUtilityAtomicMetadata("number")),
851
+ }))
852
+ protobufFactory_validateShape(invalidMap, recordShape)
853
+ if len(shapeErrors) < 7 {
854
+ t.Fatalf("protobuf shape validation missed branch errors: %v", shapeErrors)
855
+ }
856
+ if protobufFactory_propertyIndex(nil) != nil {
857
+ t.Fatal("unknown protobuf property type should not have an index")
858
+ }
859
+ }
860
+
861
+ type factoryUtilityImporter struct{}
862
+
863
+ func (factoryUtilityImporter) Internal(name string) *shimast.Node {
864
+ return expressionFactory_factory.NewIdentifier(name)
865
+ }
866
+
867
+ func factoryUtilitySequenceTag(value int) schemametadata.IMetadataTypeTag {
868
+ return schemametadata.IMetadataTypeTag{
869
+ Kind: "sequence",
870
+ Schema: map[string]any{"x-protobuf-sequence": value},
871
+ }
872
+ }
873
+
874
+ func factoryUtilityMustPanic(t *testing.T, run func()) {
875
+ t.Helper()
876
+ defer func() {
877
+ if recover() == nil {
878
+ t.Fatal("expected helper to panic")
879
+ }
880
+ }()
881
+ run()
882
+ }
883
+
884
+ func (factoryUtilityImporter) Instance(props ExpressionFactory_IInstance) *shimast.Node {
885
+ return expressionFactory_factory.NewIdentifier(props.Name)
886
+ }
887
+
888
+ func (factoryUtilityImporter) Namespace(props ExpressionFactory_INamespace) *shimast.Node {
889
+ return expressionFactory_factory.NewIdentifier(props.Name)
890
+ }
891
+
892
+ func (factoryUtilityImporter) Default(props ExpressionFactory_IDefault) *shimast.Node {
893
+ return expressionFactory_factory.NewIdentifier(props.Name)
894
+ }
895
+
896
+ func factoryUtilityLiteralMetadata(value string) *schemametadata.MetadataSchema {
897
+ meta := schemametadata.MetadataSchema_initialize()
898
+ meta.Constants = append(meta.Constants, schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
899
+ Type: "string",
900
+ Values: []*schemametadata.MetadataConstantValue{
901
+ schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: value}),
902
+ },
903
+ }))
904
+ return meta
905
+ }
906
+
907
+ func factoryUtilityStringUnionMetadata(values ...string) *schemametadata.MetadataSchema {
908
+ meta := schemametadata.MetadataSchema_initialize()
909
+ constants := make([]*schemametadata.MetadataConstantValue, 0, len(values))
910
+ for _, value := range values {
911
+ constants = append(constants, schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: value}))
912
+ }
913
+ meta.Constants = append(meta.Constants, schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
914
+ Type: "string",
915
+ Values: constants,
916
+ }))
917
+ return meta
918
+ }
919
+
920
+ func factoryUtilityBooleanMetadata(value bool) *schemametadata.MetadataSchema {
921
+ meta := schemametadata.MetadataSchema_initialize()
922
+ meta.Constants = append(meta.Constants, schemametadata.MetadataConstant_create(schemametadata.MetadataConstant{
923
+ Type: "boolean",
924
+ Values: []*schemametadata.MetadataConstantValue{
925
+ schemametadata.MetadataConstantValue_create(schemametadata.MetadataConstantValue{Value: value}),
926
+ },
927
+ }))
928
+ return meta
929
+ }
930
+
931
+ func factoryUtilityObjectMetadata(object *schemametadata.MetadataObjectType) *schemametadata.MetadataSchema {
932
+ meta := schemametadata.MetadataSchema_initialize()
933
+ meta.Objects = append(meta.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{Type: object}))
934
+ return meta
935
+ }
936
+
937
+ func factoryUtilityStringTupleMetadata(values ...string) *schemametadata.MetadataSchema {
938
+ meta := schemametadata.MetadataSchema_initialize()
939
+ elements := make([]*schemametadata.MetadataSchema, 0, len(values))
940
+ for _, value := range values {
941
+ if value == "" {
942
+ elements = append(elements, factoryUtilityAtomicMetadata("string"))
943
+ } else {
944
+ elements = append(elements, factoryUtilityLiteralMetadata(value))
945
+ }
946
+ }
947
+ meta.Tuples = append(meta.Tuples, schemametadata.MetadataTuple_create(schemametadata.MetadataTuple{
948
+ Type: schemametadata.MetadataTupleType_create(schemametadata.MetadataTupleType{
949
+ Name: "ExclusiveTuple",
950
+ Elements: elements,
951
+ Nullables: []bool{},
952
+ }),
953
+ }))
954
+ return meta
955
+ }
956
+
957
+ func factoryUtilityTagProperty(key string, value *schemametadata.MetadataSchema) *schemametadata.MetadataProperty {
958
+ return schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
959
+ Key: factoryUtilityLiteralMetadata(key),
960
+ Value: value,
961
+ })
962
+ }
963
+
964
+ func factoryUtilityTagContainer(name string, properties ...*schemametadata.MetadataProperty) *schemametadata.MetadataObjectType {
965
+ tagValue := schemametadata.MetadataSchema_initialize()
966
+ tagValue.Required = false
967
+ tagValue.Optional = true
968
+ tagValue.Objects = append(tagValue.Objects, schemametadata.MetadataObject_create(schemametadata.MetadataObject{
969
+ Type: schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
970
+ Name: name + "Shape",
971
+ Properties: properties,
972
+ }),
973
+ }))
974
+ return schemametadata.MetadataObjectType_create(schemametadata.MetadataObjectType{
975
+ Name: name,
976
+ Properties: []*schemametadata.MetadataProperty{
977
+ schemametadata.MetadataProperty_create(schemametadata.MetadataProperty{
978
+ Key: factoryUtilityLiteralMetadata("typia.tag"),
979
+ Value: tagValue,
980
+ }),
981
+ },
982
+ })
983
+ }
984
+
985
+ func factoryUtilityAtomicMetadata(name string) *schemametadata.MetadataSchema {
986
+ meta := schemametadata.MetadataSchema_initialize()
987
+ meta.Atomics = append(meta.Atomics, schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{Type: name}))
988
+ return meta
989
+ }
990
+
991
+ func factoryUtilityArrayMetadata(value *schemametadata.MetadataSchema) *schemametadata.MetadataSchema {
992
+ meta := schemametadata.MetadataSchema_initialize()
993
+ meta.Arrays = append(meta.Arrays, schemametadata.MetadataArray_create(schemametadata.MetadataArray{
994
+ Type: schemametadata.MetadataArrayType_create(schemametadata.MetadataArrayType{Name: "Array<" + value.GetName() + ">", Value: value}),
995
+ }))
996
+ return meta
997
+ }
998
+
999
+ func factoryUtilitySequenceStringMetadata(sequence int) *schemametadata.MetadataSchema {
1000
+ meta := schemametadata.MetadataSchema_initialize()
1001
+ meta.Atomics = append(meta.Atomics, schemametadata.MetadataAtomic_create(schemametadata.MetadataAtomic{
1002
+ Type: "string",
1003
+ Tags: [][]schemametadata.IMetadataTypeTag{{factoryUtilitySequenceTag(sequence)}},
1004
+ }))
1005
+ return meta
1006
+ }