typia 13.0.1-dev.20260703.1 → 13.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1298) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +169 -171
  3. package/lib/TypeGuardError.mjs +42 -3
  4. package/lib/TypeGuardError.mjs.map +1 -1
  5. package/lib/_virtual/_rolldown/runtime.mjs +17 -0
  6. package/lib/compare.mjs +39 -3
  7. package/lib/compare.mjs.map +1 -1
  8. package/lib/executable/TypiaGenerateWizard.js +7 -2
  9. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  10. package/lib/executable/TypiaGenerateWizard.mjs +474 -3
  11. package/lib/executable/TypiaGenerateWizard.mjs.map +1 -1
  12. package/lib/executable/generate/ttsc.js +11 -8
  13. package/lib/executable/generate/ttsc.js.map +1 -1
  14. package/lib/executable/generate/ttsc.mjs +37 -3
  15. package/lib/executable/generate/ttsc.mjs.map +1 -1
  16. package/lib/executable/typia.js +10 -4
  17. package/lib/executable/typia.js.map +1 -1
  18. package/lib/executable/typia.mjs +59 -3
  19. package/lib/executable/typia.mjs.map +1 -1
  20. package/lib/functional.mjs +99 -3
  21. package/lib/functional.mjs.map +1 -1
  22. package/lib/http.mjs +139 -3
  23. package/lib/http.mjs.map +1 -1
  24. package/lib/index.mjs +18 -2
  25. package/lib/index.mjs.map +1 -1
  26. package/lib/internal/_IProtobufWriter.mjs +0 -3
  27. package/lib/internal/_ProtobufReader.js +7 -6
  28. package/lib/internal/_ProtobufReader.js.map +1 -1
  29. package/lib/internal/_ProtobufReader.mjs +140 -3
  30. package/lib/internal/_ProtobufReader.mjs.map +1 -1
  31. package/lib/internal/_ProtobufSizer.mjs +84 -3
  32. package/lib/internal/_ProtobufSizer.mjs.map +1 -1
  33. package/lib/internal/_ProtobufWriter.mjs +94 -3
  34. package/lib/internal/_ProtobufWriter.mjs.map +1 -1
  35. package/lib/internal/_accessExpressionAsString.mjs +46 -3
  36. package/lib/internal/_accessExpressionAsString.mjs.map +1 -1
  37. package/lib/internal/_assertGuard.mjs +11 -3
  38. package/lib/internal/_assertGuard.mjs.map +1 -1
  39. package/lib/internal/_coerceLlmArguments.mjs +7 -3
  40. package/lib/internal/_coerceLlmArguments.mjs.map +1 -1
  41. package/lib/internal/_createStandardSchema.mjs +64 -3
  42. package/lib/internal/_createStandardSchema.mjs.map +1 -1
  43. package/lib/internal/_functionalTypeGuardErrorFactory.mjs +7 -3
  44. package/lib/internal/_functionalTypeGuardErrorFactory.mjs.map +1 -1
  45. package/lib/internal/_httpFormDataReadArray.mjs +6 -3
  46. package/lib/internal/_httpFormDataReadArray.mjs.map +1 -1
  47. package/lib/internal/_httpFormDataReadBigint.mjs +13 -3
  48. package/lib/internal/_httpFormDataReadBigint.mjs.map +1 -1
  49. package/lib/internal/_httpFormDataReadBlob.mjs +6 -3
  50. package/lib/internal/_httpFormDataReadBlob.mjs.map +1 -1
  51. package/lib/internal/_httpFormDataReadBoolean.mjs +6 -3
  52. package/lib/internal/_httpFormDataReadBoolean.mjs.map +1 -1
  53. package/lib/internal/_httpFormDataReadFile.mjs +6 -3
  54. package/lib/internal/_httpFormDataReadFile.mjs.map +1 -1
  55. package/lib/internal/_httpFormDataReadNumber.mjs +10 -3
  56. package/lib/internal/_httpFormDataReadNumber.mjs.map +1 -1
  57. package/lib/internal/_httpFormDataReadString.mjs +6 -3
  58. package/lib/internal/_httpFormDataReadString.mjs.map +1 -1
  59. package/lib/internal/_httpHeaderReadBigint.mjs +13 -3
  60. package/lib/internal/_httpHeaderReadBigint.mjs.map +1 -1
  61. package/lib/internal/_httpHeaderReadBoolean.mjs +6 -3
  62. package/lib/internal/_httpHeaderReadBoolean.mjs.map +1 -1
  63. package/lib/internal/_httpHeaderReadNumber.mjs +10 -3
  64. package/lib/internal/_httpHeaderReadNumber.mjs.map +1 -1
  65. package/lib/internal/_httpParameterReadBigint.mjs +13 -3
  66. package/lib/internal/_httpParameterReadBigint.mjs.map +1 -1
  67. package/lib/internal/_httpParameterReadBoolean.mjs +6 -3
  68. package/lib/internal/_httpParameterReadBoolean.mjs.map +1 -1
  69. package/lib/internal/_httpParameterReadNumber.mjs +10 -3
  70. package/lib/internal/_httpParameterReadNumber.mjs.map +1 -1
  71. package/lib/internal/_httpParameterReadString.mjs +6 -3
  72. package/lib/internal/_httpParameterReadString.mjs.map +1 -1
  73. package/lib/internal/_httpQueryParseURLSearchParams.mjs +13 -3
  74. package/lib/internal/_httpQueryParseURLSearchParams.mjs.map +1 -1
  75. package/lib/internal/_httpQueryReadArray.mjs +6 -3
  76. package/lib/internal/_httpQueryReadArray.mjs.map +1 -1
  77. package/lib/internal/_httpQueryReadBigint.mjs +13 -3
  78. package/lib/internal/_httpQueryReadBigint.mjs.map +1 -1
  79. package/lib/internal/_httpQueryReadBoolean.mjs +6 -3
  80. package/lib/internal/_httpQueryReadBoolean.mjs.map +1 -1
  81. package/lib/internal/_httpQueryReadNumber.mjs +10 -3
  82. package/lib/internal/_httpQueryReadNumber.mjs.map +1 -1
  83. package/lib/internal/_httpQueryReadString.mjs +6 -3
  84. package/lib/internal/_httpQueryReadString.mjs.map +1 -1
  85. package/lib/internal/_isBetween.mjs +6 -3
  86. package/lib/internal/_isBetween.mjs.map +1 -1
  87. package/lib/internal/_isBigintString.mjs +13 -3
  88. package/lib/internal/_isBigintString.mjs.map +1 -1
  89. package/lib/internal/_isFormatByte.mjs +10 -3
  90. package/lib/internal/_isFormatByte.mjs.map +1 -1
  91. package/lib/internal/_isFormatDate.mjs +7 -3
  92. package/lib/internal/_isFormatDate.mjs.map +1 -1
  93. package/lib/internal/_isFormatDateTime.mjs +7 -3
  94. package/lib/internal/_isFormatDateTime.mjs.map +1 -1
  95. package/lib/internal/_isFormatDuration.mjs +7 -3
  96. package/lib/internal/_isFormatDuration.mjs.map +1 -1
  97. package/lib/internal/_isFormatEmail.mjs +7 -3
  98. package/lib/internal/_isFormatEmail.mjs.map +1 -1
  99. package/lib/internal/_isFormatHostname.mjs +7 -3
  100. package/lib/internal/_isFormatHostname.mjs.map +1 -1
  101. package/lib/internal/_isFormatIdnEmail.mjs +7 -3
  102. package/lib/internal/_isFormatIdnEmail.mjs.map +1 -1
  103. package/lib/internal/_isFormatIdnHostname.mjs +7 -3
  104. package/lib/internal/_isFormatIdnHostname.mjs.map +1 -1
  105. package/lib/internal/_isFormatIpv4.mjs +7 -3
  106. package/lib/internal/_isFormatIpv4.mjs.map +1 -1
  107. package/lib/internal/_isFormatIpv6.mjs +7 -3
  108. package/lib/internal/_isFormatIpv6.mjs.map +1 -1
  109. package/lib/internal/_isFormatIri.mjs +7 -3
  110. package/lib/internal/_isFormatIri.mjs.map +1 -1
  111. package/lib/internal/_isFormatIriReference.mjs +7 -3
  112. package/lib/internal/_isFormatIriReference.mjs.map +1 -1
  113. package/lib/internal/_isFormatJsonPointer.mjs +7 -3
  114. package/lib/internal/_isFormatJsonPointer.mjs.map +1 -1
  115. package/lib/internal/_isFormatPassword.mjs +6 -3
  116. package/lib/internal/_isFormatPassword.mjs.map +1 -1
  117. package/lib/internal/_isFormatRegex.mjs +13 -3
  118. package/lib/internal/_isFormatRegex.mjs.map +1 -1
  119. package/lib/internal/_isFormatRelativeJsonPointer.mjs +7 -3
  120. package/lib/internal/_isFormatRelativeJsonPointer.mjs.map +1 -1
  121. package/lib/internal/_isFormatTime.mjs +7 -3
  122. package/lib/internal/_isFormatTime.mjs.map +1 -1
  123. package/lib/internal/_isFormatUri.mjs +8 -3
  124. package/lib/internal/_isFormatUri.mjs.map +1 -1
  125. package/lib/internal/_isFormatUriReference.mjs +7 -3
  126. package/lib/internal/_isFormatUriReference.mjs.map +1 -1
  127. package/lib/internal/_isFormatUriTemplate.mjs +7 -3
  128. package/lib/internal/_isFormatUriTemplate.mjs.map +1 -1
  129. package/lib/internal/_isFormatUrl.mjs +7 -3
  130. package/lib/internal/_isFormatUrl.mjs.map +1 -1
  131. package/lib/internal/_isFormatUuid.mjs +7 -3
  132. package/lib/internal/_isFormatUuid.mjs.map +1 -1
  133. package/lib/internal/_isTypeFloat.mjs +8 -3
  134. package/lib/internal/_isTypeFloat.mjs.map +1 -1
  135. package/lib/internal/_isTypeInt16.mjs +8 -3
  136. package/lib/internal/_isTypeInt16.mjs.map +1 -1
  137. package/lib/internal/_isTypeInt32.mjs +8 -3
  138. package/lib/internal/_isTypeInt32.mjs.map +1 -1
  139. package/lib/internal/_isTypeInt64.mjs +8 -3
  140. package/lib/internal/_isTypeInt64.mjs.map +1 -1
  141. package/lib/internal/_isTypeInt8.mjs +8 -3
  142. package/lib/internal/_isTypeInt8.mjs.map +1 -1
  143. package/lib/internal/_isTypeUint16.mjs +8 -3
  144. package/lib/internal/_isTypeUint16.mjs.map +1 -1
  145. package/lib/internal/_isTypeUint32.mjs +8 -3
  146. package/lib/internal/_isTypeUint32.mjs.map +1 -1
  147. package/lib/internal/_isTypeUint64.mjs +8 -3
  148. package/lib/internal/_isTypeUint64.mjs.map +1 -1
  149. package/lib/internal/_isTypeUint8.mjs +8 -3
  150. package/lib/internal/_isTypeUint8.mjs.map +1 -1
  151. package/lib/internal/_isUniqueItems.mjs +67 -3
  152. package/lib/internal/_isUniqueItems.mjs.map +1 -1
  153. package/lib/internal/_jsonStringifyNumber.mjs +6 -3
  154. package/lib/internal/_jsonStringifyNumber.mjs.map +1 -1
  155. package/lib/internal/_jsonStringifyRest.mjs +8 -3
  156. package/lib/internal/_jsonStringifyRest.mjs.map +1 -1
  157. package/lib/internal/_jsonStringifyString.mjs +34 -3
  158. package/lib/internal/_jsonStringifyString.mjs.map +1 -1
  159. package/lib/internal/_jsonStringifyTail.mjs +6 -3
  160. package/lib/internal/_jsonStringifyTail.mjs.map +1 -1
  161. package/lib/internal/_llmApplicationFinalize.mjs +19 -3
  162. package/lib/internal/_llmApplicationFinalize.mjs.map +1 -1
  163. package/lib/internal/_notationAny.mjs +18 -3
  164. package/lib/internal/_notationAny.mjs.map +1 -1
  165. package/lib/internal/_notationCamel.mjs +11 -3
  166. package/lib/internal/_notationCamel.mjs.map +1 -1
  167. package/lib/internal/_notationPascal.mjs +11 -3
  168. package/lib/internal/_notationPascal.mjs.map +1 -1
  169. package/lib/internal/_notationSnake.mjs +32 -3
  170. package/lib/internal/_notationSnake.mjs.map +1 -1
  171. package/lib/internal/_parseLlmArguments.mjs +7 -3
  172. package/lib/internal/_parseLlmArguments.mjs.map +1 -1
  173. package/lib/internal/_plainCloneAny.mjs +35 -3
  174. package/lib/internal/_plainCloneAny.mjs.map +1 -1
  175. package/lib/internal/_randomArray.mjs +22 -3
  176. package/lib/internal/_randomArray.mjs.map +1 -1
  177. package/lib/internal/_randomBigint.mjs +7 -3
  178. package/lib/internal/_randomBigint.mjs.map +1 -1
  179. package/lib/internal/_randomBoolean.mjs +6 -3
  180. package/lib/internal/_randomBoolean.mjs.map +1 -1
  181. package/lib/internal/_randomFormatByte.mjs +7 -3
  182. package/lib/internal/_randomFormatByte.mjs.map +1 -1
  183. package/lib/internal/_randomFormatDate.mjs +11 -3
  184. package/lib/internal/_randomFormatDate.mjs.map +1 -1
  185. package/lib/internal/_randomFormatDatetime.mjs +11 -3
  186. package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
  187. package/lib/internal/_randomFormatDuration.mjs +26 -3
  188. package/lib/internal/_randomFormatDuration.mjs.map +1 -1
  189. package/lib/internal/_randomFormatEmail.mjs +12 -3
  190. package/lib/internal/_randomFormatEmail.mjs.map +1 -1
  191. package/lib/internal/_randomFormatHostname.mjs +12 -3
  192. package/lib/internal/_randomFormatHostname.mjs.map +1 -1
  193. package/lib/internal/_randomFormatIdnEmail.mjs +7 -3
  194. package/lib/internal/_randomFormatIdnEmail.mjs.map +1 -1
  195. package/lib/internal/_randomFormatIdnHostname.mjs +7 -3
  196. package/lib/internal/_randomFormatIdnHostname.mjs.map +1 -1
  197. package/lib/internal/_randomFormatIpv4.mjs +12 -3
  198. package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
  199. package/lib/internal/_randomFormatIpv6.mjs +12 -3
  200. package/lib/internal/_randomFormatIpv6.mjs.map +1 -1
  201. package/lib/internal/_randomFormatIri.mjs +7 -3
  202. package/lib/internal/_randomFormatIri.mjs.map +1 -1
  203. package/lib/internal/_randomFormatIriReference.mjs +7 -3
  204. package/lib/internal/_randomFormatIriReference.mjs.map +1 -1
  205. package/lib/internal/_randomFormatJsonPointer.mjs +12 -3
  206. package/lib/internal/_randomFormatJsonPointer.mjs.map +1 -1
  207. package/lib/internal/_randomFormatPassword.mjs +11 -3
  208. package/lib/internal/_randomFormatPassword.mjs.map +1 -1
  209. package/lib/internal/_randomFormatRegex.mjs +7 -3
  210. package/lib/internal/_randomFormatRegex.mjs.map +1 -1
  211. package/lib/internal/_randomFormatRelativeJsonPointer.mjs +11 -3
  212. package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
  213. package/lib/internal/_randomFormatTime.mjs +12 -3
  214. package/lib/internal/_randomFormatTime.mjs.map +1 -1
  215. package/lib/internal/_randomFormatUri.mjs +7 -3
  216. package/lib/internal/_randomFormatUri.mjs.map +1 -1
  217. package/lib/internal/_randomFormatUriReference.mjs +7 -3
  218. package/lib/internal/_randomFormatUriReference.mjs.map +1 -1
  219. package/lib/internal/_randomFormatUriTemplate.mjs +7 -3
  220. package/lib/internal/_randomFormatUriTemplate.mjs.map +1 -1
  221. package/lib/internal/_randomFormatUrl.mjs +12 -3
  222. package/lib/internal/_randomFormatUrl.mjs.map +1 -1
  223. package/lib/internal/_randomFormatUuid.mjs +9 -3
  224. package/lib/internal/_randomFormatUuid.mjs.map +1 -1
  225. package/lib/internal/_randomInteger.mjs +31 -3
  226. package/lib/internal/_randomInteger.mjs.map +1 -1
  227. package/lib/internal/_randomNumber.mjs +45 -3
  228. package/lib/internal/_randomNumber.mjs.map +1 -1
  229. package/lib/internal/_randomPattern.mjs +14 -3
  230. package/lib/internal/_randomPattern.mjs.map +1 -1
  231. package/lib/internal/_randomPick.mjs +12 -3
  232. package/lib/internal/_randomPick.mjs.map +1 -1
  233. package/lib/internal/_randomString.mjs +23 -3
  234. package/lib/internal/_randomString.mjs.map +1 -1
  235. package/lib/internal/_throwTypeGuardError.mjs +9 -3
  236. package/lib/internal/_throwTypeGuardError.mjs.map +1 -1
  237. package/lib/internal/_validateReport.mjs +23 -3
  238. package/lib/internal/_validateReport.mjs.map +1 -1
  239. package/lib/internal/private/__notationCapitalize.mjs +6 -3
  240. package/lib/internal/private/__notationCapitalize.mjs.map +1 -1
  241. package/lib/internal/private/__notationUnsnake.mjs +15 -3
  242. package/lib/internal/private/__notationUnsnake.mjs.map +1 -1
  243. package/lib/json.mjs +94 -3
  244. package/lib/json.mjs.map +1 -1
  245. package/lib/llm.mjs +54 -3
  246. package/lib/llm.mjs.map +1 -1
  247. package/lib/module.mjs +131 -2
  248. package/lib/module.mjs.map +1 -1
  249. package/lib/notations.mjs +169 -3
  250. package/lib/notations.mjs.map +1 -1
  251. package/lib/plain.mjs +119 -3
  252. package/lib/plain.mjs.map +1 -1
  253. package/lib/protobuf.mjs +94 -3
  254. package/lib/protobuf.mjs.map +1 -1
  255. package/lib/re-exports.d.ts +2 -1
  256. package/lib/re-exports.js +5 -1
  257. package/lib/re-exports.js.map +1 -1
  258. package/lib/re-exports.mjs +2 -2
  259. package/lib/reflect.mjs +29 -3
  260. package/lib/reflect.mjs.map +1 -1
  261. package/lib/transform.mjs +15 -2
  262. package/lib/transform.mjs.map +1 -1
  263. package/lib/transformers/NoTransformConfigurationError.mjs +19 -3
  264. package/lib/transformers/NoTransformConfigurationError.mjs.map +1 -1
  265. package/native/adapter/adapter.go +29 -29
  266. package/native/adapter/adapter_options_branch_matrix_test.go +54 -54
  267. package/native/adapter/visit.go +173 -173
  268. package/native/adapter/visit_property_chain_edges_test.go +129 -129
  269. package/native/cmd/ttsc-typia/any_array_type_tags_transform_test.go +204 -204
  270. package/native/cmd/ttsc-typia/atomic_intersection_schema_transform_test.go +148 -148
  271. package/native/cmd/ttsc-typia/boolean_literal_discriminant_schema_transform_test.go +374 -374
  272. package/native/cmd/ttsc-typia/build.go +188 -188
  273. package/native/cmd/ttsc-typia/build_reports_semantic_diagnostics_test.go +34 -34
  274. package/native/cmd/ttsc-typia/build_reports_syntactic_diagnostics_test.go +34 -34
  275. package/native/cmd/ttsc-typia/command_routes_and_diagnostics_coverage_test.go +314 -314
  276. package/native/cmd/ttsc-typia/compare_equal_cover_transform_test.go +271 -271
  277. package/native/cmd/ttsc-typia/compare_less_transform_test.go +180 -180
  278. package/native/cmd/ttsc-typia/compare_method_delegation_transform_test.go +173 -173
  279. package/native/cmd/ttsc-typia/demo_rejects_bad_flag_test.go +25 -25
  280. package/native/cmd/ttsc-typia/diagnostics.go +51 -51
  281. package/native/cmd/ttsc-typia/dynamic_key_path_helper_alias_transform_test.go +159 -159
  282. package/native/cmd/ttsc-typia/exclude_type_tag_transform_test.go +176 -176
  283. package/native/cmd/ttsc-typia/inline_type_display_name_transform_test.go +290 -290
  284. package/native/cmd/ttsc-typia/instance_union_create_is_transform_test.go +248 -248
  285. package/native/cmd/ttsc-typia/intersection_all_never_union_transform_test.go +168 -168
  286. package/native/cmd/ttsc-typia/intersection_brand_transform_test.go +267 -267
  287. package/native/cmd/ttsc-typia/intersection_nonsensible_backstop_transform_test.go +157 -132
  288. package/native/cmd/ttsc-typia/intersection_union_validation_transform_test.go +590 -590
  289. package/native/cmd/ttsc-typia/json_is_stringify_scoped_checker_transform_test.go +206 -0
  290. package/native/cmd/ttsc-typia/json_stringify_constant_atomic_union_transform_test.go +171 -171
  291. package/native/cmd/ttsc-typia/main.go +97 -97
  292. package/native/cmd/ttsc-typia/main_wasm.go +226 -226
  293. package/native/cmd/ttsc-typia/non_trailing_rest_tuple_transform_test.go +156 -156
  294. package/native/cmd/ttsc-typia/notation_kebab_case_transform_test.go +186 -186
  295. package/native/cmd/ttsc-typia/nullable_primitive_property_is_transform_test.go +236 -236
  296. package/native/cmd/ttsc-typia/object_custom_tag_validation_transform_test.go +332 -332
  297. package/native/cmd/ttsc-typia/object_union_explicit_pointer_schema_transform_test.go +269 -269
  298. package/native/cmd/ttsc-typia/plain_classify_class_ref_transform_test.go +261 -261
  299. package/native/cmd/ttsc-typia/plain_classify_container_seed_transform_test.go +144 -144
  300. package/native/cmd/ttsc-typia/plain_classify_cross_module_extra_transform_test.go +211 -211
  301. package/native/cmd/ttsc-typia/plain_classify_deep_nested_transform_test.go +184 -184
  302. package/native/cmd/ttsc-typia/plain_classify_field_copy_transform_test.go +204 -204
  303. package/native/cmd/ttsc-typia/plain_classify_from_new_transform_test.go +465 -465
  304. package/native/cmd/ttsc-typia/plain_classify_strategy_edges_transform_test.go +519 -519
  305. package/native/cmd/ttsc-typia/plain_classify_union_transform_test.go +149 -149
  306. package/native/cmd/ttsc-typia/plain_classify_validated_union_transform_test.go +212 -212
  307. package/native/cmd/ttsc-typia/plain_clone_bigint_wrapper_transform_test.go +153 -153
  308. package/native/cmd/ttsc-typia/plugin_options_missing_config_test.go +26 -26
  309. package/native/cmd/ttsc-typia/plugin_options_undefined_false_test.go +36 -36
  310. package/native/cmd/ttsc-typia/project_catalog_transform_coverage_test.go +73 -73
  311. package/native/cmd/ttsc-typia/protobuf_object_generic_union_encode_transform_test.go +248 -248
  312. package/native/cmd/ttsc-typia/protobuf_sequence_field_numbers_transform_test.go +107 -107
  313. package/native/cmd/ttsc-typia/random_recursive_min_items_diagnostic_test.go +234 -234
  314. package/native/cmd/ttsc-typia/random_unsatisfiable_recursive_diagnostic_test.go +146 -146
  315. package/native/cmd/ttsc-typia/recursive_visit_tracking_transform_test.go +473 -473
  316. package/native/cmd/ttsc-typia/run_default_build_route_test.go +31 -31
  317. package/native/cmd/ttsc-typia/schema_dts_role_transform_test.go +404 -404
  318. package/native/cmd/ttsc-typia/shallow_depth_argument_error_transform_test.go +88 -88
  319. package/native/cmd/ttsc-typia/shallow_depth_limit_transform_test.go +278 -278
  320. package/native/cmd/ttsc-typia/shallow_depth_runtime_test.go +173 -173
  321. package/native/cmd/ttsc-typia/shallow_factory_depth_runtime_test.go +171 -171
  322. package/native/cmd/ttsc-typia/shallow_nested_depth_transform_test.go +148 -148
  323. package/native/cmd/ttsc-typia/template_interpolation_type_tags_transform_test.go +322 -322
  324. package/native/cmd/ttsc-typia/template_literal_type_tags_transform_test.go +162 -162
  325. package/native/cmd/ttsc-typia/transform.go +270 -270
  326. package/native/cmd/ttsc-typia/transform_declaration_source_produces_no_js_test.go +59 -59
  327. package/native/cmd/ttsc-typia/transform_diagnostics_preserve_details_test.go +203 -203
  328. package/native/cmd/ttsc-typia/transform_fixtures_emit_coverage_test.go +528 -528
  329. package/native/cmd/ttsc-typia/transform_helpers_test.go +155 -155
  330. package/native/core/context/EmitFactory.go +39 -39
  331. package/native/core/context/IProgrammerProps.go +14 -14
  332. package/native/core/context/ITransformOptions.go +9 -9
  333. package/native/core/context/ITypiaContext.go +36 -36
  334. package/native/core/context/ImportProgrammer.go +388 -354
  335. package/native/core/context/TransformerError.go +117 -117
  336. package/native/core/context/import_programmer_module_identifier_test.go +29 -0
  337. package/native/core/context/import_programmer_statement_coverage_test.go +71 -71
  338. package/native/core/context/index.go +1 -1
  339. package/native/core/context/transformer_error_formatting_test.go +100 -100
  340. package/native/core/factories/CommentFactory.go +27 -27
  341. package/native/core/factories/ExpressionFactory.go +357 -357
  342. package/native/core/factories/FormatCheatSheet.go +30 -30
  343. package/native/core/factories/IdentifierFactory.go +172 -172
  344. package/native/core/factories/JsonMetadataFactory.go +154 -154
  345. package/native/core/factories/LiteralFactory.go +319 -282
  346. package/native/core/factories/MetadataCommentTagFactory.go +446 -446
  347. package/native/core/factories/MetadataFactory.go +543 -543
  348. package/native/core/factories/MetadataTypeTagFactory.go +560 -560
  349. package/native/core/factories/MetadataTypeTagSchemaFactory.go +117 -117
  350. package/native/core/factories/NumericRangeFactory.go +132 -132
  351. package/native/core/factories/ProtobufFactory.go +1090 -1090
  352. package/native/core/factories/StatementFactory.go +114 -114
  353. package/native/core/factories/TemplateFactory.go +82 -82
  354. package/native/core/factories/TypeFactory.go +176 -176
  355. package/native/core/factories/ValueFactory.go +43 -43
  356. package/native/core/factories/factory_utility_coverage_test.go +1006 -1006
  357. package/native/core/factories/index.go +1 -1
  358. package/native/core/factories/internal/metadata/IMetadataIteratorProps.go +70 -70
  359. package/native/core/factories/internal/metadata/MetadataHelper.go +425 -425
  360. package/native/core/factories/internal/metadata/comment_tags_coverage_test.go +184 -184
  361. package/native/core/factories/internal/metadata/emend_metadata_atomics.go +80 -80
  362. package/native/core/factories/internal/metadata/emplace_metadata_alias.go +41 -41
  363. package/native/core/factories/internal/metadata/emplace_metadata_array_type.go +44 -44
  364. package/native/core/factories/internal/metadata/emplace_metadata_object.go +599 -599
  365. package/native/core/factories/internal/metadata/emplace_metadata_tuple.go +69 -69
  366. package/native/core/factories/internal/metadata/explore_metadata.go +75 -75
  367. package/native/core/factories/internal/metadata/iterate_metadata.go +55 -55
  368. package/native/core/factories/internal/metadata/iterate_metadata_alias.go +36 -36
  369. package/native/core/factories/internal/metadata/iterate_metadata_array.go +77 -77
  370. package/native/core/factories/internal/metadata/iterate_metadata_atomic.go +63 -63
  371. package/native/core/factories/internal/metadata/iterate_metadata_coalesce.go +30 -30
  372. package/native/core/factories/internal/metadata/iterate_metadata_collection.go +366 -366
  373. package/native/core/factories/internal/metadata/iterate_metadata_collection_branch_matrix_test.go +201 -201
  374. package/native/core/factories/internal/metadata/iterate_metadata_comment_tags.go +34 -34
  375. package/native/core/factories/internal/metadata/iterate_metadata_constant.go +139 -139
  376. package/native/core/factories/internal/metadata/iterate_metadata_escape.go +56 -56
  377. package/native/core/factories/internal/metadata/iterate_metadata_function.go +93 -93
  378. package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +1054 -1054
  379. package/native/core/factories/internal/metadata/iterate_metadata_intersection_brand_coverage_test.go +114 -114
  380. package/native/core/factories/internal/metadata/iterate_metadata_intersection_coverage_test.go +106 -106
  381. package/native/core/factories/internal/metadata/iterate_metadata_intersection_shareable_name_test.go +22 -22
  382. package/native/core/factories/internal/metadata/iterate_metadata_map.go +55 -55
  383. package/native/core/factories/internal/metadata/iterate_metadata_native.go +122 -122
  384. package/native/core/factories/internal/metadata/iterate_metadata_object.go +35 -35
  385. package/native/core/factories/internal/metadata/iterate_metadata_set.go +41 -41
  386. package/native/core/factories/internal/metadata/iterate_metadata_sort.go +202 -202
  387. package/native/core/factories/internal/metadata/iterate_metadata_template.go +41 -41
  388. package/native/core/factories/internal/metadata/iterate_metadata_tuple.go +24 -24
  389. package/native/core/factories/internal/metadata/iterate_metadata_union.go +40 -40
  390. package/native/core/factories/internal/metadata/js_doc_parameter_name_reads_qualified_name_test.go +55 -55
  391. package/native/core/factories/internal/metadata/optional_coalesce_coverage_test.go +38 -38
  392. package/native/core/factories/internal/metadata/sort_constants_coverage_test.go +63 -63
  393. package/native/core/factories/json_metadata_factory_dedupes_bigint_diagnostics_test.go +36 -36
  394. package/native/core/factories/json_metadata_factory_rejects_bigint_native_test.go +29 -29
  395. package/native/core/factories/literal_factory_ordered_object_marshals_json_test.go +40 -0
  396. package/native/core/factories/metadata_comment_tag_factory_coverage_test.go +239 -239
  397. package/native/core/factories/protobuf_factory_rejects_invalid_field_names_test.go +75 -75
  398. package/native/core/index.go +1 -1
  399. package/native/core/programmers/AssertProgrammer.go +511 -511
  400. package/native/core/programmers/IsProgrammer.go +418 -419
  401. package/native/core/programmers/RandomProgrammer.go +1448 -1448
  402. package/native/core/programmers/ValidateProgrammer.go +488 -488
  403. package/native/core/programmers/compare/CompareEqualProgrammer.go +668 -668
  404. package/native/core/programmers/compare/CompareLessProgrammer.go +489 -489
  405. package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +172 -172
  406. package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +135 -135
  407. package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +131 -131
  408. package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +106 -106
  409. package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +222 -222
  410. package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +129 -129
  411. package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +172 -172
  412. package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +252 -252
  413. package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +147 -147
  414. package/native/core/programmers/functional/functional_assert_helper_coverage_test.go +26 -26
  415. package/native/core/programmers/functional/index.go +1 -1
  416. package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +53 -53
  417. package/native/core/programmers/helpers/AtomicPredicator.go +75 -75
  418. package/native/core/programmers/helpers/ClassifyJoiner.go +174 -174
  419. package/native/core/programmers/helpers/CloneJoiner.go +307 -307
  420. package/native/core/programmers/helpers/FunctionProgrammer.go +218 -218
  421. package/native/core/programmers/helpers/HttpMetadataUtil.go +30 -30
  422. package/native/core/programmers/helpers/ICheckEntry.go +14 -14
  423. package/native/core/programmers/helpers/IExpressionEntry.go +15 -15
  424. package/native/core/programmers/helpers/ModuloText.go +26 -26
  425. package/native/core/programmers/helpers/NotationJoiner.go +204 -204
  426. package/native/core/programmers/helpers/OptionPredicator.go +39 -39
  427. package/native/core/programmers/helpers/ProtobufUtil.go +273 -273
  428. package/native/core/programmers/helpers/ProtobufWire.go +14 -14
  429. package/native/core/programmers/helpers/PruneJoiner.go +290 -290
  430. package/native/core/programmers/helpers/RandomJoiner.go +805 -805
  431. package/native/core/programmers/helpers/StringifyJoinder.go +409 -409
  432. package/native/core/programmers/helpers/StringifyPredicator.go +25 -25
  433. package/native/core/programmers/helpers/UnionExplorer.go +966 -966
  434. package/native/core/programmers/helpers/UnionPredicator.go +92 -92
  435. package/native/core/programmers/helpers/clone_joiner_optional_condition_test.go +70 -70
  436. package/native/core/programmers/helpers/disable_function_programmer_declare.go +10 -10
  437. package/native/core/programmers/helpers/function_programmer_unique_names_test.go +54 -54
  438. package/native/core/programmers/helpers/joiner_branch_coverage_test.go +147 -147
  439. package/native/core/programmers/helpers/random_joiner_recursive_array_guard_test.go +166 -166
  440. package/native/core/programmers/helpers/union_explorer_coverage_test.go +135 -135
  441. package/native/core/programmers/helpers/union_predicator_checks_neighbor_flag_test.go +34 -34
  442. package/native/core/programmers/helpers/union_predicator_skips_atomic_like_native_fields_test.go +65 -65
  443. package/native/core/programmers/helpers/union_predicator_skips_collection_bucket_fields_test.go +72 -72
  444. package/native/core/programmers/helpers/union_predicator_skips_shared_native_names_test.go +239 -239
  445. package/native/core/programmers/helpers/union_predicator_skips_shared_object_fields_test.go +43 -43
  446. package/native/core/programmers/helpers/union_predicator_skips_shared_template_fields_test.go +57 -57
  447. package/native/core/programmers/http/HttpAssertFormDataProgrammer.go +116 -116
  448. package/native/core/programmers/http/HttpAssertHeadersProgrammer.go +59 -59
  449. package/native/core/programmers/http/HttpAssertQueryProgrammer.go +71 -71
  450. package/native/core/programmers/http/HttpFormDataProgrammer.go +416 -416
  451. package/native/core/programmers/http/HttpHeadersProgrammer.go +428 -428
  452. package/native/core/programmers/http/HttpIsFormDataProgrammer.go +142 -142
  453. package/native/core/programmers/http/HttpIsHeadersProgrammer.go +53 -53
  454. package/native/core/programmers/http/HttpIsQueryProgrammer.go +65 -65
  455. package/native/core/programmers/http/HttpParameterProgrammer.go +190 -190
  456. package/native/core/programmers/http/HttpQueryProgrammer.go +484 -484
  457. package/native/core/programmers/http/HttpValidateFormDataProgrammer.go +110 -110
  458. package/native/core/programmers/http/HttpValidateHeadersProgrammer.go +56 -56
  459. package/native/core/programmers/http/HttpValidateQueryProgrammer.go +68 -68
  460. package/native/core/programmers/http/http_programmer_helper_coverage_test.go +120 -120
  461. package/native/core/programmers/http/index.go +1 -1
  462. package/native/core/programmers/index.go +1 -1
  463. package/native/core/programmers/internal/CheckerProgrammer.go +2064 -2064
  464. package/native/core/programmers/internal/FeatureProgrammer.go +1361 -1361
  465. package/native/core/programmers/internal/feature_programmer_visit_guard_test.go +70 -70
  466. package/native/core/programmers/internal/internal_utility_coverage_test.go +384 -384
  467. package/native/core/programmers/iterate/check_array_length.go +64 -64
  468. package/native/core/programmers/iterate/check_bigint.go +78 -78
  469. package/native/core/programmers/iterate/check_dynamic_key.go +271 -271
  470. package/native/core/programmers/iterate/check_dynamic_key_tag_rows_test.go +46 -46
  471. package/native/core/programmers/iterate/check_dynamic_properties.go +292 -292
  472. package/native/core/programmers/iterate/check_everything.go +33 -33
  473. package/native/core/programmers/iterate/check_exclude.go +88 -88
  474. package/native/core/programmers/iterate/check_native.go +38 -38
  475. package/native/core/programmers/iterate/check_number.go +180 -180
  476. package/native/core/programmers/iterate/check_object.go +113 -113
  477. package/native/core/programmers/iterate/check_object_strict_optional_undefined_test.go +74 -74
  478. package/native/core/programmers/iterate/check_object_type_tags.go +64 -64
  479. package/native/core/programmers/iterate/check_string.go +78 -78
  480. package/native/core/programmers/iterate/check_template.go +346 -346
  481. package/native/core/programmers/iterate/check_union_array_like.go +422 -422
  482. package/native/core/programmers/iterate/decode_union_object.go +157 -157
  483. package/native/core/programmers/iterate/feature_object_entries.go +188 -188
  484. package/native/core/programmers/iterate/iterate_check_coverage_test.go +178 -178
  485. package/native/core/programmers/iterate/iterate_utility_coverage_test.go +302 -302
  486. package/native/core/programmers/iterate/json_schema_alias.go +62 -62
  487. package/native/core/programmers/iterate/json_schema_array.go +66 -66
  488. package/native/core/programmers/iterate/json_schema_bigint.go +17 -17
  489. package/native/core/programmers/iterate/json_schema_boolean.go +17 -17
  490. package/native/core/programmers/iterate/json_schema_constant.go +53 -53
  491. package/native/core/programmers/iterate/json_schema_description.go +21 -21
  492. package/native/core/programmers/iterate/json_schema_discriminator.go +57 -57
  493. package/native/core/programmers/iterate/json_schema_escaped.go +68 -68
  494. package/native/core/programmers/iterate/json_schema_jsDocTags.go +48 -48
  495. package/native/core/programmers/iterate/json_schema_native.go +106 -106
  496. package/native/core/programmers/iterate/json_schema_number.go +17 -17
  497. package/native/core/programmers/iterate/json_schema_object.go +187 -184
  498. package/native/core/programmers/iterate/json_schema_plugin.go +47 -47
  499. package/native/core/programmers/iterate/json_schema_station.go +251 -251
  500. package/native/core/programmers/iterate/json_schema_string.go +17 -17
  501. package/native/core/programmers/iterate/json_schema_template.go +63 -63
  502. package/native/core/programmers/iterate/json_schema_title.go +25 -25
  503. package/native/core/programmers/iterate/json_schema_tuple.go +41 -41
  504. package/native/core/programmers/iterate/metadata_to_pattern.go +64 -64
  505. package/native/core/programmers/iterate/postfix_of_tuple.go +12 -12
  506. package/native/core/programmers/iterate/prune_object_properties.go +105 -105
  507. package/native/core/programmers/iterate/stringify_dynamic_properties.go +219 -219
  508. package/native/core/programmers/iterate/stringify_native.go +14 -14
  509. package/native/core/programmers/iterate/stringify_regular_properties.go +112 -112
  510. package/native/core/programmers/iterate/template_interpolation_tags_test.go +495 -495
  511. package/native/core/programmers/iterate/template_runtime_pattern.go +262 -262
  512. package/native/core/programmers/iterate/template_to_pattern.go +29 -29
  513. package/native/core/programmers/iterate/wrap_metadata_rest_tuple.go +23 -23
  514. package/native/core/programmers/json/JsonApplicationProgrammer.go +380 -380
  515. package/native/core/programmers/json/JsonAssertParseProgrammer.go +115 -115
  516. package/native/core/programmers/json/JsonAssertStringifyProgrammer.go +108 -108
  517. package/native/core/programmers/json/JsonIsParseProgrammer.go +162 -162
  518. package/native/core/programmers/json/JsonIsStringifyProgrammer.go +113 -113
  519. package/native/core/programmers/json/JsonSchemaProgrammer.go +94 -94
  520. package/native/core/programmers/json/JsonSchemasProgrammer.go +142 -142
  521. package/native/core/programmers/json/JsonStringifyProgrammer.go +1528 -1508
  522. package/native/core/programmers/json/JsonValidateParseProgrammer.go +105 -105
  523. package/native/core/programmers/json/JsonValidateStringifyProgrammer.go +126 -126
  524. package/native/core/programmers/json/index.go +1 -1
  525. package/native/core/programmers/json/json_schema_programmer_coverage_test.go +198 -198
  526. package/native/core/programmers/json/json_schemas_programmer_dedupes_bigint_diagnostics_test.go +37 -37
  527. package/native/core/programmers/json/json_schemas_programmer_rejects_bigint_native_test.go +29 -29
  528. package/native/core/programmers/json/json_stringify_programmer_coverage_test.go +422 -422
  529. package/native/core/programmers/llm/LlmApplicationProgrammer.go +526 -526
  530. package/native/core/programmers/llm/LlmCoerceProgrammer.go +109 -109
  531. package/native/core/programmers/llm/LlmControllerProgrammer.go +51 -51
  532. package/native/core/programmers/llm/LlmMetadataFactory.go +89 -89
  533. package/native/core/programmers/llm/LlmParametersProgrammer.go +141 -141
  534. package/native/core/programmers/llm/LlmParseProgrammer.go +121 -121
  535. package/native/core/programmers/llm/LlmSchemaProgrammer.go +902 -846
  536. package/native/core/programmers/llm/LlmStructuredOutputProgrammer.go +147 -147
  537. package/native/core/programmers/llm/index.go +1 -1
  538. package/native/core/programmers/llm/llm_application_programmer_coverage_test.go +166 -166
  539. package/native/core/programmers/llm/llm_schema_programmer_coverage_test.go +282 -282
  540. package/native/core/programmers/llm/llm_schema_programmer_dedupes_bigint_diagnostics_test.go +38 -38
  541. package/native/core/programmers/llm/llm_schema_programmer_rejects_bigint_native_test.go +30 -30
  542. package/native/core/programmers/llm/llm_schema_programmer_rejects_exclude_tag_in_strict_test.go +52 -52
  543. package/native/core/programmers/notations/NotationAssertGeneralProgrammer.go +107 -107
  544. package/native/core/programmers/notations/NotationGeneralProgrammer.go +1441 -1441
  545. package/native/core/programmers/notations/NotationIsGeneralProgrammer.go +112 -112
  546. package/native/core/programmers/notations/NotationValidateGeneralProgrammer.go +131 -131
  547. package/native/core/programmers/notations/index.go +1 -1
  548. package/native/core/programmers/notations/notation_general_helpers_test.go +395 -395
  549. package/native/core/programmers/notations/notation_general_programmer_snake_prefix_test.go +44 -44
  550. package/native/core/programmers/plain/PlainAssertClassifyProgrammer.go +111 -111
  551. package/native/core/programmers/plain/PlainAssertCloneProgrammer.go +102 -102
  552. package/native/core/programmers/plain/PlainAssertPruneProgrammer.go +117 -117
  553. package/native/core/programmers/plain/PlainClassifyProgrammer.go +2205 -2205
  554. package/native/core/programmers/plain/PlainCloneProgrammer.go +1254 -1254
  555. package/native/core/programmers/plain/PlainIsCloneProgrammer.go +117 -117
  556. package/native/core/programmers/plain/PlainIsPruneProgrammer.go +106 -106
  557. package/native/core/programmers/plain/PlainPruneProgrammer.go +837 -837
  558. package/native/core/programmers/plain/PlainValidateClassifyProgrammer.go +127 -127
  559. package/native/core/programmers/plain/PlainValidateCloneProgrammer.go +123 -123
  560. package/native/core/programmers/plain/PlainValidatePruneProgrammer.go +114 -114
  561. package/native/core/programmers/plain/index.go +1 -1
  562. package/native/core/programmers/plain/plain_programmer_helper_coverage_test.go +284 -284
  563. package/native/core/programmers/plain/plain_prune_programmer_branch_matrix_test.go +145 -145
  564. package/native/core/programmers/programmer_direct_helper_coverage_test.go +70 -70
  565. package/native/core/programmers/protobuf/ProtobufAssertDecodeProgrammer.go +125 -125
  566. package/native/core/programmers/protobuf/ProtobufAssertEncodeProgrammer.go +143 -143
  567. package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +861 -861
  568. package/native/core/programmers/protobuf/ProtobufEncodeProgrammer.go +1269 -1269
  569. package/native/core/programmers/protobuf/ProtobufIsDecodeProgrammer.go +122 -122
  570. package/native/core/programmers/protobuf/ProtobufIsEncodeProgrammer.go +115 -115
  571. package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +269 -269
  572. package/native/core/programmers/protobuf/ProtobufValidateDecodeProgrammer.go +111 -111
  573. package/native/core/programmers/protobuf/ProtobufValidateEncodeProgrammer.go +145 -145
  574. package/native/core/programmers/protobuf/index.go +1 -1
  575. package/native/core/programmers/protobuf/protobuf_programmer_helper_coverage_test.go +454 -454
  576. package/native/core/programmers/random_programmer_helper_coverage_test.go +367 -367
  577. package/native/core/programmers/random_programmer_min_items_tag_test.go +44 -44
  578. package/native/core/programmers/reflect/ReflectLiteralsProgrammer.go +125 -125
  579. package/native/core/schemas/index.go +1 -1
  580. package/native/core/schemas/metadata/IMetadataDictionary.go +8 -8
  581. package/native/core/schemas/metadata/IMetadataTypeTagSequence.go +53 -53
  582. package/native/core/schemas/metadata/MetadataAlias.go +36 -36
  583. package/native/core/schemas/metadata/MetadataAliasType.go +64 -64
  584. package/native/core/schemas/metadata/MetadataApplication.go +41 -41
  585. package/native/core/schemas/metadata/MetadataArray.go +36 -36
  586. package/native/core/schemas/metadata/MetadataArrayType.go +59 -59
  587. package/native/core/schemas/metadata/MetadataAtomic.go +69 -69
  588. package/native/core/schemas/metadata/MetadataCollection.go +698 -698
  589. package/native/core/schemas/metadata/MetadataComponents.go +122 -122
  590. package/native/core/schemas/metadata/MetadataConstant.go +47 -47
  591. package/native/core/schemas/metadata/MetadataConstantValue.go +97 -97
  592. package/native/core/schemas/metadata/MetadataEscaped.go +40 -40
  593. package/native/core/schemas/metadata/MetadataFunction.go +46 -46
  594. package/native/core/schemas/metadata/MetadataMap.go +45 -45
  595. package/native/core/schemas/metadata/MetadataNative.go +72 -72
  596. package/native/core/schemas/metadata/MetadataObject.go +36 -36
  597. package/native/core/schemas/metadata/MetadataObjectType.go +223 -223
  598. package/native/core/schemas/metadata/MetadataParameter.go +46 -46
  599. package/native/core/schemas/metadata/MetadataProperty.go +50 -50
  600. package/native/core/schemas/metadata/MetadataSchema.go +1485 -1485
  601. package/native/core/schemas/metadata/MetadataSet.go +41 -41
  602. package/native/core/schemas/metadata/MetadataTemplate.go +70 -70
  603. package/native/core/schemas/metadata/MetadataTuple.go +20 -20
  604. package/native/core/schemas/metadata/MetadataTupleType.go +69 -69
  605. package/native/core/schemas/metadata/index.go +1 -1
  606. package/native/core/schemas/metadata/metadata_object_type_required_literal_property_test.go +51 -51
  607. package/native/core/schemas/metadata/metadata_schema_covers_tag_matrix_test.go +125 -125
  608. package/native/core/schemas/metadata/metadata_schema_sole_literal_caches_pointer_test.go +38 -38
  609. package/native/core/schemas/metadata/schema_sequence_and_json_coverage_test.go +427 -427
  610. package/native/core/schemas/protobuf/IProtobufProperty.go +6 -6
  611. package/native/core/schemas/protobuf/IProtobufPropertyType.go +55 -55
  612. package/native/core/schemas/protobuf/IProtobufSchema.go +54 -54
  613. package/native/core/schemas/protobuf/index.go +1 -1
  614. package/native/core/schemas/protobuf/protobuf_marker_coverage_test.go +58 -58
  615. package/native/core/typings/Writable.go +5 -5
  616. package/native/core/utils/PatternUtil.go +57 -57
  617. package/native/core/utils/ProtobufNameEncoder.go +47 -47
  618. package/native/go.mod +31 -31
  619. package/native/go.sum +22 -22
  620. package/native/go.work +22 -22
  621. package/native/transform/CallExpressionTransformer.go +719 -719
  622. package/native/transform/FileTransformer.go +221 -221
  623. package/native/transform/ITransformProps.go +5 -5
  624. package/native/transform/ImportTransformer.go +285 -285
  625. package/native/transform/NodeTransformer.go +25 -25
  626. package/native/transform/TransformerError.go +11 -11
  627. package/native/transform/TypiaGenerator.go +171 -171
  628. package/native/transform/call_expression_transformer_registry_coverage_test.go +53 -53
  629. package/native/transform/call_expression_transformer_target_test.go +46 -46
  630. package/native/transform/features/AssertTransformer.go +39 -39
  631. package/native/transform/features/CreateAssertTransformer.go +39 -39
  632. package/native/transform/features/CreateIsTransformer.go +35 -35
  633. package/native/transform/features/CreateRandomTransformer.go +47 -47
  634. package/native/transform/features/CreateShallowTransformer.go +33 -33
  635. package/native/transform/features/CreateValidateTransformer.go +35 -35
  636. package/native/transform/features/IsTransformer.go +35 -35
  637. package/native/transform/features/RandomTransformer.go +54 -54
  638. package/native/transform/features/ShallowTransformer.go +65 -65
  639. package/native/transform/features/ValidateTransformer.go +35 -35
  640. package/native/transform/features/compare/CompareCoverTransformer.go +14 -14
  641. package/native/transform/features/compare/CompareCreateCoverTransformer.go +14 -14
  642. package/native/transform/features/compare/CompareCreateEqualTransformer.go +14 -14
  643. package/native/transform/features/compare/CompareCreateLessTransformer.go +14 -14
  644. package/native/transform/features/compare/CompareEqualTransformer.go +73 -73
  645. package/native/transform/features/compare/CompareLessTransformer.go +71 -71
  646. package/native/transform/features/feature_transformer_entry_coverage_test.go +59 -59
  647. package/native/transform/features/functional/FunctionalGenericTransformer.go +70 -70
  648. package/native/transform/features/http/CreateHttpAssertFormDataTransformer.go +22 -22
  649. package/native/transform/features/http/CreateHttpAssertHeadersTransformer.go +22 -22
  650. package/native/transform/features/http/CreateHttpAssertQueryTransformer.go +28 -28
  651. package/native/transform/features/http/CreateHttpFormDataTransformer.go +22 -22
  652. package/native/transform/features/http/CreateHttpHeadersTransformer.go +22 -22
  653. package/native/transform/features/http/CreateHttpIsFormDataTransformer.go +22 -22
  654. package/native/transform/features/http/CreateHttpIsHeadersTransformer.go +22 -22
  655. package/native/transform/features/http/CreateHttpIsQueryTransformer.go +28 -28
  656. package/native/transform/features/http/CreateHttpParameterTransformer.go +22 -22
  657. package/native/transform/features/http/CreateHttpQueryTransformer.go +28 -28
  658. package/native/transform/features/http/CreateHttpValidateFormDataTransformer.go +22 -22
  659. package/native/transform/features/http/CreateHttpValidateHeadersTransformer.go +22 -22
  660. package/native/transform/features/http/CreateHttpValidateQueryTransformer.go +28 -28
  661. package/native/transform/features/http/HttpAssertFormDataTransformer.go +22 -22
  662. package/native/transform/features/http/HttpAssertHeadersTransformer.go +22 -22
  663. package/native/transform/features/http/HttpAssertQueryTransformer.go +28 -28
  664. package/native/transform/features/http/HttpFormDataTransformer.go +22 -22
  665. package/native/transform/features/http/HttpHeadersTransformer.go +22 -22
  666. package/native/transform/features/http/HttpIsFormDataTransformer.go +22 -22
  667. package/native/transform/features/http/HttpIsHeadersTransformer.go +22 -22
  668. package/native/transform/features/http/HttpIsQueryTransformer.go +28 -28
  669. package/native/transform/features/http/HttpParameterTransformer.go +22 -22
  670. package/native/transform/features/http/HttpQueryTransformer.go +28 -28
  671. package/native/transform/features/http/HttpValidateFormDataTransformer.go +22 -22
  672. package/native/transform/features/http/HttpValidateHeadersTransformer.go +22 -22
  673. package/native/transform/features/http/HttpValidateQueryTransformer.go +28 -28
  674. package/native/transform/features/http/http_transformer_entry_coverage_test.go +65 -65
  675. package/native/transform/features/json/JsonApplicationTransformer.go +75 -75
  676. package/native/transform/features/json/JsonAssertParseTransformer.go +22 -22
  677. package/native/transform/features/json/JsonAssertStringifyTransformer.go +22 -22
  678. package/native/transform/features/json/JsonCreateAssertParseTransformer.go +22 -22
  679. package/native/transform/features/json/JsonCreateAssertStringifyTransformer.go +22 -22
  680. package/native/transform/features/json/JsonCreateIsParseTransformer.go +22 -22
  681. package/native/transform/features/json/JsonCreateIsStringifyTransformer.go +22 -22
  682. package/native/transform/features/json/JsonCreateStringifyTransformer.go +22 -22
  683. package/native/transform/features/json/JsonCreateValidateParseTransformer.go +22 -22
  684. package/native/transform/features/json/JsonCreateValidateStringifyProgrammer.go +22 -22
  685. package/native/transform/features/json/JsonIsParseTransformer.go +22 -22
  686. package/native/transform/features/json/JsonIsStringifyTransformer.go +22 -22
  687. package/native/transform/features/json/JsonSchemaTransformer.go +175 -175
  688. package/native/transform/features/json/JsonSchemasTransformer.go +109 -109
  689. package/native/transform/features/json/JsonStringifyTransformer.go +22 -22
  690. package/native/transform/features/json/JsonValidateParseTransformer.go +22 -22
  691. package/native/transform/features/json/JsonValidateStringifyTransformer.go +22 -22
  692. package/native/transform/features/json/json_transformer_entry_coverage_test.go +56 -56
  693. package/native/transform/features/llm/LlmApplicationTransformer.go +54 -54
  694. package/native/transform/features/llm/LlmCoerceTransformer.go +63 -63
  695. package/native/transform/features/llm/LlmControllerTransformer.go +59 -59
  696. package/native/transform/features/llm/LlmCreateCoerceTransformer.go +54 -54
  697. package/native/transform/features/llm/LlmCreateParseTransformer.go +54 -54
  698. package/native/transform/features/llm/LlmParametersTransformer.go +49 -49
  699. package/native/transform/features/llm/LlmParseTransformer.go +63 -63
  700. package/native/transform/features/llm/LlmSchemaTransformer.go +167 -167
  701. package/native/transform/features/llm/LlmStructuredOutputTransformer.go +55 -55
  702. package/native/transform/features/llm/llm_transformer_entry_coverage_test.go +48 -48
  703. package/native/transform/features/notations/NotationAssertGeneralTransformer.go +27 -27
  704. package/native/transform/features/notations/NotationCreateAssertGeneralTransformer.go +27 -27
  705. package/native/transform/features/notations/NotationCreateGeneralTransformer.go +27 -27
  706. package/native/transform/features/notations/NotationCreateIsGeneralTransformer.go +27 -27
  707. package/native/transform/features/notations/NotationCreateValidateGeneralTransformer.go +27 -27
  708. package/native/transform/features/notations/NotationGeneralTransformer.go +36 -36
  709. package/native/transform/features/notations/NotationIsGeneralTransformer.go +27 -27
  710. package/native/transform/features/notations/NotationValidateGeneralTransformer.go +27 -27
  711. package/native/transform/features/notations/notation_transformer_entry_coverage_test.go +58 -58
  712. package/native/transform/features/plain/PlainAssertClassifyTransformer.go +22 -22
  713. package/native/transform/features/plain/PlainAssertCloneTransformer.go +22 -22
  714. package/native/transform/features/plain/PlainAssertPruneTransformer.go +22 -22
  715. package/native/transform/features/plain/PlainClassifyTransformer.go +22 -22
  716. package/native/transform/features/plain/PlainCloneTransformer.go +22 -22
  717. package/native/transform/features/plain/PlainCreateAssertClassifyTransformer.go +22 -22
  718. package/native/transform/features/plain/PlainCreateAssertCloneTransformer.go +22 -22
  719. package/native/transform/features/plain/PlainCreateAssertPruneTransformer.go +22 -22
  720. package/native/transform/features/plain/PlainCreateClassifyTransformer.go +22 -22
  721. package/native/transform/features/plain/PlainCreateCloneTransformer.go +22 -22
  722. package/native/transform/features/plain/PlainCreateIsCloneTransformer.go +22 -22
  723. package/native/transform/features/plain/PlainCreateIsPruneTransformer.go +22 -22
  724. package/native/transform/features/plain/PlainCreatePruneTransformer.go +22 -22
  725. package/native/transform/features/plain/PlainCreateValidateClassifyTransformer.go +22 -22
  726. package/native/transform/features/plain/PlainCreateValidateCloneTransformer.go +22 -22
  727. package/native/transform/features/plain/PlainCreateValidatePruneTransformer.go +22 -22
  728. package/native/transform/features/plain/PlainIsCloneTransformer.go +22 -22
  729. package/native/transform/features/plain/PlainIsPruneTransformer.go +22 -22
  730. package/native/transform/features/plain/PlainPruneTransformer.go +22 -22
  731. package/native/transform/features/plain/PlainValidateClassifyTransformer.go +22 -22
  732. package/native/transform/features/plain/PlainValidateCloneTransformer.go +22 -22
  733. package/native/transform/features/plain/PlainValidatePruneTransformer.go +22 -22
  734. package/native/transform/features/plain/plain_transformer_entry_coverage_test.go +61 -61
  735. package/native/transform/features/protobuf/ProtobufAssertDecodeTransformer.go +22 -22
  736. package/native/transform/features/protobuf/ProtobufAssertEncodeTransformer.go +22 -22
  737. package/native/transform/features/protobuf/ProtobufCreateAssertDecodeTransformer.go +22 -22
  738. package/native/transform/features/protobuf/ProtobufCreateAssertEncodeTransformer.go +22 -22
  739. package/native/transform/features/protobuf/ProtobufCreateDecodeTransformer.go +22 -22
  740. package/native/transform/features/protobuf/ProtobufCreateEncodeTransformer.go +22 -22
  741. package/native/transform/features/protobuf/ProtobufCreateIsDecodeTransformer.go +22 -22
  742. package/native/transform/features/protobuf/ProtobufCreateIsEncodeTransformer.go +22 -22
  743. package/native/transform/features/protobuf/ProtobufCreateValidateDecodeTransformer.go +22 -22
  744. package/native/transform/features/protobuf/ProtobufCreateValidateEncodeTransformer.go +22 -22
  745. package/native/transform/features/protobuf/ProtobufDecodeTransformer.go +22 -22
  746. package/native/transform/features/protobuf/ProtobufEncodeTransformer.go +22 -22
  747. package/native/transform/features/protobuf/ProtobufIsDecodeTransformer.go +22 -22
  748. package/native/transform/features/protobuf/ProtobufIsEncodeTransformer.go +22 -22
  749. package/native/transform/features/protobuf/ProtobufMessageTransformer.go +31 -31
  750. package/native/transform/features/protobuf/ProtobufValidateDecodeTransformer.go +22 -22
  751. package/native/transform/features/protobuf/ProtobufValidateEncodeTransformer.go +22 -22
  752. package/native/transform/features/protobuf/protobuf_transformer_entry_coverage_test.go +56 -56
  753. package/native/transform/features/reflect/ReflectLiteralsTransformer.go +32 -32
  754. package/native/transform/features/reflect/ReflectMetadataTransformer.go +73 -73
  755. package/native/transform/features/reflect/ReflectNameTransformer.go +100 -100
  756. package/native/transform/features/reflect/ReflectSchemaTransformer.go +153 -153
  757. package/native/transform/features/reflect/ReflectSchemasTransformer.go +68 -68
  758. package/native/transform/features/reflect/reflect_metadata_transformer_edge_branches_test.go +55 -55
  759. package/native/transform/features/reflect/reflect_transformer_entry_coverage_test.go +47 -47
  760. package/native/transform/file_transformer_coverage_test.go +94 -94
  761. package/native/transform/import_transformer_coverage_test.go +153 -153
  762. package/native/transform/index.go +1 -1
  763. package/native/transform/internal/GenericTransformer.go +236 -236
  764. package/native/transform/transform.go +57 -57
  765. package/native/transform/typia_generator_helpers_coverage_test.go +166 -166
  766. package/package.json +8 -15
  767. package/src/executable/TypiaGenerateWizard.ts +5 -1
  768. package/src/executable/generate/ttsc.ts +3 -4
  769. package/src/executable/typia.ts +8 -4
  770. package/src/internal/_ProtobufReader.ts +187 -187
  771. package/src/internal/_randomArray.ts +34 -34
  772. package/src/internal/_randomString.ts +30 -30
  773. package/src/re-exports.ts +8 -3
  774. package/src/transform.ts +21 -21
  775. package/lib/TypeGuardError2.mjs +0 -55
  776. package/lib/TypeGuardError2.mjs.map +0 -1
  777. package/lib/_virtual/NoTransformConfigurationError.mjs +0 -4
  778. package/lib/_virtual/NoTransformConfigurationError.mjs.map +0 -1
  779. package/lib/_virtual/TypeGuardError.mjs +0 -4
  780. package/lib/_virtual/TypeGuardError.mjs.map +0 -1
  781. package/lib/_virtual/TypiaGenerateWizard.mjs +0 -4
  782. package/lib/_virtual/TypiaGenerateWizard.mjs.map +0 -1
  783. package/lib/_virtual/_IProtobufWriter.mjs +0 -4
  784. package/lib/_virtual/_IProtobufWriter.mjs.map +0 -1
  785. package/lib/_virtual/_ProtobufReader.mjs +0 -4
  786. package/lib/_virtual/_ProtobufReader.mjs.map +0 -1
  787. package/lib/_virtual/_ProtobufSizer.mjs +0 -4
  788. package/lib/_virtual/_ProtobufSizer.mjs.map +0 -1
  789. package/lib/_virtual/_ProtobufWriter.mjs +0 -4
  790. package/lib/_virtual/_ProtobufWriter.mjs.map +0 -1
  791. package/lib/_virtual/__notationCapitalize.mjs +0 -4
  792. package/lib/_virtual/__notationCapitalize.mjs.map +0 -1
  793. package/lib/_virtual/__notationUnsnake.mjs +0 -4
  794. package/lib/_virtual/__notationUnsnake.mjs.map +0 -1
  795. package/lib/_virtual/_accessExpressionAsString.mjs +0 -4
  796. package/lib/_virtual/_accessExpressionAsString.mjs.map +0 -1
  797. package/lib/_virtual/_assertGuard.mjs +0 -4
  798. package/lib/_virtual/_assertGuard.mjs.map +0 -1
  799. package/lib/_virtual/_coerceLlmArguments.mjs +0 -4
  800. package/lib/_virtual/_coerceLlmArguments.mjs.map +0 -1
  801. package/lib/_virtual/_commander.mjs +0 -7
  802. package/lib/_virtual/_commander.mjs.map +0 -1
  803. package/lib/_virtual/_commonjsHelpers.mjs +0 -35
  804. package/lib/_virtual/_commonjsHelpers.mjs.map +0 -1
  805. package/lib/_virtual/_createStandardSchema.mjs +0 -4
  806. package/lib/_virtual/_createStandardSchema.mjs.map +0 -1
  807. package/lib/_virtual/_functionalTypeGuardErrorFactory.mjs +0 -4
  808. package/lib/_virtual/_functionalTypeGuardErrorFactory.mjs.map +0 -1
  809. package/lib/_virtual/_httpFormDataReadArray.mjs +0 -4
  810. package/lib/_virtual/_httpFormDataReadArray.mjs.map +0 -1
  811. package/lib/_virtual/_httpFormDataReadBigint.mjs +0 -4
  812. package/lib/_virtual/_httpFormDataReadBigint.mjs.map +0 -1
  813. package/lib/_virtual/_httpFormDataReadBlob.mjs +0 -4
  814. package/lib/_virtual/_httpFormDataReadBlob.mjs.map +0 -1
  815. package/lib/_virtual/_httpFormDataReadBoolean.mjs +0 -4
  816. package/lib/_virtual/_httpFormDataReadBoolean.mjs.map +0 -1
  817. package/lib/_virtual/_httpFormDataReadFile.mjs +0 -4
  818. package/lib/_virtual/_httpFormDataReadFile.mjs.map +0 -1
  819. package/lib/_virtual/_httpFormDataReadNumber.mjs +0 -4
  820. package/lib/_virtual/_httpFormDataReadNumber.mjs.map +0 -1
  821. package/lib/_virtual/_httpFormDataReadString.mjs +0 -4
  822. package/lib/_virtual/_httpFormDataReadString.mjs.map +0 -1
  823. package/lib/_virtual/_httpHeaderReadBigint.mjs +0 -4
  824. package/lib/_virtual/_httpHeaderReadBigint.mjs.map +0 -1
  825. package/lib/_virtual/_httpHeaderReadBoolean.mjs +0 -4
  826. package/lib/_virtual/_httpHeaderReadBoolean.mjs.map +0 -1
  827. package/lib/_virtual/_httpHeaderReadNumber.mjs +0 -4
  828. package/lib/_virtual/_httpHeaderReadNumber.mjs.map +0 -1
  829. package/lib/_virtual/_httpParameterReadBigint.mjs +0 -4
  830. package/lib/_virtual/_httpParameterReadBigint.mjs.map +0 -1
  831. package/lib/_virtual/_httpParameterReadBoolean.mjs +0 -4
  832. package/lib/_virtual/_httpParameterReadBoolean.mjs.map +0 -1
  833. package/lib/_virtual/_httpParameterReadNumber.mjs +0 -4
  834. package/lib/_virtual/_httpParameterReadNumber.mjs.map +0 -1
  835. package/lib/_virtual/_httpParameterReadString.mjs +0 -4
  836. package/lib/_virtual/_httpParameterReadString.mjs.map +0 -1
  837. package/lib/_virtual/_httpQueryParseURLSearchParams.mjs +0 -4
  838. package/lib/_virtual/_httpQueryParseURLSearchParams.mjs.map +0 -1
  839. package/lib/_virtual/_httpQueryReadArray.mjs +0 -4
  840. package/lib/_virtual/_httpQueryReadArray.mjs.map +0 -1
  841. package/lib/_virtual/_httpQueryReadBigint.mjs +0 -4
  842. package/lib/_virtual/_httpQueryReadBigint.mjs.map +0 -1
  843. package/lib/_virtual/_httpQueryReadBoolean.mjs +0 -4
  844. package/lib/_virtual/_httpQueryReadBoolean.mjs.map +0 -1
  845. package/lib/_virtual/_httpQueryReadNumber.mjs +0 -4
  846. package/lib/_virtual/_httpQueryReadNumber.mjs.map +0 -1
  847. package/lib/_virtual/_httpQueryReadString.mjs +0 -4
  848. package/lib/_virtual/_httpQueryReadString.mjs.map +0 -1
  849. package/lib/_virtual/_inquirer.mjs +0 -7
  850. package/lib/_virtual/_inquirer.mjs.map +0 -1
  851. package/lib/_virtual/_isBetween.mjs +0 -4
  852. package/lib/_virtual/_isBetween.mjs.map +0 -1
  853. package/lib/_virtual/_isBigintString.mjs +0 -4
  854. package/lib/_virtual/_isBigintString.mjs.map +0 -1
  855. package/lib/_virtual/_isFormatByte.mjs +0 -4
  856. package/lib/_virtual/_isFormatByte.mjs.map +0 -1
  857. package/lib/_virtual/_isFormatDate.mjs +0 -4
  858. package/lib/_virtual/_isFormatDate.mjs.map +0 -1
  859. package/lib/_virtual/_isFormatDateTime.mjs +0 -4
  860. package/lib/_virtual/_isFormatDateTime.mjs.map +0 -1
  861. package/lib/_virtual/_isFormatDuration.mjs +0 -4
  862. package/lib/_virtual/_isFormatDuration.mjs.map +0 -1
  863. package/lib/_virtual/_isFormatEmail.mjs +0 -4
  864. package/lib/_virtual/_isFormatEmail.mjs.map +0 -1
  865. package/lib/_virtual/_isFormatHostname.mjs +0 -4
  866. package/lib/_virtual/_isFormatHostname.mjs.map +0 -1
  867. package/lib/_virtual/_isFormatIdnEmail.mjs +0 -4
  868. package/lib/_virtual/_isFormatIdnEmail.mjs.map +0 -1
  869. package/lib/_virtual/_isFormatIdnHostname.mjs +0 -4
  870. package/lib/_virtual/_isFormatIdnHostname.mjs.map +0 -1
  871. package/lib/_virtual/_isFormatIpv4.mjs +0 -4
  872. package/lib/_virtual/_isFormatIpv4.mjs.map +0 -1
  873. package/lib/_virtual/_isFormatIpv6.mjs +0 -4
  874. package/lib/_virtual/_isFormatIpv6.mjs.map +0 -1
  875. package/lib/_virtual/_isFormatIri.mjs +0 -4
  876. package/lib/_virtual/_isFormatIri.mjs.map +0 -1
  877. package/lib/_virtual/_isFormatIriReference.mjs +0 -4
  878. package/lib/_virtual/_isFormatIriReference.mjs.map +0 -1
  879. package/lib/_virtual/_isFormatJsonPointer.mjs +0 -4
  880. package/lib/_virtual/_isFormatJsonPointer.mjs.map +0 -1
  881. package/lib/_virtual/_isFormatPassword.mjs +0 -4
  882. package/lib/_virtual/_isFormatPassword.mjs.map +0 -1
  883. package/lib/_virtual/_isFormatRegex.mjs +0 -4
  884. package/lib/_virtual/_isFormatRegex.mjs.map +0 -1
  885. package/lib/_virtual/_isFormatRelativeJsonPointer.mjs +0 -4
  886. package/lib/_virtual/_isFormatRelativeJsonPointer.mjs.map +0 -1
  887. package/lib/_virtual/_isFormatTime.mjs +0 -4
  888. package/lib/_virtual/_isFormatTime.mjs.map +0 -1
  889. package/lib/_virtual/_isFormatUri.mjs +0 -4
  890. package/lib/_virtual/_isFormatUri.mjs.map +0 -1
  891. package/lib/_virtual/_isFormatUriReference.mjs +0 -4
  892. package/lib/_virtual/_isFormatUriReference.mjs.map +0 -1
  893. package/lib/_virtual/_isFormatUriTemplate.mjs +0 -4
  894. package/lib/_virtual/_isFormatUriTemplate.mjs.map +0 -1
  895. package/lib/_virtual/_isFormatUrl.mjs +0 -4
  896. package/lib/_virtual/_isFormatUrl.mjs.map +0 -1
  897. package/lib/_virtual/_isFormatUuid.mjs +0 -4
  898. package/lib/_virtual/_isFormatUuid.mjs.map +0 -1
  899. package/lib/_virtual/_isTypeFloat.mjs +0 -4
  900. package/lib/_virtual/_isTypeFloat.mjs.map +0 -1
  901. package/lib/_virtual/_isTypeInt16.mjs +0 -4
  902. package/lib/_virtual/_isTypeInt16.mjs.map +0 -1
  903. package/lib/_virtual/_isTypeInt32.mjs +0 -4
  904. package/lib/_virtual/_isTypeInt32.mjs.map +0 -1
  905. package/lib/_virtual/_isTypeInt64.mjs +0 -4
  906. package/lib/_virtual/_isTypeInt64.mjs.map +0 -1
  907. package/lib/_virtual/_isTypeInt8.mjs +0 -4
  908. package/lib/_virtual/_isTypeInt8.mjs.map +0 -1
  909. package/lib/_virtual/_isTypeUint16.mjs +0 -4
  910. package/lib/_virtual/_isTypeUint16.mjs.map +0 -1
  911. package/lib/_virtual/_isTypeUint32.mjs +0 -4
  912. package/lib/_virtual/_isTypeUint32.mjs.map +0 -1
  913. package/lib/_virtual/_isTypeUint64.mjs +0 -4
  914. package/lib/_virtual/_isTypeUint64.mjs.map +0 -1
  915. package/lib/_virtual/_isTypeUint8.mjs +0 -4
  916. package/lib/_virtual/_isTypeUint8.mjs.map +0 -1
  917. package/lib/_virtual/_isUniqueItems.mjs +0 -4
  918. package/lib/_virtual/_isUniqueItems.mjs.map +0 -1
  919. package/lib/_virtual/_jsonStringifyNumber.mjs +0 -4
  920. package/lib/_virtual/_jsonStringifyNumber.mjs.map +0 -1
  921. package/lib/_virtual/_jsonStringifyRest.mjs +0 -4
  922. package/lib/_virtual/_jsonStringifyRest.mjs.map +0 -1
  923. package/lib/_virtual/_jsonStringifyString.mjs +0 -4
  924. package/lib/_virtual/_jsonStringifyString.mjs.map +0 -1
  925. package/lib/_virtual/_jsonStringifyTail.mjs +0 -4
  926. package/lib/_virtual/_jsonStringifyTail.mjs.map +0 -1
  927. package/lib/_virtual/_llmApplicationFinalize.mjs +0 -4
  928. package/lib/_virtual/_llmApplicationFinalize.mjs.map +0 -1
  929. package/lib/_virtual/_node_child_process.mjs +0 -7
  930. package/lib/_virtual/_node_child_process.mjs.map +0 -1
  931. package/lib/_virtual/_node_fs.mjs +0 -7
  932. package/lib/_virtual/_node_fs.mjs.map +0 -1
  933. package/lib/_virtual/_node_module.mjs +0 -7
  934. package/lib/_virtual/_node_module.mjs.map +0 -1
  935. package/lib/_virtual/_node_path.mjs +0 -7
  936. package/lib/_virtual/_node_path.mjs.map +0 -1
  937. package/lib/_virtual/_notationAny.mjs +0 -4
  938. package/lib/_virtual/_notationAny.mjs.map +0 -1
  939. package/lib/_virtual/_notationCamel.mjs +0 -4
  940. package/lib/_virtual/_notationCamel.mjs.map +0 -1
  941. package/lib/_virtual/_notationPascal.mjs +0 -4
  942. package/lib/_virtual/_notationPascal.mjs.map +0 -1
  943. package/lib/_virtual/_notationSnake.mjs +0 -4
  944. package/lib/_virtual/_notationSnake.mjs.map +0 -1
  945. package/lib/_virtual/_parseLlmArguments.mjs +0 -4
  946. package/lib/_virtual/_parseLlmArguments.mjs.map +0 -1
  947. package/lib/_virtual/_plainCloneAny.mjs +0 -4
  948. package/lib/_virtual/_plainCloneAny.mjs.map +0 -1
  949. package/lib/_virtual/_randexp.mjs +0 -7
  950. package/lib/_virtual/_randexp.mjs.map +0 -1
  951. package/lib/_virtual/_randomArray.mjs +0 -4
  952. package/lib/_virtual/_randomArray.mjs.map +0 -1
  953. package/lib/_virtual/_randomBigint.mjs +0 -4
  954. package/lib/_virtual/_randomBigint.mjs.map +0 -1
  955. package/lib/_virtual/_randomBoolean.mjs +0 -4
  956. package/lib/_virtual/_randomBoolean.mjs.map +0 -1
  957. package/lib/_virtual/_randomFormatByte.mjs +0 -4
  958. package/lib/_virtual/_randomFormatByte.mjs.map +0 -1
  959. package/lib/_virtual/_randomFormatDate.mjs +0 -4
  960. package/lib/_virtual/_randomFormatDate.mjs.map +0 -1
  961. package/lib/_virtual/_randomFormatDatetime.mjs +0 -4
  962. package/lib/_virtual/_randomFormatDatetime.mjs.map +0 -1
  963. package/lib/_virtual/_randomFormatDuration.mjs +0 -4
  964. package/lib/_virtual/_randomFormatDuration.mjs.map +0 -1
  965. package/lib/_virtual/_randomFormatEmail.mjs +0 -4
  966. package/lib/_virtual/_randomFormatEmail.mjs.map +0 -1
  967. package/lib/_virtual/_randomFormatHostname.mjs +0 -4
  968. package/lib/_virtual/_randomFormatHostname.mjs.map +0 -1
  969. package/lib/_virtual/_randomFormatIdnEmail.mjs +0 -4
  970. package/lib/_virtual/_randomFormatIdnEmail.mjs.map +0 -1
  971. package/lib/_virtual/_randomFormatIdnHostname.mjs +0 -4
  972. package/lib/_virtual/_randomFormatIdnHostname.mjs.map +0 -1
  973. package/lib/_virtual/_randomFormatIpv4.mjs +0 -4
  974. package/lib/_virtual/_randomFormatIpv4.mjs.map +0 -1
  975. package/lib/_virtual/_randomFormatIpv6.mjs +0 -4
  976. package/lib/_virtual/_randomFormatIpv6.mjs.map +0 -1
  977. package/lib/_virtual/_randomFormatIri.mjs +0 -4
  978. package/lib/_virtual/_randomFormatIri.mjs.map +0 -1
  979. package/lib/_virtual/_randomFormatIriReference.mjs +0 -4
  980. package/lib/_virtual/_randomFormatIriReference.mjs.map +0 -1
  981. package/lib/_virtual/_randomFormatJsonPointer.mjs +0 -4
  982. package/lib/_virtual/_randomFormatJsonPointer.mjs.map +0 -1
  983. package/lib/_virtual/_randomFormatPassword.mjs +0 -4
  984. package/lib/_virtual/_randomFormatPassword.mjs.map +0 -1
  985. package/lib/_virtual/_randomFormatRegex.mjs +0 -4
  986. package/lib/_virtual/_randomFormatRegex.mjs.map +0 -1
  987. package/lib/_virtual/_randomFormatRelativeJsonPointer.mjs +0 -4
  988. package/lib/_virtual/_randomFormatRelativeJsonPointer.mjs.map +0 -1
  989. package/lib/_virtual/_randomFormatTime.mjs +0 -4
  990. package/lib/_virtual/_randomFormatTime.mjs.map +0 -1
  991. package/lib/_virtual/_randomFormatUri.mjs +0 -4
  992. package/lib/_virtual/_randomFormatUri.mjs.map +0 -1
  993. package/lib/_virtual/_randomFormatUriReference.mjs +0 -4
  994. package/lib/_virtual/_randomFormatUriReference.mjs.map +0 -1
  995. package/lib/_virtual/_randomFormatUriTemplate.mjs +0 -4
  996. package/lib/_virtual/_randomFormatUriTemplate.mjs.map +0 -1
  997. package/lib/_virtual/_randomFormatUrl.mjs +0 -4
  998. package/lib/_virtual/_randomFormatUrl.mjs.map +0 -1
  999. package/lib/_virtual/_randomFormatUuid.mjs +0 -4
  1000. package/lib/_virtual/_randomFormatUuid.mjs.map +0 -1
  1001. package/lib/_virtual/_randomInteger.mjs +0 -4
  1002. package/lib/_virtual/_randomInteger.mjs.map +0 -1
  1003. package/lib/_virtual/_randomNumber.mjs +0 -4
  1004. package/lib/_virtual/_randomNumber.mjs.map +0 -1
  1005. package/lib/_virtual/_randomPattern.mjs +0 -4
  1006. package/lib/_virtual/_randomPattern.mjs.map +0 -1
  1007. package/lib/_virtual/_randomPick.mjs +0 -4
  1008. package/lib/_virtual/_randomPick.mjs.map +0 -1
  1009. package/lib/_virtual/_randomString.mjs +0 -4
  1010. package/lib/_virtual/_randomString.mjs.map +0 -1
  1011. package/lib/_virtual/_throwTypeGuardError.mjs +0 -4
  1012. package/lib/_virtual/_throwTypeGuardError.mjs.map +0 -1
  1013. package/lib/_virtual/_tinyglobby.mjs +0 -7
  1014. package/lib/_virtual/_tinyglobby.mjs.map +0 -1
  1015. package/lib/_virtual/_validateReport.mjs +0 -4
  1016. package/lib/_virtual/_validateReport.mjs.map +0 -1
  1017. package/lib/_virtual/compare.mjs +0 -4
  1018. package/lib/_virtual/compare.mjs.map +0 -1
  1019. package/lib/_virtual/functional.mjs +0 -4
  1020. package/lib/_virtual/functional.mjs.map +0 -1
  1021. package/lib/_virtual/http.mjs +0 -4
  1022. package/lib/_virtual/http.mjs.map +0 -1
  1023. package/lib/_virtual/index.mjs +0 -4
  1024. package/lib/_virtual/index.mjs.map +0 -1
  1025. package/lib/_virtual/json.mjs +0 -4
  1026. package/lib/_virtual/json.mjs.map +0 -1
  1027. package/lib/_virtual/llm.mjs +0 -4
  1028. package/lib/_virtual/llm.mjs.map +0 -1
  1029. package/lib/_virtual/module.mjs +0 -4
  1030. package/lib/_virtual/module.mjs.map +0 -1
  1031. package/lib/_virtual/notations.mjs +0 -4
  1032. package/lib/_virtual/notations.mjs.map +0 -1
  1033. package/lib/_virtual/plain.mjs +0 -4
  1034. package/lib/_virtual/plain.mjs.map +0 -1
  1035. package/lib/_virtual/protobuf.mjs +0 -4
  1036. package/lib/_virtual/protobuf.mjs.map +0 -1
  1037. package/lib/_virtual/re-exports.mjs +0 -4
  1038. package/lib/_virtual/re-exports.mjs.map +0 -1
  1039. package/lib/_virtual/reflect.mjs +0 -4
  1040. package/lib/_virtual/reflect.mjs.map +0 -1
  1041. package/lib/_virtual/transform.mjs +0 -4
  1042. package/lib/_virtual/transform.mjs.map +0 -1
  1043. package/lib/_virtual/ttsc.mjs +0 -4
  1044. package/lib/_virtual/ttsc.mjs.map +0 -1
  1045. package/lib/_virtual/typia.mjs +0 -4
  1046. package/lib/_virtual/typia.mjs.map +0 -1
  1047. package/lib/compare2.mjs +0 -39
  1048. package/lib/compare2.mjs.map +0 -1
  1049. package/lib/executable/TypiaGenerateWizard2.mjs +0 -719
  1050. package/lib/executable/TypiaGenerateWizard2.mjs.map +0 -1
  1051. package/lib/executable/generate/ttsc2.mjs +0 -56
  1052. package/lib/executable/generate/ttsc2.mjs.map +0 -1
  1053. package/lib/executable/typia2.mjs +0 -88
  1054. package/lib/executable/typia2.mjs.map +0 -1
  1055. package/lib/functional2.mjs +0 -99
  1056. package/lib/functional2.mjs.map +0 -1
  1057. package/lib/http2.mjs +0 -139
  1058. package/lib/http2.mjs.map +0 -1
  1059. package/lib/index2.mjs +0 -53
  1060. package/lib/index2.mjs.map +0 -1
  1061. package/lib/internal/_IProtobufWriter.mjs.map +0 -1
  1062. package/lib/internal/_IProtobufWriter2.mjs +0 -6
  1063. package/lib/internal/_IProtobufWriter2.mjs.map +0 -1
  1064. package/lib/internal/_ProtobufReader2.mjs +0 -169
  1065. package/lib/internal/_ProtobufReader2.mjs.map +0 -1
  1066. package/lib/internal/_ProtobufSizer2.mjs +0 -119
  1067. package/lib/internal/_ProtobufSizer2.mjs.map +0 -1
  1068. package/lib/internal/_ProtobufWriter2.mjs +0 -107
  1069. package/lib/internal/_ProtobufWriter2.mjs.map +0 -1
  1070. package/lib/internal/_accessExpressionAsString2.mjs +0 -49
  1071. package/lib/internal/_accessExpressionAsString2.mjs.map +0 -1
  1072. package/lib/internal/_assertGuard2.mjs +0 -20
  1073. package/lib/internal/_assertGuard2.mjs.map +0 -1
  1074. package/lib/internal/_coerceLlmArguments2.mjs +0 -11
  1075. package/lib/internal/_coerceLlmArguments2.mjs.map +0 -1
  1076. package/lib/internal/_createStandardSchema2.mjs +0 -138
  1077. package/lib/internal/_createStandardSchema2.mjs.map +0 -1
  1078. package/lib/internal/_functionalTypeGuardErrorFactory2.mjs +0 -12
  1079. package/lib/internal/_functionalTypeGuardErrorFactory2.mjs.map +0 -1
  1080. package/lib/internal/_httpFormDataReadArray2.mjs +0 -9
  1081. package/lib/internal/_httpFormDataReadArray2.mjs.map +0 -1
  1082. package/lib/internal/_httpFormDataReadBigint2.mjs +0 -23
  1083. package/lib/internal/_httpFormDataReadBigint2.mjs.map +0 -1
  1084. package/lib/internal/_httpFormDataReadBlob2.mjs +0 -15
  1085. package/lib/internal/_httpFormDataReadBlob2.mjs.map +0 -1
  1086. package/lib/internal/_httpFormDataReadBoolean2.mjs +0 -21
  1087. package/lib/internal/_httpFormDataReadBoolean2.mjs.map +0 -1
  1088. package/lib/internal/_httpFormDataReadFile2.mjs +0 -15
  1089. package/lib/internal/_httpFormDataReadFile2.mjs.map +0 -1
  1090. package/lib/internal/_httpFormDataReadNumber2.mjs +0 -19
  1091. package/lib/internal/_httpFormDataReadNumber2.mjs.map +0 -1
  1092. package/lib/internal/_httpFormDataReadString2.mjs +0 -15
  1093. package/lib/internal/_httpFormDataReadString2.mjs.map +0 -1
  1094. package/lib/internal/_httpHeaderReadBigint2.mjs +0 -17
  1095. package/lib/internal/_httpHeaderReadBigint2.mjs.map +0 -1
  1096. package/lib/internal/_httpHeaderReadBoolean2.mjs +0 -15
  1097. package/lib/internal/_httpHeaderReadBoolean2.mjs.map +0 -1
  1098. package/lib/internal/_httpHeaderReadNumber2.mjs +0 -13
  1099. package/lib/internal/_httpHeaderReadNumber2.mjs.map +0 -1
  1100. package/lib/internal/_httpParameterReadBigint2.mjs +0 -17
  1101. package/lib/internal/_httpParameterReadBigint2.mjs.map +0 -1
  1102. package/lib/internal/_httpParameterReadBoolean2.mjs +0 -15
  1103. package/lib/internal/_httpParameterReadBoolean2.mjs.map +0 -1
  1104. package/lib/internal/_httpParameterReadNumber2.mjs +0 -13
  1105. package/lib/internal/_httpParameterReadNumber2.mjs.map +0 -1
  1106. package/lib/internal/_httpParameterReadString2.mjs +0 -9
  1107. package/lib/internal/_httpParameterReadString2.mjs.map +0 -1
  1108. package/lib/internal/_httpQueryParseURLSearchParams2.mjs +0 -16
  1109. package/lib/internal/_httpQueryParseURLSearchParams2.mjs.map +0 -1
  1110. package/lib/internal/_httpQueryReadArray2.mjs +0 -9
  1111. package/lib/internal/_httpQueryReadArray2.mjs.map +0 -1
  1112. package/lib/internal/_httpQueryReadBigint2.mjs +0 -17
  1113. package/lib/internal/_httpQueryReadBigint2.mjs.map +0 -1
  1114. package/lib/internal/_httpQueryReadBoolean2.mjs +0 -19
  1115. package/lib/internal/_httpQueryReadBoolean2.mjs.map +0 -1
  1116. package/lib/internal/_httpQueryReadNumber2.mjs +0 -13
  1117. package/lib/internal/_httpQueryReadNumber2.mjs.map +0 -1
  1118. package/lib/internal/_httpQueryReadString2.mjs +0 -9
  1119. package/lib/internal/_httpQueryReadString2.mjs.map +0 -1
  1120. package/lib/internal/_isBetween2.mjs +0 -9
  1121. package/lib/internal/_isBetween2.mjs.map +0 -1
  1122. package/lib/internal/_isBigintString2.mjs +0 -17
  1123. package/lib/internal/_isBigintString2.mjs.map +0 -1
  1124. package/lib/internal/_isFormatByte2.mjs +0 -13
  1125. package/lib/internal/_isFormatByte2.mjs.map +0 -1
  1126. package/lib/internal/_isFormatDate2.mjs +0 -10
  1127. package/lib/internal/_isFormatDate2.mjs.map +0 -1
  1128. package/lib/internal/_isFormatDateTime2.mjs +0 -10
  1129. package/lib/internal/_isFormatDateTime2.mjs.map +0 -1
  1130. package/lib/internal/_isFormatDuration2.mjs +0 -10
  1131. package/lib/internal/_isFormatDuration2.mjs.map +0 -1
  1132. package/lib/internal/_isFormatEmail2.mjs +0 -10
  1133. package/lib/internal/_isFormatEmail2.mjs.map +0 -1
  1134. package/lib/internal/_isFormatHostname2.mjs +0 -10
  1135. package/lib/internal/_isFormatHostname2.mjs.map +0 -1
  1136. package/lib/internal/_isFormatIdnEmail2.mjs +0 -10
  1137. package/lib/internal/_isFormatIdnEmail2.mjs.map +0 -1
  1138. package/lib/internal/_isFormatIdnHostname2.mjs +0 -10
  1139. package/lib/internal/_isFormatIdnHostname2.mjs.map +0 -1
  1140. package/lib/internal/_isFormatIpv42.mjs +0 -10
  1141. package/lib/internal/_isFormatIpv42.mjs.map +0 -1
  1142. package/lib/internal/_isFormatIpv62.mjs +0 -10
  1143. package/lib/internal/_isFormatIpv62.mjs.map +0 -1
  1144. package/lib/internal/_isFormatIri2.mjs +0 -10
  1145. package/lib/internal/_isFormatIri2.mjs.map +0 -1
  1146. package/lib/internal/_isFormatIriReference2.mjs +0 -10
  1147. package/lib/internal/_isFormatIriReference2.mjs.map +0 -1
  1148. package/lib/internal/_isFormatJsonPointer2.mjs +0 -10
  1149. package/lib/internal/_isFormatJsonPointer2.mjs.map +0 -1
  1150. package/lib/internal/_isFormatPassword2.mjs +0 -9
  1151. package/lib/internal/_isFormatPassword2.mjs.map +0 -1
  1152. package/lib/internal/_isFormatRegex2.mjs +0 -17
  1153. package/lib/internal/_isFormatRegex2.mjs.map +0 -1
  1154. package/lib/internal/_isFormatRelativeJsonPointer2.mjs +0 -10
  1155. package/lib/internal/_isFormatRelativeJsonPointer2.mjs.map +0 -1
  1156. package/lib/internal/_isFormatTime2.mjs +0 -10
  1157. package/lib/internal/_isFormatTime2.mjs.map +0 -1
  1158. package/lib/internal/_isFormatUri2.mjs +0 -11
  1159. package/lib/internal/_isFormatUri2.mjs.map +0 -1
  1160. package/lib/internal/_isFormatUriReference2.mjs +0 -10
  1161. package/lib/internal/_isFormatUriReference2.mjs.map +0 -1
  1162. package/lib/internal/_isFormatUriTemplate2.mjs +0 -10
  1163. package/lib/internal/_isFormatUriTemplate2.mjs.map +0 -1
  1164. package/lib/internal/_isFormatUrl2.mjs +0 -10
  1165. package/lib/internal/_isFormatUrl2.mjs.map +0 -1
  1166. package/lib/internal/_isFormatUuid2.mjs +0 -10
  1167. package/lib/internal/_isFormatUuid2.mjs.map +0 -1
  1168. package/lib/internal/_isTypeFloat2.mjs +0 -11
  1169. package/lib/internal/_isTypeFloat2.mjs.map +0 -1
  1170. package/lib/internal/_isTypeInt162.mjs +0 -11
  1171. package/lib/internal/_isTypeInt162.mjs.map +0 -1
  1172. package/lib/internal/_isTypeInt322.mjs +0 -11
  1173. package/lib/internal/_isTypeInt322.mjs.map +0 -1
  1174. package/lib/internal/_isTypeInt642.mjs +0 -11
  1175. package/lib/internal/_isTypeInt642.mjs.map +0 -1
  1176. package/lib/internal/_isTypeInt82.mjs +0 -11
  1177. package/lib/internal/_isTypeInt82.mjs.map +0 -1
  1178. package/lib/internal/_isTypeUint162.mjs +0 -11
  1179. package/lib/internal/_isTypeUint162.mjs.map +0 -1
  1180. package/lib/internal/_isTypeUint322.mjs +0 -11
  1181. package/lib/internal/_isTypeUint322.mjs.map +0 -1
  1182. package/lib/internal/_isTypeUint642.mjs +0 -11
  1183. package/lib/internal/_isTypeUint642.mjs.map +0 -1
  1184. package/lib/internal/_isTypeUint82.mjs +0 -11
  1185. package/lib/internal/_isTypeUint82.mjs.map +0 -1
  1186. package/lib/internal/_isUniqueItems2.mjs +0 -143
  1187. package/lib/internal/_isUniqueItems2.mjs.map +0 -1
  1188. package/lib/internal/_jsonStringifyNumber2.mjs +0 -9
  1189. package/lib/internal/_jsonStringifyNumber2.mjs.map +0 -1
  1190. package/lib/internal/_jsonStringifyRest2.mjs +0 -11
  1191. package/lib/internal/_jsonStringifyRest2.mjs.map +0 -1
  1192. package/lib/internal/_jsonStringifyString2.mjs +0 -45
  1193. package/lib/internal/_jsonStringifyString2.mjs.map +0 -1
  1194. package/lib/internal/_jsonStringifyTail2.mjs +0 -9
  1195. package/lib/internal/_jsonStringifyTail2.mjs.map +0 -1
  1196. package/lib/internal/_llmApplicationFinalize2.mjs +0 -11
  1197. package/lib/internal/_llmApplicationFinalize2.mjs.map +0 -1
  1198. package/lib/internal/_notationAny2.mjs +0 -42
  1199. package/lib/internal/_notationAny2.mjs.map +0 -1
  1200. package/lib/internal/_notationCamel2.mjs +0 -21
  1201. package/lib/internal/_notationCamel2.mjs.map +0 -1
  1202. package/lib/internal/_notationPascal2.mjs +0 -17
  1203. package/lib/internal/_notationPascal2.mjs.map +0 -1
  1204. package/lib/internal/_notationSnake2.mjs +0 -54
  1205. package/lib/internal/_notationSnake2.mjs.map +0 -1
  1206. package/lib/internal/_parseLlmArguments2.mjs +0 -11
  1207. package/lib/internal/_parseLlmArguments2.mjs.map +0 -1
  1208. package/lib/internal/_plainCloneAny2.mjs +0 -67
  1209. package/lib/internal/_plainCloneAny2.mjs.map +0 -1
  1210. package/lib/internal/_randomArray2.mjs +0 -31
  1211. package/lib/internal/_randomArray2.mjs.map +0 -1
  1212. package/lib/internal/_randomBigint2.mjs +0 -12
  1213. package/lib/internal/_randomBigint2.mjs.map +0 -1
  1214. package/lib/internal/_randomBoolean2.mjs +0 -9
  1215. package/lib/internal/_randomBoolean2.mjs.map +0 -1
  1216. package/lib/internal/_randomFormatByte2.mjs +0 -10
  1217. package/lib/internal/_randomFormatByte2.mjs.map +0 -1
  1218. package/lib/internal/_randomFormatDate2.mjs +0 -20
  1219. package/lib/internal/_randomFormatDate2.mjs.map +0 -1
  1220. package/lib/internal/_randomFormatDatetime2.mjs +0 -18
  1221. package/lib/internal/_randomFormatDatetime2.mjs.map +0 -1
  1222. package/lib/internal/_randomFormatDuration2.mjs +0 -35
  1223. package/lib/internal/_randomFormatDuration2.mjs.map +0 -1
  1224. package/lib/internal/_randomFormatEmail2.mjs +0 -17
  1225. package/lib/internal/_randomFormatEmail2.mjs.map +0 -1
  1226. package/lib/internal/_randomFormatHostname2.mjs +0 -13
  1227. package/lib/internal/_randomFormatHostname2.mjs.map +0 -1
  1228. package/lib/internal/_randomFormatIdnEmail2.mjs +0 -12
  1229. package/lib/internal/_randomFormatIdnEmail2.mjs.map +0 -1
  1230. package/lib/internal/_randomFormatIdnHostname2.mjs +0 -12
  1231. package/lib/internal/_randomFormatIdnHostname2.mjs.map +0 -1
  1232. package/lib/internal/_randomFormatIpv42.mjs +0 -17
  1233. package/lib/internal/_randomFormatIpv42.mjs.map +0 -1
  1234. package/lib/internal/_randomFormatIpv62.mjs +0 -17
  1235. package/lib/internal/_randomFormatIpv62.mjs.map +0 -1
  1236. package/lib/internal/_randomFormatIri2.mjs +0 -12
  1237. package/lib/internal/_randomFormatIri2.mjs.map +0 -1
  1238. package/lib/internal/_randomFormatIriReference2.mjs +0 -12
  1239. package/lib/internal/_randomFormatIriReference2.mjs.map +0 -1
  1240. package/lib/internal/_randomFormatJsonPointer2.mjs +0 -13
  1241. package/lib/internal/_randomFormatJsonPointer2.mjs.map +0 -1
  1242. package/lib/internal/_randomFormatPassword2.mjs +0 -16
  1243. package/lib/internal/_randomFormatPassword2.mjs.map +0 -1
  1244. package/lib/internal/_randomFormatRegex2.mjs +0 -10
  1245. package/lib/internal/_randomFormatRegex2.mjs.map +0 -1
  1246. package/lib/internal/_randomFormatRelativeJsonPointer2.mjs +0 -16
  1247. package/lib/internal/_randomFormatRelativeJsonPointer2.mjs.map +0 -1
  1248. package/lib/internal/_randomFormatTime2.mjs +0 -19
  1249. package/lib/internal/_randomFormatTime2.mjs.map +0 -1
  1250. package/lib/internal/_randomFormatUri2.mjs +0 -12
  1251. package/lib/internal/_randomFormatUri2.mjs.map +0 -1
  1252. package/lib/internal/_randomFormatUriReference2.mjs +0 -12
  1253. package/lib/internal/_randomFormatUriReference2.mjs.map +0 -1
  1254. package/lib/internal/_randomFormatUriTemplate2.mjs +0 -12
  1255. package/lib/internal/_randomFormatUriTemplate2.mjs.map +0 -1
  1256. package/lib/internal/_randomFormatUrl2.mjs +0 -17
  1257. package/lib/internal/_randomFormatUrl2.mjs.map +0 -1
  1258. package/lib/internal/_randomFormatUuid2.mjs +0 -13
  1259. package/lib/internal/_randomFormatUuid2.mjs.map +0 -1
  1260. package/lib/internal/_randomInteger2.mjs +0 -47
  1261. package/lib/internal/_randomInteger2.mjs.map +0 -1
  1262. package/lib/internal/_randomNumber2.mjs +0 -66
  1263. package/lib/internal/_randomNumber2.mjs.map +0 -1
  1264. package/lib/internal/_randomPattern2.mjs +0 -22
  1265. package/lib/internal/_randomPattern2.mjs.map +0 -1
  1266. package/lib/internal/_randomPick2.mjs +0 -17
  1267. package/lib/internal/_randomPick2.mjs.map +0 -1
  1268. package/lib/internal/_randomString2.mjs +0 -32
  1269. package/lib/internal/_randomString2.mjs.map +0 -1
  1270. package/lib/internal/_throwTypeGuardError2.mjs +0 -14
  1271. package/lib/internal/_throwTypeGuardError2.mjs.map +0 -1
  1272. package/lib/internal/_validateReport2.mjs +0 -29
  1273. package/lib/internal/_validateReport2.mjs.map +0 -1
  1274. package/lib/internal/private/__notationCapitalize2.mjs +0 -9
  1275. package/lib/internal/private/__notationCapitalize2.mjs.map +0 -1
  1276. package/lib/internal/private/__notationUnsnake2.mjs +0 -29
  1277. package/lib/internal/private/__notationUnsnake2.mjs.map +0 -1
  1278. package/lib/json2.mjs +0 -94
  1279. package/lib/json2.mjs.map +0 -1
  1280. package/lib/llm2.mjs +0 -54
  1281. package/lib/llm2.mjs.map +0 -1
  1282. package/lib/module2.mjs +0 -185
  1283. package/lib/module2.mjs.map +0 -1
  1284. package/lib/notations2.mjs +0 -169
  1285. package/lib/notations2.mjs.map +0 -1
  1286. package/lib/plain2.mjs +0 -119
  1287. package/lib/plain2.mjs.map +0 -1
  1288. package/lib/protobuf2.mjs +0 -94
  1289. package/lib/protobuf2.mjs.map +0 -1
  1290. package/lib/re-exports.mjs.map +0 -1
  1291. package/lib/re-exports2.mjs +0 -17
  1292. package/lib/re-exports2.mjs.map +0 -1
  1293. package/lib/reflect2.mjs +0 -29
  1294. package/lib/reflect2.mjs.map +0 -1
  1295. package/lib/transform2.mjs +0 -26
  1296. package/lib/transform2.mjs.map +0 -1
  1297. package/lib/transformers/NoTransformConfigurationError2.mjs +0 -21
  1298. package/lib/transformers/NoTransformConfigurationError2.mjs.map +0 -1
@@ -1,1054 +1,1054 @@
1
- package metadata
2
-
3
- import (
4
- "fmt"
5
- "strings"
6
-
7
- nativeast "github.com/microsoft/typescript-go/shim/ast"
8
- nativechecker "github.com/microsoft/typescript-go/shim/checker"
9
- schemametadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
10
- )
11
-
12
- func Iterate_metadata_intersection(props IMetadataIteratorProps) bool {
13
- if props.Intersected == true {
14
- return false
15
- }
16
- if props.Type == nil || props.Type.IsIntersection() == false {
17
- return false
18
- }
19
- if iterate_metadata_intersection_reduce_union(props) {
20
- return true
21
- }
22
- if iterate_metadata_intersection_is_plain_object_only(props.Checker, props.Components, props.Type, map[*nativechecker.Type]bool{}) {
23
- if (props.Unioned || props.Prunable) && iterate_metadata_intersection_has_conflicting_required_literal(props.Checker, props.Components, props.Type, map[*nativechecker.Type]bool{}) {
24
- return true
25
- }
26
- return false
27
- }
28
- if (props.Unioned || props.Prunable) && iterate_metadata_intersection_is_never(props, props.Type, map[*nativechecker.Type]bool{}) {
29
- return true
30
- }
31
-
32
- commit := props.Components.Clone()
33
- fakeErrors := []MetadataFactory_IError{}
34
- children := make([]*schemametadata.MetadataSchema, 0, len(props.Type.Types()))
35
- for _, typ := range props.Type.Types() {
36
- options := props.Options
37
- options.Absorb = true
38
- options.Functional = false
39
- explore := props.Explore
40
- explore.Aliased = false
41
- children = append(children, Explore_metadata(Explore_metadata_IProps{
42
- Options: options,
43
- Checker: props.Checker,
44
- Components: props.Components,
45
- Errors: &fakeErrors,
46
- Type: typ,
47
- Explore: explore,
48
- Intersected: false,
49
- NoCache: true,
50
- Prunable: true,
51
- }))
52
- }
53
-
54
- escape := func(out bool) bool {
55
- *props.Components = *commit
56
- return out
57
- }
58
- if len(fakeErrors) != 0 {
59
- if props.Errors != nil {
60
- *props.Errors = append(*props.Errors, fakeErrors...)
61
- }
62
- return escape(true)
63
- }
64
- if len(children) == 0 {
65
- return escape(false)
66
- }
67
- for _, child := range children {
68
- if child.Any == true || child.Size() == 0 {
69
- return escape(false)
70
- }
71
- }
72
-
73
- indexes := []int{}
74
- metadatas := []*schemametadata.MetadataSchema{}
75
- tagObjects := []*schemametadata.MetadataObjectType{}
76
- for i, child := range children {
77
- if child.Size() == 1 &&
78
- len(child.Objects) == 1 &&
79
- iterate_metadata_intersection_is_type_tag(child.Objects[0].Type) {
80
- tagObjects = append(tagObjects, child.Objects[0].Type)
81
- continue
82
- }
83
- indexes = append(indexes, i)
84
- metadatas = append(metadatas, child)
85
- }
86
-
87
- nonsensible := func() bool {
88
- if props.Errors != nil {
89
- names := make([]string, 0, len(children))
90
- for _, child := range children {
91
- names = append(names, child.GetName())
92
- }
93
- *props.Errors = append(*props.Errors, MetadataFactory_IError{
94
- Name: strings.Join(names, " & "),
95
- Explore: props.Explore,
96
- Messages: []string{"nonsensible intersection"},
97
- })
98
- }
99
- return escape(true)
100
- }
101
-
102
- if len(metadatas) == 0 {
103
- if len(tagObjects) != 0 {
104
- if props.Errors != nil {
105
- names := make([]string, 0, len(children))
106
- for _, child := range children {
107
- names = append(names, child.GetName())
108
- }
109
- *props.Errors = append(*props.Errors, MetadataFactory_IError{
110
- Name: strings.Join(names, " & "),
111
- Explore: props.Explore,
112
- Messages: []string{"type tag cannot be standalone"},
113
- })
114
- }
115
- return escape(true)
116
- }
117
- return escape(false)
118
- }
119
- onlyObjects := true
120
- for _, m := range metadatas {
121
- if len(m.Objects) != 1 {
122
- onlyObjects = false
123
- break
124
- }
125
- }
126
- if onlyObjects && len(tagObjects) == 0 {
127
- return escape(false)
128
- }
129
- if len(metadatas) != 1 {
130
- removable := []int{}
131
- for i, m := range metadatas {
132
- if iterate_metadata_intersection_is_removable_brand(m) {
133
- removable = append(removable, i)
134
- }
135
- }
136
- if len(removable) == len(metadatas) {
137
- return nonsensible()
138
- }
139
- for i := len(removable) - 1; i >= 0; i-- {
140
- index := removable[i]
141
- metadatas = append(metadatas[:index], metadatas[index+1:]...)
142
- indexes = append(indexes[:index], indexes[index+1:]...)
143
- }
144
- }
145
- // After phantom brands are dropped, exactly one single-bucket base member must
146
- // survive (`string & Brand` → string). Two genuine non-object members
147
- // (`string[] & number[]`, `A[] & [t…]`, `T1 & T2`, …) — or a multi-bucket
148
- // survivor — is an intersection of constraint carriers, a misuse with no sound
149
- // merge, so it stays nonsensible. This subsumes the per-candidate-kind check
150
- // below, which therefore always collapses to a single candidate.
151
- if len(metadatas) != 1 || metadatas[0].Size() != 1 {
152
- return nonsensible()
153
- }
154
-
155
- candidates := map[string]string{}
156
- assigners := []func([]schemametadata.IMetadataTypeTag){}
157
- for _, meta := range metadatas {
158
- for _, atomic := range meta.Atomics {
159
- candidates[atomic.Type] = atomic.Type
160
- assigners = append(assigners, func(kind string) func([]schemametadata.IMetadataTypeTag) {
161
- return func(tags []schemametadata.IMetadataTypeTag) {
162
- for _, atom := range props.Metadata.Atomics {
163
- if atom.Type == kind {
164
- atom.Tags = append(atom.Tags, tags)
165
- return
166
- }
167
- }
168
- }
169
- }(atomic.Type))
170
- }
171
- for _, constant := range meta.Constants {
172
- for _, value := range constant.Values {
173
- candidates[constant.Type] = constant.Type
174
- assigners = append(assigners, func(kind string, v any) func([]schemametadata.IMetadataTypeTag) {
175
- return func(tags []schemametadata.IMetadataTypeTag) {
176
- for _, c := range props.Metadata.Constants {
177
- if c.Type != kind {
178
- continue
179
- }
180
- for _, value := range c.Values {
181
- if value.Value == v {
182
- value.Tags = append(value.Tags, tags)
183
- return
184
- }
185
- }
186
- }
187
- }
188
- }(constant.Type, value.Value))
189
- }
190
- }
191
- for _, template := range meta.Templates {
192
- candidates["string"] = "string"
193
- assigners = append(assigners, func(base string) func([]schemametadata.IMetadataTypeTag) {
194
- return func(tags []schemametadata.IMetadataTypeTag) {
195
- for _, tpl := range props.Metadata.Templates {
196
- if tpl.GetBaseName() == base {
197
- tpl.Tags = append(tpl.Tags, tags)
198
- return
199
- }
200
- }
201
- }
202
- }(template.GetBaseName()))
203
- }
204
- if len(meta.Objects) != 0 {
205
- candidates["object"] = "object"
206
- assigners = append(assigners, func(tags []schemametadata.IMetadataTypeTag) {
207
- if len(props.Metadata.Objects) != 0 {
208
- props.Metadata.Objects[len(props.Metadata.Objects)-1].Tags = append(props.Metadata.Objects[len(props.Metadata.Objects)-1].Tags, tags)
209
- }
210
- })
211
- }
212
- if len(meta.Arrays) != 0 {
213
- candidates["array"] = "array"
214
- assigners = append(assigners, func(tags []schemametadata.IMetadataTypeTag) {
215
- if len(props.Metadata.Arrays) != 0 {
216
- props.Metadata.Arrays[len(props.Metadata.Arrays)-1].Tags = append(props.Metadata.Arrays[len(props.Metadata.Arrays)-1].Tags, tags)
217
- }
218
- })
219
- }
220
- if len(meta.Tuples) != 0 {
221
- candidates["invalid"] = "tuple"
222
- }
223
- for _, native := range meta.Natives {
224
- candidates["native::"+native.Name] = "object"
225
- assigners = append(assigners, func(name string) func([]schemametadata.IMetadataTypeTag) {
226
- return func(tags []schemametadata.IMetadataTypeTag) {
227
- for _, n := range props.Metadata.Natives {
228
- if n.Name == name {
229
- n.Tags = append(n.Tags, tags)
230
- return
231
- }
232
- }
233
- }
234
- }(native.Name))
235
- }
236
- for _, set := range meta.Sets {
237
- name := set.Value.GetName()
238
- candidates["set::"+name] = "object"
239
- assigners = append(assigners, func(name string) func([]schemametadata.IMetadataTypeTag) {
240
- return func(tags []schemametadata.IMetadataTypeTag) {
241
- for _, s := range props.Metadata.Sets {
242
- if s.Value.GetName() == name {
243
- s.Tags = append(s.Tags, tags)
244
- return
245
- }
246
- }
247
- }
248
- }(name))
249
- }
250
- for _, m := range meta.Maps {
251
- name := m.Key.GetName() + "::" + m.Value.GetName()
252
- candidates["map::"+name] = "object"
253
- assigners = append(assigners, func(keyName string, valueName string) func([]schemametadata.IMetadataTypeTag) {
254
- return func(tags []schemametadata.IMetadataTypeTag) {
255
- for _, m := range props.Metadata.Maps {
256
- if m.Key.GetName() == keyName && m.Value.GetName() == valueName {
257
- m.Tags = append(m.Tags, tags)
258
- return
259
- }
260
- }
261
- }
262
- }(m.Key.GetName(), m.Value.GetName()))
263
- }
264
- }
265
-
266
- *props.Components = *commit
267
- index := 0
268
- if len(indexes) != 0 {
269
- index = indexes[0]
270
- }
271
- options := props.Options
272
- options.Functional = false
273
- explore := props.Explore
274
- explore.Aliased = false
275
- explore.Escaped = false
276
- // Re-explore the surviving base alone (`Intersected: true` short-circuits the
277
- // intersection handler at the top of this function). TypeScript flattens nested
278
- // intersections — `(A & B) & C` is presented as a single `types: [A, B, C]` — so
279
- // `Types()[index]` is always an atomic member, never itself an intersection that
280
- // would re-enter and leave `props.Metadata` empty.
281
- Iterate_metadata(IMetadataIteratorProps{
282
- Options: options,
283
- Checker: props.Checker,
284
- Components: props.Components,
285
- Errors: props.Errors,
286
- Metadata: props.Metadata,
287
- Type: props.Type.Types()[index],
288
- Explore: explore,
289
- Intersected: true,
290
- })
291
- tags := iterate_metadata_intersection_analyze_type_tags(props, tagObjects, candidates)
292
- if len(tags) != 0 {
293
- for _, assigner := range assigners {
294
- assigner(tags)
295
- }
296
- }
297
- return true
298
- }
299
-
300
- // iterate_metadata_intersection_is_removable_brand reports whether an explored
301
- // member schema is a phantom "brand" object that an intersection with a
302
- // non-object member may drop. A value intersected with a non-object survivor is
303
- // that primitive/array/etc. at runtime, so an object constraint carrying no
304
- // runtime-observable required data is purely a compile-time nominal marker.
305
- //
306
- // The single-survivor guard lives in the caller: when EVERY member is a plain
307
- // object, the entry point routes to the object-merge path before this runs, so
308
- // a required-literal property of a genuine `A & B` object merge is never dropped
309
- // here — only brands intersected with a primitive/array/template/native are.
310
- //
311
- // A member is removable when it is a single non-recursive object bucket whose
312
- // every property is phantom: optional, or symbol-keyed. Those two are the only
313
- // unambiguously phantom markers — an optional property need not be present, and
314
- // a symbol-keyed property is never observable on a JSON value. Any required
315
- // string-keyed property (literal or not) might be real data, so it keeps the
316
- // intersection nonsensible rather than silently dropping a declared constraint.
317
- func iterate_metadata_intersection_is_removable_brand(m *schemametadata.MetadataSchema) bool {
318
- if m == nil || m.Size() != 1 || len(m.Objects) != 1 {
319
- return false
320
- }
321
- object := m.Objects[0].Type
322
- if object == nil || object.Recursive {
323
- return false
324
- }
325
- for _, p := range object.Properties {
326
- if iterate_metadata_intersection_is_phantom_property(p) == false {
327
- return false
328
- }
329
- }
330
- return true
331
- }
332
-
333
- func iterate_metadata_intersection_is_phantom_property(p *schemametadata.MetadataProperty) bool {
334
- if p == nil || p.Value == nil {
335
- return false
336
- }
337
- if p.Value.Optional {
338
- return true
339
- }
340
- return iterate_metadata_intersection_is_symbol_key(p.Key)
341
- }
342
-
343
- // iterate_metadata_intersection_is_symbol_key reports whether a property key is a
344
- // computed `symbol`/`unique symbol` member. The TypeScript checker escapes such
345
- // member names with a leading 0xFE byte (an invalid UTF-8 lead unit that never
346
- // begins a real string property name), so the brand `string & { [s]: T }` is
347
- // recognized regardless of whether T is a literal.
348
- func iterate_metadata_intersection_is_symbol_key(key *schemametadata.MetadataSchema) bool {
349
- if key == nil {
350
- return false
351
- }
352
- lit := key.GetSoleLiteral()
353
- return lit != nil && iterate_metadata_intersection_is_symbol_name(*lit)
354
- }
355
-
356
- // iterate_metadata_intersection_is_symbol_name reports whether an escaped member
357
- // name is a computed `symbol` member. The TypeScript checker prefixes such names
358
- // with a 0xFE byte (`InternalSymbolNamePrefix`), an invalid UTF-8 lead unit that
359
- // never begins a real string property name. This runs on the raw checker symbol
360
- // name (`is_removable_object_constraint`) as well as the metadata key literal
361
- // (`is_symbol_key`), so both the type-level and schema-level brand checks agree.
362
- func iterate_metadata_intersection_is_symbol_name(name string) bool {
363
- return len(name) != 0 && name[0] == 0xFE
364
- }
365
-
366
- func iterate_metadata_intersection_reduce_union(props IMetadataIteratorProps) bool {
367
- if props.Checker == nil || props.Type == nil || props.Type.IsIntersection() == false {
368
- return false
369
- }
370
- var union *nativechecker.Type
371
- constraints := []*nativechecker.Type{}
372
- for _, child := range props.Type.Types() {
373
- if child.IsUnion() {
374
- if union != nil {
375
- return false
376
- }
377
- union = child
378
- continue
379
- }
380
- constraints = append(constraints, child)
381
- }
382
- if union == nil || len(constraints) == 0 {
383
- return false
384
- }
385
-
386
- identities := make([]iterate_metadata_intersection_identity, 0, len(constraints))
387
- for _, constraint := range constraints {
388
- if iterate_metadata_intersection_is_removable_object_constraint(props, constraint) {
389
- continue
390
- }
391
- identity := iterate_metadata_intersection_identify(props.Checker, props.Components, constraint)
392
- if identity.Kind == "" || identity.Kind == "tag" || identity.Kind == "union" {
393
- return false
394
- }
395
- identities = append(identities, identity)
396
- }
397
- if len(identities) == 0 {
398
- return false
399
- }
400
- objectExact := map[string]bool{}
401
- for _, identity := range identities {
402
- if identity.Kind != "object" || identity.Shareable == false {
403
- continue
404
- }
405
- for _, member := range union.Types() {
406
- next := iterate_metadata_intersection_identify(props.Checker, props.Components, member)
407
- if next.Kind == "object" && next.Shareable && next.Name == identity.Name {
408
- objectExact[identity.Name] = true
409
- }
410
- }
411
- }
412
-
413
- matched := false
414
- for _, member := range union.Types() {
415
- memberIdentity := iterate_metadata_intersection_identify(props.Checker, props.Components, member)
416
- if memberIdentity.Kind == "" || memberIdentity.Kind == "tag" || memberIdentity.Kind == "union" {
417
- return false
418
- }
419
- keep := true
420
- for _, constraint := range identities {
421
- ok, known := iterate_metadata_intersection_identity_matches(memberIdentity, constraint, objectExact)
422
- if known == false {
423
- return false
424
- }
425
- if ok == false {
426
- keep = false
427
- break
428
- }
429
- }
430
- if keep == false {
431
- continue
432
- }
433
- matched = true
434
- explore := props.Explore
435
- explore.Aliased = false
436
- Iterate_metadata(IMetadataIteratorProps{
437
- Options: props.Options,
438
- Checker: props.Checker,
439
- Components: props.Components,
440
- Errors: props.Errors,
441
- Metadata: props.Metadata,
442
- Type: member,
443
- Explore: explore,
444
- Intersected: props.Intersected,
445
- Unioned: true,
446
- Prunable: true,
447
- })
448
- }
449
- return matched || iterate_metadata_intersection_identities_decisive(identities)
450
- }
451
-
452
- func iterate_metadata_intersection_is_removable_object_constraint(
453
- props IMetadataIteratorProps,
454
- typ *nativechecker.Type,
455
- ) bool {
456
- checker := props.Checker
457
- collection := props.Components
458
- if checker == nil || collection == nil || typ == nil {
459
- return false
460
- }
461
- if typ.IsUnion() {
462
- return false
463
- }
464
- if typ.IsIntersection() {
465
- children := typ.Types()
466
- if len(children) == 0 {
467
- return false
468
- }
469
- for _, child := range children {
470
- if iterate_metadata_intersection_is_removable_object_constraint(props, child) == false {
471
- return false
472
- }
473
- }
474
- return true
475
- }
476
- if typ.Flags()&nativechecker.TypeFlagsObject == 0 {
477
- return false
478
- }
479
- if nativechecker.IsTupleType(typ) || nativechecker.Checker_isArrayType(checker, typ) {
480
- return false
481
- }
482
- if metadata_get_function_node(typ) != nil || len(checker.GetSignaturesOfType(typ, nativechecker.SignatureKindCall)) != 0 {
483
- return false
484
- }
485
- name := iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(typ))
486
- if name == "" {
487
- name = iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(checker.GetApparentType(typ)))
488
- }
489
- if _, ok := iterate_metadata_native_simples[name]; ok {
490
- return false
491
- }
492
- for _, generic := range iterate_metadata_native_generics {
493
- if strings.HasPrefix(name, generic.Name) {
494
- return false
495
- }
496
- }
497
- if strings.HasPrefix(name, "Map<") || strings.HasPrefix(name, "ReadonlyMap<") ||
498
- strings.HasPrefix(name, "Set<") || strings.HasPrefix(name, "ReadonlySet<") {
499
- return false
500
- }
501
- if len(collection.IndexInfos(checker, typ)) != 0 {
502
- return false
503
- }
504
- for _, symbol := range collection.ApparentProperties(checker, typ) {
505
- // A symbol-keyed member is never observable on a JSON value (the canonical
506
- // nominal brand), so it is phantom and removable. typia's own tag is handled
507
- // as a constraint, not stripped here; any required string-keyed property might
508
- // be real data — both keep the object as a constraint, not a removable brand.
509
- if iterate_metadata_intersection_is_symbol_name(symbol.Name) {
510
- continue
511
- }
512
- if symbol.Name == "typia.tag" || symbol.Flags&nativeast.SymbolFlagsOptional == 0 {
513
- return false
514
- }
515
- }
516
- return true
517
- }
518
-
519
- type iterate_metadata_intersection_identity struct {
520
- Kind string
521
- Name string
522
- Shareable bool
523
- }
524
-
525
- func iterate_metadata_intersection_identify(
526
- checker *nativechecker.Checker,
527
- collection *schemametadata.MetadataCollection,
528
- typ *nativechecker.Type,
529
- ) iterate_metadata_intersection_identity {
530
- if checker == nil || typ == nil {
531
- return iterate_metadata_intersection_identity{}
532
- }
533
- if typ.IsUnion() {
534
- return iterate_metadata_intersection_identity{Kind: "union"}
535
- }
536
- if typ.IsIntersection() {
537
- return iterate_metadata_intersection_identity{Kind: "intersection"}
538
- }
539
- for _, info := range iterate_metadata_atomic_atomcs {
540
- if typ.Flags()&info.atomic != 0 || typ.Flags()&info.literal != 0 {
541
- return iterate_metadata_intersection_identity{Kind: "primitive", Name: info.name}
542
- }
543
- }
544
- name := iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(typ))
545
- if name == "" {
546
- name = iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(checker.GetApparentType(typ)))
547
- }
548
- if atomic, ok := schemametadata.MetadataSchema_atomicLikeNative(name); ok {
549
- return iterate_metadata_intersection_identity{Kind: "primitive", Name: atomic}
550
- }
551
- if nativechecker.IsTupleType(typ) || nativechecker.Checker_isArrayType(checker, typ) || name == "Array" || name == "ReadonlyArray" {
552
- return iterate_metadata_intersection_identity{
553
- Kind: "array",
554
- Name: metadata_type_full_name(checker, typ, collection),
555
- }
556
- }
557
- for _, symbol := range collection.ApparentProperties(checker, typ) {
558
- if symbol.Name == "typia.tag" {
559
- return iterate_metadata_intersection_identity{Kind: "tag"}
560
- }
561
- }
562
- if _, ok := iterate_metadata_native_simples[name]; ok {
563
- return iterate_metadata_intersection_identity{Kind: "native", Name: name}
564
- }
565
- for _, generic := range iterate_metadata_native_generics {
566
- if strings.HasPrefix(name, generic.Name) {
567
- return iterate_metadata_intersection_identity{Kind: "native", Name: generic.Name}
568
- }
569
- }
570
- if name == "Map" || name == "ReadonlyMap" || name == "Set" || name == "ReadonlySet" {
571
- return iterate_metadata_intersection_identity{
572
- Kind: "native",
573
- Name: name,
574
- }
575
- }
576
- if typ.Flags()&nativechecker.TypeFlagsObject == 0 {
577
- return iterate_metadata_intersection_identity{}
578
- }
579
- fullName := metadata_type_full_name(checker, typ, collection)
580
- sanitized := iterate_metadata_intersection_sanitize_name(fullName)
581
- return iterate_metadata_intersection_identity{
582
- Kind: "object",
583
- Name: sanitized,
584
- Shareable: iterate_metadata_intersection_shareable_name(fullName, sanitized),
585
- }
586
- }
587
-
588
- func iterate_metadata_intersection_identity_matches(
589
- member iterate_metadata_intersection_identity,
590
- constraint iterate_metadata_intersection_identity,
591
- objectExact map[string]bool,
592
- ) (bool, bool) {
593
- if constraint.Kind == "primitive" || constraint.Kind == "native" || constraint.Kind == "array" {
594
- return member.Kind == constraint.Kind && member.Name == constraint.Name, true
595
- }
596
- if constraint.Kind != "object" {
597
- return false, false
598
- }
599
- if member.Kind == "primitive" || member.Kind == "native" || member.Kind == "array" {
600
- return false, true
601
- }
602
- if member.Kind != "object" || constraint.Shareable == false || objectExact[constraint.Name] == false {
603
- return false, false
604
- }
605
- return member.Shareable && member.Name == constraint.Name, true
606
- }
607
-
608
- func iterate_metadata_intersection_identities_decisive(identities []iterate_metadata_intersection_identity) bool {
609
- for _, identity := range identities {
610
- if identity.Kind == "object" && identity.Shareable == false {
611
- return false
612
- }
613
- }
614
- return true
615
- }
616
-
617
- func iterate_metadata_intersection_sanitize_name(name string) string {
618
- name = strings.ToValidUTF8(name, "__")
619
- return strings.ReplaceAll(name, "\uFFFD", "__")
620
- }
621
-
622
- func iterate_metadata_intersection_shareable_name(fullName string, sanitized string) bool {
623
- fullName = strings.TrimSpace(fullName)
624
- if fullName == "" || strings.Contains(fullName, "{") {
625
- return false
626
- }
627
- return strings.Contains(sanitized, "__type") == false
628
- }
629
-
630
- func iterate_metadata_intersection_is_plain_object_only(
631
- checker *nativechecker.Checker,
632
- collection *schemametadata.MetadataCollection,
633
- typ *nativechecker.Type,
634
- visited map[*nativechecker.Type]bool,
635
- ) bool {
636
- if checker == nil || typ == nil {
637
- return false
638
- }
639
- if visited[typ] {
640
- return true
641
- }
642
- if cached, ok := collection.LookupPlainObjectIntersection(typ); ok {
643
- return cached
644
- }
645
- visited[typ] = true
646
-
647
- result := false
648
- defer func() {
649
- collection.StorePlainObjectIntersection(typ, result)
650
- }()
651
- if typ.IsUnion() {
652
- return false
653
- }
654
- if typ.IsIntersection() {
655
- for _, child := range typ.Types() {
656
- if iterate_metadata_intersection_is_plain_object_only(checker, collection, child, visited) == false {
657
- return false
658
- }
659
- }
660
- result = true
661
- return true
662
- }
663
- if typ.Flags()&nativechecker.TypeFlagsObject == 0 {
664
- return false
665
- }
666
- if nativechecker.IsTupleType(typ) || nativechecker.Checker_isArrayType(checker, typ) {
667
- return false
668
- }
669
- if metadata_get_function_node(typ) != nil || len(checker.GetSignaturesOfType(typ, nativechecker.SignatureKindCall)) != 0 {
670
- return false
671
- }
672
-
673
- name := iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(typ))
674
- if name == "" {
675
- name = iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(checker.GetApparentType(typ)))
676
- }
677
- if _, ok := iterate_metadata_native_simples[name]; ok {
678
- return false
679
- }
680
- for _, generic := range iterate_metadata_native_generics {
681
- if strings.HasPrefix(name, generic.Name) {
682
- return false
683
- }
684
- }
685
- if strings.HasPrefix(name, "Map<") || strings.HasPrefix(name, "ReadonlyMap<") ||
686
- strings.HasPrefix(name, "Set<") || strings.HasPrefix(name, "ReadonlySet<") {
687
- return false
688
- }
689
-
690
- for _, symbol := range collection.ApparentProperties(checker, typ) {
691
- if symbol.Name == "typia.tag" {
692
- return false
693
- }
694
- }
695
- result = true
696
- return true
697
- }
698
-
699
- func iterate_metadata_intersection_is_never(
700
- props IMetadataIteratorProps,
701
- typ *nativechecker.Type,
702
- visited map[*nativechecker.Type]bool,
703
- ) bool {
704
- checker := props.Checker
705
- collection := props.Components
706
- if checker == nil || collection == nil || typ == nil {
707
- return false
708
- }
709
- state := struct {
710
- Primitive string
711
- Array bool
712
- Object bool
713
- Native string
714
- Unknown bool
715
- Tagged bool
716
- Never bool
717
- }{}
718
- var next func(*nativechecker.Type)
719
- next = func(child *nativechecker.Type) {
720
- if child == nil || state.Never || state.Unknown || state.Tagged {
721
- return
722
- }
723
- if visited[child] {
724
- return
725
- }
726
- visited[child] = true
727
- if child.IsUnion() {
728
- state.Unknown = true
729
- return
730
- }
731
- if child.IsIntersection() {
732
- for _, elem := range child.Types() {
733
- next(elem)
734
- }
735
- return
736
- }
737
- if iterate_metadata_intersection_is_removable_object_constraint(props, child) {
738
- return
739
- }
740
- category := iterate_metadata_intersection_category(checker, collection, child)
741
- if category == "" {
742
- state.Unknown = true
743
- return
744
- }
745
- if category == "tag" {
746
- state.Tagged = true
747
- return
748
- }
749
- if strings.HasPrefix(category, "primitive:") {
750
- if state.Primitive != "" && state.Primitive != category {
751
- state.Never = true
752
- return
753
- }
754
- state.Primitive = category
755
- if state.Array || state.Object || state.Native != "" {
756
- state.Never = true
757
- }
758
- return
759
- }
760
- if category == "array" {
761
- state.Array = true
762
- if state.Primitive != "" || state.Native != "" || state.Object {
763
- state.Never = true
764
- }
765
- return
766
- }
767
- if strings.HasPrefix(category, "native:") {
768
- if state.Native != "" && state.Native != category {
769
- state.Never = true
770
- return
771
- }
772
- state.Native = category
773
- if state.Primitive != "" || state.Array || state.Object {
774
- state.Never = true
775
- }
776
- return
777
- } else {
778
- state.Object = true
779
- }
780
- if state.Primitive != "" || state.Native != "" || state.Array {
781
- state.Never = true
782
- }
783
- }
784
- next(typ)
785
- return state.Never && state.Unknown == false && state.Tagged == false
786
- }
787
-
788
- type iterate_metadata_intersection_literalSet struct {
789
- Kind string
790
- Values map[string]bool
791
- }
792
-
793
- func iterate_metadata_intersection_has_conflicting_required_literal(
794
- checker *nativechecker.Checker,
795
- collection *schemametadata.MetadataCollection,
796
- typ *nativechecker.Type,
797
- visited map[*nativechecker.Type]bool,
798
- ) bool {
799
- if checker == nil || typ == nil {
800
- return false
801
- }
802
- if typ.IsIntersection() == false {
803
- return false
804
- }
805
- if cached, ok := collection.LookupLiteralConflict(typ); ok {
806
- return cached
807
- }
808
- result := false
809
- defer func() {
810
- collection.StoreLiteralConflict(typ, result)
811
- }()
812
- constraints := map[string][]iterate_metadata_intersection_literalSet{}
813
- var collect func(*nativechecker.Type) bool
814
- collect = func(child *nativechecker.Type) bool {
815
- if child == nil {
816
- return false
817
- }
818
- if visited[child] {
819
- return false
820
- }
821
- visited[child] = true
822
- if child.IsIntersection() {
823
- for _, grand := range child.Types() {
824
- if collect(grand) {
825
- return true
826
- }
827
- }
828
- return false
829
- }
830
- if child.IsUnion() || child.Flags()&nativechecker.TypeFlagsObject == 0 {
831
- return false
832
- }
833
- for _, symbol := range collection.ApparentProperties(checker, child) {
834
- if symbol.Flags&nativeast.SymbolFlagsOptional != 0 {
835
- continue
836
- }
837
- propertyType := iterate_metadata_intersection_property_type(checker, child, symbol)
838
- literal, ok := iterate_metadata_intersection_literal_set(checker, propertyType, map[*nativechecker.Type]bool{})
839
- if ok == false {
840
- continue
841
- }
842
- list := constraints[symbol.Name]
843
- for _, prev := range list {
844
- if iterate_metadata_intersection_literal_disjoint(prev, literal) {
845
- result = true
846
- return true
847
- }
848
- }
849
- constraints[symbol.Name] = append(list, literal)
850
- }
851
- return false
852
- }
853
- result = collect(typ)
854
- return result
855
- }
856
-
857
- func iterate_metadata_intersection_property_type(
858
- checker *nativechecker.Checker,
859
- owner *nativechecker.Type,
860
- symbol *nativeast.Symbol,
861
- ) *nativechecker.Type {
862
- if checker == nil || owner == nil || symbol == nil {
863
- return nil
864
- }
865
- if len(symbol.Declarations) != 0 {
866
- if typ := checker.GetTypeOfSymbolAtLocation(symbol, symbol.Declarations[0]); typ != nil {
867
- return typ
868
- }
869
- }
870
- return nativechecker.Checker_getTypeOfPropertyOfType(checker, owner, symbol.Name)
871
- }
872
-
873
- func iterate_metadata_intersection_literal_set(
874
- checker *nativechecker.Checker,
875
- typ *nativechecker.Type,
876
- visited map[*nativechecker.Type]bool,
877
- ) (iterate_metadata_intersection_literalSet, bool) {
878
- if checker == nil || typ == nil {
879
- return iterate_metadata_intersection_literalSet{}, false
880
- }
881
- if visited[typ] {
882
- return iterate_metadata_intersection_literalSet{}, false
883
- }
884
- visited[typ] = true
885
- if typ.IsUnion() {
886
- output := iterate_metadata_intersection_literalSet{}
887
- for _, child := range typ.Types() {
888
- next, ok := iterate_metadata_intersection_literal_set(checker, child, visited)
889
- if ok == false {
890
- return iterate_metadata_intersection_literalSet{}, false
891
- }
892
- if output.Kind == "" {
893
- output.Kind = next.Kind
894
- output.Values = map[string]bool{}
895
- } else if output.Kind != next.Kind {
896
- return iterate_metadata_intersection_literalSet{}, false
897
- }
898
- for value := range next.Values {
899
- output.Values[value] = true
900
- }
901
- }
902
- return output, output.Kind != "" && len(output.Values) != 0
903
- }
904
- filter := func(flag nativechecker.TypeFlags) bool {
905
- return typ.Flags()&flag != 0
906
- }
907
- if filter(nativechecker.TypeFlagsStringLiteral) {
908
- return iterate_metadata_intersection_literalSet{
909
- Kind: "string",
910
- Values: map[string]bool{fmt.Sprint(typ.AsLiteralType().Value()): true},
911
- }, true
912
- }
913
- if filter(nativechecker.TypeFlagsNumberLiteral) {
914
- return iterate_metadata_intersection_literalSet{
915
- Kind: "number",
916
- Values: map[string]bool{fmt.Sprint(typ.AsLiteralType().Value()): true},
917
- }, true
918
- }
919
- if filter(nativechecker.TypeFlagsBigIntLiteral) {
920
- return iterate_metadata_intersection_literalSet{
921
- Kind: "bigint",
922
- Values: map[string]bool{fmt.Sprint(typ.AsLiteralType().Value()): true},
923
- }, true
924
- }
925
- if filter(nativechecker.TypeFlagsBooleanLiteral) {
926
- return iterate_metadata_intersection_literalSet{
927
- Kind: "boolean",
928
- Values: map[string]bool{checker.TypeToString(typ): true},
929
- }, true
930
- }
931
- return iterate_metadata_intersection_literalSet{}, false
932
- }
933
-
934
- func iterate_metadata_intersection_literal_disjoint(
935
- x iterate_metadata_intersection_literalSet,
936
- y iterate_metadata_intersection_literalSet,
937
- ) bool {
938
- if x.Kind == "" || y.Kind == "" || len(x.Values) == 0 || len(y.Values) == 0 {
939
- return false
940
- }
941
- if x.Kind != y.Kind {
942
- return true
943
- }
944
- if len(x.Values) > len(y.Values) {
945
- x, y = y, x
946
- }
947
- for value := range x.Values {
948
- if y.Values[value] {
949
- return false
950
- }
951
- }
952
- return true
953
- }
954
-
955
- func iterate_metadata_intersection_category(
956
- checker *nativechecker.Checker,
957
- collection *schemametadata.MetadataCollection,
958
- typ *nativechecker.Type,
959
- ) string {
960
- if checker == nil || typ == nil {
961
- return ""
962
- }
963
- for _, info := range iterate_metadata_atomic_atomcs {
964
- if typ.Flags()&info.atomic != 0 || typ.Flags()&info.literal != 0 {
965
- return "primitive:" + info.name
966
- }
967
- }
968
- if nativechecker.IsTupleType(typ) || nativechecker.Checker_isArrayType(checker, typ) {
969
- return "array"
970
- }
971
- for _, symbol := range collection.ApparentProperties(checker, typ) {
972
- if symbol.Name == "typia.tag" {
973
- return "tag"
974
- }
975
- }
976
- name := iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(typ))
977
- if name == "" {
978
- name = iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(checker.GetApparentType(typ)))
979
- }
980
- if atomic, ok := schemametadata.MetadataSchema_atomicLikeNative(name); ok {
981
- return "primitive:" + atomic
982
- }
983
- if name == "Array" || name == "ReadonlyArray" {
984
- return "array"
985
- }
986
- if _, ok := iterate_metadata_native_simples[name]; ok {
987
- return "native:" + name
988
- }
989
- for _, generic := range iterate_metadata_native_generics {
990
- if strings.HasPrefix(name, generic.Name) {
991
- return "object"
992
- }
993
- }
994
- if name == "Map" || name == "ReadonlyMap" || name == "Set" || name == "ReadonlySet" {
995
- return "object"
996
- }
997
- if metadata_get_function_node(typ) != nil || len(checker.GetSignaturesOfType(typ, nativechecker.SignatureKindCall)) != 0 {
998
- return "object"
999
- }
1000
- if typ.Flags()&nativechecker.TypeFlagsObject != 0 {
1001
- return "object"
1002
- }
1003
- return ""
1004
- }
1005
-
1006
- func iterate_metadata_intersection_is_type_tag(obj *schemametadata.MetadataObjectType) bool {
1007
- if obj == nil || len(obj.Properties) != 1 {
1008
- return false
1009
- }
1010
- top := obj.Properties[0]
1011
- lit := top.Key.GetSoleLiteral()
1012
- if lit == nil || *lit != "typia.tag" {
1013
- return false
1014
- }
1015
- value := top.Value
1016
- if value.Size() != 1 || len(value.Objects) != 1 || value.IsRequired() == true || value.Nullable == true {
1017
- return false
1018
- }
1019
- tag := value.Objects[0].Type
1020
- fields := map[string]bool{}
1021
- for _, property := range tag.Properties {
1022
- if key := property.Key.GetSoleLiteral(); key != nil {
1023
- fields[*key] = true
1024
- }
1025
- }
1026
- for _, field := range []string{"target", "kind", "value"} {
1027
- if fields[field] == false {
1028
- return false
1029
- }
1030
- }
1031
- return true
1032
- }
1033
-
1034
- func iterate_metadata_intersection_analyze_type_tags(props IMetadataIteratorProps, objects []*schemametadata.MetadataObjectType, candidates map[string]string) []schemametadata.IMetadataTypeTag {
1035
- if MetadataTypeTagAnalyzer == nil {
1036
- return []schemametadata.IMetadataTypeTag{}
1037
- }
1038
- typ := ""
1039
- for _, value := range candidates {
1040
- typ = value
1041
- break
1042
- }
1043
- return MetadataTypeTagAnalyzer(struct {
1044
- Errors *[]MetadataFactory_IError
1045
- Type string
1046
- Objects []*schemametadata.MetadataObjectType
1047
- Explore MetadataFactory_IExplore
1048
- }{
1049
- Errors: props.Errors,
1050
- Type: typ,
1051
- Objects: objects,
1052
- Explore: props.Explore,
1053
- })
1054
- }
1
+ package metadata
2
+
3
+ import (
4
+ "fmt"
5
+ "strings"
6
+
7
+ nativeast "github.com/microsoft/typescript-go/shim/ast"
8
+ nativechecker "github.com/microsoft/typescript-go/shim/checker"
9
+ schemametadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
10
+ )
11
+
12
+ func Iterate_metadata_intersection(props IMetadataIteratorProps) bool {
13
+ if props.Intersected == true {
14
+ return false
15
+ }
16
+ if props.Type == nil || props.Type.IsIntersection() == false {
17
+ return false
18
+ }
19
+ if iterate_metadata_intersection_reduce_union(props) {
20
+ return true
21
+ }
22
+ if iterate_metadata_intersection_is_plain_object_only(props.Checker, props.Components, props.Type, map[*nativechecker.Type]bool{}) {
23
+ if (props.Unioned || props.Prunable) && iterate_metadata_intersection_has_conflicting_required_literal(props.Checker, props.Components, props.Type, map[*nativechecker.Type]bool{}) {
24
+ return true
25
+ }
26
+ return false
27
+ }
28
+ if (props.Unioned || props.Prunable) && iterate_metadata_intersection_is_never(props, props.Type, map[*nativechecker.Type]bool{}) {
29
+ return true
30
+ }
31
+
32
+ commit := props.Components.Clone()
33
+ fakeErrors := []MetadataFactory_IError{}
34
+ children := make([]*schemametadata.MetadataSchema, 0, len(props.Type.Types()))
35
+ for _, typ := range props.Type.Types() {
36
+ options := props.Options
37
+ options.Absorb = true
38
+ options.Functional = false
39
+ explore := props.Explore
40
+ explore.Aliased = false
41
+ children = append(children, Explore_metadata(Explore_metadata_IProps{
42
+ Options: options,
43
+ Checker: props.Checker,
44
+ Components: props.Components,
45
+ Errors: &fakeErrors,
46
+ Type: typ,
47
+ Explore: explore,
48
+ Intersected: false,
49
+ NoCache: true,
50
+ Prunable: true,
51
+ }))
52
+ }
53
+
54
+ escape := func(out bool) bool {
55
+ *props.Components = *commit
56
+ return out
57
+ }
58
+ if len(fakeErrors) != 0 {
59
+ if props.Errors != nil {
60
+ *props.Errors = append(*props.Errors, fakeErrors...)
61
+ }
62
+ return escape(true)
63
+ }
64
+ if len(children) == 0 {
65
+ return escape(false)
66
+ }
67
+ for _, child := range children {
68
+ if child.Any == true || child.Size() == 0 {
69
+ return escape(false)
70
+ }
71
+ }
72
+
73
+ indexes := []int{}
74
+ metadatas := []*schemametadata.MetadataSchema{}
75
+ tagObjects := []*schemametadata.MetadataObjectType{}
76
+ for i, child := range children {
77
+ if child.Size() == 1 &&
78
+ len(child.Objects) == 1 &&
79
+ iterate_metadata_intersection_is_type_tag(child.Objects[0].Type) {
80
+ tagObjects = append(tagObjects, child.Objects[0].Type)
81
+ continue
82
+ }
83
+ indexes = append(indexes, i)
84
+ metadatas = append(metadatas, child)
85
+ }
86
+
87
+ nonsensible := func() bool {
88
+ if props.Errors != nil {
89
+ names := make([]string, 0, len(children))
90
+ for _, child := range children {
91
+ names = append(names, child.GetName())
92
+ }
93
+ *props.Errors = append(*props.Errors, MetadataFactory_IError{
94
+ Name: strings.Join(names, " & "),
95
+ Explore: props.Explore,
96
+ Messages: []string{"nonsensible intersection"},
97
+ })
98
+ }
99
+ return escape(true)
100
+ }
101
+
102
+ if len(metadatas) == 0 {
103
+ if len(tagObjects) != 0 {
104
+ if props.Errors != nil {
105
+ names := make([]string, 0, len(children))
106
+ for _, child := range children {
107
+ names = append(names, child.GetName())
108
+ }
109
+ *props.Errors = append(*props.Errors, MetadataFactory_IError{
110
+ Name: strings.Join(names, " & "),
111
+ Explore: props.Explore,
112
+ Messages: []string{"type tag cannot be standalone"},
113
+ })
114
+ }
115
+ return escape(true)
116
+ }
117
+ return escape(false)
118
+ }
119
+ onlyObjects := true
120
+ for _, m := range metadatas {
121
+ if len(m.Objects) != 1 {
122
+ onlyObjects = false
123
+ break
124
+ }
125
+ }
126
+ if onlyObjects && len(tagObjects) == 0 {
127
+ return escape(false)
128
+ }
129
+ if len(metadatas) != 1 {
130
+ removable := []int{}
131
+ for i, m := range metadatas {
132
+ if iterate_metadata_intersection_is_removable_brand(m) {
133
+ removable = append(removable, i)
134
+ }
135
+ }
136
+ if len(removable) == len(metadatas) {
137
+ return nonsensible()
138
+ }
139
+ for i := len(removable) - 1; i >= 0; i-- {
140
+ index := removable[i]
141
+ metadatas = append(metadatas[:index], metadatas[index+1:]...)
142
+ indexes = append(indexes[:index], indexes[index+1:]...)
143
+ }
144
+ }
145
+ // After phantom brands are dropped, exactly one single-bucket base member must
146
+ // survive (`string & Brand` → string). Two genuine non-object members
147
+ // (`string[] & number[]`, `A[] & [t…]`, `T1 & T2`, …) — or a multi-bucket
148
+ // survivor — is an intersection of constraint carriers, a misuse with no sound
149
+ // merge, so it stays nonsensible. This subsumes the per-candidate-kind check
150
+ // below, which therefore always collapses to a single candidate.
151
+ if len(metadatas) != 1 || metadatas[0].Size() != 1 {
152
+ return nonsensible()
153
+ }
154
+
155
+ candidates := map[string]string{}
156
+ assigners := []func([]schemametadata.IMetadataTypeTag){}
157
+ for _, meta := range metadatas {
158
+ for _, atomic := range meta.Atomics {
159
+ candidates[atomic.Type] = atomic.Type
160
+ assigners = append(assigners, func(kind string) func([]schemametadata.IMetadataTypeTag) {
161
+ return func(tags []schemametadata.IMetadataTypeTag) {
162
+ for _, atom := range props.Metadata.Atomics {
163
+ if atom.Type == kind {
164
+ atom.Tags = append(atom.Tags, tags)
165
+ return
166
+ }
167
+ }
168
+ }
169
+ }(atomic.Type))
170
+ }
171
+ for _, constant := range meta.Constants {
172
+ for _, value := range constant.Values {
173
+ candidates[constant.Type] = constant.Type
174
+ assigners = append(assigners, func(kind string, v any) func([]schemametadata.IMetadataTypeTag) {
175
+ return func(tags []schemametadata.IMetadataTypeTag) {
176
+ for _, c := range props.Metadata.Constants {
177
+ if c.Type != kind {
178
+ continue
179
+ }
180
+ for _, value := range c.Values {
181
+ if value.Value == v {
182
+ value.Tags = append(value.Tags, tags)
183
+ return
184
+ }
185
+ }
186
+ }
187
+ }
188
+ }(constant.Type, value.Value))
189
+ }
190
+ }
191
+ for _, template := range meta.Templates {
192
+ candidates["string"] = "string"
193
+ assigners = append(assigners, func(base string) func([]schemametadata.IMetadataTypeTag) {
194
+ return func(tags []schemametadata.IMetadataTypeTag) {
195
+ for _, tpl := range props.Metadata.Templates {
196
+ if tpl.GetBaseName() == base {
197
+ tpl.Tags = append(tpl.Tags, tags)
198
+ return
199
+ }
200
+ }
201
+ }
202
+ }(template.GetBaseName()))
203
+ }
204
+ if len(meta.Objects) != 0 {
205
+ candidates["object"] = "object"
206
+ assigners = append(assigners, func(tags []schemametadata.IMetadataTypeTag) {
207
+ if len(props.Metadata.Objects) != 0 {
208
+ props.Metadata.Objects[len(props.Metadata.Objects)-1].Tags = append(props.Metadata.Objects[len(props.Metadata.Objects)-1].Tags, tags)
209
+ }
210
+ })
211
+ }
212
+ if len(meta.Arrays) != 0 {
213
+ candidates["array"] = "array"
214
+ assigners = append(assigners, func(tags []schemametadata.IMetadataTypeTag) {
215
+ if len(props.Metadata.Arrays) != 0 {
216
+ props.Metadata.Arrays[len(props.Metadata.Arrays)-1].Tags = append(props.Metadata.Arrays[len(props.Metadata.Arrays)-1].Tags, tags)
217
+ }
218
+ })
219
+ }
220
+ if len(meta.Tuples) != 0 {
221
+ candidates["invalid"] = "tuple"
222
+ }
223
+ for _, native := range meta.Natives {
224
+ candidates["native::"+native.Name] = "object"
225
+ assigners = append(assigners, func(name string) func([]schemametadata.IMetadataTypeTag) {
226
+ return func(tags []schemametadata.IMetadataTypeTag) {
227
+ for _, n := range props.Metadata.Natives {
228
+ if n.Name == name {
229
+ n.Tags = append(n.Tags, tags)
230
+ return
231
+ }
232
+ }
233
+ }
234
+ }(native.Name))
235
+ }
236
+ for _, set := range meta.Sets {
237
+ name := set.Value.GetName()
238
+ candidates["set::"+name] = "object"
239
+ assigners = append(assigners, func(name string) func([]schemametadata.IMetadataTypeTag) {
240
+ return func(tags []schemametadata.IMetadataTypeTag) {
241
+ for _, s := range props.Metadata.Sets {
242
+ if s.Value.GetName() == name {
243
+ s.Tags = append(s.Tags, tags)
244
+ return
245
+ }
246
+ }
247
+ }
248
+ }(name))
249
+ }
250
+ for _, m := range meta.Maps {
251
+ name := m.Key.GetName() + "::" + m.Value.GetName()
252
+ candidates["map::"+name] = "object"
253
+ assigners = append(assigners, func(keyName string, valueName string) func([]schemametadata.IMetadataTypeTag) {
254
+ return func(tags []schemametadata.IMetadataTypeTag) {
255
+ for _, m := range props.Metadata.Maps {
256
+ if m.Key.GetName() == keyName && m.Value.GetName() == valueName {
257
+ m.Tags = append(m.Tags, tags)
258
+ return
259
+ }
260
+ }
261
+ }
262
+ }(m.Key.GetName(), m.Value.GetName()))
263
+ }
264
+ }
265
+
266
+ *props.Components = *commit
267
+ index := 0
268
+ if len(indexes) != 0 {
269
+ index = indexes[0]
270
+ }
271
+ options := props.Options
272
+ options.Functional = false
273
+ explore := props.Explore
274
+ explore.Aliased = false
275
+ explore.Escaped = false
276
+ // Re-explore the surviving base alone (`Intersected: true` short-circuits the
277
+ // intersection handler at the top of this function). TypeScript flattens nested
278
+ // intersections — `(A & B) & C` is presented as a single `types: [A, B, C]` — so
279
+ // `Types()[index]` is always an atomic member, never itself an intersection that
280
+ // would re-enter and leave `props.Metadata` empty.
281
+ Iterate_metadata(IMetadataIteratorProps{
282
+ Options: options,
283
+ Checker: props.Checker,
284
+ Components: props.Components,
285
+ Errors: props.Errors,
286
+ Metadata: props.Metadata,
287
+ Type: props.Type.Types()[index],
288
+ Explore: explore,
289
+ Intersected: true,
290
+ })
291
+ tags := iterate_metadata_intersection_analyze_type_tags(props, tagObjects, candidates)
292
+ if len(tags) != 0 {
293
+ for _, assigner := range assigners {
294
+ assigner(tags)
295
+ }
296
+ }
297
+ return true
298
+ }
299
+
300
+ // iterate_metadata_intersection_is_removable_brand reports whether an explored
301
+ // member schema is a phantom "brand" object that an intersection with a
302
+ // non-object member may drop. A value intersected with a non-object survivor is
303
+ // that primitive/array/etc. at runtime, so an object constraint carrying no
304
+ // runtime-observable required data is purely a compile-time nominal marker.
305
+ //
306
+ // The single-survivor guard lives in the caller: when EVERY member is a plain
307
+ // object, the entry point routes to the object-merge path before this runs, so
308
+ // a required-literal property of a genuine `A & B` object merge is never dropped
309
+ // here — only brands intersected with a primitive/array/template/native are.
310
+ //
311
+ // A member is removable when it is a single non-recursive object bucket whose
312
+ // every property is phantom: optional, or symbol-keyed. Those two are the only
313
+ // unambiguously phantom markers — an optional property need not be present, and
314
+ // a symbol-keyed property is never observable on a JSON value. Any required
315
+ // string-keyed property (literal or not) might be real data, so it keeps the
316
+ // intersection nonsensible rather than silently dropping a declared constraint.
317
+ func iterate_metadata_intersection_is_removable_brand(m *schemametadata.MetadataSchema) bool {
318
+ if m == nil || m.Size() != 1 || len(m.Objects) != 1 {
319
+ return false
320
+ }
321
+ object := m.Objects[0].Type
322
+ if object == nil || object.Recursive {
323
+ return false
324
+ }
325
+ for _, p := range object.Properties {
326
+ if iterate_metadata_intersection_is_phantom_property(p) == false {
327
+ return false
328
+ }
329
+ }
330
+ return true
331
+ }
332
+
333
+ func iterate_metadata_intersection_is_phantom_property(p *schemametadata.MetadataProperty) bool {
334
+ if p == nil || p.Value == nil {
335
+ return false
336
+ }
337
+ if p.Value.Optional {
338
+ return true
339
+ }
340
+ return iterate_metadata_intersection_is_symbol_key(p.Key)
341
+ }
342
+
343
+ // iterate_metadata_intersection_is_symbol_key reports whether a property key is a
344
+ // computed `symbol`/`unique symbol` member. The TypeScript checker escapes such
345
+ // member names with a leading 0xFE byte (an invalid UTF-8 lead unit that never
346
+ // begins a real string property name), so the brand `string & { [s]: T }` is
347
+ // recognized regardless of whether T is a literal.
348
+ func iterate_metadata_intersection_is_symbol_key(key *schemametadata.MetadataSchema) bool {
349
+ if key == nil {
350
+ return false
351
+ }
352
+ lit := key.GetSoleLiteral()
353
+ return lit != nil && iterate_metadata_intersection_is_symbol_name(*lit)
354
+ }
355
+
356
+ // iterate_metadata_intersection_is_symbol_name reports whether an escaped member
357
+ // name is a computed `symbol` member. The TypeScript checker prefixes such names
358
+ // with a 0xFE byte (`InternalSymbolNamePrefix`), an invalid UTF-8 lead unit that
359
+ // never begins a real string property name. This runs on the raw checker symbol
360
+ // name (`is_removable_object_constraint`) as well as the metadata key literal
361
+ // (`is_symbol_key`), so both the type-level and schema-level brand checks agree.
362
+ func iterate_metadata_intersection_is_symbol_name(name string) bool {
363
+ return len(name) != 0 && name[0] == 0xFE
364
+ }
365
+
366
+ func iterate_metadata_intersection_reduce_union(props IMetadataIteratorProps) bool {
367
+ if props.Checker == nil || props.Type == nil || props.Type.IsIntersection() == false {
368
+ return false
369
+ }
370
+ var union *nativechecker.Type
371
+ constraints := []*nativechecker.Type{}
372
+ for _, child := range props.Type.Types() {
373
+ if child.IsUnion() {
374
+ if union != nil {
375
+ return false
376
+ }
377
+ union = child
378
+ continue
379
+ }
380
+ constraints = append(constraints, child)
381
+ }
382
+ if union == nil || len(constraints) == 0 {
383
+ return false
384
+ }
385
+
386
+ identities := make([]iterate_metadata_intersection_identity, 0, len(constraints))
387
+ for _, constraint := range constraints {
388
+ if iterate_metadata_intersection_is_removable_object_constraint(props, constraint) {
389
+ continue
390
+ }
391
+ identity := iterate_metadata_intersection_identify(props.Checker, props.Components, constraint)
392
+ if identity.Kind == "" || identity.Kind == "tag" || identity.Kind == "union" {
393
+ return false
394
+ }
395
+ identities = append(identities, identity)
396
+ }
397
+ if len(identities) == 0 {
398
+ return false
399
+ }
400
+ objectExact := map[string]bool{}
401
+ for _, identity := range identities {
402
+ if identity.Kind != "object" || identity.Shareable == false {
403
+ continue
404
+ }
405
+ for _, member := range union.Types() {
406
+ next := iterate_metadata_intersection_identify(props.Checker, props.Components, member)
407
+ if next.Kind == "object" && next.Shareable && next.Name == identity.Name {
408
+ objectExact[identity.Name] = true
409
+ }
410
+ }
411
+ }
412
+
413
+ matched := false
414
+ for _, member := range union.Types() {
415
+ memberIdentity := iterate_metadata_intersection_identify(props.Checker, props.Components, member)
416
+ if memberIdentity.Kind == "" || memberIdentity.Kind == "tag" || memberIdentity.Kind == "union" {
417
+ return false
418
+ }
419
+ keep := true
420
+ for _, constraint := range identities {
421
+ ok, known := iterate_metadata_intersection_identity_matches(memberIdentity, constraint, objectExact)
422
+ if known == false {
423
+ return false
424
+ }
425
+ if ok == false {
426
+ keep = false
427
+ break
428
+ }
429
+ }
430
+ if keep == false {
431
+ continue
432
+ }
433
+ matched = true
434
+ explore := props.Explore
435
+ explore.Aliased = false
436
+ Iterate_metadata(IMetadataIteratorProps{
437
+ Options: props.Options,
438
+ Checker: props.Checker,
439
+ Components: props.Components,
440
+ Errors: props.Errors,
441
+ Metadata: props.Metadata,
442
+ Type: member,
443
+ Explore: explore,
444
+ Intersected: props.Intersected,
445
+ Unioned: true,
446
+ Prunable: true,
447
+ })
448
+ }
449
+ return matched || iterate_metadata_intersection_identities_decisive(identities)
450
+ }
451
+
452
+ func iterate_metadata_intersection_is_removable_object_constraint(
453
+ props IMetadataIteratorProps,
454
+ typ *nativechecker.Type,
455
+ ) bool {
456
+ checker := props.Checker
457
+ collection := props.Components
458
+ if checker == nil || collection == nil || typ == nil {
459
+ return false
460
+ }
461
+ if typ.IsUnion() {
462
+ return false
463
+ }
464
+ if typ.IsIntersection() {
465
+ children := typ.Types()
466
+ if len(children) == 0 {
467
+ return false
468
+ }
469
+ for _, child := range children {
470
+ if iterate_metadata_intersection_is_removable_object_constraint(props, child) == false {
471
+ return false
472
+ }
473
+ }
474
+ return true
475
+ }
476
+ if typ.Flags()&nativechecker.TypeFlagsObject == 0 {
477
+ return false
478
+ }
479
+ if nativechecker.IsTupleType(typ) || nativechecker.Checker_isArrayType(checker, typ) {
480
+ return false
481
+ }
482
+ if metadata_get_function_node(typ) != nil || len(checker.GetSignaturesOfType(typ, nativechecker.SignatureKindCall)) != 0 {
483
+ return false
484
+ }
485
+ name := iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(typ))
486
+ if name == "" {
487
+ name = iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(checker.GetApparentType(typ)))
488
+ }
489
+ if _, ok := iterate_metadata_native_simples[name]; ok {
490
+ return false
491
+ }
492
+ for _, generic := range iterate_metadata_native_generics {
493
+ if strings.HasPrefix(name, generic.Name) {
494
+ return false
495
+ }
496
+ }
497
+ if strings.HasPrefix(name, "Map<") || strings.HasPrefix(name, "ReadonlyMap<") ||
498
+ strings.HasPrefix(name, "Set<") || strings.HasPrefix(name, "ReadonlySet<") {
499
+ return false
500
+ }
501
+ if len(collection.IndexInfos(checker, typ)) != 0 {
502
+ return false
503
+ }
504
+ for _, symbol := range collection.ApparentProperties(checker, typ) {
505
+ // A symbol-keyed member is never observable on a JSON value (the canonical
506
+ // nominal brand), so it is phantom and removable. typia's own tag is handled
507
+ // as a constraint, not stripped here; any required string-keyed property might
508
+ // be real data — both keep the object as a constraint, not a removable brand.
509
+ if iterate_metadata_intersection_is_symbol_name(symbol.Name) {
510
+ continue
511
+ }
512
+ if symbol.Name == "typia.tag" || symbol.Flags&nativeast.SymbolFlagsOptional == 0 {
513
+ return false
514
+ }
515
+ }
516
+ return true
517
+ }
518
+
519
+ type iterate_metadata_intersection_identity struct {
520
+ Kind string
521
+ Name string
522
+ Shareable bool
523
+ }
524
+
525
+ func iterate_metadata_intersection_identify(
526
+ checker *nativechecker.Checker,
527
+ collection *schemametadata.MetadataCollection,
528
+ typ *nativechecker.Type,
529
+ ) iterate_metadata_intersection_identity {
530
+ if checker == nil || typ == nil {
531
+ return iterate_metadata_intersection_identity{}
532
+ }
533
+ if typ.IsUnion() {
534
+ return iterate_metadata_intersection_identity{Kind: "union"}
535
+ }
536
+ if typ.IsIntersection() {
537
+ return iterate_metadata_intersection_identity{Kind: "intersection"}
538
+ }
539
+ for _, info := range iterate_metadata_atomic_atomcs {
540
+ if typ.Flags()&info.atomic != 0 || typ.Flags()&info.literal != 0 {
541
+ return iterate_metadata_intersection_identity{Kind: "primitive", Name: info.name}
542
+ }
543
+ }
544
+ name := iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(typ))
545
+ if name == "" {
546
+ name = iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(checker.GetApparentType(typ)))
547
+ }
548
+ if atomic, ok := schemametadata.MetadataSchema_atomicLikeNative(name); ok {
549
+ return iterate_metadata_intersection_identity{Kind: "primitive", Name: atomic}
550
+ }
551
+ if nativechecker.IsTupleType(typ) || nativechecker.Checker_isArrayType(checker, typ) || name == "Array" || name == "ReadonlyArray" {
552
+ return iterate_metadata_intersection_identity{
553
+ Kind: "array",
554
+ Name: metadata_type_full_name(checker, typ, collection),
555
+ }
556
+ }
557
+ for _, symbol := range collection.ApparentProperties(checker, typ) {
558
+ if symbol.Name == "typia.tag" {
559
+ return iterate_metadata_intersection_identity{Kind: "tag"}
560
+ }
561
+ }
562
+ if _, ok := iterate_metadata_native_simples[name]; ok {
563
+ return iterate_metadata_intersection_identity{Kind: "native", Name: name}
564
+ }
565
+ for _, generic := range iterate_metadata_native_generics {
566
+ if strings.HasPrefix(name, generic.Name) {
567
+ return iterate_metadata_intersection_identity{Kind: "native", Name: generic.Name}
568
+ }
569
+ }
570
+ if name == "Map" || name == "ReadonlyMap" || name == "Set" || name == "ReadonlySet" {
571
+ return iterate_metadata_intersection_identity{
572
+ Kind: "native",
573
+ Name: name,
574
+ }
575
+ }
576
+ if typ.Flags()&nativechecker.TypeFlagsObject == 0 {
577
+ return iterate_metadata_intersection_identity{}
578
+ }
579
+ fullName := metadata_type_full_name(checker, typ, collection)
580
+ sanitized := iterate_metadata_intersection_sanitize_name(fullName)
581
+ return iterate_metadata_intersection_identity{
582
+ Kind: "object",
583
+ Name: sanitized,
584
+ Shareable: iterate_metadata_intersection_shareable_name(fullName, sanitized),
585
+ }
586
+ }
587
+
588
+ func iterate_metadata_intersection_identity_matches(
589
+ member iterate_metadata_intersection_identity,
590
+ constraint iterate_metadata_intersection_identity,
591
+ objectExact map[string]bool,
592
+ ) (bool, bool) {
593
+ if constraint.Kind == "primitive" || constraint.Kind == "native" || constraint.Kind == "array" {
594
+ return member.Kind == constraint.Kind && member.Name == constraint.Name, true
595
+ }
596
+ if constraint.Kind != "object" {
597
+ return false, false
598
+ }
599
+ if member.Kind == "primitive" || member.Kind == "native" || member.Kind == "array" {
600
+ return false, true
601
+ }
602
+ if member.Kind != "object" || constraint.Shareable == false || objectExact[constraint.Name] == false {
603
+ return false, false
604
+ }
605
+ return member.Shareable && member.Name == constraint.Name, true
606
+ }
607
+
608
+ func iterate_metadata_intersection_identities_decisive(identities []iterate_metadata_intersection_identity) bool {
609
+ for _, identity := range identities {
610
+ if identity.Kind == "object" && identity.Shareable == false {
611
+ return false
612
+ }
613
+ }
614
+ return true
615
+ }
616
+
617
+ func iterate_metadata_intersection_sanitize_name(name string) string {
618
+ name = strings.ToValidUTF8(name, "__")
619
+ return strings.ReplaceAll(name, "\uFFFD", "__")
620
+ }
621
+
622
+ func iterate_metadata_intersection_shareable_name(fullName string, sanitized string) bool {
623
+ fullName = strings.TrimSpace(fullName)
624
+ if fullName == "" || strings.Contains(fullName, "{") {
625
+ return false
626
+ }
627
+ return strings.Contains(sanitized, "__type") == false
628
+ }
629
+
630
+ func iterate_metadata_intersection_is_plain_object_only(
631
+ checker *nativechecker.Checker,
632
+ collection *schemametadata.MetadataCollection,
633
+ typ *nativechecker.Type,
634
+ visited map[*nativechecker.Type]bool,
635
+ ) bool {
636
+ if checker == nil || typ == nil {
637
+ return false
638
+ }
639
+ if visited[typ] {
640
+ return true
641
+ }
642
+ if cached, ok := collection.LookupPlainObjectIntersection(typ); ok {
643
+ return cached
644
+ }
645
+ visited[typ] = true
646
+
647
+ result := false
648
+ defer func() {
649
+ collection.StorePlainObjectIntersection(typ, result)
650
+ }()
651
+ if typ.IsUnion() {
652
+ return false
653
+ }
654
+ if typ.IsIntersection() {
655
+ for _, child := range typ.Types() {
656
+ if iterate_metadata_intersection_is_plain_object_only(checker, collection, child, visited) == false {
657
+ return false
658
+ }
659
+ }
660
+ result = true
661
+ return true
662
+ }
663
+ if typ.Flags()&nativechecker.TypeFlagsObject == 0 {
664
+ return false
665
+ }
666
+ if nativechecker.IsTupleType(typ) || nativechecker.Checker_isArrayType(checker, typ) {
667
+ return false
668
+ }
669
+ if metadata_get_function_node(typ) != nil || len(checker.GetSignaturesOfType(typ, nativechecker.SignatureKindCall)) != 0 {
670
+ return false
671
+ }
672
+
673
+ name := iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(typ))
674
+ if name == "" {
675
+ name = iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(checker.GetApparentType(typ)))
676
+ }
677
+ if _, ok := iterate_metadata_native_simples[name]; ok {
678
+ return false
679
+ }
680
+ for _, generic := range iterate_metadata_native_generics {
681
+ if strings.HasPrefix(name, generic.Name) {
682
+ return false
683
+ }
684
+ }
685
+ if strings.HasPrefix(name, "Map<") || strings.HasPrefix(name, "ReadonlyMap<") ||
686
+ strings.HasPrefix(name, "Set<") || strings.HasPrefix(name, "ReadonlySet<") {
687
+ return false
688
+ }
689
+
690
+ for _, symbol := range collection.ApparentProperties(checker, typ) {
691
+ if symbol.Name == "typia.tag" {
692
+ return false
693
+ }
694
+ }
695
+ result = true
696
+ return true
697
+ }
698
+
699
+ func iterate_metadata_intersection_is_never(
700
+ props IMetadataIteratorProps,
701
+ typ *nativechecker.Type,
702
+ visited map[*nativechecker.Type]bool,
703
+ ) bool {
704
+ checker := props.Checker
705
+ collection := props.Components
706
+ if checker == nil || collection == nil || typ == nil {
707
+ return false
708
+ }
709
+ state := struct {
710
+ Primitive string
711
+ Array bool
712
+ Object bool
713
+ Native string
714
+ Unknown bool
715
+ Tagged bool
716
+ Never bool
717
+ }{}
718
+ var next func(*nativechecker.Type)
719
+ next = func(child *nativechecker.Type) {
720
+ if child == nil || state.Never || state.Unknown || state.Tagged {
721
+ return
722
+ }
723
+ if visited[child] {
724
+ return
725
+ }
726
+ visited[child] = true
727
+ if child.IsUnion() {
728
+ state.Unknown = true
729
+ return
730
+ }
731
+ if child.IsIntersection() {
732
+ for _, elem := range child.Types() {
733
+ next(elem)
734
+ }
735
+ return
736
+ }
737
+ if iterate_metadata_intersection_is_removable_object_constraint(props, child) {
738
+ return
739
+ }
740
+ category := iterate_metadata_intersection_category(checker, collection, child)
741
+ if category == "" {
742
+ state.Unknown = true
743
+ return
744
+ }
745
+ if category == "tag" {
746
+ state.Tagged = true
747
+ return
748
+ }
749
+ if strings.HasPrefix(category, "primitive:") {
750
+ if state.Primitive != "" && state.Primitive != category {
751
+ state.Never = true
752
+ return
753
+ }
754
+ state.Primitive = category
755
+ if state.Array || state.Object || state.Native != "" {
756
+ state.Never = true
757
+ }
758
+ return
759
+ }
760
+ if category == "array" {
761
+ state.Array = true
762
+ if state.Primitive != "" || state.Native != "" || state.Object {
763
+ state.Never = true
764
+ }
765
+ return
766
+ }
767
+ if strings.HasPrefix(category, "native:") {
768
+ if state.Native != "" && state.Native != category {
769
+ state.Never = true
770
+ return
771
+ }
772
+ state.Native = category
773
+ if state.Primitive != "" || state.Array || state.Object {
774
+ state.Never = true
775
+ }
776
+ return
777
+ } else {
778
+ state.Object = true
779
+ }
780
+ if state.Primitive != "" || state.Native != "" || state.Array {
781
+ state.Never = true
782
+ }
783
+ }
784
+ next(typ)
785
+ return state.Never && state.Unknown == false && state.Tagged == false
786
+ }
787
+
788
+ type iterate_metadata_intersection_literalSet struct {
789
+ Kind string
790
+ Values map[string]bool
791
+ }
792
+
793
+ func iterate_metadata_intersection_has_conflicting_required_literal(
794
+ checker *nativechecker.Checker,
795
+ collection *schemametadata.MetadataCollection,
796
+ typ *nativechecker.Type,
797
+ visited map[*nativechecker.Type]bool,
798
+ ) bool {
799
+ if checker == nil || typ == nil {
800
+ return false
801
+ }
802
+ if typ.IsIntersection() == false {
803
+ return false
804
+ }
805
+ if cached, ok := collection.LookupLiteralConflict(typ); ok {
806
+ return cached
807
+ }
808
+ result := false
809
+ defer func() {
810
+ collection.StoreLiteralConflict(typ, result)
811
+ }()
812
+ constraints := map[string][]iterate_metadata_intersection_literalSet{}
813
+ var collect func(*nativechecker.Type) bool
814
+ collect = func(child *nativechecker.Type) bool {
815
+ if child == nil {
816
+ return false
817
+ }
818
+ if visited[child] {
819
+ return false
820
+ }
821
+ visited[child] = true
822
+ if child.IsIntersection() {
823
+ for _, grand := range child.Types() {
824
+ if collect(grand) {
825
+ return true
826
+ }
827
+ }
828
+ return false
829
+ }
830
+ if child.IsUnion() || child.Flags()&nativechecker.TypeFlagsObject == 0 {
831
+ return false
832
+ }
833
+ for _, symbol := range collection.ApparentProperties(checker, child) {
834
+ if symbol.Flags&nativeast.SymbolFlagsOptional != 0 {
835
+ continue
836
+ }
837
+ propertyType := iterate_metadata_intersection_property_type(checker, child, symbol)
838
+ literal, ok := iterate_metadata_intersection_literal_set(checker, propertyType, map[*nativechecker.Type]bool{})
839
+ if ok == false {
840
+ continue
841
+ }
842
+ list := constraints[symbol.Name]
843
+ for _, prev := range list {
844
+ if iterate_metadata_intersection_literal_disjoint(prev, literal) {
845
+ result = true
846
+ return true
847
+ }
848
+ }
849
+ constraints[symbol.Name] = append(list, literal)
850
+ }
851
+ return false
852
+ }
853
+ result = collect(typ)
854
+ return result
855
+ }
856
+
857
+ func iterate_metadata_intersection_property_type(
858
+ checker *nativechecker.Checker,
859
+ owner *nativechecker.Type,
860
+ symbol *nativeast.Symbol,
861
+ ) *nativechecker.Type {
862
+ if checker == nil || owner == nil || symbol == nil {
863
+ return nil
864
+ }
865
+ if len(symbol.Declarations) != 0 {
866
+ if typ := checker.GetTypeOfSymbolAtLocation(symbol, symbol.Declarations[0]); typ != nil {
867
+ return typ
868
+ }
869
+ }
870
+ return nativechecker.Checker_getTypeOfPropertyOfType(checker, owner, symbol.Name)
871
+ }
872
+
873
+ func iterate_metadata_intersection_literal_set(
874
+ checker *nativechecker.Checker,
875
+ typ *nativechecker.Type,
876
+ visited map[*nativechecker.Type]bool,
877
+ ) (iterate_metadata_intersection_literalSet, bool) {
878
+ if checker == nil || typ == nil {
879
+ return iterate_metadata_intersection_literalSet{}, false
880
+ }
881
+ if visited[typ] {
882
+ return iterate_metadata_intersection_literalSet{}, false
883
+ }
884
+ visited[typ] = true
885
+ if typ.IsUnion() {
886
+ output := iterate_metadata_intersection_literalSet{}
887
+ for _, child := range typ.Types() {
888
+ next, ok := iterate_metadata_intersection_literal_set(checker, child, visited)
889
+ if ok == false {
890
+ return iterate_metadata_intersection_literalSet{}, false
891
+ }
892
+ if output.Kind == "" {
893
+ output.Kind = next.Kind
894
+ output.Values = map[string]bool{}
895
+ } else if output.Kind != next.Kind {
896
+ return iterate_metadata_intersection_literalSet{}, false
897
+ }
898
+ for value := range next.Values {
899
+ output.Values[value] = true
900
+ }
901
+ }
902
+ return output, output.Kind != "" && len(output.Values) != 0
903
+ }
904
+ filter := func(flag nativechecker.TypeFlags) bool {
905
+ return typ.Flags()&flag != 0
906
+ }
907
+ if filter(nativechecker.TypeFlagsStringLiteral) {
908
+ return iterate_metadata_intersection_literalSet{
909
+ Kind: "string",
910
+ Values: map[string]bool{fmt.Sprint(typ.AsLiteralType().Value()): true},
911
+ }, true
912
+ }
913
+ if filter(nativechecker.TypeFlagsNumberLiteral) {
914
+ return iterate_metadata_intersection_literalSet{
915
+ Kind: "number",
916
+ Values: map[string]bool{fmt.Sprint(typ.AsLiteralType().Value()): true},
917
+ }, true
918
+ }
919
+ if filter(nativechecker.TypeFlagsBigIntLiteral) {
920
+ return iterate_metadata_intersection_literalSet{
921
+ Kind: "bigint",
922
+ Values: map[string]bool{fmt.Sprint(typ.AsLiteralType().Value()): true},
923
+ }, true
924
+ }
925
+ if filter(nativechecker.TypeFlagsBooleanLiteral) {
926
+ return iterate_metadata_intersection_literalSet{
927
+ Kind: "boolean",
928
+ Values: map[string]bool{checker.TypeToString(typ): true},
929
+ }, true
930
+ }
931
+ return iterate_metadata_intersection_literalSet{}, false
932
+ }
933
+
934
+ func iterate_metadata_intersection_literal_disjoint(
935
+ x iterate_metadata_intersection_literalSet,
936
+ y iterate_metadata_intersection_literalSet,
937
+ ) bool {
938
+ if x.Kind == "" || y.Kind == "" || len(x.Values) == 0 || len(y.Values) == 0 {
939
+ return false
940
+ }
941
+ if x.Kind != y.Kind {
942
+ return true
943
+ }
944
+ if len(x.Values) > len(y.Values) {
945
+ x, y = y, x
946
+ }
947
+ for value := range x.Values {
948
+ if y.Values[value] {
949
+ return false
950
+ }
951
+ }
952
+ return true
953
+ }
954
+
955
+ func iterate_metadata_intersection_category(
956
+ checker *nativechecker.Checker,
957
+ collection *schemametadata.MetadataCollection,
958
+ typ *nativechecker.Type,
959
+ ) string {
960
+ if checker == nil || typ == nil {
961
+ return ""
962
+ }
963
+ for _, info := range iterate_metadata_atomic_atomcs {
964
+ if typ.Flags()&info.atomic != 0 || typ.Flags()&info.literal != 0 {
965
+ return "primitive:" + info.name
966
+ }
967
+ }
968
+ if nativechecker.IsTupleType(typ) || nativechecker.Checker_isArrayType(checker, typ) {
969
+ return "array"
970
+ }
971
+ for _, symbol := range collection.ApparentProperties(checker, typ) {
972
+ if symbol.Name == "typia.tag" {
973
+ return "tag"
974
+ }
975
+ }
976
+ name := iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(typ))
977
+ if name == "" {
978
+ name = iterate_metadata_native_getNativeName(metadata_type_symbol_base_name(checker.GetApparentType(typ)))
979
+ }
980
+ if atomic, ok := schemametadata.MetadataSchema_atomicLikeNative(name); ok {
981
+ return "primitive:" + atomic
982
+ }
983
+ if name == "Array" || name == "ReadonlyArray" {
984
+ return "array"
985
+ }
986
+ if _, ok := iterate_metadata_native_simples[name]; ok {
987
+ return "native:" + name
988
+ }
989
+ for _, generic := range iterate_metadata_native_generics {
990
+ if strings.HasPrefix(name, generic.Name) {
991
+ return "object"
992
+ }
993
+ }
994
+ if name == "Map" || name == "ReadonlyMap" || name == "Set" || name == "ReadonlySet" {
995
+ return "object"
996
+ }
997
+ if metadata_get_function_node(typ) != nil || len(checker.GetSignaturesOfType(typ, nativechecker.SignatureKindCall)) != 0 {
998
+ return "object"
999
+ }
1000
+ if typ.Flags()&nativechecker.TypeFlagsObject != 0 {
1001
+ return "object"
1002
+ }
1003
+ return ""
1004
+ }
1005
+
1006
+ func iterate_metadata_intersection_is_type_tag(obj *schemametadata.MetadataObjectType) bool {
1007
+ if obj == nil || len(obj.Properties) != 1 {
1008
+ return false
1009
+ }
1010
+ top := obj.Properties[0]
1011
+ lit := top.Key.GetSoleLiteral()
1012
+ if lit == nil || *lit != "typia.tag" {
1013
+ return false
1014
+ }
1015
+ value := top.Value
1016
+ if value.Size() != 1 || len(value.Objects) != 1 || value.IsRequired() == true || value.Nullable == true {
1017
+ return false
1018
+ }
1019
+ tag := value.Objects[0].Type
1020
+ fields := map[string]bool{}
1021
+ for _, property := range tag.Properties {
1022
+ if key := property.Key.GetSoleLiteral(); key != nil {
1023
+ fields[*key] = true
1024
+ }
1025
+ }
1026
+ for _, field := range []string{"target", "kind", "value"} {
1027
+ if fields[field] == false {
1028
+ return false
1029
+ }
1030
+ }
1031
+ return true
1032
+ }
1033
+
1034
+ func iterate_metadata_intersection_analyze_type_tags(props IMetadataIteratorProps, objects []*schemametadata.MetadataObjectType, candidates map[string]string) []schemametadata.IMetadataTypeTag {
1035
+ if MetadataTypeTagAnalyzer == nil {
1036
+ return []schemametadata.IMetadataTypeTag{}
1037
+ }
1038
+ typ := ""
1039
+ for _, value := range candidates {
1040
+ typ = value
1041
+ break
1042
+ }
1043
+ return MetadataTypeTagAnalyzer(struct {
1044
+ Errors *[]MetadataFactory_IError
1045
+ Type string
1046
+ Objects []*schemametadata.MetadataObjectType
1047
+ Explore MetadataFactory_IExplore
1048
+ }{
1049
+ Errors: props.Errors,
1050
+ Type: typ,
1051
+ Objects: objects,
1052
+ Explore: props.Explore,
1053
+ })
1054
+ }