typia 13.0.0-rc.1 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +169 -171
  3. package/native/adapter/adapter.go +29 -29
  4. package/native/adapter/adapter_options_branch_matrix_test.go +54 -54
  5. package/native/adapter/visit.go +173 -173
  6. package/native/adapter/visit_property_chain_edges_test.go +129 -129
  7. package/native/cmd/ttsc-typia/any_array_type_tags_transform_test.go +204 -204
  8. package/native/cmd/ttsc-typia/atomic_intersection_schema_transform_test.go +148 -148
  9. package/native/cmd/ttsc-typia/boolean_literal_discriminant_schema_transform_test.go +374 -374
  10. package/native/cmd/ttsc-typia/build.go +188 -188
  11. package/native/cmd/ttsc-typia/build_reports_semantic_diagnostics_test.go +34 -34
  12. package/native/cmd/ttsc-typia/build_reports_syntactic_diagnostics_test.go +34 -34
  13. package/native/cmd/ttsc-typia/command_routes_and_diagnostics_coverage_test.go +314 -314
  14. package/native/cmd/ttsc-typia/compare_equal_cover_transform_test.go +271 -271
  15. package/native/cmd/ttsc-typia/compare_less_transform_test.go +180 -180
  16. package/native/cmd/ttsc-typia/compare_method_delegation_transform_test.go +173 -173
  17. package/native/cmd/ttsc-typia/demo_rejects_bad_flag_test.go +25 -25
  18. package/native/cmd/ttsc-typia/diagnostics.go +51 -51
  19. package/native/cmd/ttsc-typia/dynamic_key_path_helper_alias_transform_test.go +159 -159
  20. package/native/cmd/ttsc-typia/exclude_type_tag_transform_test.go +176 -176
  21. package/native/cmd/ttsc-typia/inline_type_display_name_transform_test.go +290 -290
  22. package/native/cmd/ttsc-typia/instance_union_create_is_transform_test.go +248 -248
  23. package/native/cmd/ttsc-typia/intersection_all_never_union_transform_test.go +168 -168
  24. package/native/cmd/ttsc-typia/intersection_brand_transform_test.go +267 -267
  25. package/native/cmd/ttsc-typia/intersection_nonsensible_backstop_transform_test.go +157 -132
  26. package/native/cmd/ttsc-typia/intersection_union_validation_transform_test.go +590 -590
  27. package/native/cmd/ttsc-typia/json_is_stringify_scoped_checker_transform_test.go +206 -0
  28. package/native/cmd/ttsc-typia/json_stringify_constant_atomic_union_transform_test.go +171 -171
  29. package/native/cmd/ttsc-typia/main.go +97 -97
  30. package/native/cmd/ttsc-typia/main_wasm.go +226 -226
  31. package/native/cmd/ttsc-typia/non_trailing_rest_tuple_transform_test.go +156 -156
  32. package/native/cmd/ttsc-typia/notation_kebab_case_transform_test.go +186 -186
  33. package/native/cmd/ttsc-typia/nullable_primitive_property_is_transform_test.go +236 -236
  34. package/native/cmd/ttsc-typia/object_custom_tag_validation_transform_test.go +332 -332
  35. package/native/cmd/ttsc-typia/object_union_explicit_pointer_schema_transform_test.go +269 -269
  36. package/native/cmd/ttsc-typia/plain_classify_class_ref_transform_test.go +261 -261
  37. package/native/cmd/ttsc-typia/plain_classify_container_seed_transform_test.go +144 -144
  38. package/native/cmd/ttsc-typia/plain_classify_cross_module_extra_transform_test.go +211 -211
  39. package/native/cmd/ttsc-typia/plain_classify_deep_nested_transform_test.go +184 -184
  40. package/native/cmd/ttsc-typia/plain_classify_field_copy_transform_test.go +204 -204
  41. package/native/cmd/ttsc-typia/plain_classify_from_new_transform_test.go +465 -465
  42. package/native/cmd/ttsc-typia/plain_classify_strategy_edges_transform_test.go +519 -519
  43. package/native/cmd/ttsc-typia/plain_classify_union_transform_test.go +149 -149
  44. package/native/cmd/ttsc-typia/plain_classify_validated_union_transform_test.go +212 -212
  45. package/native/cmd/ttsc-typia/plain_clone_bigint_wrapper_transform_test.go +153 -153
  46. package/native/cmd/ttsc-typia/plugin_options_missing_config_test.go +26 -26
  47. package/native/cmd/ttsc-typia/plugin_options_undefined_false_test.go +36 -36
  48. package/native/cmd/ttsc-typia/project_catalog_transform_coverage_test.go +73 -73
  49. package/native/cmd/ttsc-typia/protobuf_object_generic_union_encode_transform_test.go +248 -248
  50. package/native/cmd/ttsc-typia/protobuf_sequence_field_numbers_transform_test.go +107 -107
  51. package/native/cmd/ttsc-typia/random_recursive_min_items_diagnostic_test.go +234 -234
  52. package/native/cmd/ttsc-typia/random_unsatisfiable_recursive_diagnostic_test.go +146 -146
  53. package/native/cmd/ttsc-typia/recursive_visit_tracking_transform_test.go +473 -473
  54. package/native/cmd/ttsc-typia/run_default_build_route_test.go +31 -31
  55. package/native/cmd/ttsc-typia/schema_dts_role_transform_test.go +404 -404
  56. package/native/cmd/ttsc-typia/shallow_depth_argument_error_transform_test.go +88 -88
  57. package/native/cmd/ttsc-typia/shallow_depth_limit_transform_test.go +278 -278
  58. package/native/cmd/ttsc-typia/shallow_depth_runtime_test.go +173 -173
  59. package/native/cmd/ttsc-typia/shallow_factory_depth_runtime_test.go +171 -171
  60. package/native/cmd/ttsc-typia/shallow_nested_depth_transform_test.go +148 -148
  61. package/native/cmd/ttsc-typia/template_interpolation_type_tags_transform_test.go +322 -322
  62. package/native/cmd/ttsc-typia/template_literal_type_tags_transform_test.go +162 -162
  63. package/native/cmd/ttsc-typia/transform.go +270 -270
  64. package/native/cmd/ttsc-typia/transform_declaration_source_produces_no_js_test.go +59 -59
  65. package/native/cmd/ttsc-typia/transform_diagnostics_preserve_details_test.go +203 -203
  66. package/native/cmd/ttsc-typia/transform_fixtures_emit_coverage_test.go +528 -528
  67. package/native/cmd/ttsc-typia/transform_helpers_test.go +155 -155
  68. package/native/core/context/EmitFactory.go +39 -39
  69. package/native/core/context/IProgrammerProps.go +14 -14
  70. package/native/core/context/ITransformOptions.go +9 -9
  71. package/native/core/context/ITypiaContext.go +36 -36
  72. package/native/core/context/ImportProgrammer.go +354 -354
  73. package/native/core/context/TransformerError.go +117 -117
  74. package/native/core/context/import_programmer_statement_coverage_test.go +71 -71
  75. package/native/core/context/index.go +1 -1
  76. package/native/core/context/transformer_error_formatting_test.go +100 -100
  77. package/native/core/factories/CommentFactory.go +27 -27
  78. package/native/core/factories/ExpressionFactory.go +357 -357
  79. package/native/core/factories/FormatCheatSheet.go +30 -30
  80. package/native/core/factories/IdentifierFactory.go +172 -172
  81. package/native/core/factories/JsonMetadataFactory.go +154 -154
  82. package/native/core/factories/LiteralFactory.go +282 -282
  83. package/native/core/factories/MetadataCommentTagFactory.go +446 -446
  84. package/native/core/factories/MetadataFactory.go +543 -543
  85. package/native/core/factories/MetadataTypeTagFactory.go +560 -560
  86. package/native/core/factories/MetadataTypeTagSchemaFactory.go +117 -117
  87. package/native/core/factories/NumericRangeFactory.go +132 -132
  88. package/native/core/factories/ProtobufFactory.go +1090 -1090
  89. package/native/core/factories/StatementFactory.go +114 -114
  90. package/native/core/factories/TemplateFactory.go +82 -82
  91. package/native/core/factories/TypeFactory.go +176 -176
  92. package/native/core/factories/ValueFactory.go +43 -43
  93. package/native/core/factories/factory_utility_coverage_test.go +1006 -1006
  94. package/native/core/factories/index.go +1 -1
  95. package/native/core/factories/internal/metadata/IMetadataIteratorProps.go +70 -70
  96. package/native/core/factories/internal/metadata/MetadataHelper.go +425 -425
  97. package/native/core/factories/internal/metadata/comment_tags_coverage_test.go +184 -184
  98. package/native/core/factories/internal/metadata/emend_metadata_atomics.go +80 -80
  99. package/native/core/factories/internal/metadata/emplace_metadata_alias.go +41 -41
  100. package/native/core/factories/internal/metadata/emplace_metadata_array_type.go +44 -44
  101. package/native/core/factories/internal/metadata/emplace_metadata_object.go +599 -599
  102. package/native/core/factories/internal/metadata/emplace_metadata_tuple.go +69 -69
  103. package/native/core/factories/internal/metadata/explore_metadata.go +75 -75
  104. package/native/core/factories/internal/metadata/iterate_metadata.go +55 -55
  105. package/native/core/factories/internal/metadata/iterate_metadata_alias.go +36 -36
  106. package/native/core/factories/internal/metadata/iterate_metadata_array.go +77 -77
  107. package/native/core/factories/internal/metadata/iterate_metadata_atomic.go +63 -63
  108. package/native/core/factories/internal/metadata/iterate_metadata_coalesce.go +30 -30
  109. package/native/core/factories/internal/metadata/iterate_metadata_collection.go +366 -366
  110. package/native/core/factories/internal/metadata/iterate_metadata_collection_branch_matrix_test.go +201 -201
  111. package/native/core/factories/internal/metadata/iterate_metadata_comment_tags.go +34 -34
  112. package/native/core/factories/internal/metadata/iterate_metadata_constant.go +139 -139
  113. package/native/core/factories/internal/metadata/iterate_metadata_escape.go +56 -56
  114. package/native/core/factories/internal/metadata/iterate_metadata_function.go +93 -93
  115. package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +1054 -1054
  116. package/native/core/factories/internal/metadata/iterate_metadata_intersection_brand_coverage_test.go +114 -114
  117. package/native/core/factories/internal/metadata/iterate_metadata_intersection_coverage_test.go +106 -106
  118. package/native/core/factories/internal/metadata/iterate_metadata_intersection_shareable_name_test.go +22 -22
  119. package/native/core/factories/internal/metadata/iterate_metadata_map.go +55 -55
  120. package/native/core/factories/internal/metadata/iterate_metadata_native.go +122 -122
  121. package/native/core/factories/internal/metadata/iterate_metadata_object.go +35 -35
  122. package/native/core/factories/internal/metadata/iterate_metadata_set.go +41 -41
  123. package/native/core/factories/internal/metadata/iterate_metadata_sort.go +202 -202
  124. package/native/core/factories/internal/metadata/iterate_metadata_template.go +41 -41
  125. package/native/core/factories/internal/metadata/iterate_metadata_tuple.go +24 -24
  126. package/native/core/factories/internal/metadata/iterate_metadata_union.go +40 -40
  127. package/native/core/factories/internal/metadata/js_doc_parameter_name_reads_qualified_name_test.go +55 -55
  128. package/native/core/factories/internal/metadata/optional_coalesce_coverage_test.go +38 -38
  129. package/native/core/factories/internal/metadata/sort_constants_coverage_test.go +63 -63
  130. package/native/core/factories/json_metadata_factory_dedupes_bigint_diagnostics_test.go +36 -36
  131. package/native/core/factories/json_metadata_factory_rejects_bigint_native_test.go +29 -29
  132. package/native/core/factories/metadata_comment_tag_factory_coverage_test.go +239 -239
  133. package/native/core/factories/protobuf_factory_rejects_invalid_field_names_test.go +75 -75
  134. package/native/core/index.go +1 -1
  135. package/native/core/programmers/AssertProgrammer.go +511 -511
  136. package/native/core/programmers/IsProgrammer.go +418 -419
  137. package/native/core/programmers/RandomProgrammer.go +1448 -1448
  138. package/native/core/programmers/ValidateProgrammer.go +488 -488
  139. package/native/core/programmers/compare/CompareEqualProgrammer.go +668 -668
  140. package/native/core/programmers/compare/CompareLessProgrammer.go +489 -489
  141. package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +172 -172
  142. package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +135 -135
  143. package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +131 -131
  144. package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +106 -106
  145. package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +222 -222
  146. package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +129 -129
  147. package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +172 -172
  148. package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +252 -252
  149. package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +147 -147
  150. package/native/core/programmers/functional/functional_assert_helper_coverage_test.go +26 -26
  151. package/native/core/programmers/functional/index.go +1 -1
  152. package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +53 -53
  153. package/native/core/programmers/helpers/AtomicPredicator.go +75 -75
  154. package/native/core/programmers/helpers/ClassifyJoiner.go +174 -174
  155. package/native/core/programmers/helpers/CloneJoiner.go +307 -307
  156. package/native/core/programmers/helpers/FunctionProgrammer.go +218 -218
  157. package/native/core/programmers/helpers/HttpMetadataUtil.go +30 -30
  158. package/native/core/programmers/helpers/ICheckEntry.go +14 -14
  159. package/native/core/programmers/helpers/IExpressionEntry.go +15 -15
  160. package/native/core/programmers/helpers/ModuloText.go +26 -26
  161. package/native/core/programmers/helpers/NotationJoiner.go +204 -204
  162. package/native/core/programmers/helpers/OptionPredicator.go +39 -39
  163. package/native/core/programmers/helpers/ProtobufUtil.go +273 -273
  164. package/native/core/programmers/helpers/ProtobufWire.go +14 -14
  165. package/native/core/programmers/helpers/PruneJoiner.go +290 -290
  166. package/native/core/programmers/helpers/RandomJoiner.go +805 -805
  167. package/native/core/programmers/helpers/StringifyJoinder.go +409 -409
  168. package/native/core/programmers/helpers/StringifyPredicator.go +25 -25
  169. package/native/core/programmers/helpers/UnionExplorer.go +966 -966
  170. package/native/core/programmers/helpers/UnionPredicator.go +92 -92
  171. package/native/core/programmers/helpers/clone_joiner_optional_condition_test.go +70 -70
  172. package/native/core/programmers/helpers/disable_function_programmer_declare.go +10 -10
  173. package/native/core/programmers/helpers/function_programmer_unique_names_test.go +54 -54
  174. package/native/core/programmers/helpers/joiner_branch_coverage_test.go +147 -147
  175. package/native/core/programmers/helpers/random_joiner_recursive_array_guard_test.go +166 -166
  176. package/native/core/programmers/helpers/union_explorer_coverage_test.go +135 -135
  177. package/native/core/programmers/helpers/union_predicator_checks_neighbor_flag_test.go +34 -34
  178. package/native/core/programmers/helpers/union_predicator_skips_atomic_like_native_fields_test.go +65 -65
  179. package/native/core/programmers/helpers/union_predicator_skips_collection_bucket_fields_test.go +72 -72
  180. package/native/core/programmers/helpers/union_predicator_skips_shared_native_names_test.go +239 -239
  181. package/native/core/programmers/helpers/union_predicator_skips_shared_object_fields_test.go +43 -43
  182. package/native/core/programmers/helpers/union_predicator_skips_shared_template_fields_test.go +57 -57
  183. package/native/core/programmers/http/HttpAssertFormDataProgrammer.go +116 -116
  184. package/native/core/programmers/http/HttpAssertHeadersProgrammer.go +59 -59
  185. package/native/core/programmers/http/HttpAssertQueryProgrammer.go +71 -71
  186. package/native/core/programmers/http/HttpFormDataProgrammer.go +416 -416
  187. package/native/core/programmers/http/HttpHeadersProgrammer.go +428 -428
  188. package/native/core/programmers/http/HttpIsFormDataProgrammer.go +142 -142
  189. package/native/core/programmers/http/HttpIsHeadersProgrammer.go +53 -53
  190. package/native/core/programmers/http/HttpIsQueryProgrammer.go +65 -65
  191. package/native/core/programmers/http/HttpParameterProgrammer.go +190 -190
  192. package/native/core/programmers/http/HttpQueryProgrammer.go +484 -484
  193. package/native/core/programmers/http/HttpValidateFormDataProgrammer.go +110 -110
  194. package/native/core/programmers/http/HttpValidateHeadersProgrammer.go +56 -56
  195. package/native/core/programmers/http/HttpValidateQueryProgrammer.go +68 -68
  196. package/native/core/programmers/http/http_programmer_helper_coverage_test.go +120 -120
  197. package/native/core/programmers/http/index.go +1 -1
  198. package/native/core/programmers/index.go +1 -1
  199. package/native/core/programmers/internal/CheckerProgrammer.go +2064 -2064
  200. package/native/core/programmers/internal/FeatureProgrammer.go +1361 -1361
  201. package/native/core/programmers/internal/feature_programmer_visit_guard_test.go +70 -70
  202. package/native/core/programmers/internal/internal_utility_coverage_test.go +384 -384
  203. package/native/core/programmers/iterate/check_array_length.go +64 -64
  204. package/native/core/programmers/iterate/check_bigint.go +78 -78
  205. package/native/core/programmers/iterate/check_dynamic_key.go +271 -271
  206. package/native/core/programmers/iterate/check_dynamic_key_tag_rows_test.go +46 -46
  207. package/native/core/programmers/iterate/check_dynamic_properties.go +292 -292
  208. package/native/core/programmers/iterate/check_everything.go +33 -33
  209. package/native/core/programmers/iterate/check_exclude.go +88 -88
  210. package/native/core/programmers/iterate/check_native.go +38 -38
  211. package/native/core/programmers/iterate/check_number.go +180 -180
  212. package/native/core/programmers/iterate/check_object.go +113 -113
  213. package/native/core/programmers/iterate/check_object_strict_optional_undefined_test.go +74 -74
  214. package/native/core/programmers/iterate/check_object_type_tags.go +64 -64
  215. package/native/core/programmers/iterate/check_string.go +78 -78
  216. package/native/core/programmers/iterate/check_template.go +346 -346
  217. package/native/core/programmers/iterate/check_union_array_like.go +422 -422
  218. package/native/core/programmers/iterate/decode_union_object.go +157 -157
  219. package/native/core/programmers/iterate/feature_object_entries.go +188 -188
  220. package/native/core/programmers/iterate/iterate_check_coverage_test.go +178 -178
  221. package/native/core/programmers/iterate/iterate_utility_coverage_test.go +302 -302
  222. package/native/core/programmers/iterate/json_schema_alias.go +62 -62
  223. package/native/core/programmers/iterate/json_schema_array.go +66 -66
  224. package/native/core/programmers/iterate/json_schema_bigint.go +17 -17
  225. package/native/core/programmers/iterate/json_schema_boolean.go +17 -17
  226. package/native/core/programmers/iterate/json_schema_constant.go +53 -53
  227. package/native/core/programmers/iterate/json_schema_description.go +21 -21
  228. package/native/core/programmers/iterate/json_schema_discriminator.go +57 -57
  229. package/native/core/programmers/iterate/json_schema_escaped.go +68 -68
  230. package/native/core/programmers/iterate/json_schema_jsDocTags.go +48 -48
  231. package/native/core/programmers/iterate/json_schema_native.go +106 -106
  232. package/native/core/programmers/iterate/json_schema_number.go +17 -17
  233. package/native/core/programmers/iterate/json_schema_object.go +187 -184
  234. package/native/core/programmers/iterate/json_schema_plugin.go +47 -47
  235. package/native/core/programmers/iterate/json_schema_station.go +251 -251
  236. package/native/core/programmers/iterate/json_schema_string.go +17 -17
  237. package/native/core/programmers/iterate/json_schema_template.go +63 -63
  238. package/native/core/programmers/iterate/json_schema_title.go +25 -25
  239. package/native/core/programmers/iterate/json_schema_tuple.go +41 -41
  240. package/native/core/programmers/iterate/metadata_to_pattern.go +64 -64
  241. package/native/core/programmers/iterate/postfix_of_tuple.go +12 -12
  242. package/native/core/programmers/iterate/prune_object_properties.go +105 -105
  243. package/native/core/programmers/iterate/stringify_dynamic_properties.go +219 -219
  244. package/native/core/programmers/iterate/stringify_native.go +14 -14
  245. package/native/core/programmers/iterate/stringify_regular_properties.go +112 -112
  246. package/native/core/programmers/iterate/template_interpolation_tags_test.go +495 -495
  247. package/native/core/programmers/iterate/template_runtime_pattern.go +262 -262
  248. package/native/core/programmers/iterate/template_to_pattern.go +29 -29
  249. package/native/core/programmers/iterate/wrap_metadata_rest_tuple.go +23 -23
  250. package/native/core/programmers/json/JsonApplicationProgrammer.go +380 -380
  251. package/native/core/programmers/json/JsonAssertParseProgrammer.go +115 -115
  252. package/native/core/programmers/json/JsonAssertStringifyProgrammer.go +108 -108
  253. package/native/core/programmers/json/JsonIsParseProgrammer.go +162 -162
  254. package/native/core/programmers/json/JsonIsStringifyProgrammer.go +113 -113
  255. package/native/core/programmers/json/JsonSchemaProgrammer.go +94 -94
  256. package/native/core/programmers/json/JsonSchemasProgrammer.go +142 -142
  257. package/native/core/programmers/json/JsonStringifyProgrammer.go +1528 -1508
  258. package/native/core/programmers/json/JsonValidateParseProgrammer.go +105 -105
  259. package/native/core/programmers/json/JsonValidateStringifyProgrammer.go +126 -126
  260. package/native/core/programmers/json/index.go +1 -1
  261. package/native/core/programmers/json/json_schema_programmer_coverage_test.go +198 -198
  262. package/native/core/programmers/json/json_schemas_programmer_dedupes_bigint_diagnostics_test.go +37 -37
  263. package/native/core/programmers/json/json_schemas_programmer_rejects_bigint_native_test.go +29 -29
  264. package/native/core/programmers/json/json_stringify_programmer_coverage_test.go +422 -422
  265. package/native/core/programmers/llm/LlmApplicationProgrammer.go +526 -526
  266. package/native/core/programmers/llm/LlmCoerceProgrammer.go +109 -109
  267. package/native/core/programmers/llm/LlmControllerProgrammer.go +51 -51
  268. package/native/core/programmers/llm/LlmMetadataFactory.go +89 -89
  269. package/native/core/programmers/llm/LlmParametersProgrammer.go +141 -141
  270. package/native/core/programmers/llm/LlmParseProgrammer.go +121 -121
  271. package/native/core/programmers/llm/LlmSchemaProgrammer.go +902 -846
  272. package/native/core/programmers/llm/LlmStructuredOutputProgrammer.go +147 -147
  273. package/native/core/programmers/llm/index.go +1 -1
  274. package/native/core/programmers/llm/llm_application_programmer_coverage_test.go +166 -166
  275. package/native/core/programmers/llm/llm_schema_programmer_coverage_test.go +282 -282
  276. package/native/core/programmers/llm/llm_schema_programmer_dedupes_bigint_diagnostics_test.go +38 -38
  277. package/native/core/programmers/llm/llm_schema_programmer_rejects_bigint_native_test.go +30 -30
  278. package/native/core/programmers/llm/llm_schema_programmer_rejects_exclude_tag_in_strict_test.go +52 -52
  279. package/native/core/programmers/notations/NotationAssertGeneralProgrammer.go +107 -107
  280. package/native/core/programmers/notations/NotationGeneralProgrammer.go +1441 -1441
  281. package/native/core/programmers/notations/NotationIsGeneralProgrammer.go +112 -112
  282. package/native/core/programmers/notations/NotationValidateGeneralProgrammer.go +131 -131
  283. package/native/core/programmers/notations/index.go +1 -1
  284. package/native/core/programmers/notations/notation_general_helpers_test.go +395 -395
  285. package/native/core/programmers/notations/notation_general_programmer_snake_prefix_test.go +44 -44
  286. package/native/core/programmers/plain/PlainAssertClassifyProgrammer.go +111 -111
  287. package/native/core/programmers/plain/PlainAssertCloneProgrammer.go +102 -102
  288. package/native/core/programmers/plain/PlainAssertPruneProgrammer.go +117 -117
  289. package/native/core/programmers/plain/PlainClassifyProgrammer.go +2205 -2205
  290. package/native/core/programmers/plain/PlainCloneProgrammer.go +1254 -1254
  291. package/native/core/programmers/plain/PlainIsCloneProgrammer.go +117 -117
  292. package/native/core/programmers/plain/PlainIsPruneProgrammer.go +106 -106
  293. package/native/core/programmers/plain/PlainPruneProgrammer.go +837 -837
  294. package/native/core/programmers/plain/PlainValidateClassifyProgrammer.go +127 -127
  295. package/native/core/programmers/plain/PlainValidateCloneProgrammer.go +123 -123
  296. package/native/core/programmers/plain/PlainValidatePruneProgrammer.go +114 -114
  297. package/native/core/programmers/plain/index.go +1 -1
  298. package/native/core/programmers/plain/plain_programmer_helper_coverage_test.go +284 -284
  299. package/native/core/programmers/plain/plain_prune_programmer_branch_matrix_test.go +145 -145
  300. package/native/core/programmers/programmer_direct_helper_coverage_test.go +70 -70
  301. package/native/core/programmers/protobuf/ProtobufAssertDecodeProgrammer.go +125 -125
  302. package/native/core/programmers/protobuf/ProtobufAssertEncodeProgrammer.go +143 -143
  303. package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +861 -861
  304. package/native/core/programmers/protobuf/ProtobufEncodeProgrammer.go +1269 -1269
  305. package/native/core/programmers/protobuf/ProtobufIsDecodeProgrammer.go +122 -122
  306. package/native/core/programmers/protobuf/ProtobufIsEncodeProgrammer.go +115 -115
  307. package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +269 -269
  308. package/native/core/programmers/protobuf/ProtobufValidateDecodeProgrammer.go +111 -111
  309. package/native/core/programmers/protobuf/ProtobufValidateEncodeProgrammer.go +145 -145
  310. package/native/core/programmers/protobuf/index.go +1 -1
  311. package/native/core/programmers/protobuf/protobuf_programmer_helper_coverage_test.go +454 -454
  312. package/native/core/programmers/random_programmer_helper_coverage_test.go +367 -367
  313. package/native/core/programmers/random_programmer_min_items_tag_test.go +44 -44
  314. package/native/core/programmers/reflect/ReflectLiteralsProgrammer.go +125 -125
  315. package/native/core/schemas/index.go +1 -1
  316. package/native/core/schemas/metadata/IMetadataDictionary.go +8 -8
  317. package/native/core/schemas/metadata/IMetadataTypeTagSequence.go +53 -53
  318. package/native/core/schemas/metadata/MetadataAlias.go +36 -36
  319. package/native/core/schemas/metadata/MetadataAliasType.go +64 -64
  320. package/native/core/schemas/metadata/MetadataApplication.go +41 -41
  321. package/native/core/schemas/metadata/MetadataArray.go +36 -36
  322. package/native/core/schemas/metadata/MetadataArrayType.go +59 -59
  323. package/native/core/schemas/metadata/MetadataAtomic.go +69 -69
  324. package/native/core/schemas/metadata/MetadataCollection.go +698 -698
  325. package/native/core/schemas/metadata/MetadataComponents.go +122 -122
  326. package/native/core/schemas/metadata/MetadataConstant.go +47 -47
  327. package/native/core/schemas/metadata/MetadataConstantValue.go +97 -97
  328. package/native/core/schemas/metadata/MetadataEscaped.go +40 -40
  329. package/native/core/schemas/metadata/MetadataFunction.go +46 -46
  330. package/native/core/schemas/metadata/MetadataMap.go +45 -45
  331. package/native/core/schemas/metadata/MetadataNative.go +72 -72
  332. package/native/core/schemas/metadata/MetadataObject.go +36 -36
  333. package/native/core/schemas/metadata/MetadataObjectType.go +223 -223
  334. package/native/core/schemas/metadata/MetadataParameter.go +46 -46
  335. package/native/core/schemas/metadata/MetadataProperty.go +50 -50
  336. package/native/core/schemas/metadata/MetadataSchema.go +1485 -1485
  337. package/native/core/schemas/metadata/MetadataSet.go +41 -41
  338. package/native/core/schemas/metadata/MetadataTemplate.go +70 -70
  339. package/native/core/schemas/metadata/MetadataTuple.go +20 -20
  340. package/native/core/schemas/metadata/MetadataTupleType.go +69 -69
  341. package/native/core/schemas/metadata/index.go +1 -1
  342. package/native/core/schemas/metadata/metadata_object_type_required_literal_property_test.go +51 -51
  343. package/native/core/schemas/metadata/metadata_schema_covers_tag_matrix_test.go +125 -125
  344. package/native/core/schemas/metadata/metadata_schema_sole_literal_caches_pointer_test.go +38 -38
  345. package/native/core/schemas/metadata/schema_sequence_and_json_coverage_test.go +427 -427
  346. package/native/core/schemas/protobuf/IProtobufProperty.go +6 -6
  347. package/native/core/schemas/protobuf/IProtobufPropertyType.go +55 -55
  348. package/native/core/schemas/protobuf/IProtobufSchema.go +54 -54
  349. package/native/core/schemas/protobuf/index.go +1 -1
  350. package/native/core/schemas/protobuf/protobuf_marker_coverage_test.go +58 -58
  351. package/native/core/typings/Writable.go +5 -5
  352. package/native/core/utils/PatternUtil.go +57 -57
  353. package/native/core/utils/ProtobufNameEncoder.go +47 -47
  354. package/native/go.mod +31 -31
  355. package/native/go.sum +22 -22
  356. package/native/go.work +22 -22
  357. package/native/transform/CallExpressionTransformer.go +719 -719
  358. package/native/transform/FileTransformer.go +221 -221
  359. package/native/transform/ITransformProps.go +5 -5
  360. package/native/transform/ImportTransformer.go +285 -285
  361. package/native/transform/NodeTransformer.go +25 -25
  362. package/native/transform/TransformerError.go +11 -11
  363. package/native/transform/TypiaGenerator.go +171 -171
  364. package/native/transform/call_expression_transformer_registry_coverage_test.go +53 -53
  365. package/native/transform/call_expression_transformer_target_test.go +46 -46
  366. package/native/transform/features/AssertTransformer.go +39 -39
  367. package/native/transform/features/CreateAssertTransformer.go +39 -39
  368. package/native/transform/features/CreateIsTransformer.go +35 -35
  369. package/native/transform/features/CreateRandomTransformer.go +47 -47
  370. package/native/transform/features/CreateShallowTransformer.go +33 -33
  371. package/native/transform/features/CreateValidateTransformer.go +35 -35
  372. package/native/transform/features/IsTransformer.go +35 -35
  373. package/native/transform/features/RandomTransformer.go +54 -54
  374. package/native/transform/features/ShallowTransformer.go +65 -65
  375. package/native/transform/features/ValidateTransformer.go +35 -35
  376. package/native/transform/features/compare/CompareCoverTransformer.go +14 -14
  377. package/native/transform/features/compare/CompareCreateCoverTransformer.go +14 -14
  378. package/native/transform/features/compare/CompareCreateEqualTransformer.go +14 -14
  379. package/native/transform/features/compare/CompareCreateLessTransformer.go +14 -14
  380. package/native/transform/features/compare/CompareEqualTransformer.go +73 -73
  381. package/native/transform/features/compare/CompareLessTransformer.go +71 -71
  382. package/native/transform/features/feature_transformer_entry_coverage_test.go +59 -59
  383. package/native/transform/features/functional/FunctionalGenericTransformer.go +70 -70
  384. package/native/transform/features/http/CreateHttpAssertFormDataTransformer.go +22 -22
  385. package/native/transform/features/http/CreateHttpAssertHeadersTransformer.go +22 -22
  386. package/native/transform/features/http/CreateHttpAssertQueryTransformer.go +28 -28
  387. package/native/transform/features/http/CreateHttpFormDataTransformer.go +22 -22
  388. package/native/transform/features/http/CreateHttpHeadersTransformer.go +22 -22
  389. package/native/transform/features/http/CreateHttpIsFormDataTransformer.go +22 -22
  390. package/native/transform/features/http/CreateHttpIsHeadersTransformer.go +22 -22
  391. package/native/transform/features/http/CreateHttpIsQueryTransformer.go +28 -28
  392. package/native/transform/features/http/CreateHttpParameterTransformer.go +22 -22
  393. package/native/transform/features/http/CreateHttpQueryTransformer.go +28 -28
  394. package/native/transform/features/http/CreateHttpValidateFormDataTransformer.go +22 -22
  395. package/native/transform/features/http/CreateHttpValidateHeadersTransformer.go +22 -22
  396. package/native/transform/features/http/CreateHttpValidateQueryTransformer.go +28 -28
  397. package/native/transform/features/http/HttpAssertFormDataTransformer.go +22 -22
  398. package/native/transform/features/http/HttpAssertHeadersTransformer.go +22 -22
  399. package/native/transform/features/http/HttpAssertQueryTransformer.go +28 -28
  400. package/native/transform/features/http/HttpFormDataTransformer.go +22 -22
  401. package/native/transform/features/http/HttpHeadersTransformer.go +22 -22
  402. package/native/transform/features/http/HttpIsFormDataTransformer.go +22 -22
  403. package/native/transform/features/http/HttpIsHeadersTransformer.go +22 -22
  404. package/native/transform/features/http/HttpIsQueryTransformer.go +28 -28
  405. package/native/transform/features/http/HttpParameterTransformer.go +22 -22
  406. package/native/transform/features/http/HttpQueryTransformer.go +28 -28
  407. package/native/transform/features/http/HttpValidateFormDataTransformer.go +22 -22
  408. package/native/transform/features/http/HttpValidateHeadersTransformer.go +22 -22
  409. package/native/transform/features/http/HttpValidateQueryTransformer.go +28 -28
  410. package/native/transform/features/http/http_transformer_entry_coverage_test.go +65 -65
  411. package/native/transform/features/json/JsonApplicationTransformer.go +75 -75
  412. package/native/transform/features/json/JsonAssertParseTransformer.go +22 -22
  413. package/native/transform/features/json/JsonAssertStringifyTransformer.go +22 -22
  414. package/native/transform/features/json/JsonCreateAssertParseTransformer.go +22 -22
  415. package/native/transform/features/json/JsonCreateAssertStringifyTransformer.go +22 -22
  416. package/native/transform/features/json/JsonCreateIsParseTransformer.go +22 -22
  417. package/native/transform/features/json/JsonCreateIsStringifyTransformer.go +22 -22
  418. package/native/transform/features/json/JsonCreateStringifyTransformer.go +22 -22
  419. package/native/transform/features/json/JsonCreateValidateParseTransformer.go +22 -22
  420. package/native/transform/features/json/JsonCreateValidateStringifyProgrammer.go +22 -22
  421. package/native/transform/features/json/JsonIsParseTransformer.go +22 -22
  422. package/native/transform/features/json/JsonIsStringifyTransformer.go +22 -22
  423. package/native/transform/features/json/JsonSchemaTransformer.go +175 -175
  424. package/native/transform/features/json/JsonSchemasTransformer.go +109 -109
  425. package/native/transform/features/json/JsonStringifyTransformer.go +22 -22
  426. package/native/transform/features/json/JsonValidateParseTransformer.go +22 -22
  427. package/native/transform/features/json/JsonValidateStringifyTransformer.go +22 -22
  428. package/native/transform/features/json/json_transformer_entry_coverage_test.go +56 -56
  429. package/native/transform/features/llm/LlmApplicationTransformer.go +54 -54
  430. package/native/transform/features/llm/LlmCoerceTransformer.go +63 -63
  431. package/native/transform/features/llm/LlmControllerTransformer.go +59 -59
  432. package/native/transform/features/llm/LlmCreateCoerceTransformer.go +54 -54
  433. package/native/transform/features/llm/LlmCreateParseTransformer.go +54 -54
  434. package/native/transform/features/llm/LlmParametersTransformer.go +49 -49
  435. package/native/transform/features/llm/LlmParseTransformer.go +63 -63
  436. package/native/transform/features/llm/LlmSchemaTransformer.go +167 -167
  437. package/native/transform/features/llm/LlmStructuredOutputTransformer.go +55 -55
  438. package/native/transform/features/llm/llm_transformer_entry_coverage_test.go +48 -48
  439. package/native/transform/features/notations/NotationAssertGeneralTransformer.go +27 -27
  440. package/native/transform/features/notations/NotationCreateAssertGeneralTransformer.go +27 -27
  441. package/native/transform/features/notations/NotationCreateGeneralTransformer.go +27 -27
  442. package/native/transform/features/notations/NotationCreateIsGeneralTransformer.go +27 -27
  443. package/native/transform/features/notations/NotationCreateValidateGeneralTransformer.go +27 -27
  444. package/native/transform/features/notations/NotationGeneralTransformer.go +36 -36
  445. package/native/transform/features/notations/NotationIsGeneralTransformer.go +27 -27
  446. package/native/transform/features/notations/NotationValidateGeneralTransformer.go +27 -27
  447. package/native/transform/features/notations/notation_transformer_entry_coverage_test.go +58 -58
  448. package/native/transform/features/plain/PlainAssertClassifyTransformer.go +22 -22
  449. package/native/transform/features/plain/PlainAssertCloneTransformer.go +22 -22
  450. package/native/transform/features/plain/PlainAssertPruneTransformer.go +22 -22
  451. package/native/transform/features/plain/PlainClassifyTransformer.go +22 -22
  452. package/native/transform/features/plain/PlainCloneTransformer.go +22 -22
  453. package/native/transform/features/plain/PlainCreateAssertClassifyTransformer.go +22 -22
  454. package/native/transform/features/plain/PlainCreateAssertCloneTransformer.go +22 -22
  455. package/native/transform/features/plain/PlainCreateAssertPruneTransformer.go +22 -22
  456. package/native/transform/features/plain/PlainCreateClassifyTransformer.go +22 -22
  457. package/native/transform/features/plain/PlainCreateCloneTransformer.go +22 -22
  458. package/native/transform/features/plain/PlainCreateIsCloneTransformer.go +22 -22
  459. package/native/transform/features/plain/PlainCreateIsPruneTransformer.go +22 -22
  460. package/native/transform/features/plain/PlainCreatePruneTransformer.go +22 -22
  461. package/native/transform/features/plain/PlainCreateValidateClassifyTransformer.go +22 -22
  462. package/native/transform/features/plain/PlainCreateValidateCloneTransformer.go +22 -22
  463. package/native/transform/features/plain/PlainCreateValidatePruneTransformer.go +22 -22
  464. package/native/transform/features/plain/PlainIsCloneTransformer.go +22 -22
  465. package/native/transform/features/plain/PlainIsPruneTransformer.go +22 -22
  466. package/native/transform/features/plain/PlainPruneTransformer.go +22 -22
  467. package/native/transform/features/plain/PlainValidateClassifyTransformer.go +22 -22
  468. package/native/transform/features/plain/PlainValidateCloneTransformer.go +22 -22
  469. package/native/transform/features/plain/PlainValidatePruneTransformer.go +22 -22
  470. package/native/transform/features/plain/plain_transformer_entry_coverage_test.go +61 -61
  471. package/native/transform/features/protobuf/ProtobufAssertDecodeTransformer.go +22 -22
  472. package/native/transform/features/protobuf/ProtobufAssertEncodeTransformer.go +22 -22
  473. package/native/transform/features/protobuf/ProtobufCreateAssertDecodeTransformer.go +22 -22
  474. package/native/transform/features/protobuf/ProtobufCreateAssertEncodeTransformer.go +22 -22
  475. package/native/transform/features/protobuf/ProtobufCreateDecodeTransformer.go +22 -22
  476. package/native/transform/features/protobuf/ProtobufCreateEncodeTransformer.go +22 -22
  477. package/native/transform/features/protobuf/ProtobufCreateIsDecodeTransformer.go +22 -22
  478. package/native/transform/features/protobuf/ProtobufCreateIsEncodeTransformer.go +22 -22
  479. package/native/transform/features/protobuf/ProtobufCreateValidateDecodeTransformer.go +22 -22
  480. package/native/transform/features/protobuf/ProtobufCreateValidateEncodeTransformer.go +22 -22
  481. package/native/transform/features/protobuf/ProtobufDecodeTransformer.go +22 -22
  482. package/native/transform/features/protobuf/ProtobufEncodeTransformer.go +22 -22
  483. package/native/transform/features/protobuf/ProtobufIsDecodeTransformer.go +22 -22
  484. package/native/transform/features/protobuf/ProtobufIsEncodeTransformer.go +22 -22
  485. package/native/transform/features/protobuf/ProtobufMessageTransformer.go +31 -31
  486. package/native/transform/features/protobuf/ProtobufValidateDecodeTransformer.go +22 -22
  487. package/native/transform/features/protobuf/ProtobufValidateEncodeTransformer.go +22 -22
  488. package/native/transform/features/protobuf/protobuf_transformer_entry_coverage_test.go +56 -56
  489. package/native/transform/features/reflect/ReflectLiteralsTransformer.go +32 -32
  490. package/native/transform/features/reflect/ReflectMetadataTransformer.go +73 -73
  491. package/native/transform/features/reflect/ReflectNameTransformer.go +100 -100
  492. package/native/transform/features/reflect/ReflectSchemaTransformer.go +153 -153
  493. package/native/transform/features/reflect/ReflectSchemasTransformer.go +68 -68
  494. package/native/transform/features/reflect/reflect_metadata_transformer_edge_branches_test.go +55 -55
  495. package/native/transform/features/reflect/reflect_transformer_entry_coverage_test.go +47 -47
  496. package/native/transform/file_transformer_coverage_test.go +94 -94
  497. package/native/transform/import_transformer_coverage_test.go +153 -153
  498. package/native/transform/index.go +1 -1
  499. package/native/transform/internal/GenericTransformer.go +236 -236
  500. package/native/transform/transform.go +57 -57
  501. package/native/transform/typia_generator_helpers_coverage_test.go +166 -166
  502. package/package.json +5 -5
  503. package/src/internal/_ProtobufReader.ts +187 -187
  504. package/src/internal/_randomArray.ts +34 -34
  505. package/src/internal/_randomString.ts +30 -30
  506. package/src/transform.ts +21 -21
@@ -1,173 +1,173 @@
1
- package adapter
2
-
3
- import (
4
- "path/filepath"
5
- "strings"
6
-
7
- shimast "github.com/microsoft/typescript-go/shim/ast"
8
- shimchecker "github.com/microsoft/typescript-go/shim/checker"
9
- )
10
-
11
- type CallSite struct {
12
- File *shimast.SourceFile
13
- FilePath string
14
- Module string
15
- Method string
16
- Call *shimast.CallExpression
17
- RootName string
18
- Namespaces []string
19
- }
20
-
21
- func CollectCallSites(files []*shimast.SourceFile, checker *shimchecker.Checker) []CallSite {
22
- sites := []CallSite{}
23
- for _, file := range files {
24
- if file == nil || file.IsDeclarationFile {
25
- continue
26
- }
27
- file.ForEachChild(func(node *shimast.Node) bool {
28
- visitCallSite(file, checker, node, &sites)
29
- return false
30
- })
31
- }
32
- return sites
33
- }
34
-
35
- func visitCallSite(file *shimast.SourceFile, checker *shimchecker.Checker, node *shimast.Node, sites *[]CallSite) {
36
- if node == nil {
37
- return
38
- }
39
- if node.Kind == shimast.KindCallExpression {
40
- if site, ok := tryCallSite(file, checker, node); ok {
41
- *sites = append(*sites, site)
42
- }
43
- }
44
- node.ForEachChild(func(child *shimast.Node) bool {
45
- visitCallSite(file, checker, child, sites)
46
- return false
47
- })
48
- }
49
-
50
- func tryCallSite(file *shimast.SourceFile, checker *shimchecker.Checker, node *shimast.Node) (CallSite, bool) {
51
- if checker == nil {
52
- return CallSite{}, false
53
- }
54
- if node.Kind != shimast.KindCallExpression {
55
- return CallSite{}, false
56
- }
57
- call := node.AsCallExpression()
58
- if call == nil {
59
- return CallSite{}, false
60
- }
61
- signature := checker.GetResolvedSignature(node)
62
- if signature == nil {
63
- return CallSite{}, false
64
- }
65
- declaration := signature.Declaration()
66
- if declaration == nil {
67
- return CallSite{}, false
68
- }
69
- sourceFile := shimast.GetSourceFileOfNode(declaration)
70
- if sourceFile == nil {
71
- return CallSite{}, false
72
- }
73
- module, ok := matchTypiaModule(sourceFile.FileName())
74
- if !ok {
75
- return CallSite{}, false
76
- }
77
- method := callSiteMethodName(checker, declaration, call)
78
- if method == "" {
79
- return CallSite{}, false
80
- }
81
- root, namespaces, ok := extractRootAndNamespaces(call, method)
82
- if !ok {
83
- return CallSite{}, false
84
- }
85
- return CallSite{
86
- File: file,
87
- FilePath: file.FileName(),
88
- Module: module,
89
- Method: method,
90
- Call: call,
91
- RootName: root,
92
- Namespaces: namespaces,
93
- }, true
94
- }
95
-
96
- func matchTypiaModule(location string) (string, bool) {
97
- location = filepath.ToSlash(location)
98
- for _, suffix := range []string{".d.ts", ".ts"} {
99
- for _, middle := range []string{"typia/lib/", "typia/src/", "packages/typia/src/"} {
100
- index := strings.LastIndex(location, middle)
101
- if index < 0 {
102
- continue
103
- }
104
- name := location[index+len(middle):]
105
- if !strings.HasSuffix(name, suffix) {
106
- continue
107
- }
108
- name = strings.TrimSuffix(name, suffix)
109
- if strings.Contains(name, "/") {
110
- continue
111
- }
112
- return name, true
113
- }
114
- }
115
- return "", false
116
- }
117
-
118
- func callSiteMethodName(checker *shimchecker.Checker, declaration *shimast.Node, call *shimast.CallExpression) string {
119
- if name := declaration.Name(); name != nil {
120
- if checker != nil {
121
- if symbol := checker.GetSymbolAtLocation(name); symbol != nil && symbol.Name != "" {
122
- return symbol.Name
123
- }
124
- }
125
- if name.Kind == shimast.KindIdentifier {
126
- if id := name.AsIdentifier(); id != nil {
127
- return id.Text
128
- }
129
- }
130
- }
131
- if call.Expression != nil && call.Expression.Kind == shimast.KindPropertyAccessExpression {
132
- if property := call.Expression.AsPropertyAccessExpression(); property != nil {
133
- if name := property.Name(); name != nil && name.Kind == shimast.KindIdentifier {
134
- if id := name.AsIdentifier(); id != nil {
135
- return id.Text
136
- }
137
- }
138
- }
139
- }
140
- return ""
141
- }
142
-
143
- func extractRootAndNamespaces(call *shimast.CallExpression, method string) (string, []string, bool) {
144
- expression := call.Expression
145
- segments := []string{}
146
- for expression != nil && expression.Kind == shimast.KindPropertyAccessExpression {
147
- property := expression.AsPropertyAccessExpression()
148
- if property == nil {
149
- break
150
- }
151
- name := property.Name()
152
- if name == nil || name.Kind != shimast.KindIdentifier {
153
- return "", nil, false
154
- }
155
- id := name.AsIdentifier()
156
- if id == nil || id.Text == "" {
157
- return "", nil, false
158
- }
159
- segments = append([]string{id.Text}, segments...)
160
- expression = property.Expression
161
- }
162
- if expression == nil || expression.Kind != shimast.KindIdentifier {
163
- return "", nil, false
164
- }
165
- root := expression.AsIdentifier()
166
- if root == nil || root.Text == "" || len(segments) == 0 {
167
- return "", nil, false
168
- }
169
- if segments[len(segments)-1] != method {
170
- return "", nil, false
171
- }
172
- return root.Text, segments[:len(segments)-1], true
173
- }
1
+ package adapter
2
+
3
+ import (
4
+ "path/filepath"
5
+ "strings"
6
+
7
+ shimast "github.com/microsoft/typescript-go/shim/ast"
8
+ shimchecker "github.com/microsoft/typescript-go/shim/checker"
9
+ )
10
+
11
+ type CallSite struct {
12
+ File *shimast.SourceFile
13
+ FilePath string
14
+ Module string
15
+ Method string
16
+ Call *shimast.CallExpression
17
+ RootName string
18
+ Namespaces []string
19
+ }
20
+
21
+ func CollectCallSites(files []*shimast.SourceFile, checker *shimchecker.Checker) []CallSite {
22
+ sites := []CallSite{}
23
+ for _, file := range files {
24
+ if file == nil || file.IsDeclarationFile {
25
+ continue
26
+ }
27
+ file.ForEachChild(func(node *shimast.Node) bool {
28
+ visitCallSite(file, checker, node, &sites)
29
+ return false
30
+ })
31
+ }
32
+ return sites
33
+ }
34
+
35
+ func visitCallSite(file *shimast.SourceFile, checker *shimchecker.Checker, node *shimast.Node, sites *[]CallSite) {
36
+ if node == nil {
37
+ return
38
+ }
39
+ if node.Kind == shimast.KindCallExpression {
40
+ if site, ok := tryCallSite(file, checker, node); ok {
41
+ *sites = append(*sites, site)
42
+ }
43
+ }
44
+ node.ForEachChild(func(child *shimast.Node) bool {
45
+ visitCallSite(file, checker, child, sites)
46
+ return false
47
+ })
48
+ }
49
+
50
+ func tryCallSite(file *shimast.SourceFile, checker *shimchecker.Checker, node *shimast.Node) (CallSite, bool) {
51
+ if checker == nil {
52
+ return CallSite{}, false
53
+ }
54
+ if node.Kind != shimast.KindCallExpression {
55
+ return CallSite{}, false
56
+ }
57
+ call := node.AsCallExpression()
58
+ if call == nil {
59
+ return CallSite{}, false
60
+ }
61
+ signature := checker.GetResolvedSignature(node)
62
+ if signature == nil {
63
+ return CallSite{}, false
64
+ }
65
+ declaration := signature.Declaration()
66
+ if declaration == nil {
67
+ return CallSite{}, false
68
+ }
69
+ sourceFile := shimast.GetSourceFileOfNode(declaration)
70
+ if sourceFile == nil {
71
+ return CallSite{}, false
72
+ }
73
+ module, ok := matchTypiaModule(sourceFile.FileName())
74
+ if !ok {
75
+ return CallSite{}, false
76
+ }
77
+ method := callSiteMethodName(checker, declaration, call)
78
+ if method == "" {
79
+ return CallSite{}, false
80
+ }
81
+ root, namespaces, ok := extractRootAndNamespaces(call, method)
82
+ if !ok {
83
+ return CallSite{}, false
84
+ }
85
+ return CallSite{
86
+ File: file,
87
+ FilePath: file.FileName(),
88
+ Module: module,
89
+ Method: method,
90
+ Call: call,
91
+ RootName: root,
92
+ Namespaces: namespaces,
93
+ }, true
94
+ }
95
+
96
+ func matchTypiaModule(location string) (string, bool) {
97
+ location = filepath.ToSlash(location)
98
+ for _, suffix := range []string{".d.ts", ".ts"} {
99
+ for _, middle := range []string{"typia/lib/", "typia/src/", "packages/typia/src/"} {
100
+ index := strings.LastIndex(location, middle)
101
+ if index < 0 {
102
+ continue
103
+ }
104
+ name := location[index+len(middle):]
105
+ if !strings.HasSuffix(name, suffix) {
106
+ continue
107
+ }
108
+ name = strings.TrimSuffix(name, suffix)
109
+ if strings.Contains(name, "/") {
110
+ continue
111
+ }
112
+ return name, true
113
+ }
114
+ }
115
+ return "", false
116
+ }
117
+
118
+ func callSiteMethodName(checker *shimchecker.Checker, declaration *shimast.Node, call *shimast.CallExpression) string {
119
+ if name := declaration.Name(); name != nil {
120
+ if checker != nil {
121
+ if symbol := checker.GetSymbolAtLocation(name); symbol != nil && symbol.Name != "" {
122
+ return symbol.Name
123
+ }
124
+ }
125
+ if name.Kind == shimast.KindIdentifier {
126
+ if id := name.AsIdentifier(); id != nil {
127
+ return id.Text
128
+ }
129
+ }
130
+ }
131
+ if call.Expression != nil && call.Expression.Kind == shimast.KindPropertyAccessExpression {
132
+ if property := call.Expression.AsPropertyAccessExpression(); property != nil {
133
+ if name := property.Name(); name != nil && name.Kind == shimast.KindIdentifier {
134
+ if id := name.AsIdentifier(); id != nil {
135
+ return id.Text
136
+ }
137
+ }
138
+ }
139
+ }
140
+ return ""
141
+ }
142
+
143
+ func extractRootAndNamespaces(call *shimast.CallExpression, method string) (string, []string, bool) {
144
+ expression := call.Expression
145
+ segments := []string{}
146
+ for expression != nil && expression.Kind == shimast.KindPropertyAccessExpression {
147
+ property := expression.AsPropertyAccessExpression()
148
+ if property == nil {
149
+ break
150
+ }
151
+ name := property.Name()
152
+ if name == nil || name.Kind != shimast.KindIdentifier {
153
+ return "", nil, false
154
+ }
155
+ id := name.AsIdentifier()
156
+ if id == nil || id.Text == "" {
157
+ return "", nil, false
158
+ }
159
+ segments = append([]string{id.Text}, segments...)
160
+ expression = property.Expression
161
+ }
162
+ if expression == nil || expression.Kind != shimast.KindIdentifier {
163
+ return "", nil, false
164
+ }
165
+ root := expression.AsIdentifier()
166
+ if root == nil || root.Text == "" || len(segments) == 0 {
167
+ return "", nil, false
168
+ }
169
+ if segments[len(segments)-1] != method {
170
+ return "", nil, false
171
+ }
172
+ return root.Text, segments[:len(segments)-1], true
173
+ }
@@ -1,129 +1,129 @@
1
- //go:build typia_native_internal
2
- // +build typia_native_internal
3
-
4
- package adapter
5
-
6
- import (
7
- "path/filepath"
8
- "testing"
9
-
10
- shimast "github.com/microsoft/typescript-go/shim/ast"
11
- shimchecker "github.com/microsoft/typescript-go/shim/checker"
12
- shimcore "github.com/microsoft/typescript-go/shim/core"
13
- shimparser "github.com/microsoft/typescript-go/shim/parser"
14
- )
15
-
16
- // TestVisitPropertyChainEdges verifies call-site property-chain parsing.
17
- //
18
- // Call-site discovery peels a TypeScript expression like
19
- // `typia.json.stringify()` into a root import name, namespace chain, and method.
20
- // Malformed or mismatched chains must be rejected without producing a site.
21
- //
22
- // 1. Build a nested property-access call expression.
23
- // 2. Extract the root name, namespace, and terminal method.
24
- // 3. Reject a method mismatch, a non-property call, and an empty member name.
25
- // 4. Verify nil nodes do not append call sites.
26
- func TestVisitPropertyChainEdges(t *testing.T) {
27
- factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
28
- namespace := factory.NewPropertyAccessExpression(
29
- factory.NewIdentifier("typia"),
30
- nil,
31
- factory.NewIdentifier("json"),
32
- shimast.NodeFlagsNone,
33
- )
34
- method := factory.NewPropertyAccessExpression(
35
- namespace,
36
- nil,
37
- factory.NewIdentifier("stringify"),
38
- shimast.NodeFlagsNone,
39
- )
40
- call := factory.NewCallExpression(method, nil, nil, factory.NewNodeList(nil), shimast.NodeFlagsNone).AsCallExpression()
41
-
42
- root, namespaces, ok := extractRootAndNamespaces(call, "stringify")
43
- if !ok || root != "typia" || len(namespaces) != 1 || namespaces[0] != "json" {
44
- t.Fatalf("unexpected property-chain extraction: root=%q namespaces=%#v ok=%v", root, namespaces, ok)
45
- }
46
- if _, _, ok := extractRootAndNamespaces(call, "is"); ok {
47
- t.Fatal("method mismatch should reject the call chain")
48
- }
49
- statement := factory.NewExpressionStatement(factory.NewIdentifier("noop"))
50
- if method := callSiteMethodName(nil, statement, call); method != "stringify" {
51
- t.Fatalf("property-access method fallback mismatch: %q", method)
52
- }
53
- declaration := factory.NewFunctionDeclaration(
54
- nil,
55
- nil,
56
- factory.NewIdentifier("declared"),
57
- nil,
58
- nil,
59
- nil,
60
- nil,
61
- nil,
62
- )
63
- if method := callSiteMethodName(nil, declaration, call); method != "declared" {
64
- t.Fatalf("declaration-name fallback mismatch: %q", method)
65
- }
66
-
67
- plain := factory.NewCallExpression(
68
- factory.NewIdentifier("plain"),
69
- nil,
70
- nil,
71
- factory.NewNodeList(nil),
72
- shimast.NodeFlagsNone,
73
- ).AsCallExpression()
74
- if _, _, ok := extractRootAndNamespaces(plain, "plain"); ok {
75
- t.Fatal("plain calls without a property chain should be rejected")
76
- }
77
- literal := factory.NewCallExpression(
78
- factory.NewStringLiteral("call", shimast.TokenFlagsNone),
79
- nil,
80
- nil,
81
- factory.NewNodeList(nil),
82
- shimast.NodeFlagsNone,
83
- ).AsCallExpression()
84
- if _, _, ok := extractRootAndNamespaces(literal, "call"); ok {
85
- t.Fatal("non-identifier root expressions should be rejected")
86
- }
87
-
88
- emptyMember := factory.NewPropertyAccessExpression(
89
- factory.NewIdentifier("typia"),
90
- nil,
91
- factory.NewIdentifier(""),
92
- shimast.NodeFlagsNone,
93
- )
94
- emptyCall := factory.NewCallExpression(emptyMember, nil, nil, factory.NewNodeList(nil), shimast.NodeFlagsNone).AsCallExpression()
95
- if _, _, ok := extractRootAndNamespaces(emptyCall, ""); ok {
96
- t.Fatal("empty property name should be rejected")
97
- }
98
- stringMember := factory.NewPropertyAccessExpression(
99
- factory.NewIdentifier("typia"),
100
- nil,
101
- factory.NewStringLiteral("is", shimast.TokenFlagsNone),
102
- shimast.NodeFlagsNone,
103
- )
104
- stringMemberCall := factory.NewCallExpression(stringMember, nil, nil, factory.NewNodeList(nil), shimast.NodeFlagsNone).AsCallExpression()
105
- if _, _, ok := extractRootAndNamespaces(stringMemberCall, "is"); ok {
106
- t.Fatal("non-identifier property names should be rejected")
107
- }
108
- sites := []CallSite{}
109
- visitCallSite(nil, nil, nil, &sites)
110
- if len(sites) != 0 {
111
- t.Fatalf("nil node should not append call sites: %#v", sites)
112
- }
113
- file := shimparser.ParseSourceFile(
114
- shimast.SourceFileParseOptions{FileName: filepath.ToSlash(filepath.Join(t.TempDir(), "visit.ts"))},
115
- `typia.is(input);`,
116
- shimcore.ScriptKindTS,
117
- )
118
- declFile := *file
119
- declFile.IsDeclarationFile = true
120
- if sites := CollectCallSites([]*shimast.SourceFile{nil, &declFile}, nil); len(sites) != 0 {
121
- t.Fatalf("nil and declaration files should not produce call sites: %#v", sites)
122
- }
123
- if _, ok := tryCallSite(file, nil, call.AsNode()); ok {
124
- t.Fatal("nil checker should reject call-site probing")
125
- }
126
- if _, ok := tryCallSite(file, &shimchecker.Checker{}, statement); ok {
127
- t.Fatal("non-call nodes should reject call-site probing")
128
- }
129
- }
1
+ //go:build typia_native_internal
2
+ // +build typia_native_internal
3
+
4
+ package adapter
5
+
6
+ import (
7
+ "path/filepath"
8
+ "testing"
9
+
10
+ shimast "github.com/microsoft/typescript-go/shim/ast"
11
+ shimchecker "github.com/microsoft/typescript-go/shim/checker"
12
+ shimcore "github.com/microsoft/typescript-go/shim/core"
13
+ shimparser "github.com/microsoft/typescript-go/shim/parser"
14
+ )
15
+
16
+ // TestVisitPropertyChainEdges verifies call-site property-chain parsing.
17
+ //
18
+ // Call-site discovery peels a TypeScript expression like
19
+ // `typia.json.stringify()` into a root import name, namespace chain, and method.
20
+ // Malformed or mismatched chains must be rejected without producing a site.
21
+ //
22
+ // 1. Build a nested property-access call expression.
23
+ // 2. Extract the root name, namespace, and terminal method.
24
+ // 3. Reject a method mismatch, a non-property call, and an empty member name.
25
+ // 4. Verify nil nodes do not append call sites.
26
+ func TestVisitPropertyChainEdges(t *testing.T) {
27
+ factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
28
+ namespace := factory.NewPropertyAccessExpression(
29
+ factory.NewIdentifier("typia"),
30
+ nil,
31
+ factory.NewIdentifier("json"),
32
+ shimast.NodeFlagsNone,
33
+ )
34
+ method := factory.NewPropertyAccessExpression(
35
+ namespace,
36
+ nil,
37
+ factory.NewIdentifier("stringify"),
38
+ shimast.NodeFlagsNone,
39
+ )
40
+ call := factory.NewCallExpression(method, nil, nil, factory.NewNodeList(nil), shimast.NodeFlagsNone).AsCallExpression()
41
+
42
+ root, namespaces, ok := extractRootAndNamespaces(call, "stringify")
43
+ if !ok || root != "typia" || len(namespaces) != 1 || namespaces[0] != "json" {
44
+ t.Fatalf("unexpected property-chain extraction: root=%q namespaces=%#v ok=%v", root, namespaces, ok)
45
+ }
46
+ if _, _, ok := extractRootAndNamespaces(call, "is"); ok {
47
+ t.Fatal("method mismatch should reject the call chain")
48
+ }
49
+ statement := factory.NewExpressionStatement(factory.NewIdentifier("noop"))
50
+ if method := callSiteMethodName(nil, statement, call); method != "stringify" {
51
+ t.Fatalf("property-access method fallback mismatch: %q", method)
52
+ }
53
+ declaration := factory.NewFunctionDeclaration(
54
+ nil,
55
+ nil,
56
+ factory.NewIdentifier("declared"),
57
+ nil,
58
+ nil,
59
+ nil,
60
+ nil,
61
+ nil,
62
+ )
63
+ if method := callSiteMethodName(nil, declaration, call); method != "declared" {
64
+ t.Fatalf("declaration-name fallback mismatch: %q", method)
65
+ }
66
+
67
+ plain := factory.NewCallExpression(
68
+ factory.NewIdentifier("plain"),
69
+ nil,
70
+ nil,
71
+ factory.NewNodeList(nil),
72
+ shimast.NodeFlagsNone,
73
+ ).AsCallExpression()
74
+ if _, _, ok := extractRootAndNamespaces(plain, "plain"); ok {
75
+ t.Fatal("plain calls without a property chain should be rejected")
76
+ }
77
+ literal := factory.NewCallExpression(
78
+ factory.NewStringLiteral("call", shimast.TokenFlagsNone),
79
+ nil,
80
+ nil,
81
+ factory.NewNodeList(nil),
82
+ shimast.NodeFlagsNone,
83
+ ).AsCallExpression()
84
+ if _, _, ok := extractRootAndNamespaces(literal, "call"); ok {
85
+ t.Fatal("non-identifier root expressions should be rejected")
86
+ }
87
+
88
+ emptyMember := factory.NewPropertyAccessExpression(
89
+ factory.NewIdentifier("typia"),
90
+ nil,
91
+ factory.NewIdentifier(""),
92
+ shimast.NodeFlagsNone,
93
+ )
94
+ emptyCall := factory.NewCallExpression(emptyMember, nil, nil, factory.NewNodeList(nil), shimast.NodeFlagsNone).AsCallExpression()
95
+ if _, _, ok := extractRootAndNamespaces(emptyCall, ""); ok {
96
+ t.Fatal("empty property name should be rejected")
97
+ }
98
+ stringMember := factory.NewPropertyAccessExpression(
99
+ factory.NewIdentifier("typia"),
100
+ nil,
101
+ factory.NewStringLiteral("is", shimast.TokenFlagsNone),
102
+ shimast.NodeFlagsNone,
103
+ )
104
+ stringMemberCall := factory.NewCallExpression(stringMember, nil, nil, factory.NewNodeList(nil), shimast.NodeFlagsNone).AsCallExpression()
105
+ if _, _, ok := extractRootAndNamespaces(stringMemberCall, "is"); ok {
106
+ t.Fatal("non-identifier property names should be rejected")
107
+ }
108
+ sites := []CallSite{}
109
+ visitCallSite(nil, nil, nil, &sites)
110
+ if len(sites) != 0 {
111
+ t.Fatalf("nil node should not append call sites: %#v", sites)
112
+ }
113
+ file := shimparser.ParseSourceFile(
114
+ shimast.SourceFileParseOptions{FileName: filepath.ToSlash(filepath.Join(t.TempDir(), "visit.ts"))},
115
+ `typia.is(input);`,
116
+ shimcore.ScriptKindTS,
117
+ )
118
+ declFile := *file
119
+ declFile.IsDeclarationFile = true
120
+ if sites := CollectCallSites([]*shimast.SourceFile{nil, &declFile}, nil); len(sites) != 0 {
121
+ t.Fatalf("nil and declaration files should not produce call sites: %#v", sites)
122
+ }
123
+ if _, ok := tryCallSite(file, nil, call.AsNode()); ok {
124
+ t.Fatal("nil checker should reject call-site probing")
125
+ }
126
+ if _, ok := tryCallSite(file, &shimchecker.Checker{}, statement); ok {
127
+ t.Fatal("non-call nodes should reject call-site probing")
128
+ }
129
+ }