typia 13.0.0-dev.20260501 → 13.0.0-dev.20260506

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 (371) hide show
  1. package/lib/executable/generate/ttsc.js.map +1 -1
  2. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  3. package/lib/internal/_randomInteger.js.map +1 -1
  4. package/lib/internal/_validateReport.js.map +1 -1
  5. package/lib/transform.js.map +1 -1
  6. package/native/adapter/adapter.go +128 -128
  7. package/native/adapter/cleanup.go +155 -155
  8. package/native/adapter/imports.go +80 -80
  9. package/native/adapter/visit.go +142 -142
  10. package/native/cmd/ttsc-typia/build.go +223 -223
  11. package/native/cmd/ttsc-typia/main.go +57 -57
  12. package/native/cmd/ttsc-typia/transform.go +393 -385
  13. package/native/cmd/ttsc-typia/transform_test.go +40 -0
  14. package/native/core/context/IProgrammerProps.go +7 -7
  15. package/native/core/context/ITransformOptions.go +5 -5
  16. package/native/core/context/ITypiaContext.go +13 -13
  17. package/native/core/context/TransformerError.go +81 -81
  18. package/native/core/factories/CommentFactory.go +9 -9
  19. package/native/core/factories/ExpressionFactory.go +254 -254
  20. package/native/core/factories/FormatCheatSheet.go +23 -23
  21. package/native/core/factories/IdentifierFactory.go +130 -130
  22. package/native/core/factories/JsonMetadataFactory.go +129 -129
  23. package/native/core/factories/LiteralFactory.go +192 -192
  24. package/native/core/factories/MetadataCommentTagFactory.go +379 -379
  25. package/native/core/factories/MetadataFactory.go +462 -462
  26. package/native/core/factories/MetadataTypeTagFactory.go +498 -498
  27. package/native/core/factories/MetadataTypeTagSchemaFactory.go +102 -102
  28. package/native/core/factories/NumericRangeFactory.go +84 -84
  29. package/native/core/factories/ProtobufFactory.go +933 -933
  30. package/native/core/factories/StatementFactory.go +72 -72
  31. package/native/core/factories/TemplateFactory.go +57 -57
  32. package/native/core/factories/TypeFactory.go +125 -125
  33. package/native/core/factories/ValueFactory.go +12 -12
  34. package/native/core/factories/internal/metadata/IMetadataIteratorProps.go +35 -35
  35. package/native/core/factories/internal/metadata/MetadataHelper.go +176 -176
  36. package/native/core/factories/internal/metadata/emend_metadata_atomics.go +69 -69
  37. package/native/core/factories/internal/metadata/emplace_metadata_alias.go +27 -27
  38. package/native/core/factories/internal/metadata/emplace_metadata_array_type.go +33 -33
  39. package/native/core/factories/internal/metadata/emplace_metadata_object.go +209 -209
  40. package/native/core/factories/internal/metadata/emplace_metadata_tuple.go +50 -50
  41. package/native/core/factories/internal/metadata/explore_metadata.go +29 -29
  42. package/native/core/factories/internal/metadata/iterate_metadata.go +46 -46
  43. package/native/core/factories/internal/metadata/iterate_metadata_alias.go +25 -25
  44. package/native/core/factories/internal/metadata/iterate_metadata_array.go +65 -65
  45. package/native/core/factories/internal/metadata/iterate_metadata_atomic.go +49 -49
  46. package/native/core/factories/internal/metadata/iterate_metadata_coalesce.go +22 -22
  47. package/native/core/factories/internal/metadata/iterate_metadata_collection.go +228 -228
  48. package/native/core/factories/internal/metadata/iterate_metadata_comment_tags.go +12 -12
  49. package/native/core/factories/internal/metadata/iterate_metadata_constant.go +71 -71
  50. package/native/core/factories/internal/metadata/iterate_metadata_escape.go +48 -48
  51. package/native/core/factories/internal/metadata/iterate_metadata_function.go +82 -82
  52. package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +319 -319
  53. package/native/core/factories/internal/metadata/iterate_metadata_map.go +51 -51
  54. package/native/core/factories/internal/metadata/iterate_metadata_native.go +85 -85
  55. package/native/core/factories/internal/metadata/iterate_metadata_object.go +27 -27
  56. package/native/core/factories/internal/metadata/iterate_metadata_set.go +37 -37
  57. package/native/core/factories/internal/metadata/iterate_metadata_sort.go +137 -137
  58. package/native/core/factories/internal/metadata/iterate_metadata_template.go +33 -33
  59. package/native/core/factories/internal/metadata/iterate_metadata_tuple.go +16 -16
  60. package/native/core/factories/internal/metadata/iterate_metadata_union.go +18 -18
  61. package/native/core/programmers/AssertProgrammer.go +389 -389
  62. package/native/core/programmers/ImportProgrammer.go +196 -196
  63. package/native/core/programmers/IsProgrammer.go +293 -293
  64. package/native/core/programmers/RandomProgrammer.go +1094 -1094
  65. package/native/core/programmers/ValidateProgrammer.go +369 -369
  66. package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +133 -133
  67. package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +104 -104
  68. package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +100 -100
  69. package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +79 -79
  70. package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +159 -159
  71. package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +99 -99
  72. package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +138 -138
  73. package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +222 -222
  74. package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +116 -116
  75. package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +36 -36
  76. package/native/core/programmers/helpers/AtomicPredicator.go +35 -35
  77. package/native/core/programmers/helpers/CloneJoiner.go +217 -217
  78. package/native/core/programmers/helpers/FunctionProgrammer.go +79 -79
  79. package/native/core/programmers/helpers/HttpMetadataUtil.go +17 -17
  80. package/native/core/programmers/helpers/ICheckEntry.go +5 -5
  81. package/native/core/programmers/helpers/IExpressionEntry.go +6 -6
  82. package/native/core/programmers/helpers/NotationJoiner.go +159 -159
  83. package/native/core/programmers/helpers/OptionPredicator.go +4 -4
  84. package/native/core/programmers/helpers/ProtobufUtil.go +231 -231
  85. package/native/core/programmers/helpers/ProtobufWire.go +6 -6
  86. package/native/core/programmers/helpers/PruneJoiner.go +227 -227
  87. package/native/core/programmers/helpers/RandomJoiner.go +155 -155
  88. package/native/core/programmers/helpers/StringifyJoinder.go +331 -331
  89. package/native/core/programmers/helpers/StringifyPredicator.go +10 -10
  90. package/native/core/programmers/helpers/UnionExplorer.go +835 -835
  91. package/native/core/programmers/helpers/UnionPredicator.go +78 -78
  92. package/native/core/programmers/helpers/disable_function_programmer_declare.go +6 -6
  93. package/native/core/programmers/http/HttpAssertFormDataProgrammer.go +93 -93
  94. package/native/core/programmers/http/HttpAssertHeadersProgrammer.go +42 -42
  95. package/native/core/programmers/http/HttpAssertQueryProgrammer.go +51 -51
  96. package/native/core/programmers/http/HttpFormDataProgrammer.go +351 -351
  97. package/native/core/programmers/http/HttpHeadersProgrammer.go +370 -370
  98. package/native/core/programmers/http/HttpIsFormDataProgrammer.go +109 -109
  99. package/native/core/programmers/http/HttpIsHeadersProgrammer.go +36 -36
  100. package/native/core/programmers/http/HttpIsQueryProgrammer.go +45 -45
  101. package/native/core/programmers/http/HttpParameterProgrammer.go +158 -158
  102. package/native/core/programmers/http/HttpQueryProgrammer.go +422 -422
  103. package/native/core/programmers/http/HttpValidateFormDataProgrammer.go +87 -87
  104. package/native/core/programmers/http/HttpValidateHeadersProgrammer.go +39 -39
  105. package/native/core/programmers/http/HttpValidateQueryProgrammer.go +48 -48
  106. package/native/core/programmers/internal/CheckerProgrammer.go +1490 -1490
  107. package/native/core/programmers/internal/FeatureProgrammer.go +589 -589
  108. package/native/core/programmers/iterate/check_array_length.go +46 -46
  109. package/native/core/programmers/iterate/check_bigint.go +52 -52
  110. package/native/core/programmers/iterate/check_dynamic_key.go +220 -220
  111. package/native/core/programmers/iterate/check_dynamic_properties.go +245 -245
  112. package/native/core/programmers/iterate/check_everything.go +21 -21
  113. package/native/core/programmers/iterate/check_native.go +25 -25
  114. package/native/core/programmers/iterate/check_number.go +135 -135
  115. package/native/core/programmers/iterate/check_object.go +66 -66
  116. package/native/core/programmers/iterate/check_string.go +52 -52
  117. package/native/core/programmers/iterate/check_template.go +57 -57
  118. package/native/core/programmers/iterate/check_union_array_like.go +372 -372
  119. package/native/core/programmers/iterate/decode_union_object.go +118 -118
  120. package/native/core/programmers/iterate/feature_object_entries.go +134 -134
  121. package/native/core/programmers/iterate/json_schema_alias.go +52 -52
  122. package/native/core/programmers/iterate/json_schema_array.go +52 -52
  123. package/native/core/programmers/iterate/json_schema_bigint.go +8 -8
  124. package/native/core/programmers/iterate/json_schema_boolean.go +8 -8
  125. package/native/core/programmers/iterate/json_schema_constant.go +38 -38
  126. package/native/core/programmers/iterate/json_schema_description.go +12 -12
  127. package/native/core/programmers/iterate/json_schema_discriminator.go +47 -47
  128. package/native/core/programmers/iterate/json_schema_escaped.go +58 -58
  129. package/native/core/programmers/iterate/json_schema_jsDocTags.go +34 -34
  130. package/native/core/programmers/iterate/json_schema_native.go +43 -43
  131. package/native/core/programmers/iterate/json_schema_number.go +8 -8
  132. package/native/core/programmers/iterate/json_schema_object.go +149 -149
  133. package/native/core/programmers/iterate/json_schema_plugin.go +35 -35
  134. package/native/core/programmers/iterate/json_schema_station.go +211 -211
  135. package/native/core/programmers/iterate/json_schema_string.go +8 -8
  136. package/native/core/programmers/iterate/json_schema_template.go +53 -53
  137. package/native/core/programmers/iterate/json_schema_title.go +16 -16
  138. package/native/core/programmers/iterate/json_schema_tuple.go +34 -34
  139. package/native/core/programmers/iterate/metadata_to_pattern.go +53 -53
  140. package/native/core/programmers/iterate/postfix_of_tuple.go +5 -5
  141. package/native/core/programmers/iterate/prune_object_properties.go +85 -85
  142. package/native/core/programmers/iterate/stringify_dynamic_properties.go +193 -193
  143. package/native/core/programmers/iterate/stringify_native.go +1 -1
  144. package/native/core/programmers/iterate/stringify_regular_properties.go +84 -84
  145. package/native/core/programmers/iterate/template_to_pattern.go +20 -20
  146. package/native/core/programmers/iterate/wrap_metadata_rest_tuple.go +13 -13
  147. package/native/core/programmers/json/JsonApplicationProgrammer.go +323 -323
  148. package/native/core/programmers/json/JsonAssertParseProgrammer.go +100 -100
  149. package/native/core/programmers/json/JsonAssertStringifyProgrammer.go +88 -88
  150. package/native/core/programmers/json/JsonIsParseProgrammer.go +130 -130
  151. package/native/core/programmers/json/JsonIsStringifyProgrammer.go +92 -92
  152. package/native/core/programmers/json/JsonSchemaProgrammer.go +65 -65
  153. package/native/core/programmers/json/JsonSchemasProgrammer.go +116 -116
  154. package/native/core/programmers/json/JsonStringifyProgrammer.go +1245 -1245
  155. package/native/core/programmers/json/JsonValidateParseProgrammer.go +89 -89
  156. package/native/core/programmers/json/JsonValidateStringifyProgrammer.go +106 -106
  157. package/native/core/programmers/llm/LlmApplicationProgrammer.go +445 -445
  158. package/native/core/programmers/llm/LlmCoerceProgrammer.go +79 -79
  159. package/native/core/programmers/llm/LlmControllerProgrammer.go +35 -35
  160. package/native/core/programmers/llm/LlmMetadataFactory.go +74 -74
  161. package/native/core/programmers/llm/LlmParametersProgrammer.go +104 -104
  162. package/native/core/programmers/llm/LlmParseProgrammer.go +88 -88
  163. package/native/core/programmers/llm/LlmSchemaProgrammer.go +702 -702
  164. package/native/core/programmers/llm/LlmStructuredOutputProgrammer.go +123 -123
  165. package/native/core/programmers/misc/MiscAssertCloneProgrammer.go +82 -82
  166. package/native/core/programmers/misc/MiscAssertPruneProgrammer.go +97 -97
  167. package/native/core/programmers/misc/MiscCloneProgrammer.go +1056 -1056
  168. package/native/core/programmers/misc/MiscIsCloneProgrammer.go +94 -94
  169. package/native/core/programmers/misc/MiscIsPruneProgrammer.go +86 -86
  170. package/native/core/programmers/misc/MiscLiteralsProgrammer.go +99 -99
  171. package/native/core/programmers/misc/MiscPruneProgrammer.go +700 -700
  172. package/native/core/programmers/misc/MiscValidateCloneProgrammer.go +103 -103
  173. package/native/core/programmers/misc/MiscValidatePruneProgrammer.go +94 -94
  174. package/native/core/programmers/notations/NotationAssertGeneralProgrammer.go +85 -85
  175. package/native/core/programmers/notations/NotationGeneralProgrammer.go +1188 -1188
  176. package/native/core/programmers/notations/NotationIsGeneralProgrammer.go +90 -90
  177. package/native/core/programmers/notations/NotationValidateGeneralProgrammer.go +109 -109
  178. package/native/core/programmers/protobuf/ProtobufAssertDecodeProgrammer.go +99 -99
  179. package/native/core/programmers/protobuf/ProtobufAssertEncodeProgrammer.go +114 -114
  180. package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +697 -697
  181. package/native/core/programmers/protobuf/ProtobufEncodeProgrammer.go +1039 -1039
  182. package/native/core/programmers/protobuf/ProtobufIsDecodeProgrammer.go +99 -99
  183. package/native/core/programmers/protobuf/ProtobufIsEncodeProgrammer.go +93 -93
  184. package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +228 -228
  185. package/native/core/programmers/protobuf/ProtobufValidateDecodeProgrammer.go +88 -88
  186. package/native/core/programmers/protobuf/ProtobufValidateEncodeProgrammer.go +120 -120
  187. package/native/core/schemas/metadata/IMetadataDictionary.go +4 -4
  188. package/native/core/schemas/metadata/MetadataAlias.go +15 -15
  189. package/native/core/schemas/metadata/MetadataAliasType.go +36 -36
  190. package/native/core/schemas/metadata/MetadataApplication.go +25 -25
  191. package/native/core/schemas/metadata/MetadataArray.go +15 -15
  192. package/native/core/schemas/metadata/MetadataArrayType.go +31 -31
  193. package/native/core/schemas/metadata/MetadataAtomic.go +45 -45
  194. package/native/core/schemas/metadata/MetadataCollection.go +380 -380
  195. package/native/core/schemas/metadata/MetadataComponents.go +95 -95
  196. package/native/core/schemas/metadata/MetadataConstant.go +31 -31
  197. package/native/core/schemas/metadata/MetadataConstantValue.go +63 -63
  198. package/native/core/schemas/metadata/MetadataEscaped.go +17 -17
  199. package/native/core/schemas/metadata/MetadataFunction.go +30 -30
  200. package/native/core/schemas/metadata/MetadataMap.go +21 -21
  201. package/native/core/schemas/metadata/MetadataNative.go +48 -48
  202. package/native/core/schemas/metadata/MetadataObject.go +15 -15
  203. package/native/core/schemas/metadata/MetadataObjectType.go +116 -116
  204. package/native/core/schemas/metadata/MetadataParameter.go +28 -28
  205. package/native/core/schemas/metadata/MetadataProperty.go +32 -32
  206. package/native/core/schemas/metadata/MetadataSchema.go +766 -766
  207. package/native/core/schemas/metadata/MetadataSet.go +17 -17
  208. package/native/core/schemas/metadata/MetadataTemplate.go +43 -43
  209. package/native/core/schemas/metadata/MetadataTuple.go +10 -10
  210. package/native/core/schemas/metadata/MetadataTupleType.go +38 -38
  211. package/native/core/schemas/protobuf/IProtobufProperty.go +2 -2
  212. package/native/core/schemas/protobuf/IProtobufPropertyType.go +18 -18
  213. package/native/core/schemas/protobuf/IProtobufSchema.go +17 -17
  214. package/native/core/typings/Writable.go +1 -1
  215. package/native/core/utils/PatternUtil.go +38 -38
  216. package/native/core/utils/ProtobufNameEncoder.go +28 -28
  217. package/native/shim/printer/go.mod +1 -1
  218. package/native/shim/printer/shim.go +213 -213
  219. package/native/third_party/ttsc/driver/host.go +9 -9
  220. package/native/third_party/ttsc/driver/program.go +344 -281
  221. package/native/third_party/ttsc/driver/rewrite.go +247 -221
  222. package/native/third_party/ttsc/go.mod +5 -3
  223. package/native/third_party/ttsc/go.sum +2 -2
  224. package/native/third_party/ttsc/shim/ast/go.mod +1 -1
  225. package/native/third_party/ttsc/shim/ast/lint.go +174 -171
  226. package/native/third_party/ttsc/shim/ast/shim.go +86 -85
  227. package/native/third_party/ttsc/shim/bundled/go.mod +1 -1
  228. package/native/third_party/ttsc/shim/bundled/shim.go +5 -1
  229. package/native/third_party/ttsc/shim/checker/go.mod +1 -1
  230. package/native/third_party/ttsc/shim/checker/shim.go +79 -79
  231. package/native/third_party/ttsc/shim/compiler/go.mod +1 -1
  232. package/native/third_party/ttsc/shim/compiler/shim.go +16 -1
  233. package/native/third_party/ttsc/shim/core/go.mod +1 -1
  234. package/native/third_party/ttsc/shim/core/shim.go +13 -10
  235. package/native/third_party/ttsc/shim/diagnosticwriter/go.mod +1 -1
  236. package/native/third_party/ttsc/shim/diagnosticwriter/lint.go +79 -79
  237. package/native/third_party/ttsc/shim/diagnosticwriter/shim.go +19 -19
  238. package/native/third_party/ttsc/shim/parser/go.mod +1 -1
  239. package/native/third_party/ttsc/shim/parser/shim.go +7 -1
  240. package/native/third_party/ttsc/shim/scanner/go.mod +1 -1
  241. package/native/third_party/ttsc/shim/scanner/shim.go +39 -1
  242. package/native/third_party/ttsc/shim/tsoptions/go.mod +1 -1
  243. package/native/third_party/ttsc/shim/tsoptions/shim.go +51 -1
  244. package/native/third_party/ttsc/shim/tspath/go.mod +1 -1
  245. package/native/third_party/ttsc/shim/tspath/shim.go +72 -1
  246. package/native/third_party/ttsc/shim/vfs/cachedvfs/go.mod +1 -1
  247. package/native/third_party/ttsc/shim/vfs/cachedvfs/shim.go +1 -1
  248. package/native/third_party/ttsc/shim/vfs/go.mod +1 -1
  249. package/native/third_party/ttsc/shim/vfs/osvfs/go.mod +1 -1
  250. package/native/third_party/ttsc/shim/vfs/osvfs/shim.go +1 -1
  251. package/native/third_party/ttsc/shim/vfs/shim.go +4 -1
  252. package/native/transform/CallExpressionTransformer.go +556 -556
  253. package/native/transform/FileTransformer.go +123 -123
  254. package/native/transform/ImportTransformer.go +224 -224
  255. package/native/transform/NodeTransformer.go +11 -11
  256. package/native/transform/TypiaGenerator.go +136 -136
  257. package/native/transform/features/AssertTransformer.go +28 -28
  258. package/native/transform/features/CreateAssertTransformer.go +28 -28
  259. package/native/transform/features/CreateIsTransformer.go +24 -24
  260. package/native/transform/features/CreateRandomTransformer.go +35 -35
  261. package/native/transform/features/CreateValidateTransformer.go +24 -24
  262. package/native/transform/features/IsTransformer.go +24 -24
  263. package/native/transform/features/RandomTransformer.go +37 -37
  264. package/native/transform/features/ValidateTransformer.go +24 -24
  265. package/native/transform/features/functional/FunctionalGenericTransformer.go +48 -48
  266. package/native/transform/features/http/CreateHttpAssertFormDataTransformer.go +11 -11
  267. package/native/transform/features/http/CreateHttpAssertHeadersTransformer.go +11 -11
  268. package/native/transform/features/http/CreateHttpAssertQueryTransformer.go +17 -17
  269. package/native/transform/features/http/CreateHttpFormDataTransformer.go +11 -11
  270. package/native/transform/features/http/CreateHttpHeadersTransformer.go +11 -11
  271. package/native/transform/features/http/CreateHttpIsFormDataTransformer.go +11 -11
  272. package/native/transform/features/http/CreateHttpIsHeadersTransformer.go +11 -11
  273. package/native/transform/features/http/CreateHttpIsQueryTransformer.go +17 -17
  274. package/native/transform/features/http/CreateHttpParameterTransformer.go +11 -11
  275. package/native/transform/features/http/CreateHttpQueryTransformer.go +17 -17
  276. package/native/transform/features/http/CreateHttpValidateFormDataTransformer.go +11 -11
  277. package/native/transform/features/http/CreateHttpValidateHeadersTransformer.go +11 -11
  278. package/native/transform/features/http/CreateHttpValidateQueryTransformer.go +17 -17
  279. package/native/transform/features/http/HttpAssertFormDataTransformer.go +11 -11
  280. package/native/transform/features/http/HttpAssertHeadersTransformer.go +11 -11
  281. package/native/transform/features/http/HttpAssertQueryTransformer.go +17 -17
  282. package/native/transform/features/http/HttpFormDataTransformer.go +11 -11
  283. package/native/transform/features/http/HttpHeadersTransformer.go +11 -11
  284. package/native/transform/features/http/HttpIsFormDataTransformer.go +11 -11
  285. package/native/transform/features/http/HttpIsHeadersTransformer.go +11 -11
  286. package/native/transform/features/http/HttpIsQueryTransformer.go +17 -17
  287. package/native/transform/features/http/HttpParameterTransformer.go +11 -11
  288. package/native/transform/features/http/HttpQueryTransformer.go +17 -17
  289. package/native/transform/features/http/HttpValidateFormDataTransformer.go +11 -11
  290. package/native/transform/features/http/HttpValidateHeadersTransformer.go +11 -11
  291. package/native/transform/features/http/HttpValidateQueryTransformer.go +17 -17
  292. package/native/transform/features/json/JsonApplicationTransformer.go +61 -61
  293. package/native/transform/features/json/JsonAssertParseTransformer.go +11 -11
  294. package/native/transform/features/json/JsonAssertStringifyTransformer.go +11 -11
  295. package/native/transform/features/json/JsonCreateAssertParseTransformer.go +11 -11
  296. package/native/transform/features/json/JsonCreateAssertStringifyTransformer.go +11 -11
  297. package/native/transform/features/json/JsonCreateIsParseTransformer.go +11 -11
  298. package/native/transform/features/json/JsonCreateIsStringifyTransformer.go +11 -11
  299. package/native/transform/features/json/JsonCreateStringifyTransformer.go +11 -11
  300. package/native/transform/features/json/JsonCreateValidateParseTransformer.go +11 -11
  301. package/native/transform/features/json/JsonCreateValidateStringifyProgrammer.go +11 -11
  302. package/native/transform/features/json/JsonIsParseTransformer.go +11 -11
  303. package/native/transform/features/json/JsonIsStringifyTransformer.go +11 -11
  304. package/native/transform/features/json/JsonSchemaTransformer.go +148 -148
  305. package/native/transform/features/json/JsonSchemasTransformer.go +94 -94
  306. package/native/transform/features/json/JsonStringifyTransformer.go +11 -11
  307. package/native/transform/features/json/JsonValidateParseTransformer.go +11 -11
  308. package/native/transform/features/json/JsonValidateStringifyTransformer.go +11 -11
  309. package/native/transform/features/llm/LlmApplicationTransformer.go +43 -43
  310. package/native/transform/features/llm/LlmCoerceTransformer.go +50 -50
  311. package/native/transform/features/llm/LlmControllerTransformer.go +48 -48
  312. package/native/transform/features/llm/LlmCreateCoerceTransformer.go +43 -43
  313. package/native/transform/features/llm/LlmCreateParseTransformer.go +43 -43
  314. package/native/transform/features/llm/LlmParametersTransformer.go +38 -38
  315. package/native/transform/features/llm/LlmParseTransformer.go +50 -50
  316. package/native/transform/features/llm/LlmSchemaTransformer.go +129 -129
  317. package/native/transform/features/llm/LlmStructuredOutputTransformer.go +44 -44
  318. package/native/transform/features/misc/MiscAssertCloneTransformer.go +11 -11
  319. package/native/transform/features/misc/MiscAssertPruneTransformer.go +11 -11
  320. package/native/transform/features/misc/MiscCloneTransformer.go +11 -11
  321. package/native/transform/features/misc/MiscCreateAssertCloneTransformer.go +11 -11
  322. package/native/transform/features/misc/MiscCreateAssertPruneTransformer.go +11 -11
  323. package/native/transform/features/misc/MiscCreateCloneTransformer.go +11 -11
  324. package/native/transform/features/misc/MiscCreateIsCloneTransformer.go +11 -11
  325. package/native/transform/features/misc/MiscCreateIsPruneTransformer.go +11 -11
  326. package/native/transform/features/misc/MiscCreatePruneTransformer.go +11 -11
  327. package/native/transform/features/misc/MiscCreateValidateCloneTransformer.go +11 -11
  328. package/native/transform/features/misc/MiscCreateValidatePruneTransformer.go +11 -11
  329. package/native/transform/features/misc/MiscIsCloneTransformer.go +11 -11
  330. package/native/transform/features/misc/MiscIsPruneTransformer.go +11 -11
  331. package/native/transform/features/misc/MiscLiteralsTransformer.go +21 -21
  332. package/native/transform/features/misc/MiscPruneTransformer.go +11 -11
  333. package/native/transform/features/misc/MiscValidateCloneTransformer.go +11 -11
  334. package/native/transform/features/misc/MiscValidatePruneTransformer.go +11 -11
  335. package/native/transform/features/notations/NotationAssertGeneralTransformer.go +16 -16
  336. package/native/transform/features/notations/NotationCreateAssertGeneralTransformer.go +16 -16
  337. package/native/transform/features/notations/NotationCreateGeneralTransformer.go +16 -16
  338. package/native/transform/features/notations/NotationCreateIsGeneralTransformer.go +16 -16
  339. package/native/transform/features/notations/NotationCreateValidateGeneralTransformer.go +16 -16
  340. package/native/transform/features/notations/NotationGeneralTransformer.go +21 -21
  341. package/native/transform/features/notations/NotationIsGeneralTransformer.go +16 -16
  342. package/native/transform/features/notations/NotationValidateGeneralTransformer.go +16 -16
  343. package/native/transform/features/protobuf/ProtobufAssertDecodeTransformer.go +11 -11
  344. package/native/transform/features/protobuf/ProtobufAssertEncodeTransformer.go +11 -11
  345. package/native/transform/features/protobuf/ProtobufCreateAssertDecodeTransformer.go +11 -11
  346. package/native/transform/features/protobuf/ProtobufCreateAssertEncodeTransformer.go +11 -11
  347. package/native/transform/features/protobuf/ProtobufCreateDecodeTransformer.go +11 -11
  348. package/native/transform/features/protobuf/ProtobufCreateEncodeTransformer.go +11 -11
  349. package/native/transform/features/protobuf/ProtobufCreateIsDecodeTransformer.go +11 -11
  350. package/native/transform/features/protobuf/ProtobufCreateIsEncodeTransformer.go +11 -11
  351. package/native/transform/features/protobuf/ProtobufCreateValidateDecodeTransformer.go +11 -11
  352. package/native/transform/features/protobuf/ProtobufCreateValidateEncodeTransformer.go +11 -11
  353. package/native/transform/features/protobuf/ProtobufDecodeTransformer.go +11 -11
  354. package/native/transform/features/protobuf/ProtobufEncodeTransformer.go +11 -11
  355. package/native/transform/features/protobuf/ProtobufIsDecodeTransformer.go +11 -11
  356. package/native/transform/features/protobuf/ProtobufIsEncodeTransformer.go +11 -11
  357. package/native/transform/features/protobuf/ProtobufMessageTransformer.go +20 -20
  358. package/native/transform/features/protobuf/ProtobufValidateDecodeTransformer.go +11 -11
  359. package/native/transform/features/protobuf/ProtobufValidateEncodeTransformer.go +11 -11
  360. package/native/transform/features/reflect/ReflectMetadataTransformer.go +59 -59
  361. package/native/transform/features/reflect/ReflectNameTransformer.go +78 -78
  362. package/native/transform/features/reflect/ReflectSchemaTransformer.go +121 -121
  363. package/native/transform/features/reflect/ReflectSchemasTransformer.go +55 -55
  364. package/native/transform/internal/GenericTransformer.go +173 -173
  365. package/native/transform/transform.go +32 -32
  366. package/package.json +5 -5
  367. package/src/executable/generate/ttsc.ts +2 -3
  368. package/src/executable/setup/PluginConfigurator.ts +2 -3
  369. package/src/internal/_randomInteger.ts +5 -5
  370. package/src/internal/_validateReport.ts +1 -2
  371. package/src/transform.ts +1 -1
@@ -3,7 +3,7 @@
3
3
  // tsgo emits `.js` with plugin-owned call expressions preserved as-is because
4
4
  // the compile-time transformer stage is now hosted outside the native
5
5
  // compiler. This file implements the emit-time rewrite pattern pioneered by
6
- // tsgonest: we hook tsgo's Emit() via its WriteFile callback, locate each
6
+ // tsgonest: we intercept tsgo's Emit() via its WriteFile callback, locate each
7
7
  // previously-recognized plugin call in the emitted JS, and replace the call
8
8
  // expression with the JS the native consumer produced.
9
9
  //
@@ -14,32 +14,32 @@
14
14
  package driver
15
15
 
16
16
  import (
17
- "context"
18
- "errors"
19
- "fmt"
20
- "os"
21
- "path/filepath"
22
- "strings"
23
- "unicode"
17
+ "context"
18
+ "errors"
19
+ "fmt"
20
+ "os"
21
+ "path/filepath"
22
+ "strings"
23
+ "unicode"
24
24
 
25
- "github.com/microsoft/typescript-go/shim/ast"
26
- shimcompiler "github.com/microsoft/typescript-go/shim/compiler"
25
+ "github.com/microsoft/typescript-go/shim/ast"
26
+ shimcompiler "github.com/microsoft/typescript-go/shim/compiler"
27
27
  )
28
28
 
29
29
  // Rewrite describes one emit-time patch. Produced by CollectCallSites after
30
30
  // the engine has generated a replacement JS fragment for the call.
31
31
  type Rewrite struct {
32
- File *ast.SourceFile
33
- RootName string
34
- Namespaces []string
35
- Method string
36
- Replacement string
37
- ConsumeParens bool
32
+ File *ast.SourceFile
33
+ RootName string
34
+ Namespaces []string
35
+ Method string
36
+ Replacement string
37
+ ConsumeParens bool
38
38
  }
39
39
 
40
40
  // RewriteSet groups rewrites by file, preserving source order.
41
41
  type RewriteSet struct {
42
- byPath map[string][]Rewrite
42
+ byPath map[string][]Rewrite
43
43
  }
44
44
 
45
45
  // NewRewriteSet returns an empty set.
@@ -47,20 +47,20 @@ func NewRewriteSet() *RewriteSet { return &RewriteSet{byPath: map[string][]Rewri
47
47
 
48
48
  // Add registers a rewrite under the absolute path of its source file.
49
49
  func (rs *RewriteSet) Add(r Rewrite) {
50
- if r.File == nil {
51
- return
52
- }
53
- path := filepath.ToSlash(r.File.FileName())
54
- rs.byPath[path] = append(rs.byPath[path], r)
50
+ if r.File == nil {
51
+ return
52
+ }
53
+ path := filepath.ToSlash(r.File.FileName())
54
+ rs.byPath[path] = append(rs.byPath[path], r)
55
55
  }
56
56
 
57
57
  // Len returns the total number of rewrites across every file.
58
58
  func (rs *RewriteSet) Len() int {
59
- n := 0
60
- for _, rws := range rs.byPath {
61
- n += len(rws)
62
- }
63
- return n
59
+ n := 0
60
+ for _, rws := range rs.byPath {
61
+ n += len(rws)
62
+ }
63
+ return n
64
64
  }
65
65
 
66
66
  // RewriteSentinel is the marker inserted at the top of a patched file so
@@ -72,244 +72,270 @@ const RewriteSentinel = "/* @ttsc-rewritten */"
72
72
  // `writeFile` is nil, the patched JS is written to disk via the standard
73
73
  // tsgo WriteFile.
74
74
  func (p *Program) EmitAll(rs *RewriteSet, writeFile shimcompiler.WriteFile) (*shimcompiler.EmitResult, []Diagnostic, error) {
75
- return p.emit(rs, nil, writeFile)
75
+ return p.emit(rs, nil, writeFile)
76
+ }
77
+
78
+ // EmitAllRaw runs TypeScript-Go emit without ttsc output-text rewrites.
79
+ func (p *Program) EmitAllRaw(writeFile shimcompiler.WriteFile) (*shimcompiler.EmitResult, []Diagnostic, error) {
80
+ if p == nil || p.TSProgram == nil {
81
+ return nil, nil, errors.New("driver: nil program")
82
+ }
83
+ wf := writeFile
84
+ if wf == nil {
85
+ wf = func(fileName, text string, data *shimcompiler.WriteFileData) error {
86
+ return DefaultWriteFile(fileName, text)
87
+ }
88
+ }
89
+ result := p.TSProgram.Emit(context.Background(), shimcompiler.EmitOptions{
90
+ WriteFile: wf,
91
+ })
92
+ if result == nil {
93
+ return nil, nil, errors.New("driver: Emit returned nil")
94
+ }
95
+ return result, convertDiagnostics(result.Diagnostics), nil
76
96
  }
77
97
 
78
98
  // EmitFile runs tsgo's emitter for one source file, applying the same rewrite
79
99
  // pipeline as EmitAll.
80
100
  func (p *Program) EmitFile(rs *RewriteSet, target *ast.SourceFile, writeFile shimcompiler.WriteFile) (*shimcompiler.EmitResult, []Diagnostic, error) {
81
- return p.emit(rs, target, writeFile)
101
+ return p.emit(rs, target, writeFile)
82
102
  }
83
103
 
84
104
  func (p *Program) emit(rs *RewriteSet, target *ast.SourceFile, writeFile shimcompiler.WriteFile) (*shimcompiler.EmitResult, []Diagnostic, error) {
85
- if p == nil || p.TSProgram == nil {
86
- return nil, nil, errors.New("driver: nil program")
87
- }
88
- if rs == nil {
89
- rs = NewRewriteSet()
90
- }
91
- cursors := map[string]int{}
92
- wf := func(fileName, text string, data *shimcompiler.WriteFileData) error {
93
- if strings.Contains(text, RewriteSentinel) {
94
- if writeFile != nil {
95
- return writeFile(fileName, text, data)
96
- }
97
- return DefaultWriteFile(fileName, text)
98
- }
99
- patched, err := applyRewrites(fileName, text, rs, cursors)
100
- if err != nil {
101
- return err
102
- }
103
- if patched != text {
104
- patched = insertSentinel(patched)
105
- }
106
- if writeFile != nil {
107
- return writeFile(fileName, patched, data)
108
- }
109
- return DefaultWriteFile(fileName, patched)
110
- }
105
+ if p == nil || p.TSProgram == nil {
106
+ return nil, nil, errors.New("driver: nil program")
107
+ }
108
+ if rs == nil {
109
+ rs = NewRewriteSet()
110
+ }
111
+ cursors := map[string]int{}
112
+ wf := func(fileName, text string, data *shimcompiler.WriteFileData) error {
113
+ // A patched file is idempotent: once the sentinel exists, the emitted text
114
+ // is passed through unchanged. This matters for watch/rebuild loops and
115
+ // tests that re-run emit over the same output directory.
116
+ if strings.Contains(text, RewriteSentinel) {
117
+ if writeFile != nil {
118
+ return writeFile(fileName, text, data)
119
+ }
120
+ return DefaultWriteFile(fileName, text)
121
+ }
122
+ // Rewrites are matched after tsgo has printed JavaScript. The source-file
123
+ // association is recovered from the output path because WriteFile receives
124
+ // only the final file name and text.
125
+ patched, err := applyRewrites(fileName, text, rs, cursors)
126
+ if err != nil {
127
+ return err
128
+ }
129
+ if patched != text {
130
+ patched = insertSentinel(patched)
131
+ }
132
+ if writeFile != nil {
133
+ return writeFile(fileName, patched, data)
134
+ }
135
+ return DefaultWriteFile(fileName, patched)
136
+ }
111
137
 
112
- result := p.TSProgram.Emit(context.Background(), shimcompiler.EmitOptions{
113
- TargetSourceFile: target,
114
- WriteFile: wf,
115
- })
116
- if result == nil {
117
- return nil, nil, errors.New("driver: Emit returned nil")
118
- }
119
- return result, convertDiagnostics(result.Diagnostics), nil
138
+ result := p.TSProgram.Emit(context.Background(), shimcompiler.EmitOptions{
139
+ TargetSourceFile: target,
140
+ WriteFile: wf,
141
+ })
142
+ if result == nil {
143
+ return nil, nil, errors.New("driver: Emit returned nil")
144
+ }
145
+ return result, convertDiagnostics(result.Diagnostics), nil
120
146
  }
121
147
 
122
148
  // DefaultWriteFile is the default disk writer used when EmitAll's caller does not
123
- // supply a custom WriteFile hook.
149
+ // supply a custom WriteFile callback.
124
150
  func DefaultWriteFile(fileName, text string) error {
125
- if dir := filepath.Dir(fileName); dir != "" {
126
- if err := os.MkdirAll(dir, 0o755); err != nil {
127
- return err
128
- }
129
- }
130
- return os.WriteFile(fileName, []byte(text), 0o644)
151
+ if dir := filepath.Dir(fileName); dir != "" {
152
+ if err := os.MkdirAll(dir, 0o755); err != nil {
153
+ return err
154
+ }
155
+ }
156
+ return os.WriteFile(fileName, []byte(text), 0o644)
131
157
  }
132
158
 
133
159
  func insertSentinel(text string) string {
134
- for _, prefix := range []string{"\"use strict\";\n", "'use strict';\n"} {
135
- if strings.HasPrefix(text, prefix) {
136
- return prefix + RewriteSentinel + "\n" + text[len(prefix):]
137
- }
138
- }
139
- return RewriteSentinel + "\n" + text
160
+ for _, prefix := range []string{"\"use strict\";\n", "'use strict';\n"} {
161
+ if strings.HasPrefix(text, prefix) {
162
+ return prefix + RewriteSentinel + "\n" + text[len(prefix):]
163
+ }
164
+ }
165
+ return RewriteSentinel + "\n" + text
140
166
  }
141
167
 
142
168
  func applyRewrites(outputName, text string, rs *RewriteSet, cursors map[string]int) (string, error) {
143
- srcPath, ok := findSourceForOutput(outputName, rs)
144
- if !ok || len(rs.byPath[srcPath]) == 0 {
145
- return text, nil
146
- }
147
- rewrites := rs.byPath[srcPath]
148
- pos := cursors[srcPath]
149
- out := text
150
- searchFrom := 0
151
- for pos < len(rewrites) {
152
- r := rewrites[pos]
153
- replaced, nextSearchFrom, ok, err := spliceCall(out, r, searchFrom)
154
- if err != nil {
155
- return "", err
156
- }
157
- if !ok {
158
- preview := out
159
- if len(preview) > 400 {
160
- preview = preview[:400] + "…"
161
- }
162
- return "", fmt.Errorf("driver: could not locate %s.%s(…) call in %s (tried roots %v; preview: %q)", joinRootAndNamespaces(r), r.Method, outputName, candidateRoots(r.RootName), preview)
163
- }
164
- out = replaced
165
- searchFrom = nextSearchFrom
166
- pos++
167
- }
168
- cursors[srcPath] = pos
169
- return out, nil
169
+ srcPath, ok := findSourceForOutput(outputName, rs)
170
+ if !ok || len(rs.byPath[srcPath]) == 0 {
171
+ return text, nil
172
+ }
173
+ rewrites := rs.byPath[srcPath]
174
+ pos := cursors[srcPath]
175
+ out := text
176
+ searchFrom := 0
177
+ for pos < len(rewrites) {
178
+ r := rewrites[pos]
179
+ replaced, nextSearchFrom, ok, err := spliceCall(out, r, searchFrom)
180
+ if err != nil {
181
+ return "", err
182
+ }
183
+ if !ok {
184
+ preview := out
185
+ if len(preview) > 400 {
186
+ preview = preview[:400] + "…"
187
+ }
188
+ return "", fmt.Errorf("driver: could not locate %s.%s(…) call in %s (tried roots %v; preview: %q)", joinRootAndNamespaces(r), r.Method, outputName, candidateRoots(r.RootName), preview)
189
+ }
190
+ out = replaced
191
+ searchFrom = nextSearchFrom
192
+ pos++
193
+ }
194
+ cursors[srcPath] = pos
195
+ return out, nil
170
196
  }
171
197
 
172
198
  func findSourceForOutput(outputName string, rs *RewriteSet) (string, bool) {
173
- outSlash := strings.TrimSuffix(filepath.ToSlash(outputName), filepath.Ext(outputName))
174
- var best string
175
- bestScore := 0
176
- for path := range rs.byPath {
177
- srcStem := strings.TrimSuffix(filepath.ToSlash(path), filepath.Ext(path))
178
- score := commonSuffixSegments(srcStem, outSlash)
179
- if score > bestScore {
180
- best = path
181
- bestScore = score
182
- }
183
- }
184
- return best, bestScore > 0
199
+ outSlash := strings.TrimSuffix(filepath.ToSlash(outputName), filepath.Ext(outputName))
200
+ var best string
201
+ bestScore := 0
202
+ for path := range rs.byPath {
203
+ srcStem := strings.TrimSuffix(filepath.ToSlash(path), filepath.Ext(path))
204
+ score := commonSuffixSegments(srcStem, outSlash)
205
+ if score > bestScore {
206
+ best = path
207
+ bestScore = score
208
+ }
209
+ }
210
+ return best, bestScore > 0
185
211
  }
186
212
 
187
213
  func commonSuffixSegments(a, b string) int {
188
- as := strings.Split(a, "/")
189
- bs := strings.Split(b, "/")
190
- n := len(as)
191
- if len(bs) < n {
192
- n = len(bs)
193
- }
194
- shared := 0
195
- for i := 1; i <= n; i++ {
196
- if as[len(as)-i] != bs[len(bs)-i] {
197
- break
198
- }
199
- shared++
200
- }
201
- return shared
214
+ as := strings.Split(a, "/")
215
+ bs := strings.Split(b, "/")
216
+ n := len(as)
217
+ if len(bs) < n {
218
+ n = len(bs)
219
+ }
220
+ shared := 0
221
+ for i := 1; i <= n; i++ {
222
+ if as[len(as)-i] != bs[len(bs)-i] {
223
+ break
224
+ }
225
+ shared++
226
+ }
227
+ return shared
202
228
  }
203
229
 
204
230
  func spliceCall(text string, r Rewrite, searchFrom int) (string, int, bool, error) {
205
- aliases := candidateRoots(r.RootName)
206
- tail := needleTail(r)
207
- idx := -1
208
- needleLen := 0
209
- for _, cand := range aliases {
210
- candNeedle := cand + tail
211
- if i := indexAtCallStart(text, candNeedle, searchFrom); i >= 0 {
212
- idx = i
213
- needleLen = len(candNeedle) - 1
214
- break
215
- }
216
- }
217
- if idx < 0 {
218
- return text, searchFrom, false, nil
219
- }
220
- parenPos := idx + needleLen
221
- if parenPos >= len(text) || text[parenPos] != '(' {
222
- return text, searchFrom, false, errors.New("driver: expected '(' after method name")
223
- }
224
- closePos, ok := matchParen(text, parenPos)
225
- if !ok {
226
- return text, searchFrom, false, errors.New("driver: unbalanced parens while locating plugin call")
227
- }
228
- if r.ConsumeParens {
229
- replaced := text[:idx] + r.Replacement + text[closePos+1:]
230
- return replaced, idx + len(r.Replacement), true, nil
231
- }
232
- replaced := text[:idx] + r.Replacement + text[idx+needleLen:]
233
- return replaced, idx + len(r.Replacement), true, nil
231
+ aliases := candidateRoots(r.RootName)
232
+ tail := needleTail(r)
233
+ idx := -1
234
+ needleLen := 0
235
+ for _, cand := range aliases {
236
+ candNeedle := cand + tail
237
+ if i := indexAtCallStart(text, candNeedle, searchFrom); i >= 0 {
238
+ idx = i
239
+ needleLen = len(candNeedle) - 1
240
+ break
241
+ }
242
+ }
243
+ if idx < 0 {
244
+ return text, searchFrom, false, nil
245
+ }
246
+ parenPos := idx + needleLen
247
+ if parenPos >= len(text) || text[parenPos] != '(' {
248
+ return text, searchFrom, false, errors.New("driver: expected '(' after method name")
249
+ }
250
+ closePos, ok := matchParen(text, parenPos)
251
+ if !ok {
252
+ return text, searchFrom, false, errors.New("driver: unbalanced parens while locating plugin call")
253
+ }
254
+ if r.ConsumeParens {
255
+ replaced := text[:idx] + r.Replacement + text[closePos+1:]
256
+ return replaced, idx + len(r.Replacement), true, nil
257
+ }
258
+ replaced := text[:idx] + r.Replacement + text[idx+needleLen:]
259
+ return replaced, idx + len(r.Replacement), true, nil
234
260
  }
235
261
 
236
262
  func candidateRoots(root string) []string {
237
- return []string{
238
- root,
239
- root + "_1.default",
240
- root + "_2.default",
241
- root + ".default",
242
- root + "_1",
243
- root + "_2",
244
- }
263
+ return []string{
264
+ root,
265
+ root + "_1.default",
266
+ root + "_2.default",
267
+ root + ".default",
268
+ root + "_1",
269
+ root + "_2",
270
+ }
245
271
  }
246
272
 
247
273
  func joinRootAndNamespaces(r Rewrite) string {
248
- if len(r.Namespaces) == 0 {
249
- return r.RootName
250
- }
251
- return r.RootName + "." + strings.Join(r.Namespaces, ".")
274
+ if len(r.Namespaces) == 0 {
275
+ return r.RootName
276
+ }
277
+ return r.RootName + "." + strings.Join(r.Namespaces, ".")
252
278
  }
253
279
 
254
280
  func needleTail(r Rewrite) string {
255
- if len(r.Namespaces) == 0 {
256
- return "." + r.Method + "("
257
- }
258
- return "." + strings.Join(r.Namespaces, ".") + "." + r.Method + "("
281
+ if len(r.Namespaces) == 0 {
282
+ return "." + r.Method + "("
283
+ }
284
+ return "." + strings.Join(r.Namespaces, ".") + "." + r.Method + "("
259
285
  }
260
286
 
261
287
  func indexAtCallStart(text, needle string, searchFrom int) int {
262
- start := searchFrom
263
- if start < 0 {
264
- start = 0
265
- }
266
- for {
267
- hit := strings.Index(text[start:], needle)
268
- if hit < 0 {
269
- return -1
270
- }
271
- pos := start + hit
272
- if pos == 0 {
273
- return pos
274
- }
275
- prev := rune(text[pos-1])
276
- if isIdentifierPart(prev) {
277
- start = pos + 1
278
- continue
279
- }
280
- return pos
281
- }
288
+ start := searchFrom
289
+ if start < 0 {
290
+ start = 0
291
+ }
292
+ for {
293
+ hit := strings.Index(text[start:], needle)
294
+ if hit < 0 {
295
+ return -1
296
+ }
297
+ pos := start + hit
298
+ if pos == 0 {
299
+ return pos
300
+ }
301
+ prev := rune(text[pos-1])
302
+ if isIdentifierPart(prev) {
303
+ start = pos + 1
304
+ continue
305
+ }
306
+ return pos
307
+ }
282
308
  }
283
309
 
284
310
  func isIdentifierPart(r rune) bool {
285
- return r == '_' || r == '$' || unicode.IsLetter(r) || unicode.IsDigit(r)
311
+ return r == '_' || r == '$' || unicode.IsLetter(r) || unicode.IsDigit(r)
286
312
  }
287
313
 
288
314
  func matchParen(text string, pos int) (int, bool) {
289
- if pos >= len(text) || text[pos] != '(' {
290
- return 0, false
291
- }
292
- depth := 1
293
- for i := pos + 1; i < len(text); i++ {
294
- switch text[i] {
295
- case '(':
296
- depth++
297
- case ')':
298
- depth--
299
- if depth == 0 {
300
- return i, true
301
- }
302
- case '"', '\'', '`':
303
- q := text[i]
304
- j := i + 1
305
- for j < len(text) && text[j] != q {
306
- if text[j] == '\\' {
307
- j++
308
- }
309
- j++
310
- }
311
- i = j
312
- }
313
- }
314
- return 0, false
315
+ if pos >= len(text) || text[pos] != '(' {
316
+ return 0, false
317
+ }
318
+ depth := 1
319
+ for i := pos + 1; i < len(text); i++ {
320
+ switch text[i] {
321
+ case '(':
322
+ depth++
323
+ case ')':
324
+ depth--
325
+ if depth == 0 {
326
+ return i, true
327
+ }
328
+ case '"', '\'', '`':
329
+ q := text[i]
330
+ j := i + 1
331
+ for j < len(text) && text[j] != q {
332
+ if text[j] == '\\' {
333
+ j++
334
+ }
335
+ j++
336
+ }
337
+ i = j
338
+ }
339
+ }
340
+ return 0, false
315
341
  }
@@ -2,8 +2,10 @@ module github.com/samchon/ttsc/packages/ttsc
2
2
 
3
3
  go 1.26
4
4
 
5
- // The typia source plugin vendors ttsc's Go driver with the shim modules it
6
- // needs, so editor tooling can resolve this replacement module by itself.
5
+ // Every shim sub-module is wired up via the sibling go.work file together
6
+ // with the local typescript-go checkout under ../../third_party/typescript-go.
7
+ // Tagged upstream versions can replace these local wires when the shim API
8
+ // stabilizes.
7
9
  replace (
8
10
  github.com/microsoft/typescript-go/shim/ast => ./shim/ast
9
11
  github.com/microsoft/typescript-go/shim/bundled => ./shim/bundled
@@ -38,7 +40,7 @@ require (
38
40
  require (
39
41
  github.com/go-json-experiment/json v0.0.0-20260214004413-d219187c3433 // indirect
40
42
  github.com/klauspost/cpuid/v2 v2.2.10 // indirect
41
- github.com/microsoft/typescript-go v0.0.0-20260428010401-3499951dbc49 // indirect
43
+ github.com/microsoft/typescript-go v0.0.0-20260429010842-56ab4af42157 // indirect
42
44
  github.com/zeebo/xxh3 v1.1.0 // indirect
43
45
  golang.org/x/sync v0.20.0 // indirect
44
46
  golang.org/x/sys v0.43.0 // indirect
@@ -4,8 +4,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
4
4
  github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
5
5
  github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
6
6
  github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
7
- github.com/microsoft/typescript-go v0.0.0-20260428010401-3499951dbc49 h1:lOAcmKMmGiJO8Nf26uSF0hWBdBdPzNnj79kNS7qIf+o=
8
- github.com/microsoft/typescript-go v0.0.0-20260428010401-3499951dbc49/go.mod h1:m8YA0PMC7ti0GW0RI05D6fEcjQeu98XVS+FWF+VDW2k=
7
+ github.com/microsoft/typescript-go v0.0.0-20260429010842-56ab4af42157 h1:llOMPhKDiQ+UEJiAaQuuWaJOTg5V7tNNTEf9JPWoYSY=
8
+ github.com/microsoft/typescript-go v0.0.0-20260429010842-56ab4af42157/go.mod h1:m8YA0PMC7ti0GW0RI05D6fEcjQeu98XVS+FWF+VDW2k=
9
9
  github.com/peter-evans/patience v0.3.0 h1:rX0JdJeepqdQl1Sk9c9uvorjYYzL2TfgLX1adqYm9cA=
10
10
  github.com/peter-evans/patience v0.3.0/go.mod h1:Kmxu5sY1NmBLFSStvXjX1wS9mIv7wMcP/ubucyMOAu0=
11
11
  github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
@@ -2,4 +2,4 @@ module github.com/microsoft/typescript-go/shim/ast
2
2
 
3
3
  go 1.26
4
4
 
5
- require github.com/microsoft/typescript-go v0.0.0-20260428010401-3499951dbc49
5
+ require github.com/microsoft/typescript-go v0.0.0-20260429010842-56ab4af42157