typia 13.0.0-rc.1 → 13.0.0-rc.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 (506) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +171 -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 +132 -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 +4 -4
  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
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2022 Jeongho Nam
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Jeongho Nam
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,171 +1,171 @@
1
- # Typia
2
-
3
- ![Typia Logo](https://typia.io/logo.png)
4
-
5
- [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/samchon/typia/blob/master/LICENSE)
6
- [![NPM Version](https://img.shields.io/npm/v/typia.svg)](https://www.npmjs.com/package/typia)
7
- [![NPM Downloads](https://img.shields.io/npm/dm/typia.svg)](https://www.npmjs.com/package/typia)
8
- [![Build Status](https://github.com/samchon/typia/workflows/test/badge.svg)](https://github.com/samchon/typia/actions?query=workflow%3Atest)
9
- [![Guide Documents](https://img.shields.io/badge/Guide-Documents-forestgreen)](https://typia.io/docs/)
10
- [![Discord Badge](https://img.shields.io/badge/discord-samchon-d91965?style=flat&labelColor=5866f2&logo=discord&logoColor=white&link=https://discord.gg/E94XhzrUCZ)](https://discord.gg/E94XhzrUCZ)
11
-
12
- ```typescript
13
- // RUNTIME VALIDATORS
14
- export function is<T>(input: unknown): input is T; // returns boolean
15
- export function assert<T>(input: unknown): T; // throws TypeGuardError
16
- export function assertGuard<T>(input: unknown): asserts input is T;
17
- export function validate<T>(input: unknown): IValidation<T>; // detailed
18
-
19
- // JSON FUNCTIONS
20
- export namespace json {
21
- export function schema<T>(): IJsonSchemaUnit<T>; // JSON schema
22
- export function assertParse<T>(input: string): T; // type safe parser
23
- export function assertStringify<T>(input: T): string; // safe and faster
24
- }
25
-
26
- // AI FUNCTION CALLING HARNESS
27
- export namespace llm {
28
- // collection of function calling schemas + validators/parsers
29
- export function application<Class>(): ILlmApplication<Class>;
30
- export function structuredOutput<P>(): ILlmStructuredOutput;
31
- // lenient json parser + type coercion
32
- export function parse<T>(str: string): T;
33
- }
34
-
35
- // PROTOCOL BUFFER
36
- export namespace protobuf {
37
- export function message<T>(): string; // Protocol Buffer message
38
- export function assertDecode<T>(buffer: Uint8Array): T; // safe decoder
39
- export function assertEncode<T>(input: T): Uint8Array; // safe encoder
40
- }
41
-
42
- // RANDOM GENERATOR
43
- export function random<T>(g?: Partial<IRandomGenerator>): T;
44
- ```
45
-
46
- `typia` is a transformer library supporting below features:
47
-
48
- - Super-fast Runtime Validators
49
- - Enhanced JSON schema and serde functions
50
- - LLM function calling harness
51
- - Protocol Buffer encoder and decoder
52
- - Random data generator
53
-
54
- > [!NOTE]
55
- >
56
- > - **Only one line** required, with pure TypeScript type
57
- > - Runtime validator is **20,000x faster** than `class-validator`
58
- > - JSON serialization is **200x faster** than `class-transformer`
59
- > - LLM function calling harness turns **6.75% → 100%** accuracy
60
-
61
- <!--
62
- ## Setup
63
-
64
- Install `typia@next` with the [`ttsc`](https://github.com/samchon/ttsc) toolchain.
65
-
66
- ```bash
67
- # install
68
- npm i typia@next
69
- npm i -D ttsc typescript@rc
70
-
71
- # build
72
- npx ttsc
73
-
74
- # run a script directly
75
- npx ttsx src/index.ts
76
- ```
77
-
78
- You **must** use `ttsc` and `ttsx`. The stock `tsc`, `ts-node`, and `tsx` cannot apply the `typia` transform, so they will not work.
79
-
80
- For bundler integration (Vite, Next.js, Webpack, Rollup, esbuild, ...), use [`@ttsc/unplugin`](https://github.com/samchon/ttsc/tree/master/packages/unplugin).
81
- -->
82
-
83
- ## Transformation
84
-
85
- If you call `typia` function, it would be compiled like below.
86
-
87
- This is the key concept of `typia`, transforming TypeScript type to a runtime function. The `typia.is<T>()` function is transformed to a dedicated type checker by analyzing the target type `T` in the compilation level.
88
-
89
- This feature enables developers to ensure type safety in their applications, leveraging TypeScript's static typing while also providing runtime validation. Instead of defining additional schemas, you can simply utilize the pure TypeScript type itself.
90
-
91
- ```typescript
92
- //----
93
- // examples/checkString.ts
94
- //----
95
- import typia, { tags } from "typia";
96
- export const checkString = typia.createIs<string>();
97
-
98
- //----
99
- // examples/checkString.js
100
- //----
101
- import typia from "typia";
102
- export const checkString = (() => {
103
- return (input) => "string" === typeof input;
104
- })();
105
- ```
106
-
107
- ## Sponsors
108
-
109
- [![Backers](https://opencollective.com/typia/backers.svg?avatarHeight=75&width=600)](https://opencollective.com/typia)
110
-
111
- Thanks for your support.
112
-
113
- Your [donation](https://opencollective.com/typia) encourages `typia` development.
114
-
115
- ## Playground
116
-
117
- You can experience how typia works by [playground website](https://typia.io/playground):
118
-
119
- - 💻 https://typia.io/playground
120
-
121
- ## Guide Documents
122
-
123
- Check out the document in the [website](https://typia.io/docs/):
124
-
125
- ### 🏠 Home
126
-
127
- - [Introduction](https://typia.io/docs/)
128
- - [Setup](https://typia.io/docs/setup/)
129
- - [Legacy (TypeScript v6)](https://typia.io/docs/setup/legacy)
130
- - [TSGO (TypeScript v7)](https://typia.io/docs/setup/tsgo)
131
- - [Pure TypeScript](https://typia.io/docs/pure/)
132
-
133
- ### 📖 Features
134
-
135
- - Runtime Validators
136
- - [`assert()` function](https://typia.io/docs/validators/assert/)
137
- - [`is()` function](https://typia.io/docs/validators/is/)
138
- - [`validate()` function](https://typia.io/docs/validators/validate/)
139
- - [Functional Module](https://typia.io/docs/validators/functional)
140
- - [Special Tags](https://typia.io/docs/validators/tags/)
141
- - Enhanced JSON
142
- - [JSON Schema](https://typia.io/docs/json/schema/)
143
- - [`stringify()` functions](https://typia.io/docs/json/stringify/)
144
- - [`parse()` functions](https://typia.io/docs/json/parse/)
145
- - LLM Function Calling Harness
146
- - [`application()` function](https://typia.io/docs/llm/application/)
147
- - [`structuredOutput()` function](https://typia.io/docs/llm/structuredOutput/)
148
- - [`HttpLlm` module](https://typia.io/docs/llm/http/)
149
- - [`LlmJson` module](https://typia.io/docs/llm/json/)
150
- - Protocol Buffer
151
- - [Message Schema](https://typia.io/docs/protobuf/message)
152
- - [`decode()` functions](https://typia.io/docs/protobuf/decode/)
153
- - [`encode()` functions](https://typia.io/docs/protobuf/encode/)
154
- - [Random Generator](https://typia.io/docs/random/)
155
- - [Miscellaneous](https://typia.io/docs/misc/)
156
-
157
- ### 🔗 Appendix
158
-
159
- - [API Documents](https://typia.io/api)
160
- - Utilization Cases
161
- - [MCP](https://typia.io/docs/utilization/mcp/)
162
- - [Vercel AI SDK](https://typia.io/docs/utilization/vercel/)
163
- - [LangChain](https://typia.io/docs/utilization/langchain/)
164
- - [NestJS](https://typia.io/docs/utilization/nestjs/)
165
- - [tRPC](https://typia.io/docs/utilization/trpc/)
166
- - [⇲ Benchmark Result](https://github.com/samchon/typia/tree/master/benchmark/results/11th%20Gen%20Intel(R)%20Core(TM)%20i5-1135G7%20%40%202.40GHz)
167
- - [⇲ `dev.to` Articles](https://dev.to/samchon/series/22474)
168
-
169
- ## Inspired By
170
-
171
- - [`typescript-is`](https://github.com/woutervh-/typescript-is)
1
+ # Typia
2
+
3
+ ![Typia Logo](https://typia.io/logo.png)
4
+
5
+ [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/samchon/typia/blob/master/LICENSE)
6
+ [![NPM Version](https://img.shields.io/npm/v/typia.svg)](https://www.npmjs.com/package/typia)
7
+ [![NPM Downloads](https://img.shields.io/npm/dm/typia.svg)](https://www.npmjs.com/package/typia)
8
+ [![Build Status](https://github.com/samchon/typia/workflows/test/badge.svg)](https://github.com/samchon/typia/actions?query=workflow%3Atest)
9
+ [![Guide Documents](https://img.shields.io/badge/Guide-Documents-forestgreen)](https://typia.io/docs/)
10
+ [![Discord Badge](https://img.shields.io/badge/discord-samchon-d91965?style=flat&labelColor=5866f2&logo=discord&logoColor=white&link=https://discord.gg/E94XhzrUCZ)](https://discord.gg/E94XhzrUCZ)
11
+
12
+ ```typescript
13
+ // RUNTIME VALIDATORS
14
+ export function is<T>(input: unknown): input is T; // returns boolean
15
+ export function assert<T>(input: unknown): T; // throws TypeGuardError
16
+ export function assertGuard<T>(input: unknown): asserts input is T;
17
+ export function validate<T>(input: unknown): IValidation<T>; // detailed
18
+
19
+ // JSON FUNCTIONS
20
+ export namespace json {
21
+ export function schema<T>(): IJsonSchemaUnit<T>; // JSON schema
22
+ export function assertParse<T>(input: string): T; // type safe parser
23
+ export function assertStringify<T>(input: T): string; // safe and faster
24
+ }
25
+
26
+ // AI FUNCTION CALLING HARNESS
27
+ export namespace llm {
28
+ // collection of function calling schemas + validators/parsers
29
+ export function application<Class>(): ILlmApplication<Class>;
30
+ export function structuredOutput<P>(): ILlmStructuredOutput;
31
+ // lenient json parser + type coercion
32
+ export function parse<T>(str: string): T;
33
+ }
34
+
35
+ // PROTOCOL BUFFER
36
+ export namespace protobuf {
37
+ export function message<T>(): string; // Protocol Buffer message
38
+ export function assertDecode<T>(buffer: Uint8Array): T; // safe decoder
39
+ export function assertEncode<T>(input: T): Uint8Array; // safe encoder
40
+ }
41
+
42
+ // RANDOM GENERATOR
43
+ export function random<T>(g?: Partial<IRandomGenerator>): T;
44
+ ```
45
+
46
+ `typia` is a transformer library supporting below features:
47
+
48
+ - Super-fast Runtime Validators
49
+ - Enhanced JSON schema and serde functions
50
+ - LLM function calling harness
51
+ - Protocol Buffer encoder and decoder
52
+ - Random data generator
53
+
54
+ > [!NOTE]
55
+ >
56
+ > - **Only one line** required, with pure TypeScript type
57
+ > - Runtime validator is **20,000x faster** than `class-validator`
58
+ > - JSON serialization is **200x faster** than `class-transformer`
59
+ > - LLM function calling harness turns **6.75% → 100%** accuracy
60
+
61
+ <!--
62
+ ## Setup
63
+
64
+ Install `typia@rc` with the [`ttsc`](https://github.com/samchon/ttsc) toolchain.
65
+
66
+ ```bash
67
+ # install
68
+ npm i typia@rc
69
+ npm i -D ttsc typescript@rc
70
+
71
+ # build
72
+ npx ttsc
73
+
74
+ # run a script directly
75
+ npx ttsx src/index.ts
76
+ ```
77
+
78
+ You **must** use `ttsc` and `ttsx`. The stock `tsc`, `ts-node`, and `tsx` cannot apply the `typia` transform, so they will not work.
79
+
80
+ For bundler integration (Vite, Next.js, Webpack, Rollup, esbuild, ...), use [`@ttsc/unplugin`](https://github.com/samchon/ttsc/tree/master/packages/unplugin).
81
+ -->
82
+
83
+ ## Transformation
84
+
85
+ If you call `typia` function, it would be compiled like below.
86
+
87
+ This is the key concept of `typia`, transforming TypeScript type to a runtime function. The `typia.is<T>()` function is transformed to a dedicated type checker by analyzing the target type `T` in the compilation level.
88
+
89
+ This feature enables developers to ensure type safety in their applications, leveraging TypeScript's static typing while also providing runtime validation. Instead of defining additional schemas, you can simply utilize the pure TypeScript type itself.
90
+
91
+ ```typescript
92
+ //----
93
+ // examples/checkString.ts
94
+ //----
95
+ import typia, { tags } from "typia";
96
+ export const checkString = typia.createIs<string>();
97
+
98
+ //----
99
+ // examples/checkString.js
100
+ //----
101
+ import typia from "typia";
102
+ export const checkString = (() => {
103
+ return (input) => "string" === typeof input;
104
+ })();
105
+ ```
106
+
107
+ ## Sponsors
108
+
109
+ [![Backers](https://opencollective.com/typia/backers.svg?avatarHeight=75&width=600)](https://opencollective.com/typia)
110
+
111
+ Thanks for your support.
112
+
113
+ Your [donation](https://opencollective.com/typia) encourages `typia` development.
114
+
115
+ ## Playground
116
+
117
+ You can experience how typia works by [playground website](https://typia.io/playground):
118
+
119
+ - 💻 https://typia.io/playground
120
+
121
+ ## Guide Documents
122
+
123
+ Check out the document in the [website](https://typia.io/docs/):
124
+
125
+ ### 🏠 Home
126
+
127
+ - [Introduction](https://typia.io/docs/)
128
+ - [Setup](https://typia.io/docs/setup/)
129
+ - [Legacy (TypeScript v6)](https://typia.io/docs/setup/legacy)
130
+ - [TSGO (TypeScript v7)](https://typia.io/docs/setup/tsgo)
131
+ - [Pure TypeScript](https://typia.io/docs/pure/)
132
+
133
+ ### 📖 Features
134
+
135
+ - Runtime Validators
136
+ - [`assert()` function](https://typia.io/docs/validators/assert/)
137
+ - [`is()` function](https://typia.io/docs/validators/is/)
138
+ - [`validate()` function](https://typia.io/docs/validators/validate/)
139
+ - [Functional Module](https://typia.io/docs/validators/functional)
140
+ - [Special Tags](https://typia.io/docs/validators/tags/)
141
+ - Enhanced JSON
142
+ - [JSON Schema](https://typia.io/docs/json/schema/)
143
+ - [`stringify()` functions](https://typia.io/docs/json/stringify/)
144
+ - [`parse()` functions](https://typia.io/docs/json/parse/)
145
+ - LLM Function Calling Harness
146
+ - [`application()` function](https://typia.io/docs/llm/application/)
147
+ - [`structuredOutput()` function](https://typia.io/docs/llm/structuredOutput/)
148
+ - [`HttpLlm` module](https://typia.io/docs/llm/http/)
149
+ - [`LlmJson` module](https://typia.io/docs/llm/json/)
150
+ - Protocol Buffer
151
+ - [Message Schema](https://typia.io/docs/protobuf/message)
152
+ - [`decode()` functions](https://typia.io/docs/protobuf/decode/)
153
+ - [`encode()` functions](https://typia.io/docs/protobuf/encode/)
154
+ - [Random Generator](https://typia.io/docs/random/)
155
+ - [Miscellaneous](https://typia.io/docs/misc/)
156
+
157
+ ### 🔗 Appendix
158
+
159
+ - [API Documents](https://typia.io/api)
160
+ - Utilization Cases
161
+ - [MCP](https://typia.io/docs/utilization/mcp/)
162
+ - [Vercel AI SDK](https://typia.io/docs/utilization/vercel/)
163
+ - [LangChain](https://typia.io/docs/utilization/langchain/)
164
+ - [NestJS](https://typia.io/docs/utilization/nestjs/)
165
+ - [tRPC](https://typia.io/docs/utilization/trpc/)
166
+ - [⇲ Benchmark Result](https://github.com/samchon/typia/tree/master/benchmark/results/11th%20Gen%20Intel(R)%20Core(TM)%20i5-1135G7%20%40%202.40GHz)
167
+ - [⇲ `dev.to` Articles](https://dev.to/samchon/series/22474)
168
+
169
+ ## Inspired By
170
+
171
+ - [`typescript-is`](https://github.com/woutervh-/typescript-is)
@@ -1,29 +1,29 @@
1
- package adapter
2
-
3
- import (
4
- nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
5
- )
6
-
7
- type PluginOptions struct {
8
- Functional bool
9
- Numeric bool
10
- Finite bool
11
- Undefined *bool
12
- }
13
-
14
- func (p PluginOptions) TransformOptions() nativecontext.ITransformOptions {
15
- return nativecontext.ITransformOptions{
16
- Finite: boolPointer(p.Finite),
17
- Numeric: boolPointer(p.Numeric),
18
- Functional: boolPointer(p.Functional),
19
- Undefined: p.Undefined,
20
- Runtime: "typia",
21
- }
22
- }
23
-
24
- func boolPointer(value bool) *bool {
25
- if value == false {
26
- return nil
27
- }
28
- return &value
29
- }
1
+ package adapter
2
+
3
+ import (
4
+ nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
5
+ )
6
+
7
+ type PluginOptions struct {
8
+ Functional bool
9
+ Numeric bool
10
+ Finite bool
11
+ Undefined *bool
12
+ }
13
+
14
+ func (p PluginOptions) TransformOptions() nativecontext.ITransformOptions {
15
+ return nativecontext.ITransformOptions{
16
+ Finite: boolPointer(p.Finite),
17
+ Numeric: boolPointer(p.Numeric),
18
+ Functional: boolPointer(p.Functional),
19
+ Undefined: p.Undefined,
20
+ Runtime: "typia",
21
+ }
22
+ }
23
+
24
+ func boolPointer(value bool) *bool {
25
+ if value == false {
26
+ return nil
27
+ }
28
+ return &value
29
+ }
@@ -1,54 +1,54 @@
1
- //go:build typia_native_internal
2
- // +build typia_native_internal
3
-
4
- package adapter
5
-
6
- import "testing"
7
-
8
- // TestAdapterOptionsBranchMatrix covers plugin option conversion branches.
9
- //
10
- // The public adapter keeps false booleans as nil so absent options remain
11
- // indistinguishable from explicitly disabled flags, while true values and the
12
- // tri-state undefined option must be forwarded to the native transform.
13
- //
14
- // 1. Convert zero-value options and verify false fields remain nil.
15
- // 2. Convert true options and verify each boolean pointer is populated.
16
- // 3. Preserve an explicitly supplied undefined pointer.
17
- // 4. Exercise boolPointer directly for both branches.
18
- func TestAdapterOptionsBranchMatrix(t *testing.T) {
19
- zero := PluginOptions{}.TransformOptions()
20
- if zero.Runtime != "typia" ||
21
- zero.Finite != nil ||
22
- zero.Numeric != nil ||
23
- zero.Functional != nil ||
24
- zero.Undefined != nil {
25
- t.Fatalf("zero plugin options should keep false flags nil: %#v", zero)
26
- }
27
-
28
- undefined := false
29
- enabled := PluginOptions{
30
- Functional: true,
31
- Numeric: true,
32
- Finite: true,
33
- Undefined: &undefined,
34
- }.TransformOptions()
35
- if enabled.Runtime != "typia" ||
36
- enabled.Finite == nil ||
37
- enabled.Numeric == nil ||
38
- enabled.Functional == nil ||
39
- enabled.Undefined != &undefined {
40
- t.Fatalf("enabled plugin options were not forwarded: %#v", enabled)
41
- }
42
- if *enabled.Finite != true ||
43
- *enabled.Numeric != true ||
44
- *enabled.Functional != true ||
45
- *enabled.Undefined != false {
46
- t.Fatalf("enabled plugin option values changed: %#v", enabled)
47
- }
48
- if boolPointer(false) != nil {
49
- t.Fatal("false option should not allocate a pointer")
50
- }
51
- if value := boolPointer(true); value == nil || *value != true {
52
- t.Fatal("true option should allocate a true pointer")
53
- }
54
- }
1
+ //go:build typia_native_internal
2
+ // +build typia_native_internal
3
+
4
+ package adapter
5
+
6
+ import "testing"
7
+
8
+ // TestAdapterOptionsBranchMatrix covers plugin option conversion branches.
9
+ //
10
+ // The public adapter keeps false booleans as nil so absent options remain
11
+ // indistinguishable from explicitly disabled flags, while true values and the
12
+ // tri-state undefined option must be forwarded to the native transform.
13
+ //
14
+ // 1. Convert zero-value options and verify false fields remain nil.
15
+ // 2. Convert true options and verify each boolean pointer is populated.
16
+ // 3. Preserve an explicitly supplied undefined pointer.
17
+ // 4. Exercise boolPointer directly for both branches.
18
+ func TestAdapterOptionsBranchMatrix(t *testing.T) {
19
+ zero := PluginOptions{}.TransformOptions()
20
+ if zero.Runtime != "typia" ||
21
+ zero.Finite != nil ||
22
+ zero.Numeric != nil ||
23
+ zero.Functional != nil ||
24
+ zero.Undefined != nil {
25
+ t.Fatalf("zero plugin options should keep false flags nil: %#v", zero)
26
+ }
27
+
28
+ undefined := false
29
+ enabled := PluginOptions{
30
+ Functional: true,
31
+ Numeric: true,
32
+ Finite: true,
33
+ Undefined: &undefined,
34
+ }.TransformOptions()
35
+ if enabled.Runtime != "typia" ||
36
+ enabled.Finite == nil ||
37
+ enabled.Numeric == nil ||
38
+ enabled.Functional == nil ||
39
+ enabled.Undefined != &undefined {
40
+ t.Fatalf("enabled plugin options were not forwarded: %#v", enabled)
41
+ }
42
+ if *enabled.Finite != true ||
43
+ *enabled.Numeric != true ||
44
+ *enabled.Functional != true ||
45
+ *enabled.Undefined != false {
46
+ t.Fatalf("enabled plugin option values changed: %#v", enabled)
47
+ }
48
+ if boolPointer(false) != nil {
49
+ t.Fatal("false option should not allocate a pointer")
50
+ }
51
+ if value := boolPointer(true); value == nil || *value != true {
52
+ t.Fatal("true option should allocate a true pointer")
53
+ }
54
+ }