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
@@ -1,20 +1,20 @@
1
1
  package llm
2
2
 
3
3
  import (
4
- "fmt"
5
- "reflect"
6
- "sort"
7
- "strconv"
8
- "strings"
9
-
10
- shimast "github.com/microsoft/typescript-go/shim/ast"
11
- nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
12
- nativefactories "github.com/samchon/typia/packages/typia/native/core/factories"
13
- nativeprogrammers "github.com/samchon/typia/packages/typia/native/core/programmers"
14
- nativehelpers "github.com/samchon/typia/packages/typia/native/core/programmers/helpers"
15
- nativeiterate "github.com/samchon/typia/packages/typia/native/core/programmers/iterate"
16
- nativejson "github.com/samchon/typia/packages/typia/native/core/programmers/json"
17
- schemametadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
4
+ "fmt"
5
+ "reflect"
6
+ "sort"
7
+ "strconv"
8
+ "strings"
9
+
10
+ shimast "github.com/microsoft/typescript-go/shim/ast"
11
+ nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
12
+ nativefactories "github.com/samchon/typia/packages/typia/native/core/factories"
13
+ nativeprogrammers "github.com/samchon/typia/packages/typia/native/core/programmers"
14
+ nativehelpers "github.com/samchon/typia/packages/typia/native/core/programmers/helpers"
15
+ nativeiterate "github.com/samchon/typia/packages/typia/native/core/programmers/iterate"
16
+ nativejson "github.com/samchon/typia/packages/typia/native/core/programmers/json"
17
+ schemametadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
18
18
  )
19
19
 
20
20
  type llmSchemaProgrammerNamespace struct{}
@@ -22,810 +22,810 @@ type llmSchemaProgrammerNamespace struct{}
22
22
  var LlmSchemaProgrammer = llmSchemaProgrammerNamespace{}
23
23
 
24
24
  type LlmSchemaProgrammer_IProps struct {
25
- Context nativecontext.ITypiaContext
26
- Modulo *shimast.Node
27
- Type any
28
- Name *string
29
- Init *shimast.Node
30
- Config map[string]any
25
+ Context nativecontext.ITypiaContext
26
+ Modulo *shimast.Node
27
+ Type any
28
+ Name *string
29
+ Init *shimast.Node
30
+ Config map[string]any
31
31
  }
32
32
 
33
33
  type LlmSchemaProgrammer_IOutput struct {
34
- Schema map[string]any
35
- Defs map[string]any
34
+ Schema map[string]any
35
+ Defs map[string]any
36
36
  }
37
37
 
38
38
  type LlmSchemaProgrammer_IWriteProps struct {
39
- Context nativecontext.ITypiaContext
40
- Metadata *schemametadata.MetadataSchema
41
- Config map[string]any
39
+ Context nativecontext.ITypiaContext
40
+ Metadata *schemametadata.MetadataSchema
41
+ Config map[string]any
42
42
  }
43
43
 
44
44
  var llmSchemaProgrammer_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
45
45
 
46
46
  func (llmSchemaProgrammerNamespace) Write(props LlmSchemaProgrammer_IWriteProps) *shimast.Node {
47
- output := LlmSchemaProgrammer.WriteSchema(struct {
48
- Metadata *schemametadata.MetadataSchema
49
- Config map[string]any
50
- }{
51
- Metadata: props.Metadata,
52
- Config: props.Config,
53
- })
54
- schemaTypeNode := llmProgrammer_import_type(props.Context, nativeprogrammers.ImportProgrammer_TypeProps{
55
- File: "typia",
56
- Name: "ILlmSchema",
57
- })
58
- schemaLiteral := llmSchemaProgrammer_factory.NewAsExpression(
59
- llmSchemaProgrammer_factory.NewSatisfiesExpression(
60
- nativefactories.LiteralFactory.Write(output.Schema),
61
- schemaTypeNode,
62
- ),
63
- schemaTypeNode,
64
- )
65
- if len(output.Defs) == 0 {
66
- return schemaLiteral
67
- }
68
- recordType := llmSchemaProgrammer_record_type(schemaTypeNode)
69
- return llmSchemaProgrammer_factory.NewArrowFunction(
70
- nil,
71
- nil,
72
- llmSchemaProgrammer_factory.NewNodeList([]*shimast.Node{
73
- nativefactories.IdentifierFactory.Parameter("$defs", recordType, nil),
74
- }),
75
- schemaTypeNode,
76
- nil,
77
- llmSchemaProgrammer_factory.NewToken(shimast.KindEqualsGreaterThanToken),
78
- llmSchemaProgrammer_factory.NewBlock(llmSchemaProgrammer_factory.NewNodeList([]*shimast.Node{
79
- llmSchemaProgrammer_factory.NewExpressionStatement(
80
- llmSchemaProgrammer_factory.NewCallExpression(
81
- llmSchemaProgrammer_factory.NewIdentifier("Object.assign"),
82
- nil,
83
- nil,
84
- llmSchemaProgrammer_factory.NewNodeList([]*shimast.Node{
85
- llmSchemaProgrammer_factory.NewIdentifier("$defs"),
86
- llmSchemaProgrammer_factory.NewAsExpression(
87
- nativefactories.LiteralFactory.Write(output.Defs),
88
- llmSchemaProgrammer_record_type(schemaTypeNode),
89
- ),
90
- }),
91
- shimast.NodeFlagsNone,
92
- ),
93
- ),
94
- llmSchemaProgrammer_factory.NewReturnStatement(schemaLiteral),
95
- }), true),
96
- )
47
+ output := LlmSchemaProgrammer.WriteSchema(struct {
48
+ Metadata *schemametadata.MetadataSchema
49
+ Config map[string]any
50
+ }{
51
+ Metadata: props.Metadata,
52
+ Config: props.Config,
53
+ })
54
+ schemaTypeNode := llmProgrammer_import_type(props.Context, nativeprogrammers.ImportProgrammer_TypeProps{
55
+ File: "typia",
56
+ Name: "ILlmSchema",
57
+ })
58
+ schemaLiteral := llmSchemaProgrammer_factory.NewAsExpression(
59
+ llmSchemaProgrammer_factory.NewSatisfiesExpression(
60
+ nativefactories.LiteralFactory.Write(output.Schema),
61
+ schemaTypeNode,
62
+ ),
63
+ schemaTypeNode,
64
+ )
65
+ if len(output.Defs) == 0 {
66
+ return schemaLiteral
67
+ }
68
+ recordType := llmSchemaProgrammer_record_type(schemaTypeNode)
69
+ return llmSchemaProgrammer_factory.NewArrowFunction(
70
+ nil,
71
+ nil,
72
+ llmSchemaProgrammer_factory.NewNodeList([]*shimast.Node{
73
+ nativefactories.IdentifierFactory.Parameter("$defs", recordType, nil),
74
+ }),
75
+ schemaTypeNode,
76
+ nil,
77
+ llmSchemaProgrammer_factory.NewToken(shimast.KindEqualsGreaterThanToken),
78
+ llmSchemaProgrammer_factory.NewBlock(llmSchemaProgrammer_factory.NewNodeList([]*shimast.Node{
79
+ llmSchemaProgrammer_factory.NewExpressionStatement(
80
+ llmSchemaProgrammer_factory.NewCallExpression(
81
+ llmSchemaProgrammer_factory.NewIdentifier("Object.assign"),
82
+ nil,
83
+ nil,
84
+ llmSchemaProgrammer_factory.NewNodeList([]*shimast.Node{
85
+ llmSchemaProgrammer_factory.NewIdentifier("$defs"),
86
+ llmSchemaProgrammer_factory.NewAsExpression(
87
+ nativefactories.LiteralFactory.Write(output.Defs),
88
+ llmSchemaProgrammer_record_type(schemaTypeNode),
89
+ ),
90
+ }),
91
+ shimast.NodeFlagsNone,
92
+ ),
93
+ ),
94
+ llmSchemaProgrammer_factory.NewReturnStatement(schemaLiteral),
95
+ }), true),
96
+ )
97
97
  }
98
98
 
99
99
  func llmSchemaProgrammer_record_type(schemaTypeNode *shimast.Node) *shimast.Node {
100
- return llmSchemaProgrammer_factory.NewTypeReferenceNode(
101
- llmSchemaProgrammer_factory.NewIdentifier("Record"),
102
- llmSchemaProgrammer_factory.NewNodeList([]*shimast.Node{
103
- nativefactories.TypeFactory.Keyword("string"),
104
- schemaTypeNode,
105
- }),
106
- )
100
+ return llmSchemaProgrammer_factory.NewTypeReferenceNode(
101
+ llmSchemaProgrammer_factory.NewIdentifier("Record"),
102
+ llmSchemaProgrammer_factory.NewNodeList([]*shimast.Node{
103
+ nativefactories.TypeFactory.Keyword("string"),
104
+ schemaTypeNode,
105
+ }),
106
+ )
107
107
  }
108
108
 
109
109
  func (llmSchemaProgrammerNamespace) WriteSchema(props struct {
110
- Metadata *schemametadata.MetadataSchema
111
- Config map[string]any
110
+ Metadata *schemametadata.MetadataSchema
111
+ Config map[string]any
112
112
  }) LlmSchemaProgrammer_IOutput {
113
- collection := nativejson.JsonSchemasProgrammer.WriteSchemas(struct {
114
- Version string
115
- Metadatas []*schemametadata.MetadataSchema
116
- }{
117
- Version: "3.1",
118
- Metadatas: []*schemametadata.MetadataSchema{props.Metadata},
119
- })
120
- defs := map[string]any{}
121
- schema := map[string]any{}
122
- if len(collection.Schemas) != 0 {
123
- schema = llmSchemaProgrammer_convert_schema_config(collection.Schemas[0], collection.Components, defs, props.Config)
124
- }
125
- return LlmSchemaProgrammer_IOutput{
126
- Defs: defs,
127
- Schema: schema,
128
- }
113
+ collection := nativejson.JsonSchemasProgrammer.WriteSchemas(struct {
114
+ Version string
115
+ Metadatas []*schemametadata.MetadataSchema
116
+ }{
117
+ Version: "3.1",
118
+ Metadatas: []*schemametadata.MetadataSchema{props.Metadata},
119
+ })
120
+ defs := map[string]any{}
121
+ schema := map[string]any{}
122
+ if len(collection.Schemas) != 0 {
123
+ schema = llmSchemaProgrammer_convert_schema_config(collection.Schemas[0], collection.Components, defs, props.Config)
124
+ }
125
+ return LlmSchemaProgrammer_IOutput{
126
+ Defs: defs,
127
+ Schema: schema,
128
+ }
129
129
  }
130
130
 
131
131
  func (llmSchemaProgrammerNamespace) Validate(props struct {
132
- Config map[string]any
133
- Metadata *schemametadata.MetadataSchema
134
- Explore nativefactories.MetadataFactory_IExplore
132
+ Config map[string]any
133
+ Metadata *schemametadata.MetadataSchema
134
+ Explore nativefactories.MetadataFactory_IExplore
135
135
  }) []string {
136
- output := []string{}
137
- strict, _ := props.Config["strict"].(bool)
138
- if strict {
139
- for _, object := range props.Metadata.Objects {
140
- for _, property := range object.Type.Properties {
141
- if property.Key.IsSoleLiteral() == false && property.Value.Size() != 0 {
142
- output = append(output, "Strict mode does not allow dynamic property in object.")
143
- break
144
- }
145
- }
146
- }
147
- for _, object := range props.Metadata.Objects {
148
- for _, property := range object.Type.Properties {
149
- if property.Value.IsRequired() == false {
150
- output = append(output, "Strict mode does not support optional property in object.")
151
- break
152
- }
153
- }
154
- }
155
- }
156
- for _, atomic := range props.Metadata.Atomics {
157
- if atomic.Type == "bigint" {
158
- output = append(output, "LLM schema does not support bigint type.")
159
- break
160
- }
161
- }
162
- for _, constant := range props.Metadata.Constants {
163
- if constant.Type == "bigint" {
164
- output = append(output, "LLM schema does not support bigint type.")
165
- break
166
- }
167
- }
168
- if len(props.Metadata.Tuples) != 0 {
169
- output = append(output, "LLM schema does not support tuple type.")
170
- }
171
- for _, array := range props.Metadata.Arrays {
172
- if array.Type.Value.IsRequired() == false {
173
- output = append(output, "LLM schema does not support undefined type in array.")
174
- break
175
- }
176
- }
177
- if len(props.Metadata.Maps) != 0 {
178
- output = append(output, "LLM schema does not support Map type.")
179
- }
180
- if len(props.Metadata.Sets) != 0 {
181
- output = append(output, "LLM schema does not support Set type.")
182
- }
183
- for _, native := range props.Metadata.Natives {
184
- if nativehelpers.AtomicPredicator.Native(native.Name) == false &&
185
- native.Name != "Date" &&
186
- native.Name != "Blob" &&
187
- native.Name != "File" {
188
- output = append(output, "LLM schema does not support "+native.Name+" type.")
189
- }
190
- }
191
- return output
136
+ output := []string{}
137
+ strict, _ := props.Config["strict"].(bool)
138
+ if strict {
139
+ for _, object := range props.Metadata.Objects {
140
+ for _, property := range object.Type.Properties {
141
+ if property.Key.IsSoleLiteral() == false && property.Value.Size() != 0 {
142
+ output = append(output, "Strict mode does not allow dynamic property in object.")
143
+ break
144
+ }
145
+ }
146
+ }
147
+ for _, object := range props.Metadata.Objects {
148
+ for _, property := range object.Type.Properties {
149
+ if property.Value.IsRequired() == false {
150
+ output = append(output, "Strict mode does not support optional property in object.")
151
+ break
152
+ }
153
+ }
154
+ }
155
+ }
156
+ for _, atomic := range props.Metadata.Atomics {
157
+ if atomic.Type == "bigint" {
158
+ output = append(output, "LLM schema does not support bigint type.")
159
+ break
160
+ }
161
+ }
162
+ for _, constant := range props.Metadata.Constants {
163
+ if constant.Type == "bigint" {
164
+ output = append(output, "LLM schema does not support bigint type.")
165
+ break
166
+ }
167
+ }
168
+ if len(props.Metadata.Tuples) != 0 {
169
+ output = append(output, "LLM schema does not support tuple type.")
170
+ }
171
+ for _, array := range props.Metadata.Arrays {
172
+ if array.Type.Value.IsRequired() == false {
173
+ output = append(output, "LLM schema does not support undefined type in array.")
174
+ break
175
+ }
176
+ }
177
+ if len(props.Metadata.Maps) != 0 {
178
+ output = append(output, "LLM schema does not support Map type.")
179
+ }
180
+ if len(props.Metadata.Sets) != 0 {
181
+ output = append(output, "LLM schema does not support Set type.")
182
+ }
183
+ for _, native := range props.Metadata.Natives {
184
+ if nativehelpers.AtomicPredicator.Native(native.Name) == false &&
185
+ native.Name != "Date" &&
186
+ native.Name != "Blob" &&
187
+ native.Name != "File" {
188
+ output = append(output, "LLM schema does not support "+native.Name+" type.")
189
+ }
190
+ }
191
+ return output
192
192
  }
193
193
 
194
194
  func llmSchemaProgrammer_size(metadata *schemametadata.MetadataSchema) int {
195
- total := 0
196
- if metadata.Escaped != nil {
197
- total += llmSchemaProgrammer_size(metadata.Escaped.Returns)
198
- }
199
- total += len(metadata.Aliases) + len(metadata.Objects) + len(metadata.Arrays) + len(metadata.Tuples)
200
- if len(metadata.Maps) != 0 {
201
- total++
202
- }
203
- if len(metadata.Sets) != 0 {
204
- total++
205
- }
206
- for _, atomic := range metadata.Atomics {
207
- if atomic.Type == "boolean" {
208
- total += len(nativeiterate.Json_schema_boolean_export(atomic))
209
- } else if atomic.Type == "bigint" {
210
- total += len(nativeiterate.Json_schema_bigint_export(atomic))
211
- } else if atomic.Type == "number" {
212
- total += len(nativeiterate.Json_schema_number_export(atomic))
213
- } else {
214
- total += len(nativeiterate.Json_schema_string_export(atomic))
215
- }
216
- }
217
- for _, constant := range metadata.Constants {
218
- found := false
219
- for _, atomic := range metadata.Atomics {
220
- if atomic.Type == constant.Type {
221
- found = true
222
- break
223
- }
224
- }
225
- if found == false {
226
- total++
227
- }
228
- }
229
- total += len(metadata.Templates)
230
- components := &nativeiterate.OpenApi_IComponents{Schemas: map[string]nativeiterate.JsonSchema{}}
231
- for _, native := range metadata.Natives {
232
- found := false
233
- for _, atomic := range metadata.Atomics {
234
- if atomic.Type == native.Name {
235
- found = true
236
- break
237
- }
238
- }
239
- for _, constant := range metadata.Constants {
240
- if constant.Type == native.Name {
241
- found = true
242
- break
243
- }
244
- }
245
- if found == false {
246
- total += len(nativeiterate.Json_schema_native_export(nativeiterate.Json_schema_native_export_props{
247
- Components: components,
248
- Native: native,
249
- }))
250
- }
251
- }
252
- return total
195
+ total := 0
196
+ if metadata.Escaped != nil {
197
+ total += llmSchemaProgrammer_size(metadata.Escaped.Returns)
198
+ }
199
+ total += len(metadata.Aliases) + len(metadata.Objects) + len(metadata.Arrays) + len(metadata.Tuples)
200
+ if len(metadata.Maps) != 0 {
201
+ total++
202
+ }
203
+ if len(metadata.Sets) != 0 {
204
+ total++
205
+ }
206
+ for _, atomic := range metadata.Atomics {
207
+ if atomic.Type == "boolean" {
208
+ total += len(nativeiterate.Json_schema_boolean_export(atomic))
209
+ } else if atomic.Type == "bigint" {
210
+ total += len(nativeiterate.Json_schema_bigint_export(atomic))
211
+ } else if atomic.Type == "number" {
212
+ total += len(nativeiterate.Json_schema_number_export(atomic))
213
+ } else {
214
+ total += len(nativeiterate.Json_schema_string_export(atomic))
215
+ }
216
+ }
217
+ for _, constant := range metadata.Constants {
218
+ found := false
219
+ for _, atomic := range metadata.Atomics {
220
+ if atomic.Type == constant.Type {
221
+ found = true
222
+ break
223
+ }
224
+ }
225
+ if found == false {
226
+ total++
227
+ }
228
+ }
229
+ total += len(metadata.Templates)
230
+ components := &nativeiterate.OpenApi_IComponents{Schemas: map[string]nativeiterate.JsonSchema{}}
231
+ for _, native := range metadata.Natives {
232
+ found := false
233
+ for _, atomic := range metadata.Atomics {
234
+ if atomic.Type == native.Name {
235
+ found = true
236
+ break
237
+ }
238
+ }
239
+ for _, constant := range metadata.Constants {
240
+ if constant.Type == native.Name {
241
+ found = true
242
+ break
243
+ }
244
+ }
245
+ if found == false {
246
+ total += len(nativeiterate.Json_schema_native_export(nativeiterate.Json_schema_native_export_props{
247
+ Components: components,
248
+ Native: native,
249
+ }))
250
+ }
251
+ }
252
+ return total
253
253
  }
254
254
 
255
255
  func llmSchemaProgrammer_convert_schema(schema nativeiterate.JsonSchema, components *nativeiterate.OpenApi_IComponents, defs map[string]any) map[string]any {
256
- return llmSchemaProgrammer_convert_schema_config(schema, components, defs, nil)
256
+ return llmSchemaProgrammer_convert_schema_config(schema, components, defs, nil)
257
257
  }
258
258
 
259
259
  func llmSchemaProgrammer_convert_schema_config(schema nativeiterate.JsonSchema, components *nativeiterate.OpenApi_IComponents, defs map[string]any, config map[string]any) map[string]any {
260
- strict := llmSchemaProgrammer_strict(config)
261
- attribute := llmSchemaProgrammer_attribute(schema)
262
- union := []map[string]any{}
263
-
264
- insertConstant := func(value any) {
265
- typ := llmSchemaProgrammer_constant_type(value)
266
- for _, elem := range union {
267
- if elem["type"] == typ {
268
- elem["enum"] = append(llmSchemaProgrammer_array(elem["enum"]), value)
269
- return
270
- }
271
- }
272
- union = append(union, map[string]any{
273
- "type": typ,
274
- "enum": []any{value},
275
- })
276
- }
277
- var visitConstant func(nativeiterate.JsonSchema)
278
- visitConstant = func(input nativeiterate.JsonSchema) {
279
- if value, ok := input["const"]; ok {
280
- insertConstant(value)
281
- return
282
- }
283
- for _, elem := range llmSchemaProgrammer_schema_array(input["oneOf"]) {
284
- visitConstant(elem)
285
- }
286
- }
287
-
288
- var visit func(nativeiterate.JsonSchema)
289
- visit = func(input nativeiterate.JsonSchema) {
290
- if oneOf := llmSchemaProgrammer_schema_array(input["oneOf"]); len(oneOf) != 0 {
291
- for _, elem := range oneOf {
292
- visit(elem)
293
- }
294
- return
295
- }
296
- if ref, ok := input["$ref"].(string); ok {
297
- key := llmSchemaProgrammer_ref_key(ref)
298
- if _, exists := defs[key]; exists == false {
299
- defs[key] = map[string]any{}
300
- if target, found := llmSchemaProgrammer_component(components, key); found {
301
- defs[key] = llmSchemaProgrammer_convert_schema_config(target, components, defs, config)
302
- }
303
- }
304
- union = append(union, map[string]any{"$ref": "#/$defs/" + key})
305
- return
306
- }
307
- if input["type"] == "object" {
308
- properties := map[string]any{}
309
- if raw, ok := llmSchemaProgrammer_schema_map(input["properties"]); ok {
310
- keys := make([]string, 0, len(raw))
311
- for key := range raw {
312
- keys = append(keys, key)
313
- }
314
- sort.Strings(keys)
315
- for _, key := range keys {
316
- if value, ok := llmSchemaProgrammer_schema_from_any(raw[key]); ok {
317
- properties[key] = llmSchemaProgrammer_convert_schema_config(value, components, defs, config)
318
- }
319
- }
320
- }
321
- output := llmSchemaProgrammer_clone(input)
322
- output["properties"] = properties
323
- if additional, ok := llmSchemaProgrammer_schema_from_any(input["additionalProperties"]); ok {
324
- output["additionalProperties"] = llmSchemaProgrammer_convert_schema_config(additional, components, defs, config)
325
- } else if strict {
326
- output["additionalProperties"] = false
327
- } else if value, ok := input["additionalProperties"]; ok {
328
- output["additionalProperties"] = value
329
- }
330
- if _, ok := input["required"]; ok {
331
- output["required"] = input["required"]
332
- } else {
333
- output["required"] = []any{}
334
- }
335
- if strict {
336
- if description := llmSchemaProgrammer_json_descriptor_take(input); description != nil {
337
- output["description"] = *description
338
- } else {
339
- delete(output, "description")
340
- }
341
- }
342
- union = append(union, output)
343
- return
344
- }
345
- if input["type"] == "array" {
346
- output := llmSchemaProgrammer_clone(input)
347
- if items, ok := llmSchemaProgrammer_schema_from_any(input["items"]); ok {
348
- output["items"] = llmSchemaProgrammer_convert_schema_config(items, components, defs, config)
349
- }
350
- if strict {
351
- output = llmSchemaProgrammer_shift_array(output)
352
- }
353
- union = append(union, output)
354
- return
355
- }
356
- if input["type"] == "string" {
357
- output := llmSchemaProgrammer_clone(input)
358
- if strict {
359
- output = llmSchemaProgrammer_shift_string(output)
360
- }
361
- union = append(union, output)
362
- return
363
- }
364
- if input["type"] == "number" || input["type"] == "integer" {
365
- output := llmSchemaProgrammer_clone(input)
366
- if strict {
367
- output = llmSchemaProgrammer_shift_numeric(output)
368
- }
369
- union = append(union, output)
370
- return
371
- }
372
- if _, ok := input["const"]; ok {
373
- return
374
- }
375
- union = append(union, llmSchemaProgrammer_clone(input))
376
- }
377
-
378
- visitConstant(schema)
379
- visit(schema)
380
-
381
- if len(union) == 0 {
382
- output := llmSchemaProgrammer_clone(attribute)
383
- output["type"] = nil
384
- return output
385
- }
386
- if len(union) == 1 {
387
- output := llmSchemaProgrammer_merge(attribute, union[0])
388
- if strict && llmSchemaProgrammer_is_reference(union[0]) {
389
- delete(output, "description")
390
- } else if description, ok := union[0]["description"]; ok {
391
- output["description"] = description
392
- } else if description, ok := attribute["description"]; ok {
393
- output["description"] = description
394
- }
395
- return output
396
- }
397
- anyOf := make([]any, 0, len(union))
398
- for _, elem := range union {
399
- output := llmSchemaProgrammer_clone(elem)
400
- if strict && llmSchemaProgrammer_is_reference(elem) {
401
- delete(output, "description")
402
- }
403
- anyOf = append(anyOf, output)
404
- }
405
- output := llmSchemaProgrammer_clone(attribute)
406
- output["anyOf"] = anyOf
407
- if x := llmSchemaProgrammer_discriminator(schema, union); x != nil {
408
- output["x-discriminator"] = x
409
- }
410
- return output
260
+ strict := llmSchemaProgrammer_strict(config)
261
+ attribute := llmSchemaProgrammer_attribute(schema)
262
+ union := []map[string]any{}
263
+
264
+ insertConstant := func(value any) {
265
+ typ := llmSchemaProgrammer_constant_type(value)
266
+ for _, elem := range union {
267
+ if elem["type"] == typ {
268
+ elem["enum"] = append(llmSchemaProgrammer_array(elem["enum"]), value)
269
+ return
270
+ }
271
+ }
272
+ union = append(union, map[string]any{
273
+ "type": typ,
274
+ "enum": []any{value},
275
+ })
276
+ }
277
+ var visitConstant func(nativeiterate.JsonSchema)
278
+ visitConstant = func(input nativeiterate.JsonSchema) {
279
+ if value, ok := input["const"]; ok {
280
+ insertConstant(value)
281
+ return
282
+ }
283
+ for _, elem := range llmSchemaProgrammer_schema_array(input["oneOf"]) {
284
+ visitConstant(elem)
285
+ }
286
+ }
287
+
288
+ var visit func(nativeiterate.JsonSchema)
289
+ visit = func(input nativeiterate.JsonSchema) {
290
+ if oneOf := llmSchemaProgrammer_schema_array(input["oneOf"]); len(oneOf) != 0 {
291
+ for _, elem := range oneOf {
292
+ visit(elem)
293
+ }
294
+ return
295
+ }
296
+ if ref, ok := input["$ref"].(string); ok {
297
+ key := llmSchemaProgrammer_ref_key(ref)
298
+ if _, exists := defs[key]; exists == false {
299
+ defs[key] = map[string]any{}
300
+ if target, found := llmSchemaProgrammer_component(components, key); found {
301
+ defs[key] = llmSchemaProgrammer_convert_schema_config(target, components, defs, config)
302
+ }
303
+ }
304
+ union = append(union, map[string]any{"$ref": "#/$defs/" + key})
305
+ return
306
+ }
307
+ if input["type"] == "object" {
308
+ properties := map[string]any{}
309
+ if raw, ok := llmSchemaProgrammer_schema_map(input["properties"]); ok {
310
+ keys := make([]string, 0, len(raw))
311
+ for key := range raw {
312
+ keys = append(keys, key)
313
+ }
314
+ sort.Strings(keys)
315
+ for _, key := range keys {
316
+ if value, ok := llmSchemaProgrammer_schema_from_any(raw[key]); ok {
317
+ properties[key] = llmSchemaProgrammer_convert_schema_config(value, components, defs, config)
318
+ }
319
+ }
320
+ }
321
+ output := llmSchemaProgrammer_clone(input)
322
+ output["properties"] = properties
323
+ if additional, ok := llmSchemaProgrammer_schema_from_any(input["additionalProperties"]); ok {
324
+ output["additionalProperties"] = llmSchemaProgrammer_convert_schema_config(additional, components, defs, config)
325
+ } else if strict {
326
+ output["additionalProperties"] = false
327
+ } else if value, ok := input["additionalProperties"]; ok {
328
+ output["additionalProperties"] = value
329
+ }
330
+ if _, ok := input["required"]; ok {
331
+ output["required"] = input["required"]
332
+ } else {
333
+ output["required"] = []any{}
334
+ }
335
+ if strict {
336
+ if description := llmSchemaProgrammer_json_descriptor_take(input); description != nil {
337
+ output["description"] = *description
338
+ } else {
339
+ delete(output, "description")
340
+ }
341
+ }
342
+ union = append(union, output)
343
+ return
344
+ }
345
+ if input["type"] == "array" {
346
+ output := llmSchemaProgrammer_clone(input)
347
+ if items, ok := llmSchemaProgrammer_schema_from_any(input["items"]); ok {
348
+ output["items"] = llmSchemaProgrammer_convert_schema_config(items, components, defs, config)
349
+ }
350
+ if strict {
351
+ output = llmSchemaProgrammer_shift_array(output)
352
+ }
353
+ union = append(union, output)
354
+ return
355
+ }
356
+ if input["type"] == "string" {
357
+ output := llmSchemaProgrammer_clone(input)
358
+ if strict {
359
+ output = llmSchemaProgrammer_shift_string(output)
360
+ }
361
+ union = append(union, output)
362
+ return
363
+ }
364
+ if input["type"] == "number" || input["type"] == "integer" {
365
+ output := llmSchemaProgrammer_clone(input)
366
+ if strict {
367
+ output = llmSchemaProgrammer_shift_numeric(output)
368
+ }
369
+ union = append(union, output)
370
+ return
371
+ }
372
+ if _, ok := input["const"]; ok {
373
+ return
374
+ }
375
+ union = append(union, llmSchemaProgrammer_clone(input))
376
+ }
377
+
378
+ visitConstant(schema)
379
+ visit(schema)
380
+
381
+ if len(union) == 0 {
382
+ output := llmSchemaProgrammer_clone(attribute)
383
+ output["type"] = nil
384
+ return output
385
+ }
386
+ if len(union) == 1 {
387
+ output := llmSchemaProgrammer_merge(attribute, union[0])
388
+ if strict && llmSchemaProgrammer_is_reference(union[0]) {
389
+ delete(output, "description")
390
+ } else if description, ok := union[0]["description"]; ok {
391
+ output["description"] = description
392
+ } else if description, ok := attribute["description"]; ok {
393
+ output["description"] = description
394
+ }
395
+ return output
396
+ }
397
+ anyOf := make([]any, 0, len(union))
398
+ for _, elem := range union {
399
+ output := llmSchemaProgrammer_clone(elem)
400
+ if strict && llmSchemaProgrammer_is_reference(elem) {
401
+ delete(output, "description")
402
+ }
403
+ anyOf = append(anyOf, output)
404
+ }
405
+ output := llmSchemaProgrammer_clone(attribute)
406
+ output["anyOf"] = anyOf
407
+ if x := llmSchemaProgrammer_discriminator(schema, union); x != nil {
408
+ output["x-discriminator"] = x
409
+ }
410
+ return output
411
411
  }
412
412
 
413
413
  func llmSchemaProgrammer_strict(config map[string]any) bool {
414
- strict, _ := config["strict"].(bool)
415
- return strict
414
+ strict, _ := config["strict"].(bool)
415
+ return strict
416
416
  }
417
417
 
418
418
  func llmSchemaProgrammer_attribute(schema nativeiterate.JsonSchema) map[string]any {
419
- output := map[string]any{}
420
- for _, key := range []string{
421
- "title",
422
- "description",
423
- "deprecated",
424
- "readOnly",
425
- "writeOnly",
426
- "example",
427
- "examples",
428
- } {
429
- if value, ok := schema[key]; ok && llmSchemaProgrammer_is_nil_like(value) == false {
430
- output[key] = value
431
- }
432
- }
433
- for key, value := range schema {
434
- if strings.HasPrefix(key, "x-") && llmSchemaProgrammer_is_nil_like(value) == false {
435
- output[key] = value
436
- }
437
- }
438
- return output
419
+ output := map[string]any{}
420
+ for _, key := range []string{
421
+ "title",
422
+ "description",
423
+ "deprecated",
424
+ "readOnly",
425
+ "writeOnly",
426
+ "example",
427
+ "examples",
428
+ } {
429
+ if value, ok := schema[key]; ok && llmSchemaProgrammer_is_nil_like(value) == false {
430
+ output[key] = value
431
+ }
432
+ }
433
+ for key, value := range schema {
434
+ if strings.HasPrefix(key, "x-") && llmSchemaProgrammer_is_nil_like(value) == false {
435
+ output[key] = value
436
+ }
437
+ }
438
+ return output
439
439
  }
440
440
 
441
441
  func llmSchemaProgrammer_clone(input map[string]any) map[string]any {
442
- output := map[string]any{}
443
- for key, value := range input {
444
- if llmSchemaProgrammer_is_nil_like(value) {
445
- continue
446
- }
447
- output[key] = value
448
- }
449
- return output
442
+ output := map[string]any{}
443
+ for key, value := range input {
444
+ if llmSchemaProgrammer_is_nil_like(value) {
445
+ continue
446
+ }
447
+ output[key] = value
448
+ }
449
+ return output
450
450
  }
451
451
 
452
452
  func llmSchemaProgrammer_is_nil_like(value any) bool {
453
- if value == nil {
454
- return true
455
- }
456
- reflected := reflect.ValueOf(value)
457
- switch reflected.Kind() {
458
- case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Pointer, reflect.Slice:
459
- return reflected.IsNil()
460
- default:
461
- return false
462
- }
453
+ if value == nil {
454
+ return true
455
+ }
456
+ reflected := reflect.ValueOf(value)
457
+ switch reflected.Kind() {
458
+ case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Pointer, reflect.Slice:
459
+ return reflected.IsNil()
460
+ default:
461
+ return false
462
+ }
463
463
  }
464
464
 
465
465
  func llmSchemaProgrammer_merge(left map[string]any, right map[string]any) map[string]any {
466
- output := llmSchemaProgrammer_clone(left)
467
- for key, value := range right {
468
- output[key] = value
469
- }
470
- return output
466
+ output := llmSchemaProgrammer_clone(left)
467
+ for key, value := range right {
468
+ output[key] = value
469
+ }
470
+ return output
471
471
  }
472
472
 
473
473
  func llmSchemaProgrammer_array(value any) []any {
474
- switch v := value.(type) {
475
- case []any:
476
- return append([]any{}, v...)
477
- case []string:
478
- output := make([]any, 0, len(v))
479
- for _, elem := range v {
480
- output = append(output, elem)
481
- }
482
- return output
483
- case []nativeiterate.JsonSchema:
484
- output := make([]any, 0, len(v))
485
- for _, elem := range v {
486
- output = append(output, elem)
487
- }
488
- return output
489
- default:
490
- return []any{}
491
- }
474
+ switch v := value.(type) {
475
+ case []any:
476
+ return append([]any{}, v...)
477
+ case []string:
478
+ output := make([]any, 0, len(v))
479
+ for _, elem := range v {
480
+ output = append(output, elem)
481
+ }
482
+ return output
483
+ case []nativeiterate.JsonSchema:
484
+ output := make([]any, 0, len(v))
485
+ for _, elem := range v {
486
+ output = append(output, elem)
487
+ }
488
+ return output
489
+ default:
490
+ return []any{}
491
+ }
492
492
  }
493
493
 
494
494
  func llmSchemaProgrammer_schema_array(value any) []nativeiterate.JsonSchema {
495
- switch v := value.(type) {
496
- case []nativeiterate.JsonSchema:
497
- return append([]nativeiterate.JsonSchema{}, v...)
498
- case []map[string]any:
499
- output := make([]nativeiterate.JsonSchema, 0, len(v))
500
- for _, elem := range v {
501
- output = append(output, nativeiterate.JsonSchema(elem))
502
- }
503
- return output
504
- case []any:
505
- output := make([]nativeiterate.JsonSchema, 0, len(v))
506
- for _, elem := range v {
507
- if schema, ok := llmSchemaProgrammer_schema_from_any(elem); ok {
508
- output = append(output, schema)
509
- }
510
- }
511
- return output
512
- default:
513
- return nil
514
- }
495
+ switch v := value.(type) {
496
+ case []nativeiterate.JsonSchema:
497
+ return append([]nativeiterate.JsonSchema{}, v...)
498
+ case []map[string]any:
499
+ output := make([]nativeiterate.JsonSchema, 0, len(v))
500
+ for _, elem := range v {
501
+ output = append(output, nativeiterate.JsonSchema(elem))
502
+ }
503
+ return output
504
+ case []any:
505
+ output := make([]nativeiterate.JsonSchema, 0, len(v))
506
+ for _, elem := range v {
507
+ if schema, ok := llmSchemaProgrammer_schema_from_any(elem); ok {
508
+ output = append(output, schema)
509
+ }
510
+ }
511
+ return output
512
+ default:
513
+ return nil
514
+ }
515
515
  }
516
516
 
517
517
  func llmSchemaProgrammer_schema_map(value any) (map[string]any, bool) {
518
- switch v := value.(type) {
519
- case nativeiterate.JsonSchema:
520
- output := map[string]any{}
521
- for key, value := range v {
522
- output[key] = value
523
- }
524
- return output, true
525
- case map[string]any:
526
- return v, true
527
- default:
528
- return nil, false
529
- }
518
+ switch v := value.(type) {
519
+ case nativeiterate.JsonSchema:
520
+ output := map[string]any{}
521
+ for key, value := range v {
522
+ output[key] = value
523
+ }
524
+ return output, true
525
+ case map[string]any:
526
+ return v, true
527
+ default:
528
+ return nil, false
529
+ }
530
530
  }
531
531
 
532
532
  func llmSchemaProgrammer_schema_from_any(value any) (nativeiterate.JsonSchema, bool) {
533
- switch v := value.(type) {
534
- case nativeiterate.JsonSchema:
535
- return v, true
536
- case map[string]any:
537
- return nativeiterate.JsonSchema(v), true
538
- default:
539
- return nil, false
540
- }
533
+ switch v := value.(type) {
534
+ case nativeiterate.JsonSchema:
535
+ return v, true
536
+ case map[string]any:
537
+ return nativeiterate.JsonSchema(v), true
538
+ default:
539
+ return nil, false
540
+ }
541
541
  }
542
542
 
543
543
  func llmSchemaProgrammer_constant_type(value any) string {
544
- reflected := reflect.ValueOf(value)
545
- if reflected.IsValid() == false {
546
- return fmt.Sprintf("%T", value)
547
- }
548
- switch reflected.Kind() {
549
- case reflect.Bool:
550
- return "boolean"
551
- case reflect.String:
552
- return "string"
553
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
554
- reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64,
555
- reflect.Float32, reflect.Float64:
556
- return "number"
557
- default:
558
- return fmt.Sprintf("%T", value)
559
- }
544
+ reflected := reflect.ValueOf(value)
545
+ if reflected.IsValid() == false {
546
+ return fmt.Sprintf("%T", value)
547
+ }
548
+ switch reflected.Kind() {
549
+ case reflect.Bool:
550
+ return "boolean"
551
+ case reflect.String:
552
+ return "string"
553
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
554
+ reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64,
555
+ reflect.Float32, reflect.Float64:
556
+ return "number"
557
+ default:
558
+ return fmt.Sprintf("%T", value)
559
+ }
560
560
  }
561
561
 
562
562
  func llmSchemaProgrammer_ref_key(ref string) string {
563
- if strings.Contains(ref, "#/components/schemas/") {
564
- return strings.Split(ref, "#/components/schemas/")[1]
565
- }
566
- index := strings.LastIndex(ref, "/")
567
- if index == -1 {
568
- return ref
569
- }
570
- return ref[index+1:]
563
+ if strings.Contains(ref, "#/components/schemas/") {
564
+ return strings.Split(ref, "#/components/schemas/")[1]
565
+ }
566
+ index := strings.LastIndex(ref, "/")
567
+ if index == -1 {
568
+ return ref
569
+ }
570
+ return ref[index+1:]
571
571
  }
572
572
 
573
573
  func llmSchemaProgrammer_component(components *nativeiterate.OpenApi_IComponents, key string) (nativeiterate.JsonSchema, bool) {
574
- if components == nil || components.Schemas == nil {
575
- return nil, false
576
- }
577
- schema, ok := components.Schemas[key]
578
- return schema, ok
574
+ if components == nil || components.Schemas == nil {
575
+ return nil, false
576
+ }
577
+ schema, ok := components.Schemas[key]
578
+ return schema, ok
579
579
  }
580
580
 
581
581
  func llmSchemaProgrammer_is_reference(schema map[string]any) bool {
582
- _, ok := schema["$ref"].(string)
583
- return ok
582
+ _, ok := schema["$ref"].(string)
583
+ return ok
584
584
  }
585
585
 
586
586
  func llmSchemaProgrammer_is_null(schema map[string]any) bool {
587
- return schema["type"] == "null"
587
+ return schema["type"] == "null"
588
588
  }
589
589
 
590
590
  func llmSchemaProgrammer_discriminator(schema nativeiterate.JsonSchema, union []map[string]any) map[string]any {
591
- discriminator, ok := llmSchemaProgrammer_schema_map(schema["discriminator"])
592
- if ok == false || len(llmSchemaProgrammer_schema_array(schema["oneOf"])) != len(union) {
593
- return nil
594
- }
595
- for _, elem := range union {
596
- if llmSchemaProgrammer_is_reference(elem) == false && llmSchemaProgrammer_is_null(elem) == false {
597
- return nil
598
- }
599
- }
600
- output := map[string]any{}
601
- if propertyName, ok := discriminator["propertyName"].(string); ok {
602
- output["propertyName"] = propertyName
603
- }
604
- if rawMapping, ok := llmSchemaProgrammer_schema_map(discriminator["mapping"]); ok {
605
- mapping := map[string]any{}
606
- for key, value := range rawMapping {
607
- mapping[key] = "#/$defs/" + llmSchemaProgrammer_ref_key(fmt.Sprint(value))
608
- }
609
- output["mapping"] = mapping
610
- }
611
- if len(output) == 0 {
612
- return nil
613
- }
614
- return output
591
+ discriminator, ok := llmSchemaProgrammer_schema_map(schema["discriminator"])
592
+ if ok == false || len(llmSchemaProgrammer_schema_array(schema["oneOf"])) != len(union) {
593
+ return nil
594
+ }
595
+ for _, elem := range union {
596
+ if llmSchemaProgrammer_is_reference(elem) == false && llmSchemaProgrammer_is_null(elem) == false {
597
+ return nil
598
+ }
599
+ }
600
+ output := map[string]any{}
601
+ if propertyName, ok := discriminator["propertyName"].(string); ok {
602
+ output["propertyName"] = propertyName
603
+ }
604
+ if rawMapping, ok := llmSchemaProgrammer_schema_map(discriminator["mapping"]); ok {
605
+ mapping := map[string]any{}
606
+ for key, value := range rawMapping {
607
+ mapping[key] = "#/$defs/" + llmSchemaProgrammer_ref_key(fmt.Sprint(value))
608
+ }
609
+ output["mapping"] = mapping
610
+ }
611
+ if len(output) == 0 {
612
+ return nil
613
+ }
614
+ return output
615
615
  }
616
616
 
617
617
  func llmSchemaProgrammer_shift_array(schema map[string]any) map[string]any {
618
- output := llmSchemaProgrammer_clone(schema)
619
- tags := []string{}
620
- if value, ok := output["minItems"]; ok {
621
- tags = append(tags, "@minItems "+fmt.Sprint(value))
622
- delete(output, "minItems")
623
- }
624
- if value, ok := output["maxItems"]; ok {
625
- tags = append(tags, "@maxItems "+fmt.Sprint(value))
626
- delete(output, "maxItems")
627
- }
628
- if value, ok := output["uniqueItems"].(bool); ok {
629
- if value {
630
- tags = append(tags, "@uniqueItems")
631
- }
632
- delete(output, "uniqueItems")
633
- }
634
- llmSchemaProgrammer_write_tag_with_description(output, tags)
635
- return output
618
+ output := llmSchemaProgrammer_clone(schema)
619
+ tags := []string{}
620
+ if value, ok := output["minItems"]; ok {
621
+ tags = append(tags, "@minItems "+fmt.Sprint(value))
622
+ delete(output, "minItems")
623
+ }
624
+ if value, ok := output["maxItems"]; ok {
625
+ tags = append(tags, "@maxItems "+fmt.Sprint(value))
626
+ delete(output, "maxItems")
627
+ }
628
+ if value, ok := output["uniqueItems"].(bool); ok {
629
+ if value {
630
+ tags = append(tags, "@uniqueItems")
631
+ }
632
+ delete(output, "uniqueItems")
633
+ }
634
+ llmSchemaProgrammer_write_tag_with_description(output, tags)
635
+ return output
636
636
  }
637
637
 
638
638
  func llmSchemaProgrammer_shift_numeric(schema map[string]any) map[string]any {
639
- output := llmSchemaProgrammer_clone(schema)
640
- llmSchemaProgrammer_emend_exclusive(output)
641
- tags := []string{}
642
- for _, key := range []string{"minimum", "maximum", "exclusiveMinimum", "exclusiveMaximum", "multipleOf"} {
643
- if value, ok := output[key]; ok {
644
- tags = append(tags, "@"+key+" "+fmt.Sprint(value))
645
- delete(output, key)
646
- }
647
- }
648
- llmSchemaProgrammer_write_tag_with_description(output, tags)
649
- delete(output, "default")
650
- return output
639
+ output := llmSchemaProgrammer_clone(schema)
640
+ llmSchemaProgrammer_emend_exclusive(output)
641
+ tags := []string{}
642
+ for _, key := range []string{"minimum", "maximum", "exclusiveMinimum", "exclusiveMaximum", "multipleOf"} {
643
+ if value, ok := output[key]; ok {
644
+ tags = append(tags, "@"+key+" "+fmt.Sprint(value))
645
+ delete(output, key)
646
+ }
647
+ }
648
+ llmSchemaProgrammer_write_tag_with_description(output, tags)
649
+ delete(output, "default")
650
+ return output
651
651
  }
652
652
 
653
653
  func llmSchemaProgrammer_shift_string(schema map[string]any) map[string]any {
654
- output := llmSchemaProgrammer_clone(schema)
655
- tags := []string{}
656
- for _, key := range []string{"minLength", "maxLength", "format", "pattern", "contentMediaType", "default"} {
657
- if value, ok := output[key]; ok {
658
- tags = append(tags, "@"+key+" "+fmt.Sprint(value))
659
- delete(output, key)
660
- }
661
- }
662
- llmSchemaProgrammer_write_tag_with_description(output, tags)
663
- return output
654
+ output := llmSchemaProgrammer_clone(schema)
655
+ tags := []string{}
656
+ for _, key := range []string{"minLength", "maxLength", "format", "pattern", "contentMediaType", "default"} {
657
+ if value, ok := output[key]; ok {
658
+ tags = append(tags, "@"+key+" "+fmt.Sprint(value))
659
+ delete(output, key)
660
+ }
661
+ }
662
+ llmSchemaProgrammer_write_tag_with_description(output, tags)
663
+ return output
664
664
  }
665
665
 
666
666
  func llmSchemaProgrammer_write_tag_with_description(schema map[string]any, tags []string) {
667
- if len(tags) == 0 {
668
- return
669
- }
670
- lines := []string{}
671
- if description, ok := schema["description"].(string); ok && len(description) != 0 {
672
- lines = append(lines, description, "\n")
673
- }
674
- lines = append(lines, tags...)
675
- schema["description"] = strings.Join(lines, "\n")
667
+ if len(tags) == 0 {
668
+ return
669
+ }
670
+ lines := []string{}
671
+ if description, ok := schema["description"].(string); ok && len(description) != 0 {
672
+ lines = append(lines, description, "\n")
673
+ }
674
+ lines = append(lines, tags...)
675
+ schema["description"] = strings.Join(lines, "\n")
676
676
  }
677
677
 
678
678
  func llmSchemaProgrammer_emend_exclusive(schema map[string]any) {
679
- if exclusiveMinimum, ok := llmSchemaProgrammer_number(schema["exclusiveMinimum"]); ok {
680
- if minimum, found := llmSchemaProgrammer_number(schema["minimum"]); found {
681
- if minimum > exclusiveMinimum {
682
- schema["minimum"] = minimum
683
- delete(schema, "exclusiveMinimum")
684
- } else {
685
- schema["exclusiveMinimum"] = exclusiveMinimum
686
- delete(schema, "minimum")
687
- }
688
- }
689
- }
690
- if exclusiveMaximum, ok := llmSchemaProgrammer_number(schema["exclusiveMaximum"]); ok {
691
- if maximum, found := llmSchemaProgrammer_number(schema["maximum"]); found {
692
- if maximum < exclusiveMaximum {
693
- schema["maximum"] = maximum
694
- delete(schema, "exclusiveMaximum")
695
- } else {
696
- schema["exclusiveMaximum"] = exclusiveMaximum
697
- delete(schema, "maximum")
698
- }
699
- }
700
- }
679
+ if exclusiveMinimum, ok := llmSchemaProgrammer_number(schema["exclusiveMinimum"]); ok {
680
+ if minimum, found := llmSchemaProgrammer_number(schema["minimum"]); found {
681
+ if minimum > exclusiveMinimum {
682
+ schema["minimum"] = minimum
683
+ delete(schema, "exclusiveMinimum")
684
+ } else {
685
+ schema["exclusiveMinimum"] = exclusiveMinimum
686
+ delete(schema, "minimum")
687
+ }
688
+ }
689
+ }
690
+ if exclusiveMaximum, ok := llmSchemaProgrammer_number(schema["exclusiveMaximum"]); ok {
691
+ if maximum, found := llmSchemaProgrammer_number(schema["maximum"]); found {
692
+ if maximum < exclusiveMaximum {
693
+ schema["maximum"] = maximum
694
+ delete(schema, "exclusiveMaximum")
695
+ } else {
696
+ schema["exclusiveMaximum"] = exclusiveMaximum
697
+ delete(schema, "maximum")
698
+ }
699
+ }
700
+ }
701
701
  }
702
702
 
703
703
  func llmSchemaProgrammer_number(value any) (float64, bool) {
704
- reflected := reflect.ValueOf(value)
705
- if reflected.IsValid() == false {
706
- return 0, false
707
- }
708
- switch reflected.Kind() {
709
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
710
- return float64(reflected.Int()), true
711
- case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
712
- return float64(reflected.Uint()), true
713
- case reflect.Float32, reflect.Float64:
714
- return reflected.Convert(reflect.TypeOf(float64(0))).Float(), true
715
- default:
716
- return 0, false
717
- }
704
+ reflected := reflect.ValueOf(value)
705
+ if reflected.IsValid() == false {
706
+ return 0, false
707
+ }
708
+ switch reflected.Kind() {
709
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
710
+ return float64(reflected.Int()), true
711
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
712
+ return float64(reflected.Uint()), true
713
+ case reflect.Float32, reflect.Float64:
714
+ return reflected.Convert(reflect.TypeOf(float64(0))).Float(), true
715
+ default:
716
+ return 0, false
717
+ }
718
718
  }
719
719
 
720
720
  func llmSchemaProgrammer_json_descriptor_take(schema nativeiterate.JsonSchema) *string {
721
- parts := []string{}
722
- if description, ok := schema["description"].(string); ok && len(description) != 0 {
723
- parts = append(parts, description)
724
- }
725
- properties, ok := llmSchemaProgrammer_schema_map(schema["properties"])
726
- if ok {
727
- keys := make([]string, 0, len(properties))
728
- for key := range properties {
729
- keys = append(keys, key)
730
- }
731
- sort.Strings(keys)
732
- for _, key := range keys {
733
- value, ok := llmSchemaProgrammer_schema_from_any(properties[key])
734
- if ok == false || llmSchemaProgrammer_is_reference(value) == false {
735
- continue
736
- }
737
- description, ok := value["description"].(string)
738
- if ok == false || len(description) == 0 {
739
- continue
740
- }
741
- name := key
742
- if llmSchemaProgrammer_is_variable_name(key) == false {
743
- name = strconv.Quote(key)
744
- }
745
- parts = append(parts, "### Description of {@link "+name+"} property:\n\n"+llmSchemaProgrammer_quote_description(description))
746
- }
747
- }
748
- if len(parts) == 0 {
749
- return nil
750
- }
751
- output := strings.Join(parts, "\n\n")
752
- return &output
721
+ parts := []string{}
722
+ if description, ok := schema["description"].(string); ok && len(description) != 0 {
723
+ parts = append(parts, description)
724
+ }
725
+ properties, ok := llmSchemaProgrammer_schema_map(schema["properties"])
726
+ if ok {
727
+ keys := make([]string, 0, len(properties))
728
+ for key := range properties {
729
+ keys = append(keys, key)
730
+ }
731
+ sort.Strings(keys)
732
+ for _, key := range keys {
733
+ value, ok := llmSchemaProgrammer_schema_from_any(properties[key])
734
+ if ok == false || llmSchemaProgrammer_is_reference(value) == false {
735
+ continue
736
+ }
737
+ description, ok := value["description"].(string)
738
+ if ok == false || len(description) == 0 {
739
+ continue
740
+ }
741
+ name := key
742
+ if llmSchemaProgrammer_is_variable_name(key) == false {
743
+ name = strconv.Quote(key)
744
+ }
745
+ parts = append(parts, "### Description of {@link "+name+"} property:\n\n"+llmSchemaProgrammer_quote_description(description))
746
+ }
747
+ }
748
+ if len(parts) == 0 {
749
+ return nil
750
+ }
751
+ output := strings.Join(parts, "\n\n")
752
+ return &output
753
753
  }
754
754
 
755
755
  func llmSchemaProgrammer_quote_description(description string) string {
756
- lines := strings.Split(description, "\n")
757
- for i, line := range lines {
758
- lines[i] = "> " + line
759
- }
760
- return strings.Join(lines, "\n")
756
+ lines := strings.Split(description, "\n")
757
+ for i, line := range lines {
758
+ lines[i] = "> " + line
759
+ }
760
+ return strings.Join(lines, "\n")
761
761
  }
762
762
 
763
763
  func llmSchemaProgrammer_is_variable_name(str string) bool {
764
- if len(str) == 0 {
765
- return false
766
- }
767
- for i, r := range str {
768
- if i == 0 {
769
- if (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || r == '_' || r == '$' {
770
- continue
771
- }
772
- return false
773
- }
774
- if (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') || r == '_' || r == '$' {
775
- continue
776
- }
777
- return false
778
- }
779
- return true
764
+ if len(str) == 0 {
765
+ return false
766
+ }
767
+ for i, r := range str {
768
+ if i == 0 {
769
+ if (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || r == '_' || r == '$' {
770
+ continue
771
+ }
772
+ return false
773
+ }
774
+ if (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') || r == '_' || r == '$' {
775
+ continue
776
+ }
777
+ return false
778
+ }
779
+ return true
780
780
  }
781
781
 
782
782
  func llmProgrammer_internal(context nativecontext.ITypiaContext, name string) *shimast.Node {
783
- if importer, ok := context.Importer.(interface{ Internal(string) *shimast.Node }); ok {
784
- return importer.Internal(name)
785
- }
786
- return llmSchemaProgrammer_factory.NewIdentifier(name)
783
+ if importer, ok := context.Importer.(interface{ Internal(string) *shimast.Node }); ok {
784
+ return importer.Internal(name)
785
+ }
786
+ return llmSchemaProgrammer_factory.NewIdentifier(name)
787
787
  }
788
788
 
789
789
  func llmProgrammer_import_type(context nativecontext.ITypiaContext, props nativeprogrammers.ImportProgrammer_TypeProps) *shimast.Node {
790
- if importer, ok := context.Importer.(interface {
791
- Type(nativeprogrammers.ImportProgrammer_TypeProps) *shimast.Node
792
- }); ok {
793
- return importer.Type(props)
794
- }
795
- if str, ok := props.Name.(string); ok {
796
- return llmSchemaProgrammer_factory.NewTypeReferenceNode(llmSchemaProgrammer_factory.NewIdentifier(str), llmSchemaProgrammer_factory.NewNodeList(props.Arguments))
797
- }
798
- return props.Name.(*shimast.Node)
790
+ if importer, ok := context.Importer.(interface {
791
+ Type(nativeprogrammers.ImportProgrammer_TypeProps) *shimast.Node
792
+ }); ok {
793
+ return importer.Type(props)
794
+ }
795
+ if str, ok := props.Name.(string); ok {
796
+ return llmSchemaProgrammer_factory.NewTypeReferenceNode(llmSchemaProgrammer_factory.NewIdentifier(str), llmSchemaProgrammer_factory.NewNodeList(props.Arguments))
797
+ }
798
+ return props.Name.(*shimast.Node)
799
799
  }
800
800
 
801
801
  func llmProgrammer_type_reference(name string) *shimast.Node {
802
- if name == "" {
803
- name = "unknown"
804
- }
805
- return llmSchemaProgrammer_factory.NewTypeReferenceNode(llmSchemaProgrammer_factory.NewIdentifier(name), nil)
802
+ if name == "" {
803
+ name = "unknown"
804
+ }
805
+ return llmSchemaProgrammer_factory.NewTypeReferenceNode(llmSchemaProgrammer_factory.NewIdentifier(name), nil)
806
806
  }
807
807
 
808
808
  func llmProgrammer_method_text(modulo *shimast.Node) string {
809
- if modulo == nil {
810
- return ""
811
- }
812
- return modulo.Text()
809
+ if modulo == nil {
810
+ return ""
811
+ }
812
+ return modulo.Text()
813
813
  }
814
814
 
815
815
  func llmProgrammer_concat_description(summary *string, description *string) *string {
816
- if summary == nil || len(*summary) == 0 || description == nil || len(*description) == 0 {
817
- if summary != nil && len(*summary) != 0 {
818
- return summary
819
- }
820
- return description
821
- }
822
- head := *summary
823
- if strings.HasSuffix(head, ".") {
824
- head = head[:len(head)-1]
825
- }
826
- if strings.HasPrefix(*description, head) {
827
- return description
828
- }
829
- out := head + ".\n\n" + *description
830
- return &out
816
+ if summary == nil || len(*summary) == 0 || description == nil || len(*description) == 0 {
817
+ if summary != nil && len(*summary) != 0 {
818
+ return summary
819
+ }
820
+ return description
821
+ }
822
+ head := *summary
823
+ if strings.HasSuffix(head, ".") {
824
+ head = head[:len(head)-1]
825
+ }
826
+ if strings.HasPrefix(*description, head) {
827
+ return description
828
+ }
829
+ out := head + ".\n\n" + *description
830
+ return &out
831
831
  }