typia 13.0.0-dev.20260427-3 → 13.0.0-dev.20260430

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 (923) hide show
  1. package/README.md +0 -1
  2. package/lib/TypeGuardError.js +1 -0
  3. package/lib/TypeGuardError.js.map +1 -1
  4. package/lib/TypeGuardError.mjs +2 -7
  5. package/lib/TypeGuardError.mjs.map +1 -1
  6. package/lib/TypeGuardError2.mjs +51 -58
  7. package/lib/TypeGuardError2.mjs.map +1 -1
  8. package/lib/executable/TypiaGenerateWizard.js +65 -36
  9. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  10. package/lib/executable/TypiaGenerateWizard.mjs +2 -7
  11. package/lib/executable/TypiaGenerateWizard.mjs.map +1 -1
  12. package/lib/executable/TypiaGenerateWizard2.mjs +226 -201
  13. package/lib/executable/TypiaGenerateWizard2.mjs.map +1 -1
  14. package/lib/executable/TypiaSetupWizard.mjs +2 -7
  15. package/lib/executable/TypiaSetupWizard.mjs.map +1 -1
  16. package/lib/executable/TypiaSetupWizard2.mjs +139 -144
  17. package/lib/executable/TypiaSetupWizard2.mjs.map +1 -1
  18. package/lib/executable/generate/ttsc.d.ts +0 -4
  19. package/lib/executable/generate/ttsc.js +15 -50
  20. package/lib/executable/generate/ttsc.js.map +1 -1
  21. package/lib/executable/generate/ttsc.mjs +2 -7
  22. package/lib/executable/generate/ttsc.mjs.map +1 -1
  23. package/lib/executable/generate/ttsc2.mjs +46 -92
  24. package/lib/executable/generate/ttsc2.mjs.map +1 -1
  25. package/lib/executable/setup/ArgumentParser.mjs +2 -7
  26. package/lib/executable/setup/ArgumentParser.mjs.map +1 -1
  27. package/lib/executable/setup/ArgumentParser2.mjs +36 -44
  28. package/lib/executable/setup/ArgumentParser2.mjs.map +1 -1
  29. package/lib/executable/setup/CommandExecutor.mjs +2 -7
  30. package/lib/executable/setup/CommandExecutor.mjs.map +1 -1
  31. package/lib/executable/setup/CommandExecutor2.mjs +15 -23
  32. package/lib/executable/setup/CommandExecutor2.mjs.map +1 -1
  33. package/lib/executable/setup/FileRetriever.mjs +2 -7
  34. package/lib/executable/setup/FileRetriever.mjs.map +1 -1
  35. package/lib/executable/setup/FileRetriever2.mjs +25 -33
  36. package/lib/executable/setup/FileRetriever2.mjs.map +1 -1
  37. package/lib/executable/setup/PackageManager.mjs +2 -7
  38. package/lib/executable/setup/PackageManager.mjs.map +1 -1
  39. package/lib/executable/setup/PackageManager2.mjs +82 -88
  40. package/lib/executable/setup/PackageManager2.mjs.map +1 -1
  41. package/lib/executable/setup/PluginConfigurator.mjs +2 -7
  42. package/lib/executable/setup/PluginConfigurator.mjs.map +1 -1
  43. package/lib/executable/setup/PluginConfigurator2.mjs +60 -68
  44. package/lib/executable/setup/PluginConfigurator2.mjs.map +1 -1
  45. package/lib/executable/typia.mjs +2 -7
  46. package/lib/executable/typia.mjs.map +1 -1
  47. package/lib/executable/typia2.mjs +94 -100
  48. package/lib/executable/typia2.mjs.map +1 -1
  49. package/lib/functional.mjs +2 -7
  50. package/lib/functional.mjs.map +1 -1
  51. package/lib/functional2.mjs +94 -101
  52. package/lib/functional2.mjs.map +1 -1
  53. package/lib/http.mjs +2 -7
  54. package/lib/http.mjs.map +1 -1
  55. package/lib/http2.mjs +134 -141
  56. package/lib/http2.mjs.map +1 -1
  57. package/lib/index.mjs +1 -7
  58. package/lib/index.mjs.map +1 -1
  59. package/lib/index2.mjs +48 -51
  60. package/lib/index2.mjs.map +1 -1
  61. package/lib/internal/_IProtobufWriter.mjs +2 -7
  62. package/lib/internal/_IProtobufWriter.mjs.map +1 -1
  63. package/lib/internal/_IProtobufWriter2.mjs +2 -10
  64. package/lib/internal/_IProtobufWriter2.mjs.map +1 -1
  65. package/lib/internal/_ProtobufReader.mjs +2 -7
  66. package/lib/internal/_ProtobufReader.mjs.map +1 -1
  67. package/lib/internal/_ProtobufReader2.mjs +164 -172
  68. package/lib/internal/_ProtobufReader2.mjs.map +1 -1
  69. package/lib/internal/_ProtobufSizer.mjs +2 -7
  70. package/lib/internal/_ProtobufSizer.mjs.map +1 -1
  71. package/lib/internal/_ProtobufSizer2.mjs +115 -123
  72. package/lib/internal/_ProtobufSizer2.mjs.map +1 -1
  73. package/lib/internal/_ProtobufWriter.mjs +2 -7
  74. package/lib/internal/_ProtobufWriter.mjs.map +1 -1
  75. package/lib/internal/_ProtobufWriter2.mjs +102 -110
  76. package/lib/internal/_ProtobufWriter2.mjs.map +1 -1
  77. package/lib/internal/_accessExpressionAsString.mjs +2 -7
  78. package/lib/internal/_accessExpressionAsString.mjs.map +1 -1
  79. package/lib/internal/_accessExpressionAsString2.mjs +46 -54
  80. package/lib/internal/_accessExpressionAsString2.mjs.map +1 -1
  81. package/lib/internal/_assertGuard.mjs +2 -7
  82. package/lib/internal/_assertGuard.mjs.map +1 -1
  83. package/lib/internal/_assertGuard2.mjs +17 -24
  84. package/lib/internal/_assertGuard2.mjs.map +1 -1
  85. package/lib/internal/_coerceLlmArguments.mjs +2 -7
  86. package/lib/internal/_coerceLlmArguments.mjs.map +1 -1
  87. package/lib/internal/_coerceLlmArguments2.mjs +7 -15
  88. package/lib/internal/_coerceLlmArguments2.mjs.map +1 -1
  89. package/lib/internal/_createStandardSchema.mjs +2 -7
  90. package/lib/internal/_createStandardSchema.mjs.map +1 -1
  91. package/lib/internal/_createStandardSchema2.mjs +135 -143
  92. package/lib/internal/_createStandardSchema2.mjs.map +1 -1
  93. package/lib/internal/_functionalTypeGuardErrorFactory.mjs +2 -7
  94. package/lib/internal/_functionalTypeGuardErrorFactory.mjs.map +1 -1
  95. package/lib/internal/_functionalTypeGuardErrorFactory2.mjs +9 -16
  96. package/lib/internal/_functionalTypeGuardErrorFactory2.mjs.map +1 -1
  97. package/lib/internal/_httpFormDataReadArray.mjs +2 -7
  98. package/lib/internal/_httpFormDataReadArray.mjs.map +1 -1
  99. package/lib/internal/_httpFormDataReadArray2.mjs +6 -14
  100. package/lib/internal/_httpFormDataReadArray2.mjs.map +1 -1
  101. package/lib/internal/_httpFormDataReadBigint.mjs +2 -7
  102. package/lib/internal/_httpFormDataReadBigint.mjs.map +1 -1
  103. package/lib/internal/_httpFormDataReadBigint2.mjs +20 -28
  104. package/lib/internal/_httpFormDataReadBigint2.mjs.map +1 -1
  105. package/lib/internal/_httpFormDataReadBlob.mjs +2 -7
  106. package/lib/internal/_httpFormDataReadBlob.mjs.map +1 -1
  107. package/lib/internal/_httpFormDataReadBlob2.mjs +12 -20
  108. package/lib/internal/_httpFormDataReadBlob2.mjs.map +1 -1
  109. package/lib/internal/_httpFormDataReadBoolean.mjs +2 -7
  110. package/lib/internal/_httpFormDataReadBoolean.mjs.map +1 -1
  111. package/lib/internal/_httpFormDataReadBoolean2.mjs +18 -26
  112. package/lib/internal/_httpFormDataReadBoolean2.mjs.map +1 -1
  113. package/lib/internal/_httpFormDataReadFile.mjs +2 -7
  114. package/lib/internal/_httpFormDataReadFile.mjs.map +1 -1
  115. package/lib/internal/_httpFormDataReadFile2.mjs +12 -20
  116. package/lib/internal/_httpFormDataReadFile2.mjs.map +1 -1
  117. package/lib/internal/_httpFormDataReadNumber.mjs +2 -7
  118. package/lib/internal/_httpFormDataReadNumber.mjs.map +1 -1
  119. package/lib/internal/_httpFormDataReadNumber2.mjs +16 -24
  120. package/lib/internal/_httpFormDataReadNumber2.mjs.map +1 -1
  121. package/lib/internal/_httpFormDataReadString.mjs +2 -7
  122. package/lib/internal/_httpFormDataReadString.mjs.map +1 -1
  123. package/lib/internal/_httpFormDataReadString2.mjs +12 -20
  124. package/lib/internal/_httpFormDataReadString2.mjs.map +1 -1
  125. package/lib/internal/_httpHeaderReadBigint.mjs +2 -7
  126. package/lib/internal/_httpHeaderReadBigint.mjs.map +1 -1
  127. package/lib/internal/_httpHeaderReadBigint2.mjs +14 -22
  128. package/lib/internal/_httpHeaderReadBigint2.mjs.map +1 -1
  129. package/lib/internal/_httpHeaderReadBoolean.mjs +2 -7
  130. package/lib/internal/_httpHeaderReadBoolean.mjs.map +1 -1
  131. package/lib/internal/_httpHeaderReadBoolean2.mjs +12 -20
  132. package/lib/internal/_httpHeaderReadBoolean2.mjs.map +1 -1
  133. package/lib/internal/_httpHeaderReadNumber.mjs +2 -7
  134. package/lib/internal/_httpHeaderReadNumber.mjs.map +1 -1
  135. package/lib/internal/_httpHeaderReadNumber2.mjs +10 -18
  136. package/lib/internal/_httpHeaderReadNumber2.mjs.map +1 -1
  137. package/lib/internal/_httpParameterReadBigint.mjs +2 -7
  138. package/lib/internal/_httpParameterReadBigint.mjs.map +1 -1
  139. package/lib/internal/_httpParameterReadBigint2.mjs +14 -22
  140. package/lib/internal/_httpParameterReadBigint2.mjs.map +1 -1
  141. package/lib/internal/_httpParameterReadBoolean.mjs +2 -7
  142. package/lib/internal/_httpParameterReadBoolean.mjs.map +1 -1
  143. package/lib/internal/_httpParameterReadBoolean2.mjs +12 -20
  144. package/lib/internal/_httpParameterReadBoolean2.mjs.map +1 -1
  145. package/lib/internal/_httpParameterReadNumber.mjs +2 -7
  146. package/lib/internal/_httpParameterReadNumber.mjs.map +1 -1
  147. package/lib/internal/_httpParameterReadNumber2.mjs +10 -18
  148. package/lib/internal/_httpParameterReadNumber2.mjs.map +1 -1
  149. package/lib/internal/_httpParameterReadString.mjs +2 -7
  150. package/lib/internal/_httpParameterReadString.mjs.map +1 -1
  151. package/lib/internal/_httpParameterReadString2.mjs +6 -14
  152. package/lib/internal/_httpParameterReadString2.mjs.map +1 -1
  153. package/lib/internal/_httpQueryParseURLSearchParams.mjs +2 -7
  154. package/lib/internal/_httpQueryParseURLSearchParams.mjs.map +1 -1
  155. package/lib/internal/_httpQueryParseURLSearchParams2.mjs +13 -21
  156. package/lib/internal/_httpQueryParseURLSearchParams2.mjs.map +1 -1
  157. package/lib/internal/_httpQueryReadArray.mjs +2 -7
  158. package/lib/internal/_httpQueryReadArray.mjs.map +1 -1
  159. package/lib/internal/_httpQueryReadArray2.mjs +6 -14
  160. package/lib/internal/_httpQueryReadArray2.mjs.map +1 -1
  161. package/lib/internal/_httpQueryReadBigint.mjs +2 -7
  162. package/lib/internal/_httpQueryReadBigint.mjs.map +1 -1
  163. package/lib/internal/_httpQueryReadBigint2.mjs +14 -22
  164. package/lib/internal/_httpQueryReadBigint2.mjs.map +1 -1
  165. package/lib/internal/_httpQueryReadBoolean.mjs +2 -7
  166. package/lib/internal/_httpQueryReadBoolean.mjs.map +1 -1
  167. package/lib/internal/_httpQueryReadBoolean2.mjs +16 -24
  168. package/lib/internal/_httpQueryReadBoolean2.mjs.map +1 -1
  169. package/lib/internal/_httpQueryReadNumber.mjs +2 -7
  170. package/lib/internal/_httpQueryReadNumber.mjs.map +1 -1
  171. package/lib/internal/_httpQueryReadNumber2.mjs +10 -18
  172. package/lib/internal/_httpQueryReadNumber2.mjs.map +1 -1
  173. package/lib/internal/_httpQueryReadString.mjs +2 -7
  174. package/lib/internal/_httpQueryReadString.mjs.map +1 -1
  175. package/lib/internal/_httpQueryReadString2.mjs +6 -14
  176. package/lib/internal/_httpQueryReadString2.mjs.map +1 -1
  177. package/lib/internal/_isBetween.mjs +2 -7
  178. package/lib/internal/_isBetween.mjs.map +1 -1
  179. package/lib/internal/_isBetween2.mjs +6 -14
  180. package/lib/internal/_isBetween2.mjs.map +1 -1
  181. package/lib/internal/_isBigintString.mjs +2 -7
  182. package/lib/internal/_isBigintString.mjs.map +1 -1
  183. package/lib/internal/_isBigintString2.mjs +14 -22
  184. package/lib/internal/_isBigintString2.mjs.map +1 -1
  185. package/lib/internal/_isFormatByte.mjs +2 -7
  186. package/lib/internal/_isFormatByte.mjs.map +1 -1
  187. package/lib/internal/_isFormatByte2.mjs +10 -18
  188. package/lib/internal/_isFormatByte2.mjs.map +1 -1
  189. package/lib/internal/_isFormatDate.mjs +2 -7
  190. package/lib/internal/_isFormatDate.mjs.map +1 -1
  191. package/lib/internal/_isFormatDate2.mjs +7 -15
  192. package/lib/internal/_isFormatDate2.mjs.map +1 -1
  193. package/lib/internal/_isFormatDateTime.mjs +2 -7
  194. package/lib/internal/_isFormatDateTime.mjs.map +1 -1
  195. package/lib/internal/_isFormatDateTime2.mjs +7 -15
  196. package/lib/internal/_isFormatDateTime2.mjs.map +1 -1
  197. package/lib/internal/_isFormatDuration.mjs +2 -7
  198. package/lib/internal/_isFormatDuration.mjs.map +1 -1
  199. package/lib/internal/_isFormatDuration2.mjs +7 -15
  200. package/lib/internal/_isFormatDuration2.mjs.map +1 -1
  201. package/lib/internal/_isFormatEmail.mjs +2 -7
  202. package/lib/internal/_isFormatEmail.mjs.map +1 -1
  203. package/lib/internal/_isFormatEmail2.mjs +7 -15
  204. package/lib/internal/_isFormatEmail2.mjs.map +1 -1
  205. package/lib/internal/_isFormatHostname.mjs +2 -7
  206. package/lib/internal/_isFormatHostname.mjs.map +1 -1
  207. package/lib/internal/_isFormatHostname2.mjs +7 -15
  208. package/lib/internal/_isFormatHostname2.mjs.map +1 -1
  209. package/lib/internal/_isFormatIdnEmail.mjs +2 -7
  210. package/lib/internal/_isFormatIdnEmail.mjs.map +1 -1
  211. package/lib/internal/_isFormatIdnEmail2.mjs +7 -15
  212. package/lib/internal/_isFormatIdnEmail2.mjs.map +1 -1
  213. package/lib/internal/_isFormatIdnHostname.mjs +2 -7
  214. package/lib/internal/_isFormatIdnHostname.mjs.map +1 -1
  215. package/lib/internal/_isFormatIdnHostname2.mjs +7 -15
  216. package/lib/internal/_isFormatIdnHostname2.mjs.map +1 -1
  217. package/lib/internal/_isFormatIpv4.mjs +2 -7
  218. package/lib/internal/_isFormatIpv4.mjs.map +1 -1
  219. package/lib/internal/_isFormatIpv42.mjs +7 -15
  220. package/lib/internal/_isFormatIpv42.mjs.map +1 -1
  221. package/lib/internal/_isFormatIpv6.mjs +2 -7
  222. package/lib/internal/_isFormatIpv6.mjs.map +1 -1
  223. package/lib/internal/_isFormatIpv62.mjs +7 -15
  224. package/lib/internal/_isFormatIpv62.mjs.map +1 -1
  225. package/lib/internal/_isFormatIri.mjs +2 -7
  226. package/lib/internal/_isFormatIri.mjs.map +1 -1
  227. package/lib/internal/_isFormatIri2.mjs +7 -15
  228. package/lib/internal/_isFormatIri2.mjs.map +1 -1
  229. package/lib/internal/_isFormatIriReference.mjs +2 -7
  230. package/lib/internal/_isFormatIriReference.mjs.map +1 -1
  231. package/lib/internal/_isFormatIriReference2.mjs +7 -15
  232. package/lib/internal/_isFormatIriReference2.mjs.map +1 -1
  233. package/lib/internal/_isFormatJsonPointer.mjs +2 -7
  234. package/lib/internal/_isFormatJsonPointer.mjs.map +1 -1
  235. package/lib/internal/_isFormatJsonPointer2.mjs +7 -15
  236. package/lib/internal/_isFormatJsonPointer2.mjs.map +1 -1
  237. package/lib/internal/_isFormatPassword.mjs +2 -7
  238. package/lib/internal/_isFormatPassword.mjs.map +1 -1
  239. package/lib/internal/_isFormatPassword2.mjs +6 -14
  240. package/lib/internal/_isFormatPassword2.mjs.map +1 -1
  241. package/lib/internal/_isFormatRegex.mjs +2 -7
  242. package/lib/internal/_isFormatRegex.mjs.map +1 -1
  243. package/lib/internal/_isFormatRegex2.mjs +14 -22
  244. package/lib/internal/_isFormatRegex2.mjs.map +1 -1
  245. package/lib/internal/_isFormatRelativeJsonPointer.mjs +2 -7
  246. package/lib/internal/_isFormatRelativeJsonPointer.mjs.map +1 -1
  247. package/lib/internal/_isFormatRelativeJsonPointer2.mjs +7 -15
  248. package/lib/internal/_isFormatRelativeJsonPointer2.mjs.map +1 -1
  249. package/lib/internal/_isFormatTime.mjs +2 -7
  250. package/lib/internal/_isFormatTime.mjs.map +1 -1
  251. package/lib/internal/_isFormatTime2.mjs +7 -15
  252. package/lib/internal/_isFormatTime2.mjs.map +1 -1
  253. package/lib/internal/_isFormatUri.mjs +2 -7
  254. package/lib/internal/_isFormatUri.mjs.map +1 -1
  255. package/lib/internal/_isFormatUri2.mjs +8 -16
  256. package/lib/internal/_isFormatUri2.mjs.map +1 -1
  257. package/lib/internal/_isFormatUriReference.mjs +2 -7
  258. package/lib/internal/_isFormatUriReference.mjs.map +1 -1
  259. package/lib/internal/_isFormatUriReference2.mjs +7 -15
  260. package/lib/internal/_isFormatUriReference2.mjs.map +1 -1
  261. package/lib/internal/_isFormatUriTemplate.mjs +2 -7
  262. package/lib/internal/_isFormatUriTemplate.mjs.map +1 -1
  263. package/lib/internal/_isFormatUriTemplate2.mjs +7 -15
  264. package/lib/internal/_isFormatUriTemplate2.mjs.map +1 -1
  265. package/lib/internal/_isFormatUrl.mjs +2 -7
  266. package/lib/internal/_isFormatUrl.mjs.map +1 -1
  267. package/lib/internal/_isFormatUrl2.mjs +7 -15
  268. package/lib/internal/_isFormatUrl2.mjs.map +1 -1
  269. package/lib/internal/_isFormatUuid.mjs +2 -7
  270. package/lib/internal/_isFormatUuid.mjs.map +1 -1
  271. package/lib/internal/_isFormatUuid2.mjs +7 -15
  272. package/lib/internal/_isFormatUuid2.mjs.map +1 -1
  273. package/lib/internal/_isTypeFloat.mjs +2 -7
  274. package/lib/internal/_isTypeFloat.mjs.map +1 -1
  275. package/lib/internal/_isTypeFloat2.mjs +8 -16
  276. package/lib/internal/_isTypeFloat2.mjs.map +1 -1
  277. package/lib/internal/_isTypeInt32.mjs +2 -7
  278. package/lib/internal/_isTypeInt32.mjs.map +1 -1
  279. package/lib/internal/_isTypeInt322.mjs +8 -16
  280. package/lib/internal/_isTypeInt322.mjs.map +1 -1
  281. package/lib/internal/_isTypeInt64.mjs +2 -7
  282. package/lib/internal/_isTypeInt64.mjs.map +1 -1
  283. package/lib/internal/_isTypeInt642.mjs +8 -16
  284. package/lib/internal/_isTypeInt642.mjs.map +1 -1
  285. package/lib/internal/_isTypeUint32.mjs +2 -7
  286. package/lib/internal/_isTypeUint32.mjs.map +1 -1
  287. package/lib/internal/_isTypeUint322.mjs +8 -16
  288. package/lib/internal/_isTypeUint322.mjs.map +1 -1
  289. package/lib/internal/_isTypeUint64.mjs +2 -7
  290. package/lib/internal/_isTypeUint64.mjs.map +1 -1
  291. package/lib/internal/_isTypeUint642.mjs +8 -16
  292. package/lib/internal/_isTypeUint642.mjs.map +1 -1
  293. package/lib/internal/_isUniqueItems.mjs +2 -7
  294. package/lib/internal/_isUniqueItems.mjs.map +1 -1
  295. package/lib/internal/_isUniqueItems2.mjs +140 -148
  296. package/lib/internal/_isUniqueItems2.mjs.map +1 -1
  297. package/lib/internal/_jsonStringifyNumber.mjs +2 -7
  298. package/lib/internal/_jsonStringifyNumber.mjs.map +1 -1
  299. package/lib/internal/_jsonStringifyNumber2.mjs +6 -14
  300. package/lib/internal/_jsonStringifyNumber2.mjs.map +1 -1
  301. package/lib/internal/_jsonStringifyRest.mjs +2 -7
  302. package/lib/internal/_jsonStringifyRest.mjs.map +1 -1
  303. package/lib/internal/_jsonStringifyRest2.mjs +8 -16
  304. package/lib/internal/_jsonStringifyRest2.mjs.map +1 -1
  305. package/lib/internal/_jsonStringifyString.mjs +2 -7
  306. package/lib/internal/_jsonStringifyString.mjs.map +1 -1
  307. package/lib/internal/_jsonStringifyString2.mjs +42 -50
  308. package/lib/internal/_jsonStringifyString2.mjs.map +1 -1
  309. package/lib/internal/_jsonStringifyTail.mjs +2 -7
  310. package/lib/internal/_jsonStringifyTail.mjs.map +1 -1
  311. package/lib/internal/_jsonStringifyTail2.mjs +6 -14
  312. package/lib/internal/_jsonStringifyTail2.mjs.map +1 -1
  313. package/lib/internal/_llmApplicationFinalize.mjs +2 -7
  314. package/lib/internal/_llmApplicationFinalize.mjs.map +1 -1
  315. package/lib/internal/_llmApplicationFinalize2.mjs +7 -15
  316. package/lib/internal/_llmApplicationFinalize2.mjs.map +1 -1
  317. package/lib/internal/_miscCloneAny.mjs +2 -7
  318. package/lib/internal/_miscCloneAny.mjs.map +1 -1
  319. package/lib/internal/_miscCloneAny2.mjs +64 -72
  320. package/lib/internal/_miscCloneAny2.mjs.map +1 -1
  321. package/lib/internal/_notationAny.mjs +2 -7
  322. package/lib/internal/_notationAny.mjs.map +1 -1
  323. package/lib/internal/_notationAny2.mjs +39 -47
  324. package/lib/internal/_notationAny2.mjs.map +1 -1
  325. package/lib/internal/_notationCamel.mjs +2 -7
  326. package/lib/internal/_notationCamel.mjs.map +1 -1
  327. package/lib/internal/_notationCamel2.mjs +17 -23
  328. package/lib/internal/_notationCamel2.mjs.map +1 -1
  329. package/lib/internal/_notationPascal.mjs +2 -7
  330. package/lib/internal/_notationPascal.mjs.map +1 -1
  331. package/lib/internal/_notationPascal2.mjs +13 -19
  332. package/lib/internal/_notationPascal2.mjs.map +1 -1
  333. package/lib/internal/_notationSnake.mjs +2 -7
  334. package/lib/internal/_notationSnake.mjs.map +1 -1
  335. package/lib/internal/_notationSnake2.mjs +51 -59
  336. package/lib/internal/_notationSnake2.mjs.map +1 -1
  337. package/lib/internal/_parseLlmArguments.mjs +2 -7
  338. package/lib/internal/_parseLlmArguments.mjs.map +1 -1
  339. package/lib/internal/_parseLlmArguments2.mjs +7 -15
  340. package/lib/internal/_parseLlmArguments2.mjs.map +1 -1
  341. package/lib/internal/_randomArray.mjs +2 -7
  342. package/lib/internal/_randomArray.mjs.map +1 -1
  343. package/lib/internal/_randomArray2.mjs +22 -29
  344. package/lib/internal/_randomArray2.mjs.map +1 -1
  345. package/lib/internal/_randomBigint.mjs +2 -7
  346. package/lib/internal/_randomBigint.mjs.map +1 -1
  347. package/lib/internal/_randomBigint2.mjs +9 -16
  348. package/lib/internal/_randomBigint2.mjs.map +1 -1
  349. package/lib/internal/_randomBoolean.mjs +2 -7
  350. package/lib/internal/_randomBoolean.mjs.map +1 -1
  351. package/lib/internal/_randomBoolean2.mjs +6 -14
  352. package/lib/internal/_randomBoolean2.mjs.map +1 -1
  353. package/lib/internal/_randomFormatByte.mjs +2 -7
  354. package/lib/internal/_randomFormatByte.mjs.map +1 -1
  355. package/lib/internal/_randomFormatByte2.mjs +7 -15
  356. package/lib/internal/_randomFormatByte2.mjs.map +1 -1
  357. package/lib/internal/_randomFormatDate.mjs +2 -7
  358. package/lib/internal/_randomFormatDate.mjs.map +1 -1
  359. package/lib/internal/_randomFormatDate2.mjs +17 -24
  360. package/lib/internal/_randomFormatDate2.mjs.map +1 -1
  361. package/lib/internal/_randomFormatDatetime.mjs +2 -7
  362. package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
  363. package/lib/internal/_randomFormatDatetime2.mjs +15 -22
  364. package/lib/internal/_randomFormatDatetime2.mjs.map +1 -1
  365. package/lib/internal/_randomFormatDuration.mjs +2 -7
  366. package/lib/internal/_randomFormatDuration.mjs.map +1 -1
  367. package/lib/internal/_randomFormatDuration2.mjs +32 -39
  368. package/lib/internal/_randomFormatDuration2.mjs.map +1 -1
  369. package/lib/internal/_randomFormatEmail.mjs +2 -7
  370. package/lib/internal/_randomFormatEmail.mjs.map +1 -1
  371. package/lib/internal/_randomFormatEmail2.mjs +14 -21
  372. package/lib/internal/_randomFormatEmail2.mjs.map +1 -1
  373. package/lib/internal/_randomFormatHostname.mjs +2 -7
  374. package/lib/internal/_randomFormatHostname.mjs.map +1 -1
  375. package/lib/internal/_randomFormatHostname2.mjs +10 -17
  376. package/lib/internal/_randomFormatHostname2.mjs.map +1 -1
  377. package/lib/internal/_randomFormatIdnEmail.mjs +2 -7
  378. package/lib/internal/_randomFormatIdnEmail.mjs.map +1 -1
  379. package/lib/internal/_randomFormatIdnEmail2.mjs +9 -16
  380. package/lib/internal/_randomFormatIdnEmail2.mjs.map +1 -1
  381. package/lib/internal/_randomFormatIdnHostname.mjs +2 -7
  382. package/lib/internal/_randomFormatIdnHostname.mjs.map +1 -1
  383. package/lib/internal/_randomFormatIdnHostname2.mjs +9 -16
  384. package/lib/internal/_randomFormatIdnHostname2.mjs.map +1 -1
  385. package/lib/internal/_randomFormatIpv4.mjs +2 -7
  386. package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
  387. package/lib/internal/_randomFormatIpv42.mjs +14 -21
  388. package/lib/internal/_randomFormatIpv42.mjs.map +1 -1
  389. package/lib/internal/_randomFormatIpv6.mjs +2 -7
  390. package/lib/internal/_randomFormatIpv6.mjs.map +1 -1
  391. package/lib/internal/_randomFormatIpv62.mjs +14 -21
  392. package/lib/internal/_randomFormatIpv62.mjs.map +1 -1
  393. package/lib/internal/_randomFormatIri.mjs +2 -7
  394. package/lib/internal/_randomFormatIri.mjs.map +1 -1
  395. package/lib/internal/_randomFormatIri2.mjs +9 -16
  396. package/lib/internal/_randomFormatIri2.mjs.map +1 -1
  397. package/lib/internal/_randomFormatIriReference.mjs +2 -7
  398. package/lib/internal/_randomFormatIriReference.mjs.map +1 -1
  399. package/lib/internal/_randomFormatIriReference2.mjs +9 -16
  400. package/lib/internal/_randomFormatIriReference2.mjs.map +1 -1
  401. package/lib/internal/_randomFormatJsonPointer.mjs +2 -7
  402. package/lib/internal/_randomFormatJsonPointer.mjs.map +1 -1
  403. package/lib/internal/_randomFormatJsonPointer2.mjs +10 -17
  404. package/lib/internal/_randomFormatJsonPointer2.mjs.map +1 -1
  405. package/lib/internal/_randomFormatPassword.mjs +2 -7
  406. package/lib/internal/_randomFormatPassword.mjs.map +1 -1
  407. package/lib/internal/_randomFormatPassword2.mjs +13 -20
  408. package/lib/internal/_randomFormatPassword2.mjs.map +1 -1
  409. package/lib/internal/_randomFormatRegex.mjs +2 -7
  410. package/lib/internal/_randomFormatRegex.mjs.map +1 -1
  411. package/lib/internal/_randomFormatRegex2.mjs +7 -15
  412. package/lib/internal/_randomFormatRegex2.mjs.map +1 -1
  413. package/lib/internal/_randomFormatRelativeJsonPointer.mjs +2 -7
  414. package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
  415. package/lib/internal/_randomFormatRelativeJsonPointer2.mjs +13 -20
  416. package/lib/internal/_randomFormatRelativeJsonPointer2.mjs.map +1 -1
  417. package/lib/internal/_randomFormatTime.mjs +2 -7
  418. package/lib/internal/_randomFormatTime.mjs.map +1 -1
  419. package/lib/internal/_randomFormatTime2.mjs +16 -23
  420. package/lib/internal/_randomFormatTime2.mjs.map +1 -1
  421. package/lib/internal/_randomFormatUri.mjs +2 -7
  422. package/lib/internal/_randomFormatUri.mjs.map +1 -1
  423. package/lib/internal/_randomFormatUri2.mjs +9 -16
  424. package/lib/internal/_randomFormatUri2.mjs.map +1 -1
  425. package/lib/internal/_randomFormatUriReference.mjs +2 -7
  426. package/lib/internal/_randomFormatUriReference.mjs.map +1 -1
  427. package/lib/internal/_randomFormatUriReference2.mjs +9 -16
  428. package/lib/internal/_randomFormatUriReference2.mjs.map +1 -1
  429. package/lib/internal/_randomFormatUriTemplate.mjs +2 -7
  430. package/lib/internal/_randomFormatUriTemplate.mjs.map +1 -1
  431. package/lib/internal/_randomFormatUriTemplate2.mjs +9 -16
  432. package/lib/internal/_randomFormatUriTemplate2.mjs.map +1 -1
  433. package/lib/internal/_randomFormatUrl.mjs +2 -7
  434. package/lib/internal/_randomFormatUrl.mjs.map +1 -1
  435. package/lib/internal/_randomFormatUrl2.mjs +14 -21
  436. package/lib/internal/_randomFormatUrl2.mjs.map +1 -1
  437. package/lib/internal/_randomFormatUuid.mjs +2 -7
  438. package/lib/internal/_randomFormatUuid.mjs.map +1 -1
  439. package/lib/internal/_randomFormatUuid2.mjs +10 -18
  440. package/lib/internal/_randomFormatUuid2.mjs.map +1 -1
  441. package/lib/internal/_randomInteger.js.map +1 -1
  442. package/lib/internal/_randomInteger.mjs +2 -7
  443. package/lib/internal/_randomInteger.mjs.map +1 -1
  444. package/lib/internal/_randomInteger2.mjs +44 -52
  445. package/lib/internal/_randomInteger2.mjs.map +1 -1
  446. package/lib/internal/_randomNumber.mjs +2 -7
  447. package/lib/internal/_randomNumber.mjs.map +1 -1
  448. package/lib/internal/_randomNumber2.mjs +63 -71
  449. package/lib/internal/_randomNumber2.mjs.map +1 -1
  450. package/lib/internal/_randomPattern.mjs +2 -7
  451. package/lib/internal/_randomPattern.mjs.map +1 -1
  452. package/lib/internal/_randomPattern2.mjs +18 -26
  453. package/lib/internal/_randomPattern2.mjs.map +1 -1
  454. package/lib/internal/_randomPick.mjs +2 -7
  455. package/lib/internal/_randomPick.mjs.map +1 -1
  456. package/lib/internal/_randomPick2.mjs +14 -21
  457. package/lib/internal/_randomPick2.mjs.map +1 -1
  458. package/lib/internal/_randomString.mjs +2 -7
  459. package/lib/internal/_randomString.mjs.map +1 -1
  460. package/lib/internal/_randomString2.mjs +26 -33
  461. package/lib/internal/_randomString2.mjs.map +1 -1
  462. package/lib/internal/_throwTypeGuardError.mjs +2 -7
  463. package/lib/internal/_throwTypeGuardError.mjs.map +1 -1
  464. package/lib/internal/_throwTypeGuardError2.mjs +11 -18
  465. package/lib/internal/_throwTypeGuardError2.mjs.map +1 -1
  466. package/lib/internal/_validateReport.js.map +1 -1
  467. package/lib/internal/_validateReport.mjs +2 -7
  468. package/lib/internal/_validateReport.mjs.map +1 -1
  469. package/lib/internal/_validateReport2.mjs +26 -34
  470. package/lib/internal/_validateReport2.mjs.map +1 -1
  471. package/lib/internal/private/__notationCapitalize.mjs +2 -7
  472. package/lib/internal/private/__notationCapitalize.mjs.map +1 -1
  473. package/lib/internal/private/__notationCapitalize2.mjs +6 -14
  474. package/lib/internal/private/__notationCapitalize2.mjs.map +1 -1
  475. package/lib/internal/private/__notationUnsnake.mjs +2 -7
  476. package/lib/internal/private/__notationUnsnake.mjs.map +1 -1
  477. package/lib/internal/private/__notationUnsnake2.mjs +26 -34
  478. package/lib/internal/private/__notationUnsnake2.mjs.map +1 -1
  479. package/lib/json.mjs +2 -7
  480. package/lib/json.mjs.map +1 -1
  481. package/lib/json2.mjs +89 -96
  482. package/lib/json2.mjs.map +1 -1
  483. package/lib/llm.d.ts +1 -1
  484. package/lib/llm.mjs +2 -7
  485. package/lib/llm.mjs.map +1 -1
  486. package/lib/llm2.mjs +49 -56
  487. package/lib/llm2.mjs.map +1 -1
  488. package/lib/misc.mjs +2 -7
  489. package/lib/misc.mjs.map +1 -1
  490. package/lib/misc2.mjs +89 -96
  491. package/lib/misc2.mjs.map +1 -1
  492. package/lib/module.mjs +1 -7
  493. package/lib/module.mjs.map +1 -1
  494. package/lib/module2.mjs +168 -161
  495. package/lib/module2.mjs.map +1 -1
  496. package/lib/notations.mjs +2 -7
  497. package/lib/notations.mjs.map +1 -1
  498. package/lib/notations2.mjs +124 -131
  499. package/lib/notations2.mjs.map +1 -1
  500. package/lib/protobuf.mjs +2 -7
  501. package/lib/protobuf.mjs.map +1 -1
  502. package/lib/protobuf2.mjs +89 -96
  503. package/lib/protobuf2.mjs.map +1 -1
  504. package/lib/re-exports.mjs +1 -7
  505. package/lib/re-exports.mjs.map +1 -1
  506. package/lib/re-exports2.mjs +12 -16
  507. package/lib/re-exports2.mjs.map +1 -1
  508. package/lib/reflect.mjs +2 -7
  509. package/lib/reflect.mjs.map +1 -1
  510. package/lib/reflect2.mjs +19 -26
  511. package/lib/reflect2.mjs.map +1 -1
  512. package/lib/transform.d.ts +6 -3
  513. package/lib/transform.js +5 -10
  514. package/lib/transform.js.map +1 -1
  515. package/lib/transform.mjs +1 -7
  516. package/lib/transform.mjs.map +1 -1
  517. package/lib/transform2.mjs +59 -72
  518. package/lib/transform2.mjs.map +1 -1
  519. package/lib/transformers/NoTransformConfigurationError.mjs +2 -7
  520. package/lib/transformers/NoTransformConfigurationError.mjs.map +1 -1
  521. package/lib/transformers/NoTransformConfigurationError2.mjs +17 -25
  522. package/lib/transformers/NoTransformConfigurationError2.mjs.map +1 -1
  523. package/native/adapter/adapter.go +168 -0
  524. package/native/adapter/cleanup.go +218 -0
  525. package/native/adapter/imports.go +91 -0
  526. package/native/adapter/visit.go +168 -0
  527. package/native/cmd/ttsc-typia/build.go +252 -0
  528. package/native/cmd/ttsc-typia/main.go +95 -0
  529. package/native/cmd/ttsc-typia/transform.go +290 -0
  530. package/native/core/context/IProgrammerProps.go +14 -0
  531. package/native/core/context/ITransformOptions.go +9 -0
  532. package/native/core/context/ITypiaContext.go +23 -0
  533. package/native/core/context/TransformerError.go +117 -0
  534. package/native/core/context/index.go +1 -0
  535. package/native/core/factories/CommentFactory.go +27 -0
  536. package/native/core/factories/ExpressionFactory.go +334 -0
  537. package/native/core/factories/FormatCheatSheet.go +30 -0
  538. package/native/core/factories/IdentifierFactory.go +163 -0
  539. package/native/core/factories/JsonMetadataFactory.go +162 -0
  540. package/native/core/factories/LiteralFactory.go +221 -0
  541. package/native/core/factories/MetadataCommentTagFactory.go +433 -0
  542. package/native/core/factories/MetadataFactory.go +529 -0
  543. package/native/core/factories/MetadataTypeTagFactory.go +560 -0
  544. package/native/core/factories/MetadataTypeTagSchemaFactory.go +117 -0
  545. package/native/core/factories/NumericRangeFactory.go +120 -0
  546. package/native/core/factories/ProtobufFactory.go +1068 -0
  547. package/native/core/factories/StatementFactory.go +105 -0
  548. package/native/core/factories/TemplateFactory.go +77 -0
  549. package/native/core/factories/TypeFactory.go +163 -0
  550. package/native/core/factories/ValueFactory.go +36 -0
  551. package/native/core/factories/index.go +1 -0
  552. package/native/core/factories/internal/metadata/IMetadataIteratorProps.go +56 -0
  553. package/native/core/factories/internal/metadata/MetadataHelper.go +225 -0
  554. package/native/core/factories/internal/metadata/emend_metadata_atomics.go +80 -0
  555. package/native/core/factories/internal/metadata/emplace_metadata_alias.go +34 -0
  556. package/native/core/factories/internal/metadata/emplace_metadata_array_type.go +44 -0
  557. package/native/core/factories/internal/metadata/emplace_metadata_object.go +231 -0
  558. package/native/core/factories/internal/metadata/emplace_metadata_tuple.go +58 -0
  559. package/native/core/factories/internal/metadata/explore_metadata.go +39 -0
  560. package/native/core/factories/internal/metadata/iterate_metadata.go +55 -0
  561. package/native/core/factories/internal/metadata/iterate_metadata_alias.go +36 -0
  562. package/native/core/factories/internal/metadata/iterate_metadata_array.go +77 -0
  563. package/native/core/factories/internal/metadata/iterate_metadata_atomic.go +63 -0
  564. package/native/core/factories/internal/metadata/iterate_metadata_coalesce.go +30 -0
  565. package/native/core/factories/internal/metadata/iterate_metadata_collection.go +247 -0
  566. package/native/core/factories/internal/metadata/iterate_metadata_comment_tags.go +20 -0
  567. package/native/core/factories/internal/metadata/iterate_metadata_constant.go +86 -0
  568. package/native/core/factories/internal/metadata/iterate_metadata_escape.go +56 -0
  569. package/native/core/factories/internal/metadata/iterate_metadata_function.go +93 -0
  570. package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +340 -0
  571. package/native/core/factories/internal/metadata/iterate_metadata_map.go +60 -0
  572. package/native/core/factories/internal/metadata/iterate_metadata_native.go +117 -0
  573. package/native/core/factories/internal/metadata/iterate_metadata_object.go +35 -0
  574. package/native/core/factories/internal/metadata/iterate_metadata_set.go +46 -0
  575. package/native/core/factories/internal/metadata/iterate_metadata_sort.go +157 -0
  576. package/native/core/factories/internal/metadata/iterate_metadata_template.go +41 -0
  577. package/native/core/factories/internal/metadata/iterate_metadata_tuple.go +24 -0
  578. package/native/core/factories/internal/metadata/iterate_metadata_union.go +22 -0
  579. package/native/core/index.go +1 -0
  580. package/native/core/programmers/AssertProgrammer.go +483 -0
  581. package/native/core/programmers/ImportProgrammer.go +252 -0
  582. package/native/core/programmers/IsProgrammer.go +370 -0
  583. package/native/core/programmers/RandomProgrammer.go +1271 -0
  584. package/native/core/programmers/ValidateProgrammer.go +457 -0
  585. package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +169 -0
  586. package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +130 -0
  587. package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +126 -0
  588. package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +100 -0
  589. package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +214 -0
  590. package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +125 -0
  591. package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +168 -0
  592. package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +248 -0
  593. package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +142 -0
  594. package/native/core/programmers/functional/index.go +1 -0
  595. package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +53 -0
  596. package/native/core/programmers/helpers/AtomicPredicator.go +62 -0
  597. package/native/core/programmers/helpers/CloneJoiner.go +261 -0
  598. package/native/core/programmers/helpers/FunctionProgrammer.go +116 -0
  599. package/native/core/programmers/helpers/HttpMetadataUtil.go +30 -0
  600. package/native/core/programmers/helpers/ICheckEntry.go +14 -0
  601. package/native/core/programmers/helpers/IExpressionEntry.go +13 -0
  602. package/native/core/programmers/helpers/NotationJoiner.go +194 -0
  603. package/native/core/programmers/helpers/OptionPredicator.go +23 -0
  604. package/native/core/programmers/helpers/ProtobufUtil.go +297 -0
  605. package/native/core/programmers/helpers/ProtobufWire.go +14 -0
  606. package/native/core/programmers/helpers/PruneJoiner.go +274 -0
  607. package/native/core/programmers/helpers/RandomJoiner.go +193 -0
  608. package/native/core/programmers/helpers/StringifyJoinder.go +394 -0
  609. package/native/core/programmers/helpers/StringifyPredicator.go +25 -0
  610. package/native/core/programmers/helpers/UnionExplorer.go +939 -0
  611. package/native/core/programmers/helpers/UnionPredicator.go +95 -0
  612. package/native/core/programmers/helpers/disable_function_programmer_declare.go +10 -0
  613. package/native/core/programmers/http/HttpAssertFormDataProgrammer.go +115 -0
  614. package/native/core/programmers/http/HttpAssertHeadersProgrammer.go +59 -0
  615. package/native/core/programmers/http/HttpAssertQueryProgrammer.go +71 -0
  616. package/native/core/programmers/http/HttpFormDataProgrammer.go +414 -0
  617. package/native/core/programmers/http/HttpHeadersProgrammer.go +418 -0
  618. package/native/core/programmers/http/HttpIsFormDataProgrammer.go +140 -0
  619. package/native/core/programmers/http/HttpIsHeadersProgrammer.go +53 -0
  620. package/native/core/programmers/http/HttpIsQueryProgrammer.go +65 -0
  621. package/native/core/programmers/http/HttpParameterProgrammer.go +193 -0
  622. package/native/core/programmers/http/HttpQueryProgrammer.go +475 -0
  623. package/native/core/programmers/http/HttpValidateFormDataProgrammer.go +109 -0
  624. package/native/core/programmers/http/HttpValidateHeadersProgrammer.go +56 -0
  625. package/native/core/programmers/http/HttpValidateQueryProgrammer.go +68 -0
  626. package/native/core/programmers/http/index.go +1 -0
  627. package/native/core/programmers/index.go +1 -0
  628. package/native/core/programmers/internal/CheckerProgrammer.go +1695 -0
  629. package/native/core/programmers/internal/FeatureProgrammer.go +749 -0
  630. package/native/core/programmers/iterate/check_array_length.go +65 -0
  631. package/native/core/programmers/iterate/check_bigint.go +73 -0
  632. package/native/core/programmers/iterate/check_dynamic_key.go +257 -0
  633. package/native/core/programmers/iterate/check_dynamic_properties.go +283 -0
  634. package/native/core/programmers/iterate/check_everything.go +30 -0
  635. package/native/core/programmers/iterate/check_native.go +41 -0
  636. package/native/core/programmers/iterate/check_number.go +169 -0
  637. package/native/core/programmers/iterate/check_object.go +89 -0
  638. package/native/core/programmers/iterate/check_string.go +73 -0
  639. package/native/core/programmers/iterate/check_template.go +73 -0
  640. package/native/core/programmers/iterate/check_union_array_like.go +416 -0
  641. package/native/core/programmers/iterate/decode_union_object.go +150 -0
  642. package/native/core/programmers/iterate/feature_object_entries.go +172 -0
  643. package/native/core/programmers/iterate/json_schema_alias.go +61 -0
  644. package/native/core/programmers/iterate/json_schema_array.go +65 -0
  645. package/native/core/programmers/iterate/json_schema_bigint.go +17 -0
  646. package/native/core/programmers/iterate/json_schema_boolean.go +17 -0
  647. package/native/core/programmers/iterate/json_schema_constant.go +53 -0
  648. package/native/core/programmers/iterate/json_schema_description.go +21 -0
  649. package/native/core/programmers/iterate/json_schema_discriminator.go +57 -0
  650. package/native/core/programmers/iterate/json_schema_escaped.go +68 -0
  651. package/native/core/programmers/iterate/json_schema_jsDocTags.go +48 -0
  652. package/native/core/programmers/iterate/json_schema_native.go +59 -0
  653. package/native/core/programmers/iterate/json_schema_number.go +17 -0
  654. package/native/core/programmers/iterate/json_schema_object.go +179 -0
  655. package/native/core/programmers/iterate/json_schema_plugin.go +47 -0
  656. package/native/core/programmers/iterate/json_schema_station.go +251 -0
  657. package/native/core/programmers/iterate/json_schema_string.go +17 -0
  658. package/native/core/programmers/iterate/json_schema_template.go +63 -0
  659. package/native/core/programmers/iterate/json_schema_title.go +25 -0
  660. package/native/core/programmers/iterate/json_schema_tuple.go +41 -0
  661. package/native/core/programmers/iterate/metadata_to_pattern.go +64 -0
  662. package/native/core/programmers/iterate/postfix_of_tuple.go +12 -0
  663. package/native/core/programmers/iterate/prune_object_properties.go +101 -0
  664. package/native/core/programmers/iterate/stringify_dynamic_properties.go +212 -0
  665. package/native/core/programmers/iterate/stringify_native.go +9 -0
  666. package/native/core/programmers/iterate/stringify_regular_properties.go +108 -0
  667. package/native/core/programmers/iterate/template_to_pattern.go +29 -0
  668. package/native/core/programmers/iterate/wrap_metadata_rest_tuple.go +22 -0
  669. package/native/core/programmers/json/JsonApplicationProgrammer.go +374 -0
  670. package/native/core/programmers/json/JsonAssertParseProgrammer.go +118 -0
  671. package/native/core/programmers/json/JsonAssertStringifyProgrammer.go +107 -0
  672. package/native/core/programmers/json/JsonIsParseProgrammer.go +165 -0
  673. package/native/core/programmers/json/JsonIsStringifyProgrammer.go +113 -0
  674. package/native/core/programmers/json/JsonSchemaProgrammer.go +94 -0
  675. package/native/core/programmers/json/JsonSchemasProgrammer.go +148 -0
  676. package/native/core/programmers/json/JsonStringifyProgrammer.go +1423 -0
  677. package/native/core/programmers/json/JsonValidateParseProgrammer.go +107 -0
  678. package/native/core/programmers/json/JsonValidateStringifyProgrammer.go +125 -0
  679. package/native/core/programmers/json/index.go +1 -0
  680. package/native/core/programmers/llm/LlmApplicationProgrammer.go +500 -0
  681. package/native/core/programmers/llm/LlmCoerceProgrammer.go +108 -0
  682. package/native/core/programmers/llm/LlmControllerProgrammer.go +51 -0
  683. package/native/core/programmers/llm/LlmMetadataFactory.go +90 -0
  684. package/native/core/programmers/llm/LlmParametersProgrammer.go +168 -0
  685. package/native/core/programmers/llm/LlmParseProgrammer.go +120 -0
  686. package/native/core/programmers/llm/LlmSchemaProgrammer.go +474 -0
  687. package/native/core/programmers/llm/LlmStructuredOutputProgrammer.go +146 -0
  688. package/native/core/programmers/llm/index.go +1 -0
  689. package/native/core/programmers/misc/MiscAssertCloneProgrammer.go +101 -0
  690. package/native/core/programmers/misc/MiscAssertPruneProgrammer.go +116 -0
  691. package/native/core/programmers/misc/MiscCloneProgrammer.go +1206 -0
  692. package/native/core/programmers/misc/MiscIsCloneProgrammer.go +116 -0
  693. package/native/core/programmers/misc/MiscIsPruneProgrammer.go +105 -0
  694. package/native/core/programmers/misc/MiscLiteralsProgrammer.go +125 -0
  695. package/native/core/programmers/misc/MiscPruneProgrammer.go +798 -0
  696. package/native/core/programmers/misc/MiscValidateCloneProgrammer.go +122 -0
  697. package/native/core/programmers/misc/MiscValidatePruneProgrammer.go +113 -0
  698. package/native/core/programmers/misc/index.go +1 -0
  699. package/native/core/programmers/notations/NotationAssertGeneralProgrammer.go +106 -0
  700. package/native/core/programmers/notations/NotationGeneralProgrammer.go +1381 -0
  701. package/native/core/programmers/notations/NotationIsGeneralProgrammer.go +111 -0
  702. package/native/core/programmers/notations/NotationValidateGeneralProgrammer.go +130 -0
  703. package/native/core/programmers/notations/index.go +1 -0
  704. package/native/core/programmers/protobuf/ProtobufAssertDecodeProgrammer.go +124 -0
  705. package/native/core/programmers/protobuf/ProtobufAssertEncodeProgrammer.go +145 -0
  706. package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +845 -0
  707. package/native/core/programmers/protobuf/ProtobufEncodeProgrammer.go +1207 -0
  708. package/native/core/programmers/protobuf/ProtobufIsDecodeProgrammer.go +121 -0
  709. package/native/core/programmers/protobuf/ProtobufIsEncodeProgrammer.go +115 -0
  710. package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +273 -0
  711. package/native/core/programmers/protobuf/ProtobufValidateDecodeProgrammer.go +110 -0
  712. package/native/core/programmers/protobuf/ProtobufValidateEncodeProgrammer.go +145 -0
  713. package/native/core/programmers/protobuf/index.go +1 -0
  714. package/native/core/schemas/index.go +1 -0
  715. package/native/core/schemas/metadata/IMetadataDictionary.go +8 -0
  716. package/native/core/schemas/metadata/MetadataAlias.go +28 -0
  717. package/native/core/schemas/metadata/MetadataAliasType.go +52 -0
  718. package/native/core/schemas/metadata/MetadataApplication.go +41 -0
  719. package/native/core/schemas/metadata/MetadataArray.go +28 -0
  720. package/native/core/schemas/metadata/MetadataArrayType.go +47 -0
  721. package/native/core/schemas/metadata/MetadataAtomic.go +69 -0
  722. package/native/core/schemas/metadata/MetadataCollection.go +490 -0
  723. package/native/core/schemas/metadata/MetadataComponents.go +122 -0
  724. package/native/core/schemas/metadata/MetadataConstant.go +47 -0
  725. package/native/core/schemas/metadata/MetadataConstantValue.go +97 -0
  726. package/native/core/schemas/metadata/MetadataEscaped.go +36 -0
  727. package/native/core/schemas/metadata/MetadataFunction.go +46 -0
  728. package/native/core/schemas/metadata/MetadataMap.go +37 -0
  729. package/native/core/schemas/metadata/MetadataNative.go +72 -0
  730. package/native/core/schemas/metadata/MetadataObject.go +28 -0
  731. package/native/core/schemas/metadata/MetadataObjectType.go +146 -0
  732. package/native/core/schemas/metadata/MetadataParameter.go +46 -0
  733. package/native/core/schemas/metadata/MetadataProperty.go +50 -0
  734. package/native/core/schemas/metadata/MetadataSchema.go +863 -0
  735. package/native/core/schemas/metadata/MetadataSet.go +33 -0
  736. package/native/core/schemas/metadata/MetadataTemplate.go +70 -0
  737. package/native/core/schemas/metadata/MetadataTuple.go +20 -0
  738. package/native/core/schemas/metadata/MetadataTupleType.go +57 -0
  739. package/native/core/schemas/metadata/index.go +1 -0
  740. package/native/core/schemas/protobuf/IProtobufProperty.go +6 -0
  741. package/native/core/schemas/protobuf/IProtobufPropertyType.go +55 -0
  742. package/native/core/schemas/protobuf/IProtobufSchema.go +54 -0
  743. package/native/core/schemas/protobuf/index.go +1 -0
  744. package/native/core/typings/Writable.go +5 -0
  745. package/native/core/utils/PatternUtil.go +57 -0
  746. package/native/core/utils/ProtobufNameEncoder.go +47 -0
  747. package/native/go.mod +35 -0
  748. package/native/go.sum +22 -0
  749. package/native/go.work +20 -0
  750. package/native/go.work.sum +11 -0
  751. package/native/shim/printer/go.mod +5 -0
  752. package/native/shim/printer/shim.go +249 -0
  753. package/native/third_party/ttsc/driver/host.go +31 -0
  754. package/native/third_party/ttsc/driver/program.go +403 -0
  755. package/native/third_party/ttsc/driver/rewrite.go +315 -0
  756. package/native/third_party/ttsc/go.mod +46 -0
  757. package/native/third_party/ttsc/go.sum +22 -0
  758. package/native/third_party/ttsc/shim/ast/extra-shim.json +4 -0
  759. package/native/third_party/ttsc/shim/ast/go.mod +5 -0
  760. package/native/third_party/ttsc/shim/ast/lint.go +328 -0
  761. package/native/third_party/ttsc/shim/ast/shim.go +209 -0
  762. package/native/third_party/ttsc/shim/bundled/extra-shim.json +1 -0
  763. package/native/third_party/ttsc/shim/bundled/go.mod +5 -0
  764. package/native/third_party/ttsc/shim/bundled/shim.go +19 -0
  765. package/native/third_party/ttsc/shim/checker/extra-shim.json +31 -0
  766. package/native/third_party/ttsc/shim/checker/go.mod +5 -0
  767. package/native/third_party/ttsc/shim/checker/shim.go +166 -0
  768. package/native/third_party/ttsc/shim/compiler/extra-shim.json +4 -0
  769. package/native/third_party/ttsc/shim/compiler/go.mod +5 -0
  770. package/native/third_party/ttsc/shim/compiler/shim.go +50 -0
  771. package/native/third_party/ttsc/shim/core/extra-shim.json +4 -0
  772. package/native/third_party/ttsc/shim/core/go.mod +5 -0
  773. package/native/third_party/ttsc/shim/core/shim.go +26 -0
  774. package/native/third_party/ttsc/shim/diagnosticwriter/go.mod +5 -0
  775. package/native/third_party/ttsc/shim/diagnosticwriter/lint.go +137 -0
  776. package/native/third_party/ttsc/shim/diagnosticwriter/shim.go +29 -0
  777. package/native/third_party/ttsc/shim/parser/extra-shim.json +4 -0
  778. package/native/third_party/ttsc/shim/parser/go.mod +5 -0
  779. package/native/third_party/ttsc/shim/parser/shim.go +55 -0
  780. package/native/third_party/ttsc/shim/scanner/extra-shim.json +4 -0
  781. package/native/third_party/ttsc/shim/scanner/go.mod +5 -0
  782. package/native/third_party/ttsc/shim/scanner/shim.go +96 -0
  783. package/native/third_party/ttsc/shim/tsoptions/extra-shim.json +4 -0
  784. package/native/third_party/ttsc/shim/tsoptions/go.mod +5 -0
  785. package/native/third_party/ttsc/shim/tsoptions/shim.go +123 -0
  786. package/native/third_party/ttsc/shim/tspath/extra-shim.json +4 -0
  787. package/native/third_party/ttsc/shim/tspath/go.mod +5 -0
  788. package/native/third_party/ttsc/shim/tspath/shim.go +165 -0
  789. package/native/third_party/ttsc/shim/vfs/cachedvfs/extra-shim.json +4 -0
  790. package/native/third_party/ttsc/shim/vfs/cachedvfs/go.mod +5 -0
  791. package/native/third_party/ttsc/shim/vfs/cachedvfs/shim.go +12 -0
  792. package/native/third_party/ttsc/shim/vfs/extra-shim.json +4 -0
  793. package/native/third_party/ttsc/shim/vfs/go.mod +5 -0
  794. package/native/third_party/ttsc/shim/vfs/osvfs/extra-shim.json +4 -0
  795. package/native/third_party/ttsc/shim/vfs/osvfs/go.mod +5 -0
  796. package/native/third_party/ttsc/shim/vfs/osvfs/shim.go +13 -0
  797. package/native/third_party/ttsc/shim/vfs/shim.go +19 -0
  798. package/native/transform/CallExpressionTransformer.go +620 -0
  799. package/native/transform/FileTransformer.go +172 -0
  800. package/native/transform/ITransformProps.go +5 -0
  801. package/native/transform/ImportTransformer.go +282 -0
  802. package/native/transform/NodeTransformer.go +25 -0
  803. package/native/transform/TransformerError.go +11 -0
  804. package/native/transform/TypiaGenerator.go +168 -0
  805. package/native/transform/features/AssertTransformer.go +39 -0
  806. package/native/transform/features/CreateAssertTransformer.go +39 -0
  807. package/native/transform/features/CreateIsTransformer.go +35 -0
  808. package/native/transform/features/CreateRandomTransformer.go +47 -0
  809. package/native/transform/features/CreateValidateTransformer.go +35 -0
  810. package/native/transform/features/IsTransformer.go +35 -0
  811. package/native/transform/features/RandomTransformer.go +51 -0
  812. package/native/transform/features/ValidateTransformer.go +35 -0
  813. package/native/transform/features/functional/FunctionalGenericTransformer.go +70 -0
  814. package/native/transform/features/http/CreateHttpAssertFormDataTransformer.go +22 -0
  815. package/native/transform/features/http/CreateHttpAssertHeadersTransformer.go +22 -0
  816. package/native/transform/features/http/CreateHttpAssertQueryTransformer.go +28 -0
  817. package/native/transform/features/http/CreateHttpFormDataTransformer.go +22 -0
  818. package/native/transform/features/http/CreateHttpHeadersTransformer.go +22 -0
  819. package/native/transform/features/http/CreateHttpIsFormDataTransformer.go +22 -0
  820. package/native/transform/features/http/CreateHttpIsHeadersTransformer.go +22 -0
  821. package/native/transform/features/http/CreateHttpIsQueryTransformer.go +28 -0
  822. package/native/transform/features/http/CreateHttpParameterTransformer.go +22 -0
  823. package/native/transform/features/http/CreateHttpQueryTransformer.go +28 -0
  824. package/native/transform/features/http/CreateHttpValidateFormDataTransformer.go +22 -0
  825. package/native/transform/features/http/CreateHttpValidateHeadersTransformer.go +22 -0
  826. package/native/transform/features/http/CreateHttpValidateQueryTransformer.go +28 -0
  827. package/native/transform/features/http/HttpAssertFormDataTransformer.go +22 -0
  828. package/native/transform/features/http/HttpAssertHeadersTransformer.go +22 -0
  829. package/native/transform/features/http/HttpAssertQueryTransformer.go +28 -0
  830. package/native/transform/features/http/HttpFormDataTransformer.go +22 -0
  831. package/native/transform/features/http/HttpHeadersTransformer.go +22 -0
  832. package/native/transform/features/http/HttpIsFormDataTransformer.go +22 -0
  833. package/native/transform/features/http/HttpIsHeadersTransformer.go +22 -0
  834. package/native/transform/features/http/HttpIsQueryTransformer.go +28 -0
  835. package/native/transform/features/http/HttpParameterTransformer.go +22 -0
  836. package/native/transform/features/http/HttpQueryTransformer.go +28 -0
  837. package/native/transform/features/http/HttpValidateFormDataTransformer.go +22 -0
  838. package/native/transform/features/http/HttpValidateHeadersTransformer.go +22 -0
  839. package/native/transform/features/http/HttpValidateQueryTransformer.go +28 -0
  840. package/native/transform/features/json/JsonApplicationTransformer.go +76 -0
  841. package/native/transform/features/json/JsonAssertParseTransformer.go +22 -0
  842. package/native/transform/features/json/JsonAssertStringifyTransformer.go +22 -0
  843. package/native/transform/features/json/JsonCreateAssertParseTransformer.go +22 -0
  844. package/native/transform/features/json/JsonCreateAssertStringifyTransformer.go +22 -0
  845. package/native/transform/features/json/JsonCreateIsParseTransformer.go +22 -0
  846. package/native/transform/features/json/JsonCreateIsStringifyTransformer.go +22 -0
  847. package/native/transform/features/json/JsonCreateStringifyTransformer.go +22 -0
  848. package/native/transform/features/json/JsonCreateValidateParseTransformer.go +22 -0
  849. package/native/transform/features/json/JsonCreateValidateStringifyProgrammer.go +22 -0
  850. package/native/transform/features/json/JsonIsParseTransformer.go +22 -0
  851. package/native/transform/features/json/JsonIsStringifyTransformer.go +22 -0
  852. package/native/transform/features/json/JsonSchemaTransformer.go +176 -0
  853. package/native/transform/features/json/JsonSchemasTransformer.go +110 -0
  854. package/native/transform/features/json/JsonStringifyTransformer.go +22 -0
  855. package/native/transform/features/json/JsonValidateParseTransformer.go +22 -0
  856. package/native/transform/features/json/JsonValidateStringifyTransformer.go +22 -0
  857. package/native/transform/features/llm/LlmApplicationTransformer.go +54 -0
  858. package/native/transform/features/llm/LlmCoerceTransformer.go +61 -0
  859. package/native/transform/features/llm/LlmControllerTransformer.go +59 -0
  860. package/native/transform/features/llm/LlmCreateCoerceTransformer.go +54 -0
  861. package/native/transform/features/llm/LlmCreateParseTransformer.go +54 -0
  862. package/native/transform/features/llm/LlmParametersTransformer.go +49 -0
  863. package/native/transform/features/llm/LlmParseTransformer.go +61 -0
  864. package/native/transform/features/llm/LlmSchemaTransformer.go +167 -0
  865. package/native/transform/features/llm/LlmStructuredOutputTransformer.go +55 -0
  866. package/native/transform/features/misc/MiscAssertCloneTransformer.go +22 -0
  867. package/native/transform/features/misc/MiscAssertPruneTransformer.go +22 -0
  868. package/native/transform/features/misc/MiscCloneTransformer.go +22 -0
  869. package/native/transform/features/misc/MiscCreateAssertCloneTransformer.go +22 -0
  870. package/native/transform/features/misc/MiscCreateAssertPruneTransformer.go +22 -0
  871. package/native/transform/features/misc/MiscCreateCloneTransformer.go +22 -0
  872. package/native/transform/features/misc/MiscCreateIsCloneTransformer.go +22 -0
  873. package/native/transform/features/misc/MiscCreateIsPruneTransformer.go +22 -0
  874. package/native/transform/features/misc/MiscCreatePruneTransformer.go +22 -0
  875. package/native/transform/features/misc/MiscCreateValidateCloneTransformer.go +22 -0
  876. package/native/transform/features/misc/MiscCreateValidatePruneTransformer.go +22 -0
  877. package/native/transform/features/misc/MiscIsCloneTransformer.go +22 -0
  878. package/native/transform/features/misc/MiscIsPruneTransformer.go +22 -0
  879. package/native/transform/features/misc/MiscLiteralsTransformer.go +32 -0
  880. package/native/transform/features/misc/MiscPruneTransformer.go +22 -0
  881. package/native/transform/features/misc/MiscValidateCloneTransformer.go +22 -0
  882. package/native/transform/features/misc/MiscValidatePruneTransformer.go +22 -0
  883. package/native/transform/features/notations/NotationAssertGeneralTransformer.go +27 -0
  884. package/native/transform/features/notations/NotationCreateAssertGeneralTransformer.go +27 -0
  885. package/native/transform/features/notations/NotationCreateGeneralTransformer.go +27 -0
  886. package/native/transform/features/notations/NotationCreateIsGeneralTransformer.go +27 -0
  887. package/native/transform/features/notations/NotationCreateValidateGeneralTransformer.go +27 -0
  888. package/native/transform/features/notations/NotationGeneralTransformer.go +36 -0
  889. package/native/transform/features/notations/NotationIsGeneralTransformer.go +27 -0
  890. package/native/transform/features/notations/NotationValidateGeneralTransformer.go +27 -0
  891. package/native/transform/features/protobuf/ProtobufAssertDecodeTransformer.go +22 -0
  892. package/native/transform/features/protobuf/ProtobufAssertEncodeTransformer.go +22 -0
  893. package/native/transform/features/protobuf/ProtobufCreateAssertDecodeTransformer.go +22 -0
  894. package/native/transform/features/protobuf/ProtobufCreateAssertEncodeTransformer.go +22 -0
  895. package/native/transform/features/protobuf/ProtobufCreateDecodeTransformer.go +22 -0
  896. package/native/transform/features/protobuf/ProtobufCreateEncodeTransformer.go +22 -0
  897. package/native/transform/features/protobuf/ProtobufCreateIsDecodeTransformer.go +22 -0
  898. package/native/transform/features/protobuf/ProtobufCreateIsEncodeTransformer.go +22 -0
  899. package/native/transform/features/protobuf/ProtobufCreateValidateDecodeTransformer.go +22 -0
  900. package/native/transform/features/protobuf/ProtobufCreateValidateEncodeTransformer.go +22 -0
  901. package/native/transform/features/protobuf/ProtobufDecodeTransformer.go +22 -0
  902. package/native/transform/features/protobuf/ProtobufEncodeTransformer.go +22 -0
  903. package/native/transform/features/protobuf/ProtobufIsDecodeTransformer.go +22 -0
  904. package/native/transform/features/protobuf/ProtobufIsEncodeTransformer.go +22 -0
  905. package/native/transform/features/protobuf/ProtobufMessageTransformer.go +31 -0
  906. package/native/transform/features/protobuf/ProtobufValidateDecodeTransformer.go +22 -0
  907. package/native/transform/features/protobuf/ProtobufValidateEncodeTransformer.go +22 -0
  908. package/native/transform/features/reflect/ReflectMetadataTransformer.go +74 -0
  909. package/native/transform/features/reflect/ReflectNameTransformer.go +100 -0
  910. package/native/transform/features/reflect/ReflectSchemaTransformer.go +153 -0
  911. package/native/transform/features/reflect/ReflectSchemasTransformer.go +69 -0
  912. package/native/transform/index.go +1 -0
  913. package/native/transform/internal/GenericTransformer.go +235 -0
  914. package/native/transform/transform.go +50 -0
  915. package/package.json +11 -20
  916. package/src/TypeGuardError.ts +1 -0
  917. package/src/executable/TypiaGenerateWizard.ts +87 -64
  918. package/src/executable/generate/ttsc.ts +18 -49
  919. package/src/internal/_randomInteger.ts +5 -5
  920. package/src/internal/_validateReport.ts +2 -1
  921. package/src/llm.ts +1 -1
  922. package/src/transform.ts +6 -14
  923. package/bin/ttsc-typia-native +0 -0
@@ -0,0 +1,1695 @@
1
+ package internal
2
+
3
+ import (
4
+ "fmt"
5
+ "strings"
6
+
7
+ shimast "github.com/microsoft/typescript-go/shim/ast"
8
+ shimchecker "github.com/microsoft/typescript-go/shim/checker"
9
+ nativecontext "github.com/samchon/typia/packages/typia/native/core/context"
10
+ nativefactories "github.com/samchon/typia/packages/typia/native/core/factories"
11
+ nativehelpers "github.com/samchon/typia/packages/typia/native/core/programmers/helpers"
12
+ nativeiterate "github.com/samchon/typia/packages/typia/native/core/programmers/iterate"
13
+ nativemetadata "github.com/samchon/typia/packages/typia/native/core/schemas/metadata"
14
+ )
15
+
16
+ type checkerProgrammerNamespace struct{}
17
+
18
+ var CheckerProgrammer = checkerProgrammerNamespace{}
19
+
20
+ type CheckerProgrammer_IConfig struct {
21
+ Prefix string
22
+ Path bool
23
+ Trace bool
24
+ Equals bool
25
+ Numeric bool
26
+ Addition func() []*shimast.Node
27
+ Decoder func(props CheckerProgrammer_DecoderProps) *shimast.Node
28
+ Combiner CheckerProgrammer_IConfig_Combiner
29
+ Atomist func(props CheckerProgrammer_AtomistProps) *shimast.Node
30
+ Joiner CheckerProgrammer_IConfig_IJoiner
31
+ Success *shimast.Expression
32
+ }
33
+
34
+ type CheckerProgrammer_IConfig_Combiner func(props CheckerProgrammer_CombinerProps) *shimast.Node
35
+
36
+ type CheckerProgrammer_CombinerProps struct {
37
+ Explore CheckerProgrammer_IExplore
38
+ Logic string
39
+ Input *shimast.Expression
40
+ Binaries []CheckerProgrammer_IBinary
41
+ Expected string
42
+ }
43
+
44
+ type CheckerProgrammer_IConfig_IJoiner struct {
45
+ Object func(props CheckerProgrammer_JoinerObjectProps) *shimast.Node
46
+ Array func(props CheckerProgrammer_JoinerArrayProps) *shimast.Node
47
+ Tuple func(exprs []*shimast.Node) *shimast.Node
48
+ Failure func(props CheckerProgrammer_JoinerFailureProps) *shimast.Node
49
+ Is func(expression *shimast.Expression) *shimast.Node
50
+ Required func(exp *shimast.Expression) *shimast.Node
51
+ Full func(props CheckerProgrammer_JoinerFullProps) *shimast.Node
52
+ }
53
+
54
+ type CheckerProgrammer_JoinerObjectProps struct {
55
+ Input *shimast.Expression
56
+ Entries []nativehelpers.IExpressionEntry
57
+ Object *nativemetadata.MetadataObjectType
58
+ }
59
+
60
+ type CheckerProgrammer_JoinerArrayProps struct {
61
+ Input *shimast.Expression
62
+ Arrow *shimast.Node
63
+ }
64
+
65
+ type CheckerProgrammer_JoinerFailureProps struct {
66
+ Input *shimast.Expression
67
+ Expected string
68
+ Explore *FeatureProgrammer_IExplore
69
+ }
70
+
71
+ type CheckerProgrammer_JoinerFullProps struct {
72
+ Condition *shimast.Expression
73
+ Input *shimast.Expression
74
+ Expected string
75
+ Explore CheckerProgrammer_IExplore
76
+ }
77
+
78
+ type CheckerProgrammer_IExplore = FeatureProgrammer_IExplore
79
+
80
+ type CheckerProgrammer_IBinary struct {
81
+ Expression *shimast.Node
82
+ Combined bool
83
+ }
84
+
85
+ type CheckerProgrammer_AtomistProps struct {
86
+ Entry nativehelpers.ICheckEntry
87
+ Input *shimast.Expression
88
+ Explore CheckerProgrammer_IExplore
89
+ }
90
+
91
+ type CheckerProgrammer_ComposeProps struct {
92
+ Context nativecontext.ITypiaContext
93
+ Config CheckerProgrammer_IConfig
94
+ Functor *nativehelpers.FunctionProgrammer
95
+ Type *shimchecker.Type
96
+ Name *string
97
+ }
98
+
99
+ type CheckerProgrammer_WriteProps = CheckerProgrammer_ComposeProps
100
+
101
+ type CheckerProgrammer_WriteObjectFunctionsProps struct {
102
+ Context nativecontext.ITypiaContext
103
+ Config CheckerProgrammer_IConfig
104
+ Functor *nativehelpers.FunctionProgrammer
105
+ Collection *nativemetadata.MetadataCollection
106
+ }
107
+
108
+ type CheckerProgrammer_WriteArrayFunctionsProps = CheckerProgrammer_WriteObjectFunctionsProps
109
+ type CheckerProgrammer_WriteTupleFunctionsProps = CheckerProgrammer_WriteObjectFunctionsProps
110
+
111
+ type CheckerProgrammer_DecoderProps struct {
112
+ Metadata *nativemetadata.MetadataSchema
113
+ Input *shimast.Expression
114
+ Explore CheckerProgrammer_IExplore
115
+ }
116
+
117
+ type CheckerProgrammer_DecodeProps struct {
118
+ Context nativecontext.ITypiaContext
119
+ Config CheckerProgrammer_IConfig
120
+ Functor *nativehelpers.FunctionProgrammer
121
+ Input *shimast.Expression
122
+ Metadata *nativemetadata.MetadataSchema
123
+ Explore CheckerProgrammer_IExplore
124
+ }
125
+
126
+ type CheckerProgrammer_DecodeObjectProps struct {
127
+ Config CheckerProgrammer_IConfig
128
+ Functor *nativehelpers.FunctionProgrammer
129
+ Object *nativemetadata.MetadataObjectType
130
+ Input *shimast.Expression
131
+ Explore CheckerProgrammer_IExplore
132
+ }
133
+
134
+ var checkerProgrammer_factory = shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
135
+
136
+ func (checkerProgrammerNamespace) Compose(props CheckerProgrammer_ComposeProps) FeatureProgrammer_IComposed {
137
+ return FeatureProgrammer.Compose(FeatureProgrammer_ComposeProps{
138
+ Context: props.Context,
139
+ Config: checkerProgrammer_configure(props.Context, props.Config, props.Functor),
140
+ Functor: props.Functor,
141
+ Type: props.Type,
142
+ Name: props.Name,
143
+ })
144
+ }
145
+
146
+ func (checkerProgrammerNamespace) Write(props CheckerProgrammer_WriteProps) *shimast.Node {
147
+ return FeatureProgrammer.Write(FeatureProgrammer_WriteProps{
148
+ Config: checkerProgrammer_configure(props.Context, props.Config, props.Functor),
149
+ Context: props.Context,
150
+ Functor: props.Functor,
151
+ Type: props.Type,
152
+ Name: props.Name,
153
+ })
154
+ }
155
+
156
+ func (checkerProgrammerNamespace) Write_object_functions(props CheckerProgrammer_WriteObjectFunctionsProps) []*shimast.Node {
157
+ return FeatureProgrammer.Write_object_functions(FeatureProgrammer_WriteObjectFunctionsProps{
158
+ Config: checkerProgrammer_configure(props.Context, props.Config, props.Functor),
159
+ Context: props.Context,
160
+ Collection: props.Collection,
161
+ })
162
+ }
163
+
164
+ func (checkerProgrammerNamespace) Write_union_functions(props CheckerProgrammer_WriteObjectFunctionsProps) []*shimast.Node {
165
+ config := props.Config
166
+ config.Numeric = false
167
+ return FeatureProgrammer.Write_union_functions(FeatureProgrammer_WriteUnionFunctionsProps{
168
+ Config: checkerProgrammer_configure(props.Context, config, props.Functor),
169
+ Collection: props.Collection,
170
+ })
171
+ }
172
+
173
+ func (checkerProgrammerNamespace) Write_array_functions(props CheckerProgrammer_WriteArrayFunctionsProps) []*shimast.Node {
174
+ arrays := props.Collection.Arrays()
175
+ output := []*shimast.Node{}
176
+ for i, typ := range arrays {
177
+ if typ.Recursive == false {
178
+ continue
179
+ }
180
+ input := checkerProgrammer_factory.NewIdentifier("input")
181
+ output = append(output, nativefactories.StatementFactory.Constant(nativefactories.StatementFactory_ConstantProps{
182
+ Name: fmt.Sprintf("%sa%d", props.Config.Prefix, i),
183
+ Value: checkerProgrammer_factory.NewArrowFunction(
184
+ nil,
185
+ nil,
186
+ checkerProgrammer_factory.NewNodeList(FeatureProgrammer.ParameterDeclarations(FeatureProgrammer_ParameterDeclarationsProps{
187
+ Config: FeatureProgrammer_ParameterConfig{Path: props.Config.Path, Trace: props.Config.Trace},
188
+ Type: nativefactories.TypeFactory.Keyword("any"),
189
+ Input: input,
190
+ })),
191
+ nativefactories.TypeFactory.Keyword("any"),
192
+ nil,
193
+ checkerProgrammer_factory.NewToken(shimast.KindEqualsGreaterThanToken),
194
+ checkerProgrammer_decode_array_inline(checkerProgrammer_decodeArrayInlineProps{
195
+ Config: props.Config,
196
+ Context: props.Context,
197
+ Functor: props.Functor,
198
+ Input: input,
199
+ Array: nativemetadata.MetadataArray_create(nativemetadata.MetadataArray{
200
+ Type: typ,
201
+ Tags: [][]nativemetadata.IMetadataTypeTag{},
202
+ }),
203
+ Explore: CheckerProgrammer_IExplore{
204
+ Tracable: props.Config.Trace,
205
+ Source: "function",
206
+ From: "array",
207
+ Postfix: "",
208
+ },
209
+ }),
210
+ ),
211
+ }))
212
+ }
213
+ return output
214
+ }
215
+
216
+ func (checkerProgrammerNamespace) Write_tuple_functions(props CheckerProgrammer_WriteTupleFunctionsProps) []*shimast.Node {
217
+ tuples := props.Collection.Tuples()
218
+ output := []*shimast.Node{}
219
+ for i, tuple := range tuples {
220
+ if tuple.Recursive == false {
221
+ continue
222
+ }
223
+ input := checkerProgrammer_factory.NewIdentifier("input")
224
+ output = append(output, nativefactories.StatementFactory.Constant(nativefactories.StatementFactory_ConstantProps{
225
+ Name: fmt.Sprintf("%st%d", props.Config.Prefix, i),
226
+ Value: checkerProgrammer_factory.NewArrowFunction(
227
+ nil,
228
+ nil,
229
+ checkerProgrammer_factory.NewNodeList(FeatureProgrammer.ParameterDeclarations(FeatureProgrammer_ParameterDeclarationsProps{
230
+ Config: FeatureProgrammer_ParameterConfig{Path: props.Config.Path, Trace: props.Config.Trace},
231
+ Type: nativefactories.TypeFactory.Keyword("any"),
232
+ Input: input,
233
+ })),
234
+ nativefactories.TypeFactory.Keyword("any"),
235
+ nil,
236
+ checkerProgrammer_factory.NewToken(shimast.KindEqualsGreaterThanToken),
237
+ checkerProgrammer_decode_tuple_inline(checkerProgrammer_decodeTupleInlineProps{
238
+ Config: props.Config,
239
+ Context: props.Context,
240
+ Functor: props.Functor,
241
+ Input: input,
242
+ Tuple: tuple,
243
+ Explore: CheckerProgrammer_IExplore{
244
+ Tracable: props.Config.Trace,
245
+ Source: "function",
246
+ From: "array",
247
+ Postfix: "",
248
+ },
249
+ }),
250
+ ),
251
+ }))
252
+ }
253
+ return output
254
+ }
255
+
256
+ func checkerProgrammer_configure(context nativecontext.ITypiaContext, config CheckerProgrammer_IConfig, functor *nativehelpers.FunctionProgrammer) FeatureProgrammer_IConfig {
257
+ return FeatureProgrammer_IConfig{
258
+ Types: FeatureProgrammer_IConfig_ITypes{
259
+ Input: func(_ *shimchecker.Type, _ *string) *shimast.TypeNode {
260
+ return nativefactories.TypeFactory.Keyword("any")
261
+ },
262
+ Output: func(t *shimchecker.Type, name *string) *shimast.TypeNode {
263
+ typeName := ""
264
+ if name != nil {
265
+ typeName = *name
266
+ } else {
267
+ typeName = nativefactories.TypeFactory.GetFullName(nativefactories.TypeFactory_GetFullNameProps{
268
+ Checker: context.Checker,
269
+ Type: t,
270
+ })
271
+ }
272
+ return checkerProgrammer_factory.NewTypePredicateNode(
273
+ nil,
274
+ checkerProgrammer_factory.NewIdentifier("input"),
275
+ checkerProgrammer_factory.NewTypeReferenceNode(
276
+ checkerProgrammer_factory.NewIdentifier(typeName),
277
+ nil,
278
+ ),
279
+ )
280
+ },
281
+ },
282
+ Trace: config.Trace,
283
+ Path: config.Path,
284
+ Prefix: config.Prefix,
285
+ Initializer: func(next FeatureProgrammer_InitializerProps) FeatureProgrammer_InitializerOutput {
286
+ collection := nativemetadata.NewMetadataCollection()
287
+ result := nativefactories.MetadataFactory.Analyze(nativefactories.MetadataFactory_IProps{
288
+ Checker: next.Context.Checker,
289
+ Transformer: next.Context.Transformer,
290
+ Options: nativefactories.MetadataFactory_IOptions{
291
+ Escape: false,
292
+ Constant: true,
293
+ Absorb: true,
294
+ },
295
+ Components: collection,
296
+ Type: next.Type,
297
+ })
298
+ if result.Success == false {
299
+ panic(nativecontext.TransformerError_from(struct {
300
+ Code string
301
+ Errors []nativecontext.TransformerError_MetadataFactory_IError
302
+ }{
303
+ Code: next.Functor.Method,
304
+ Errors: checkerProgrammer_errors(result.Errors),
305
+ }))
306
+ }
307
+ return FeatureProgrammer_InitializerOutput{
308
+ Collection: collection,
309
+ Metadata: result.Data,
310
+ }
311
+ },
312
+ Addition: func(collection *nativemetadata.MetadataCollection) []*shimast.Node {
313
+ if config.Addition == nil {
314
+ return []*shimast.Node{}
315
+ }
316
+ return config.Addition()
317
+ },
318
+ Decoder: func(next FeatureProgrammer_DecoderProps) *shimast.Node {
319
+ if config.Decoder != nil {
320
+ return config.Decoder(CheckerProgrammer_DecoderProps{
321
+ Metadata: next.Metadata,
322
+ Input: next.Input,
323
+ Explore: next.Explore,
324
+ })
325
+ }
326
+ return CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{
327
+ Context: context,
328
+ Config: config,
329
+ Functor: functor,
330
+ Input: next.Input,
331
+ Metadata: next.Metadata,
332
+ Explore: next.Explore,
333
+ })
334
+ },
335
+ Objector: FeatureProgrammer_IConfig_IObjector{
336
+ Checker: func(next FeatureProgrammer_ObjectorCheckerProps) *shimast.Node {
337
+ if config.Decoder != nil {
338
+ return config.Decoder(CheckerProgrammer_DecoderProps{
339
+ Metadata: next.Metadata,
340
+ Input: next.Input,
341
+ Explore: next.Explore,
342
+ })
343
+ }
344
+ return CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{
345
+ Context: context,
346
+ Config: config,
347
+ Functor: functor,
348
+ Input: next.Input,
349
+ Metadata: next.Metadata,
350
+ Explore: next.Explore,
351
+ })
352
+ },
353
+ Decoder: func(next FeatureProgrammer_ObjectorDecoderProps) *shimast.Node {
354
+ return CheckerProgrammer.Decode_object(CheckerProgrammer_DecodeObjectProps{
355
+ Config: config,
356
+ Functor: functor,
357
+ Input: next.Input,
358
+ Object: next.Object,
359
+ Explore: next.Explore,
360
+ })
361
+ },
362
+ Joiner: func(next FeatureProgrammer_ObjectorJoinerProps) *shimast.Node {
363
+ return config.Joiner.Object(CheckerProgrammer_JoinerObjectProps{
364
+ Input: next.Input,
365
+ Entries: next.Entries,
366
+ Object: next.Object,
367
+ })
368
+ },
369
+ Unionizer: func(next FeatureProgrammer_ObjectorUnionizerProps) *shimast.Node {
370
+ if config.Equals {
371
+ return nativeiterate.Decode_union_object(nativeiterate.Decode_union_objectProps{
372
+ Checker: func(v nativeiterate.Decode_union_object_next) *shimast.Node {
373
+ return CheckerProgrammer.Decode_object(CheckerProgrammer_DecodeObjectProps{
374
+ Config: config,
375
+ Functor: functor,
376
+ Object: v.Object,
377
+ Input: v.Input,
378
+ Explore: featureProgrammer_as_explore(v.Explore),
379
+ })
380
+ },
381
+ Decoder: func(v nativeiterate.Decode_union_object_next) *shimast.Node {
382
+ explore := featureProgrammer_as_explore(v.Explore)
383
+ explore.Tracable = true
384
+ return CheckerProgrammer.Decode_object(CheckerProgrammer_DecodeObjectProps{
385
+ Config: config,
386
+ Functor: functor,
387
+ Input: v.Input,
388
+ Object: v.Object,
389
+ Explore: explore,
390
+ })
391
+ },
392
+ Success: func(expr *shimast.Expression) *shimast.Node {
393
+ if config.Joiner.Is != nil {
394
+ return config.Joiner.Is(expr)
395
+ }
396
+ return expr
397
+ },
398
+ Escaper: func(v nativeiterate.Decode_union_object_escape) *shimast.Node {
399
+ return checkerProgrammer_factory.NewReturnStatement(config.Joiner.Failure(CheckerProgrammer_JoinerFailureProps{
400
+ Input: v.Input,
401
+ Expected: v.Expected,
402
+ Explore: nil,
403
+ }))
404
+ },
405
+ Input: next.Input,
406
+ Objects: next.Objects,
407
+ Explore: next.Explore,
408
+ })
409
+ }
410
+ binaries := make([]CheckerProgrammer_IBinary, 0, len(next.Objects))
411
+ for _, object := range next.Objects {
412
+ binaries = append(binaries, CheckerProgrammer_IBinary{
413
+ Expression: CheckerProgrammer.Decode_object(CheckerProgrammer_DecodeObjectProps{
414
+ Config: config,
415
+ Functor: functor,
416
+ Object: object,
417
+ Input: next.Input,
418
+ Explore: next.Explore,
419
+ }),
420
+ Combined: true,
421
+ })
422
+ }
423
+ names := make([]string, 0, len(next.Objects))
424
+ for _, object := range next.Objects {
425
+ names = append(names, object.Name)
426
+ }
427
+ return config.Combiner(CheckerProgrammer_CombinerProps{
428
+ Logic: "or",
429
+ Explore: next.Explore,
430
+ Input: next.Input,
431
+ Binaries: binaries,
432
+ Expected: "(" + strings.Join(names, " | ") + ")",
433
+ })
434
+ },
435
+ Failure: func(next FeatureProgrammer_ObjectorFailureProps) *shimast.Node {
436
+ return checkerProgrammer_factory.NewReturnStatement(config.Joiner.Failure(CheckerProgrammer_JoinerFailureProps{
437
+ Input: next.Input,
438
+ Expected: next.Expected,
439
+ Explore: next.Explore,
440
+ }))
441
+ },
442
+ Is: config.Joiner.Is,
443
+ Required: config.Joiner.Required,
444
+ Full: func(next FeatureProgrammer_ObjectorFullProps) *shimast.Node {
445
+ if config.Joiner.Full == nil {
446
+ return next.Condition
447
+ }
448
+ return config.Joiner.Full(CheckerProgrammer_JoinerFullProps{
449
+ Condition: next.Condition,
450
+ Input: next.Input,
451
+ Expected: next.Expected,
452
+ Explore: next.Explore,
453
+ })
454
+ },
455
+ Type: nativefactories.TypeFactory.Keyword("boolean"),
456
+ },
457
+ Generator: FeatureProgrammer_IConfig_IGenerator{
458
+ Unions: func(collection *nativemetadata.MetadataCollection) []*shimast.Node {
459
+ if config.Numeric == false {
460
+ return nil
461
+ }
462
+ next := config
463
+ next.Numeric = false
464
+ return FeatureProgrammer.Write_union_functions(FeatureProgrammer_WriteUnionFunctionsProps{
465
+ Config: checkerProgrammer_configure(context, next, functor),
466
+ Collection: collection,
467
+ })
468
+ },
469
+ Arrays: func(collection *nativemetadata.MetadataCollection) []*shimast.Node {
470
+ return CheckerProgrammer.Write_array_functions(CheckerProgrammer_WriteArrayFunctionsProps{
471
+ Context: context,
472
+ Config: config,
473
+ Functor: functor,
474
+ Collection: collection,
475
+ })
476
+ },
477
+ Tuples: func(collection *nativemetadata.MetadataCollection) []*shimast.Node {
478
+ return CheckerProgrammer.Write_tuple_functions(CheckerProgrammer_WriteTupleFunctionsProps{
479
+ Context: context,
480
+ Config: config,
481
+ Functor: functor,
482
+ Collection: collection,
483
+ })
484
+ },
485
+ },
486
+ }
487
+ }
488
+
489
+ func (checkerProgrammerNamespace) Decode(props CheckerProgrammer_DecodeProps) *shimast.Node {
490
+ if props.Metadata.Any {
491
+ return props.Config.Success
492
+ }
493
+
494
+ top := []CheckerProgrammer_IBinary{}
495
+ binaries := []CheckerProgrammer_IBinary{}
496
+ add := func(next struct {
497
+ Exact bool
498
+ Left *shimast.Expression
499
+ Right *shimast.Expression
500
+ }) {
501
+ checkerProgrammer_create_add(&binaries, props.Input, next.Exact, next.Left, next.Right)
502
+ }
503
+ getConstantValue := func(value any) *shimast.Node {
504
+ switch v := value.(type) {
505
+ case string:
506
+ return checkerProgrammer_factory.NewStringLiteral(v, shimast.TokenFlagsNone)
507
+ case int64:
508
+ return nativefactories.ExpressionFactory.Bigint(v)
509
+ case uint64:
510
+ return nativefactories.ExpressionFactory.Bigint(v)
511
+ case bool:
512
+ if v {
513
+ return checkerProgrammer_factory.NewKeywordExpression(shimast.KindTrueKeyword)
514
+ }
515
+ return checkerProgrammer_factory.NewKeywordExpression(shimast.KindFalseKeyword)
516
+ default:
517
+ return checkerProgrammer_factory.NewIdentifier(fmt.Sprint(value))
518
+ }
519
+ }
520
+
521
+ checkOptional := props.Metadata.Empty() || props.Metadata.IsUnionBucket()
522
+ if checkOptional || props.Metadata.Nullable {
523
+ if props.Metadata.Nullable {
524
+ add(struct {
525
+ Exact bool
526
+ Left *shimast.Expression
527
+ Right *shimast.Expression
528
+ }{Exact: props.Metadata.Nullable, Left: nativefactories.ValueFactory.NULL()})
529
+ } else {
530
+ checkerProgrammer_create_add(&top, props.Input, props.Metadata.Nullable, nativefactories.ValueFactory.NULL(), nil)
531
+ }
532
+ }
533
+ if checkOptional || !props.Metadata.IsRequired() {
534
+ if props.Metadata.IsRequired() {
535
+ checkerProgrammer_create_add(&top, props.Input, false, nativefactories.ValueFactory.UNDEFINED(), nil)
536
+ } else {
537
+ add(struct {
538
+ Exact bool
539
+ Left *shimast.Expression
540
+ Right *shimast.Expression
541
+ }{Exact: true, Left: nativefactories.ValueFactory.UNDEFINED()})
542
+ }
543
+ }
544
+
545
+ if len(props.Metadata.Functions) != 0 {
546
+ if nativehelpers.OptionPredicator.Functional(props.Context.Options) || props.Metadata.Size() != 1 {
547
+ add(struct {
548
+ Exact bool
549
+ Left *shimast.Expression
550
+ Right *shimast.Expression
551
+ }{
552
+ Exact: true,
553
+ Left: checkerProgrammer_factory.NewStringLiteral("function", shimast.TokenFlagsNone),
554
+ Right: nativefactories.ValueFactory.TYPEOF(props.Input),
555
+ })
556
+ } else {
557
+ binaries = append(binaries, CheckerProgrammer_IBinary{Combined: false, Expression: props.Config.Success})
558
+ }
559
+ }
560
+
561
+ constants := []*nativemetadata.MetadataConstant{}
562
+ constantLength := 0
563
+ for _, c := range props.Metadata.Constants {
564
+ if nativehelpers.AtomicPredicator.Constant(struct {
565
+ Metadata *nativemetadata.MetadataSchema
566
+ Name string
567
+ }{Metadata: props.Metadata, Name: c.Type}) {
568
+ constants = append(constants, c)
569
+ constantLength += len(c.Values)
570
+ }
571
+ }
572
+ if constantLength >= 10 {
573
+ values := []*shimast.Node{}
574
+ for _, c := range constants {
575
+ for _, v := range c.Values {
576
+ switch value := v.Value.(type) {
577
+ case bool:
578
+ if value {
579
+ values = append(values, checkerProgrammer_factory.NewKeywordExpression(shimast.KindTrueKeyword))
580
+ } else {
581
+ values = append(values, checkerProgrammer_factory.NewKeywordExpression(shimast.KindFalseKeyword))
582
+ }
583
+ case int64, uint64:
584
+ values = append(values, nativefactories.ExpressionFactory.Bigint(value))
585
+ case int, float64:
586
+ values = append(values, nativefactories.ExpressionFactory.Number(value))
587
+ default:
588
+ values = append(values, checkerProgrammer_factory.NewStringLiteral(fmt.Sprint(value), shimast.TokenFlagsNone))
589
+ }
590
+ }
591
+ }
592
+ setName := props.Functor.EmplaceVariable(
593
+ fmt.Sprintf("%sv%d", props.Config.Prefix, props.Functor.Increment()),
594
+ checkerProgrammer_factory.NewNewExpression(
595
+ checkerProgrammer_factory.NewIdentifier("Set"),
596
+ nil,
597
+ checkerProgrammer_factory.NewNodeList([]*shimast.Node{
598
+ checkerProgrammer_factory.NewArrayLiteralExpression(checkerProgrammer_factory.NewNodeList(values), false),
599
+ }),
600
+ ),
601
+ )
602
+ add(struct {
603
+ Exact bool
604
+ Left *shimast.Expression
605
+ Right *shimast.Expression
606
+ }{
607
+ Exact: true,
608
+ Left: checkerProgrammer_factory.NewKeywordExpression(shimast.KindTrueKeyword),
609
+ Right: checkerProgrammer_factory.NewCallExpression(
610
+ nativefactories.IdentifierFactory.Access(setName, "has"),
611
+ nil,
612
+ nil,
613
+ checkerProgrammer_factory.NewNodeList([]*shimast.Node{props.Input}),
614
+ shimast.NodeFlagsNone,
615
+ ),
616
+ })
617
+ } else {
618
+ for _, c := range constants {
619
+ for _, v := range c.Values {
620
+ add(struct {
621
+ Exact bool
622
+ Left *shimast.Expression
623
+ Right *shimast.Expression
624
+ }{Exact: true, Left: getConstantValue(v.Value)})
625
+ }
626
+ }
627
+ }
628
+
629
+ for _, atom := range props.Metadata.Atomics {
630
+ if nativehelpers.AtomicPredicator.Atomic(struct {
631
+ Metadata *nativemetadata.MetadataSchema
632
+ Name string
633
+ }{Metadata: props.Metadata, Name: atom.Type}) == false {
634
+ continue
635
+ }
636
+ switch atom.Type {
637
+ case "number":
638
+ binaries = append(binaries, CheckerProgrammer_IBinary{
639
+ Expression: props.Config.Atomist(CheckerProgrammer_AtomistProps{
640
+ Explore: props.Explore,
641
+ Entry: nativeiterate.Check_number(nativeiterate.Check_numberProps{
642
+ Context: props.Context,
643
+ Numeric: props.Config.Numeric,
644
+ Atomic: atom,
645
+ Input: props.Input,
646
+ }),
647
+ Input: props.Input,
648
+ }),
649
+ Combined: false,
650
+ })
651
+ case "bigint":
652
+ binaries = append(binaries, CheckerProgrammer_IBinary{
653
+ Expression: props.Config.Atomist(CheckerProgrammer_AtomistProps{
654
+ Explore: props.Explore,
655
+ Entry: nativeiterate.Check_bigint(nativeiterate.Check_bigintProps{
656
+ Context: props.Context,
657
+ Atomic: atom,
658
+ Input: props.Input,
659
+ }),
660
+ Input: props.Input,
661
+ }),
662
+ Combined: false,
663
+ })
664
+ case "string":
665
+ binaries = append(binaries, CheckerProgrammer_IBinary{
666
+ Expression: props.Config.Atomist(CheckerProgrammer_AtomistProps{
667
+ Explore: props.Explore,
668
+ Entry: nativeiterate.Check_string(nativeiterate.Check_stringProps{
669
+ Context: props.Context,
670
+ Atomic: atom,
671
+ Input: props.Input,
672
+ }),
673
+ Input: props.Input,
674
+ }),
675
+ Combined: false,
676
+ })
677
+ default:
678
+ add(struct {
679
+ Exact bool
680
+ Left *shimast.Expression
681
+ Right *shimast.Expression
682
+ }{
683
+ Exact: true,
684
+ Left: checkerProgrammer_factory.NewStringLiteral(atom.Type, shimast.TokenFlagsNone),
685
+ Right: nativefactories.ValueFactory.TYPEOF(props.Input),
686
+ })
687
+ }
688
+ }
689
+
690
+ if len(props.Metadata.Templates) != 0 && nativehelpers.AtomicPredicator.Template(props.Metadata) {
691
+ binaries = append(binaries, CheckerProgrammer_IBinary{
692
+ Expression: props.Config.Atomist(CheckerProgrammer_AtomistProps{
693
+ Explore: props.Explore,
694
+ Entry: nativeiterate.Check_template(nativeiterate.Check_templateProps{
695
+ Templates: props.Metadata.Templates,
696
+ Input: props.Input,
697
+ }),
698
+ Input: props.Input,
699
+ }),
700
+ Combined: false,
701
+ })
702
+ }
703
+
704
+ for _, native := range props.Metadata.Natives {
705
+ binaries = append(binaries, CheckerProgrammer_IBinary{
706
+ Expression: nativeiterate.Check_native(nativeiterate.Check_nativeProps{Name: native.Name, Input: props.Input}),
707
+ Combined: false,
708
+ })
709
+ }
710
+
711
+ instances := []checkerProgrammer_IInstance{}
712
+ prepare := func(next checkerProgrammer_IInstance) {
713
+ instances = append(instances, next)
714
+ }
715
+ if len(props.Metadata.Sets) != 0 {
716
+ body := (*shimast.Node)(nil)
717
+ any := false
718
+ names := []string{}
719
+ for _, elem := range props.Metadata.Sets {
720
+ names = append(names, "Set<"+elem.Value.GetName()+">")
721
+ if elem.Value.Any {
722
+ any = true
723
+ }
724
+ }
725
+ if any == false {
726
+ explore := props.Explore
727
+ explore.From = "array"
728
+ body = checkerProgrammer_explore_sets(checkerProgrammer_exploreSetsProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Sets: props.Metadata.Sets, Input: props.Input, Explore: explore})
729
+ }
730
+ prepare(checkerProgrammer_IInstance{
731
+ Head: nativeiterate.Check_native(nativeiterate.Check_nativeProps{Name: "Set", Input: props.Input}),
732
+ Expected: strings.Join(names, " | "),
733
+ Body: body,
734
+ })
735
+ }
736
+ if len(props.Metadata.Maps) != 0 {
737
+ body := (*shimast.Node)(nil)
738
+ any := false
739
+ names := []string{}
740
+ for _, elem := range props.Metadata.Maps {
741
+ names = append(names, "Map<"+elem.Key.GetName()+", "+elem.Value.GetName()+">")
742
+ if elem.Key.Any && elem.Value.Any {
743
+ any = true
744
+ }
745
+ }
746
+ if any == false {
747
+ explore := props.Explore
748
+ explore.From = "array"
749
+ body = checkerProgrammer_explore_maps(checkerProgrammer_exploreMapsProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Maps: props.Metadata.Maps, Input: props.Input, Explore: explore})
750
+ }
751
+ prepare(checkerProgrammer_IInstance{
752
+ Head: nativeiterate.Check_native(nativeiterate.Check_nativeProps{Name: "Map", Input: props.Input}),
753
+ Expected: strings.Join(names, " | "),
754
+ Body: body,
755
+ })
756
+ }
757
+
758
+ if len(props.Metadata.Tuples)+len(props.Metadata.Arrays) > 0 {
759
+ body := (*shimast.Node)(nil)
760
+ expected := []string{}
761
+ for _, tuple := range props.Metadata.Tuples {
762
+ expected = append(expected, tuple.Type.Name)
763
+ }
764
+ for _, array := range props.Metadata.Arrays {
765
+ expected = append(expected, array.GetName())
766
+ }
767
+ if len(props.Metadata.Arrays) == 0 {
768
+ explore := props.Explore
769
+ explore.From = "array"
770
+ if len(props.Metadata.Tuples) == 1 {
771
+ body = checkerProgrammer_decode_tuple(checkerProgrammer_decodeTupleProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Tuple: props.Metadata.Tuples[0], Input: props.Input, Explore: explore})
772
+ } else {
773
+ body = checkerProgrammer_explore_tuples(checkerProgrammer_exploreTuplesProps{Config: props.Config, Context: props.Context, Functor: props.Functor, Tuples: props.Metadata.Tuples, Input: props.Input, Explore: explore})
774
+ }
775
+ } else if checkerProgrammer_array_any(props.Metadata.Arrays) {
776
+ body = nil
777
+ } else if len(props.Metadata.Tuples) == 0 {
778
+ explore := props.Explore
779
+ explore.From = "array"
780
+ if len(props.Metadata.Arrays) == 1 {
781
+ body = checkerProgrammer_decode_array(checkerProgrammer_decodeArrayProps{Config: props.Config, Context: props.Context, Functor: props.Functor, Array: props.Metadata.Arrays[0], Input: props.Input, Explore: explore})
782
+ } else {
783
+ body = checkerProgrammer_explore_arrays(checkerProgrammer_exploreArraysProps{Config: props.Config, Context: props.Context, Functor: props.Functor, Arrays: props.Metadata.Arrays, Input: props.Input, Explore: explore})
784
+ }
785
+ } else {
786
+ body = checkerProgrammer_explore_arrays_and_tuples(checkerProgrammer_exploreArraysAndTuplesProps{Config: props.Config, Context: props.Context, Functor: props.Functor, Definitions: checkerProgrammer_array_tuple_definitions(props.Metadata.Arrays, props.Metadata.Tuples), Input: props.Input, Explore: props.Explore})
787
+ }
788
+ prepare(checkerProgrammer_IInstance{
789
+ Head: props.Config.Atomist(CheckerProgrammer_AtomistProps{
790
+ Explore: props.Explore,
791
+ Entry: nativehelpers.ICheckEntry{
792
+ Expected: strings.Join(expected, " | "),
793
+ Expression: nativefactories.ExpressionFactory.IsArray(props.Input),
794
+ Conditions: [][]nativehelpers.ICheckEntry_ICondition{},
795
+ },
796
+ Input: props.Input,
797
+ }),
798
+ Expected: strings.Join(expected, " | "),
799
+ Body: body,
800
+ })
801
+ }
802
+
803
+ if len(props.Metadata.Objects) > 0 {
804
+ checkArray := false
805
+ for _, obj := range props.Metadata.Objects {
806
+ all := true
807
+ for _, prop := range obj.Type.Properties {
808
+ if prop.Key.IsSoleLiteral() && prop.Value.IsRequired() {
809
+ all = false
810
+ break
811
+ }
812
+ }
813
+ if all {
814
+ checkArray = true
815
+ break
816
+ }
817
+ }
818
+ names := []string{}
819
+ for _, obj := range props.Metadata.Objects {
820
+ names = append(names, obj.Type.Name)
821
+ }
822
+ explore := props.Explore
823
+ explore.From = "object"
824
+ prepare(checkerProgrammer_IInstance{
825
+ Head: nativefactories.ExpressionFactory.IsObject(nativefactories.ExpressionFactory_IsObjectProps{
826
+ CheckNull: true,
827
+ CheckArray: checkArray,
828
+ Input: props.Input,
829
+ }),
830
+ Expected: strings.Join(names, " | "),
831
+ Body: checkerProgrammer_explore_objects(checkerProgrammer_exploreObjectsProps{
832
+ Config: props.Config, Functor: props.Functor, Metadata: props.Metadata, Input: props.Input, Explore: explore,
833
+ }),
834
+ })
835
+ }
836
+
837
+ if len(instances) != 0 {
838
+ transformer := func(instance checkerProgrammer_IInstance) CheckerProgrammer_IBinary {
839
+ if instance.Body != nil {
840
+ return CheckerProgrammer_IBinary{
841
+ Expression: checkerProgrammer_and(instance.Head, instance.Body),
842
+ Combined: true,
843
+ }
844
+ }
845
+ return CheckerProgrammer_IBinary{Expression: instance.Head, Combined: false}
846
+ }
847
+ if len(instances) == 1 {
848
+ instance := instances[0]
849
+ if instance.Body != nil {
850
+ binaries = append(binaries, CheckerProgrammer_IBinary{
851
+ Expression: props.Config.Combiner(CheckerProgrammer_CombinerProps{
852
+ Explore: props.Explore,
853
+ Logic: "and",
854
+ Input: props.Input,
855
+ Binaries: []CheckerProgrammer_IBinary{
856
+ {Expression: instance.Head, Combined: false},
857
+ {Expression: instance.Body, Combined: true},
858
+ },
859
+ Expected: props.Metadata.GetName(),
860
+ }),
861
+ Combined: true,
862
+ })
863
+ } else {
864
+ binaries = append(binaries, transformer(instance))
865
+ }
866
+ } else {
867
+ transformed := make([]CheckerProgrammer_IBinary, 0, len(instances))
868
+ for _, instance := range instances {
869
+ transformed = append(transformed, transformer(instance))
870
+ }
871
+ binaries = append(binaries, CheckerProgrammer_IBinary{
872
+ Expression: props.Config.Combiner(CheckerProgrammer_CombinerProps{
873
+ Explore: props.Explore,
874
+ Logic: "or",
875
+ Input: props.Input,
876
+ Binaries: transformed,
877
+ Expected: props.Metadata.GetName(),
878
+ }),
879
+ Combined: true,
880
+ })
881
+ }
882
+ }
883
+
884
+ if props.Metadata.Escaped != nil {
885
+ var expression *shimast.Node
886
+ if props.Metadata.Escaped.Original.Size() == 1 && len(props.Metadata.Escaped.Original.Natives) == 1 {
887
+ expression = nativeiterate.Check_native(nativeiterate.Check_nativeProps{Name: props.Metadata.Escaped.Original.Natives[0].Name, Input: props.Input})
888
+ } else {
889
+ expression = checkerProgrammer_and(
890
+ CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Metadata: props.Metadata.Escaped.Original, Input: props.Input, Explore: props.Explore}),
891
+ checkerProgrammer_and(
892
+ checkerProgrammer_decode_to_json(struct {
893
+ Input *shimast.Expression
894
+ CheckNull bool
895
+ }{Input: props.Input, CheckNull: false}),
896
+ checkerProgrammer_decode_escaped(checkerProgrammer_decodeEscapedProps{Config: props.Config, Context: props.Context, Functor: props.Functor, Metadata: props.Metadata.Escaped.Returns, Input: props.Input, Explore: props.Explore}),
897
+ ),
898
+ )
899
+ }
900
+ binaries = append(binaries, CheckerProgrammer_IBinary{Combined: false, Expression: expression})
901
+ }
902
+
903
+ if len(top) != 0 && len(binaries) != 0 {
904
+ next := append([]CheckerProgrammer_IBinary{}, top...)
905
+ next = append(next, CheckerProgrammer_IBinary{
906
+ Expression: props.Config.Combiner(CheckerProgrammer_CombinerProps{Explore: props.Explore, Logic: "or", Input: props.Input, Binaries: binaries, Expected: props.Metadata.GetName()}),
907
+ Combined: true,
908
+ })
909
+ return props.Config.Combiner(CheckerProgrammer_CombinerProps{Explore: props.Explore, Logic: "and", Input: props.Input, Binaries: next, Expected: props.Metadata.GetName()})
910
+ }
911
+ if len(binaries) != 0 {
912
+ return props.Config.Combiner(CheckerProgrammer_CombinerProps{Explore: props.Explore, Logic: "or", Input: props.Input, Binaries: binaries, Expected: props.Metadata.GetName()})
913
+ }
914
+ return props.Config.Success
915
+ }
916
+
917
+ func (checkerProgrammerNamespace) Decode_object(props CheckerProgrammer_DecodeObjectProps) *shimast.Node {
918
+ props.Object.Validated = true
919
+ return FeatureProgrammer.Decode_object(FeatureProgrammer_DecodeObjectProps{
920
+ Config: FeatureProgrammer_DecodeObjectConfig{
921
+ Prefix: props.Config.Prefix,
922
+ Path: props.Config.Path,
923
+ Trace: props.Config.Trace,
924
+ },
925
+ Functor: props.Functor,
926
+ Object: props.Object,
927
+ Input: props.Input,
928
+ Explore: props.Explore,
929
+ })
930
+ }
931
+
932
+ type checkerProgrammer_decodeArrayProps struct {
933
+ Config CheckerProgrammer_IConfig
934
+ Context nativecontext.ITypiaContext
935
+ Functor *nativehelpers.FunctionProgrammer
936
+ Array *nativemetadata.MetadataArray
937
+ Input *shimast.Expression
938
+ Explore CheckerProgrammer_IExplore
939
+ }
940
+
941
+ type checkerProgrammer_decodeArrayInlineProps = checkerProgrammer_decodeArrayProps
942
+
943
+ func checkerProgrammer_decode_array(props checkerProgrammer_decodeArrayProps) *shimast.Node {
944
+ if props.Array.Type.Recursive == false {
945
+ return checkerProgrammer_decode_array_inline(props)
946
+ }
947
+ arrayExplore := props.Explore
948
+ arrayExplore.Source = "function"
949
+ arrayExplore.From = "array"
950
+ index := 0
951
+ if props.Array.Type.Index != nil {
952
+ index = *props.Array.Type.Index
953
+ }
954
+ return checkerProgrammer_or(
955
+ checkerProgrammer_factory.NewCallExpression(
956
+ checkerProgrammer_factory.NewIdentifier(props.Functor.UseLocal(fmt.Sprintf("%sa%d", props.Config.Prefix, index))),
957
+ nil,
958
+ nil,
959
+ checkerProgrammer_factory.NewNodeList(FeatureProgrammer.ArgumentsArray(FeatureProgrammer_ArgumentsArrayProps{
960
+ Config: FeatureProgrammer_ArgumentsArrayConfig{Path: props.Config.Path, Trace: props.Config.Trace},
961
+ Explore: arrayExplore,
962
+ Input: props.Input,
963
+ })),
964
+ shimast.NodeFlagsNone,
965
+ ),
966
+ props.Config.Joiner.Failure(CheckerProgrammer_JoinerFailureProps{
967
+ Input: props.Input,
968
+ Expected: props.Array.Type.Name,
969
+ Explore: &arrayExplore,
970
+ }),
971
+ )
972
+ }
973
+
974
+ func checkerProgrammer_decode_array_inline(props checkerProgrammer_decodeArrayInlineProps) *shimast.Node {
975
+ length := nativeiterate.Check_array_length(nativeiterate.Check_array_lengthProps{
976
+ Context: props.Context,
977
+ Array: props.Array,
978
+ Input: props.Input,
979
+ })
980
+ main := FeatureProgrammer.Decode_array(FeatureProgrammer_DecodeArrayProps{
981
+ Config: FeatureProgrammer_DecodeArrayConfig{
982
+ Prefix: props.Config.Prefix,
983
+ Trace: props.Config.Trace,
984
+ Path: props.Config.Path,
985
+ Decoder: func(next FeatureProgrammer_DecoderProps) *shimast.Node {
986
+ return CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{
987
+ Context: props.Context,
988
+ Config: props.Config,
989
+ Functor: props.Functor,
990
+ Input: next.Input,
991
+ Metadata: next.Metadata,
992
+ Explore: next.Explore,
993
+ })
994
+ },
995
+ },
996
+ Functor: props.Functor,
997
+ Combiner: func(next struct {
998
+ Input *shimast.Expression
999
+ Arrow *shimast.Node
1000
+ }) *shimast.Node {
1001
+ return props.Config.Joiner.Array(CheckerProgrammer_JoinerArrayProps{
1002
+ Input: next.Input,
1003
+ Arrow: next.Arrow,
1004
+ })
1005
+ },
1006
+ Array: props.Array,
1007
+ Input: props.Input,
1008
+ Explore: props.Explore,
1009
+ })
1010
+ if length.Expression == nil && len(length.Conditions) == 0 {
1011
+ return main
1012
+ }
1013
+ return checkerProgrammer_and(
1014
+ props.Config.Atomist(CheckerProgrammer_AtomistProps{
1015
+ Explore: props.Explore,
1016
+ Input: props.Input,
1017
+ Entry: length,
1018
+ }),
1019
+ main,
1020
+ )
1021
+ }
1022
+
1023
+ type checkerProgrammer_decodeTupleProps struct {
1024
+ Context nativecontext.ITypiaContext
1025
+ Config CheckerProgrammer_IConfig
1026
+ Functor *nativehelpers.FunctionProgrammer
1027
+ Tuple *nativemetadata.MetadataTuple
1028
+ Input *shimast.Expression
1029
+ Explore CheckerProgrammer_IExplore
1030
+ }
1031
+
1032
+ type checkerProgrammer_decodeTupleInlineProps struct {
1033
+ Context nativecontext.ITypiaContext
1034
+ Config CheckerProgrammer_IConfig
1035
+ Functor *nativehelpers.FunctionProgrammer
1036
+ Tuple *nativemetadata.MetadataTupleType
1037
+ Input *shimast.Expression
1038
+ Explore CheckerProgrammer_IExplore
1039
+ }
1040
+
1041
+ func checkerProgrammer_decode_tuple(props checkerProgrammer_decodeTupleProps) *shimast.Node {
1042
+ if props.Tuple.Type.Recursive == false {
1043
+ return checkerProgrammer_decode_tuple_inline(checkerProgrammer_decodeTupleInlineProps{
1044
+ Context: props.Context,
1045
+ Config: props.Config,
1046
+ Functor: props.Functor,
1047
+ Tuple: props.Tuple.Type,
1048
+ Input: props.Input,
1049
+ Explore: props.Explore,
1050
+ })
1051
+ }
1052
+ arrayExplore := props.Explore
1053
+ arrayExplore.Source = "function"
1054
+ arrayExplore.From = "array"
1055
+ index := 0
1056
+ if props.Tuple.Type.Index != nil {
1057
+ index = *props.Tuple.Type.Index
1058
+ }
1059
+ return checkerProgrammer_or(
1060
+ checkerProgrammer_factory.NewCallExpression(
1061
+ checkerProgrammer_factory.NewIdentifier(props.Functor.UseLocal(fmt.Sprintf("%st%d", props.Config.Prefix, index))),
1062
+ nil,
1063
+ nil,
1064
+ checkerProgrammer_factory.NewNodeList(FeatureProgrammer.ArgumentsArray(FeatureProgrammer_ArgumentsArrayProps{
1065
+ Config: FeatureProgrammer_ArgumentsArrayConfig{Path: props.Config.Path, Trace: props.Config.Trace},
1066
+ Explore: arrayExplore,
1067
+ Input: props.Input,
1068
+ })),
1069
+ shimast.NodeFlagsNone,
1070
+ ),
1071
+ props.Config.Joiner.Failure(CheckerProgrammer_JoinerFailureProps{
1072
+ Input: props.Input,
1073
+ Expected: props.Tuple.Type.Name,
1074
+ Explore: &arrayExplore,
1075
+ }),
1076
+ )
1077
+ }
1078
+
1079
+ func checkerProgrammer_decode_tuple_inline(props checkerProgrammer_decodeTupleInlineProps) *shimast.Node {
1080
+ binaries := []*shimast.Node{}
1081
+ for index, metadata := range props.Tuple.Elements {
1082
+ if metadata.Rest != nil {
1083
+ continue
1084
+ }
1085
+ explore := props.Explore
1086
+ explore.From = "array"
1087
+ if len(props.Explore.Postfix) != 0 {
1088
+ explore.Postfix = checkerProgrammer_postfix_of_tuple(props.Explore.Postfix) + fmt.Sprintf("[%d]\"", index)
1089
+ } else {
1090
+ explore.Postfix = fmt.Sprintf("\"[%d]\"", index)
1091
+ }
1092
+ binaries = append(binaries, CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{
1093
+ Context: props.Context,
1094
+ Config: props.Config,
1095
+ Functor: props.Functor,
1096
+ Input: checkerProgrammer_factory.NewElementAccessExpression(props.Input, nil, nativefactories.ExpressionFactory.Number(index), shimast.NodeFlagsNone),
1097
+ Metadata: metadata,
1098
+ Explore: explore,
1099
+ }))
1100
+ }
1101
+
1102
+ var rest *shimast.Node
1103
+ if len(props.Tuple.Elements) != 0 && props.Tuple.Elements[len(props.Tuple.Elements)-1].Rest != nil {
1104
+ last := props.Tuple.Elements[len(props.Tuple.Elements)-1]
1105
+ explore := props.Explore
1106
+ start := len(props.Tuple.Elements) - 1
1107
+ explore.Start = &start
1108
+ rest = CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{
1109
+ Config: props.Config,
1110
+ Context: props.Context,
1111
+ Functor: props.Functor,
1112
+ Input: checkerProgrammer_factory.NewCallExpression(
1113
+ nativefactories.IdentifierFactory.Access(props.Input, "slice"),
1114
+ nil,
1115
+ nil,
1116
+ checkerProgrammer_factory.NewNodeList([]*shimast.Node{nativefactories.ExpressionFactory.Number(len(props.Tuple.Elements) - 1)}),
1117
+ shimast.NodeFlagsNone,
1118
+ ),
1119
+ Metadata: checkerProgrammer_wrap_metadata_rest_tuple(last.Rest),
1120
+ Explore: explore,
1121
+ })
1122
+ }
1123
+
1124
+ arrayLength := nativefactories.IdentifierFactory.Access(props.Input, "length")
1125
+ entries := []CheckerProgrammer_IBinary{}
1126
+ if rest == nil {
1127
+ allRequired := true
1128
+ required := 0
1129
+ for _, elem := range props.Tuple.Elements {
1130
+ if elem.Optional == false {
1131
+ required++
1132
+ } else {
1133
+ allRequired = false
1134
+ }
1135
+ }
1136
+ if allRequired {
1137
+ entries = append(entries, CheckerProgrammer_IBinary{
1138
+ Combined: false,
1139
+ Expression: checkerProgrammer_equal(
1140
+ arrayLength,
1141
+ nativefactories.ExpressionFactory.Number(len(props.Tuple.Elements)),
1142
+ ),
1143
+ })
1144
+ } else {
1145
+ entries = append(entries, CheckerProgrammer_IBinary{
1146
+ Combined: false,
1147
+ Expression: checkerProgrammer_and(
1148
+ checkerProgrammer_binary(nativefactories.ExpressionFactory.Number(required), shimast.KindLessThanEqualsToken, arrayLength),
1149
+ checkerProgrammer_binary(nativefactories.ExpressionFactory.Number(len(props.Tuple.Elements)), shimast.KindGreaterThanEqualsToken, arrayLength),
1150
+ ),
1151
+ })
1152
+ }
1153
+ }
1154
+ if props.Config.Joiner.Tuple != nil {
1155
+ entries = append(entries, CheckerProgrammer_IBinary{Expression: props.Config.Joiner.Tuple(binaries), Combined: true})
1156
+ } else {
1157
+ for _, expr := range binaries {
1158
+ entries = append(entries, CheckerProgrammer_IBinary{Expression: expr, Combined: true})
1159
+ }
1160
+ }
1161
+ if rest != nil {
1162
+ entries = append(entries, CheckerProgrammer_IBinary{Expression: rest, Combined: true})
1163
+ }
1164
+ names := make([]string, 0, len(props.Tuple.Elements))
1165
+ for _, elem := range props.Tuple.Elements {
1166
+ names = append(names, elem.GetName())
1167
+ }
1168
+ return props.Config.Combiner(CheckerProgrammer_CombinerProps{
1169
+ Explore: props.Explore,
1170
+ Logic: "and",
1171
+ Input: props.Input,
1172
+ Binaries: entries,
1173
+ Expected: "[" + strings.Join(names, ", ") + "]",
1174
+ })
1175
+ }
1176
+
1177
+ type checkerProgrammer_decodeEscapedProps struct {
1178
+ Config CheckerProgrammer_IConfig
1179
+ Context nativecontext.ITypiaContext
1180
+ Functor *nativehelpers.FunctionProgrammer
1181
+ Metadata *nativemetadata.MetadataSchema
1182
+ Input *shimast.Expression
1183
+ Explore CheckerProgrammer_IExplore
1184
+ }
1185
+
1186
+ func checkerProgrammer_decode_escaped(props checkerProgrammer_decodeEscapedProps) *shimast.Node {
1187
+ return checkerProgrammer_factory.NewCallExpression(
1188
+ checkerProgrammer_factory.NewParenthesizedExpression(
1189
+ checkerProgrammer_factory.NewArrowFunction(
1190
+ nil,
1191
+ nil,
1192
+ checkerProgrammer_factory.NewNodeList([]*shimast.Node{
1193
+ nativefactories.IdentifierFactory.Parameter("input", nativefactories.TypeFactory.Keyword("any"), nil),
1194
+ }),
1195
+ nil,
1196
+ nil,
1197
+ checkerProgrammer_factory.NewToken(shimast.KindEqualsGreaterThanToken),
1198
+ CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{
1199
+ Context: props.Context,
1200
+ Config: props.Config,
1201
+ Functor: props.Functor,
1202
+ Metadata: props.Metadata,
1203
+ Input: checkerProgrammer_factory.NewIdentifier("input"),
1204
+ Explore: props.Explore,
1205
+ }),
1206
+ ),
1207
+ ),
1208
+ nil,
1209
+ nil,
1210
+ checkerProgrammer_factory.NewNodeList([]*shimast.Node{
1211
+ checkerProgrammer_factory.NewCallExpression(
1212
+ nativefactories.IdentifierFactory.Access(props.Input, "toJSON"),
1213
+ nil,
1214
+ nil,
1215
+ nil,
1216
+ shimast.NodeFlagsNone,
1217
+ ),
1218
+ }),
1219
+ shimast.NodeFlagsNone,
1220
+ )
1221
+ }
1222
+
1223
+ type checkerProgrammer_exploreSetsProps struct {
1224
+ Context nativecontext.ITypiaContext
1225
+ Config CheckerProgrammer_IConfig
1226
+ Functor *nativehelpers.FunctionProgrammer
1227
+ Sets []*nativemetadata.MetadataSet
1228
+ Input *shimast.Expression
1229
+ Explore CheckerProgrammer_IExplore
1230
+ }
1231
+
1232
+ func checkerProgrammer_explore_sets(props checkerProgrammer_exploreSetsProps) *shimast.Node {
1233
+ return checkerProgrammer_factory.NewCallExpression(
1234
+ nativehelpers.UnionExplorer.Set(nativehelpers.UnionExplorer_SetProps{
1235
+ Config: nativehelpers.UnionExplorer_ArrayLikeConfig{
1236
+ Checker: func(v nativehelpers.UnionExplorer_ArrayLikeCheckerProps) *shimast.Node {
1237
+ return CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{
1238
+ Context: props.Context,
1239
+ Config: props.Config,
1240
+ Functor: props.Functor,
1241
+ Input: v.Input,
1242
+ Metadata: v.Definition.(*nativemetadata.MetadataSchema),
1243
+ Explore: featureProgrammer_as_explore(v.Explore),
1244
+ })
1245
+ },
1246
+ Decoder: func(v nativehelpers.UnionExplorer_ArrayLikeDecoderProps) *shimast.Node {
1247
+ return checkerProgrammer_decode_array(checkerProgrammer_decodeArrayProps{
1248
+ Config: props.Config, Context: props.Context, Functor: props.Functor, Array: v.Definition.(*nativemetadata.MetadataArray), Input: v.Input, Explore: featureProgrammer_as_explore(v.Explore),
1249
+ })
1250
+ },
1251
+ Empty: props.Config.Success,
1252
+ Success: props.Config.Success,
1253
+ Failure: func(v nativehelpers.UnionExplorer_ArrayLikeFailureProps) *shimast.Node {
1254
+ explore := featureProgrammer_as_explore(v.Explore)
1255
+ return checkerProgrammer_factory.NewReturnStatement(props.Config.Joiner.Failure(CheckerProgrammer_JoinerFailureProps{Input: v.Input, Expected: v.Expected, Explore: &explore}))
1256
+ },
1257
+ },
1258
+ Parameters: []*shimast.Node{},
1259
+ Input: props.Input,
1260
+ Sets: props.Sets,
1261
+ Explore: props.Explore,
1262
+ }),
1263
+ nil,
1264
+ nil,
1265
+ nil,
1266
+ shimast.NodeFlagsNone,
1267
+ )
1268
+ }
1269
+
1270
+ type checkerProgrammer_exploreMapsProps struct {
1271
+ Context nativecontext.ITypiaContext
1272
+ Config CheckerProgrammer_IConfig
1273
+ Functor *nativehelpers.FunctionProgrammer
1274
+ Input *shimast.Expression
1275
+ Maps []*nativemetadata.MetadataMap
1276
+ Explore CheckerProgrammer_IExplore
1277
+ }
1278
+
1279
+ func checkerProgrammer_explore_maps(props checkerProgrammer_exploreMapsProps) *shimast.Node {
1280
+ return checkerProgrammer_factory.NewCallExpression(
1281
+ nativehelpers.UnionExplorer.Map(nativehelpers.UnionExplorer_MapProps{
1282
+ Config: nativehelpers.UnionExplorer_ArrayLikeConfig{
1283
+ Checker: func(v nativehelpers.UnionExplorer_ArrayLikeCheckerProps) *shimast.Node {
1284
+ pair := v.Definition.([]*nativemetadata.MetadataSchema)
1285
+ explore := featureProgrammer_as_explore(v.Explore)
1286
+ leftExplore := explore
1287
+ leftExplore.Postfix = explore.Postfix + "[0]"
1288
+ rightExplore := explore
1289
+ rightExplore.Postfix = explore.Postfix + "[1]"
1290
+ return checkerProgrammer_and(
1291
+ CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{
1292
+ Config: props.Config, Context: props.Context, Functor: props.Functor,
1293
+ Input: checkerProgrammer_factory.NewElementAccessExpression(v.Input, nil, nativefactories.ExpressionFactory.Number(0), shimast.NodeFlagsNone), Metadata: pair[0], Explore: leftExplore,
1294
+ }),
1295
+ CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{
1296
+ Config: props.Config, Context: props.Context, Functor: props.Functor,
1297
+ Input: checkerProgrammer_factory.NewElementAccessExpression(v.Input, nil, nativefactories.ExpressionFactory.Number(1), shimast.NodeFlagsNone), Metadata: pair[1], Explore: rightExplore,
1298
+ }),
1299
+ )
1300
+ },
1301
+ Decoder: func(v nativehelpers.UnionExplorer_ArrayLikeDecoderProps) *shimast.Node {
1302
+ return checkerProgrammer_decode_array(checkerProgrammer_decodeArrayProps{
1303
+ Context: props.Context, Config: props.Config, Functor: props.Functor, Array: v.Definition.(*nativemetadata.MetadataArray), Input: v.Input, Explore: featureProgrammer_as_explore(v.Explore),
1304
+ })
1305
+ },
1306
+ Empty: props.Config.Success,
1307
+ Success: props.Config.Success,
1308
+ Failure: func(v nativehelpers.UnionExplorer_ArrayLikeFailureProps) *shimast.Node {
1309
+ explore := featureProgrammer_as_explore(v.Explore)
1310
+ return checkerProgrammer_factory.NewReturnStatement(props.Config.Joiner.Failure(CheckerProgrammer_JoinerFailureProps{Input: v.Input, Expected: v.Expected, Explore: &explore}))
1311
+ },
1312
+ },
1313
+ Parameters: []*shimast.Node{},
1314
+ Input: props.Input,
1315
+ Maps: props.Maps,
1316
+ Explore: props.Explore,
1317
+ }),
1318
+ nil,
1319
+ nil,
1320
+ nil,
1321
+ shimast.NodeFlagsNone,
1322
+ )
1323
+ }
1324
+
1325
+ type checkerProgrammer_exploreTuplesProps struct {
1326
+ Config CheckerProgrammer_IConfig
1327
+ Context nativecontext.ITypiaContext
1328
+ Functor *nativehelpers.FunctionProgrammer
1329
+ Tuples []*nativemetadata.MetadataTuple
1330
+ Input *shimast.Expression
1331
+ Explore CheckerProgrammer_IExplore
1332
+ }
1333
+
1334
+ type checkerProgrammer_exploreArraysProps struct {
1335
+ Config CheckerProgrammer_IConfig
1336
+ Context nativecontext.ITypiaContext
1337
+ Functor *nativehelpers.FunctionProgrammer
1338
+ Arrays []*nativemetadata.MetadataArray
1339
+ Input *shimast.Expression
1340
+ Explore CheckerProgrammer_IExplore
1341
+ }
1342
+
1343
+ type checkerProgrammer_exploreArraysAndTuplesProps struct {
1344
+ Config CheckerProgrammer_IConfig
1345
+ Context nativecontext.ITypiaContext
1346
+ Functor *nativehelpers.FunctionProgrammer
1347
+ Definitions []any
1348
+ Input *shimast.Expression
1349
+ Explore CheckerProgrammer_IExplore
1350
+ }
1351
+
1352
+ func checkerProgrammer_explore_tuples(props checkerProgrammer_exploreTuplesProps) *shimast.Node {
1353
+ definitions := make([]any, 0, len(props.Tuples))
1354
+ for _, tuple := range props.Tuples {
1355
+ definitions = append(definitions, tuple)
1356
+ }
1357
+ return checkerProgrammer_explore_array_like_union_types(checkerProgrammer_exploreArrayLikeUnionTypesProps{
1358
+ Config: props.Config, Functor: props.Functor, Definitions: definitions, Input: props.Input, Explore: props.Explore,
1359
+ Factory: func(next checkerProgrammer_exploreArrayLikeUnionTypesFactoryProps) *shimast.Node {
1360
+ tuples := make([]*nativemetadata.MetadataTuple, 0, len(next.Definitions))
1361
+ for _, value := range next.Definitions {
1362
+ tuples = append(tuples, value.(*nativemetadata.MetadataTuple))
1363
+ }
1364
+ return nativehelpers.UnionExplorer.Tuple(nativehelpers.UnionExplorer_TupleProps{
1365
+ Config: checkerProgrammer_array_like_config(props.Context, props.Config, props.Functor,
1366
+ func(v nativehelpers.UnionExplorer_ArrayLikeCheckerProps) *shimast.Node {
1367
+ return checkerProgrammer_decode_tuple(checkerProgrammer_decodeTupleProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Input: v.Input, Tuple: v.Definition.(*nativemetadata.MetadataTuple), Explore: featureProgrammer_as_explore(v.Explore)})
1368
+ },
1369
+ func(v nativehelpers.UnionExplorer_ArrayLikeDecoderProps) *shimast.Node {
1370
+ return checkerProgrammer_decode_tuple(checkerProgrammer_decodeTupleProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Tuple: v.Definition.(*nativemetadata.MetadataTuple), Input: v.Input, Explore: featureProgrammer_as_explore(v.Explore)})
1371
+ }),
1372
+ Parameters: next.Parameters,
1373
+ Tuples: tuples,
1374
+ Input: next.Input,
1375
+ Explore: next.Explore,
1376
+ })
1377
+ },
1378
+ })
1379
+ }
1380
+
1381
+ func checkerProgrammer_explore_arrays(props checkerProgrammer_exploreArraysProps) *shimast.Node {
1382
+ definitions := make([]any, 0, len(props.Arrays))
1383
+ for _, array := range props.Arrays {
1384
+ definitions = append(definitions, array)
1385
+ }
1386
+ return checkerProgrammer_explore_array_like_union_types(checkerProgrammer_exploreArrayLikeUnionTypesProps{
1387
+ Config: props.Config, Functor: props.Functor, Definitions: definitions, Input: props.Input, Explore: props.Explore,
1388
+ Factory: func(next checkerProgrammer_exploreArrayLikeUnionTypesFactoryProps) *shimast.Node {
1389
+ arrays := make([]*nativemetadata.MetadataArray, 0, len(next.Definitions))
1390
+ for _, value := range next.Definitions {
1391
+ arrays = append(arrays, value.(*nativemetadata.MetadataArray))
1392
+ }
1393
+ return nativehelpers.UnionExplorer.Array(nativehelpers.UnionExplorer_ArrayProps{
1394
+ Config: checkerProgrammer_array_like_config(props.Context, props.Config, props.Functor,
1395
+ func(v nativehelpers.UnionExplorer_ArrayLikeCheckerProps) *shimast.Node {
1396
+ return CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Metadata: v.Definition.(*nativemetadata.MetadataSchema), Input: v.Input, Explore: featureProgrammer_as_explore(v.Explore)})
1397
+ },
1398
+ func(v nativehelpers.UnionExplorer_ArrayLikeDecoderProps) *shimast.Node {
1399
+ return checkerProgrammer_decode_array(checkerProgrammer_decodeArrayProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Array: v.Definition.(*nativemetadata.MetadataArray), Input: v.Input, Explore: featureProgrammer_as_explore(v.Explore)})
1400
+ }),
1401
+ Parameters: next.Parameters,
1402
+ Arrays: arrays,
1403
+ Input: next.Input,
1404
+ Explore: next.Explore,
1405
+ })
1406
+ },
1407
+ })
1408
+ }
1409
+
1410
+ func checkerProgrammer_explore_arrays_and_tuples(props checkerProgrammer_exploreArraysAndTuplesProps) *shimast.Node {
1411
+ return checkerProgrammer_explore_array_like_union_types(checkerProgrammer_exploreArrayLikeUnionTypesProps{
1412
+ Config: props.Config, Functor: props.Functor, Definitions: props.Definitions, Input: props.Input, Explore: props.Explore,
1413
+ Factory: func(next checkerProgrammer_exploreArrayLikeUnionTypesFactoryProps) *shimast.Node {
1414
+ return nativehelpers.UnionExplorer.Array_or_tuple(nativehelpers.UnionExplorer_ArrayOrTupleProps{
1415
+ Config: checkerProgrammer_array_like_config(props.Context, props.Config, props.Functor,
1416
+ func(v nativehelpers.UnionExplorer_ArrayLikeCheckerProps) *shimast.Node {
1417
+ if tuple, ok := v.Definition.(*nativemetadata.MetadataTuple); ok {
1418
+ return checkerProgrammer_decode_tuple(checkerProgrammer_decodeTupleProps{Config: props.Config, Context: props.Context, Functor: props.Functor, Input: v.Input, Tuple: tuple, Explore: featureProgrammer_as_explore(v.Explore)})
1419
+ }
1420
+ expected := []string{}
1421
+ for _, elem := range props.Definitions {
1422
+ switch x := elem.(type) {
1423
+ case *nativemetadata.MetadataArray:
1424
+ expected = append(expected, x.GetName())
1425
+ case *nativemetadata.MetadataTuple:
1426
+ expected = append(expected, x.Type.Name)
1427
+ }
1428
+ }
1429
+ return props.Config.Atomist(CheckerProgrammer_AtomistProps{
1430
+ Explore: featureProgrammer_as_explore(v.Explore),
1431
+ Entry: nativehelpers.ICheckEntry{
1432
+ Expected: strings.Join(expected, " | "),
1433
+ Expression: CheckerProgrammer.Decode(CheckerProgrammer_DecodeProps{Functor: props.Functor, Context: props.Context, Config: props.Config, Metadata: v.Definition.(*nativemetadata.MetadataSchema), Input: v.Input, Explore: featureProgrammer_as_explore(v.Explore)}),
1434
+ Conditions: [][]nativehelpers.ICheckEntry_ICondition{},
1435
+ },
1436
+ Input: v.Container,
1437
+ })
1438
+ },
1439
+ func(v nativehelpers.UnionExplorer_ArrayLikeDecoderProps) *shimast.Node {
1440
+ if tuple, ok := v.Definition.(*nativemetadata.MetadataTuple); ok {
1441
+ return checkerProgrammer_decode_tuple(checkerProgrammer_decodeTupleProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Input: v.Input, Tuple: tuple, Explore: featureProgrammer_as_explore(v.Explore)})
1442
+ }
1443
+ return checkerProgrammer_decode_array(checkerProgrammer_decodeArrayProps{Context: props.Context, Config: props.Config, Functor: props.Functor, Input: v.Input, Array: v.Definition.(*nativemetadata.MetadataArray), Explore: featureProgrammer_as_explore(v.Explore)})
1444
+ }),
1445
+ Parameters: next.Parameters,
1446
+ Definitions: next.Definitions,
1447
+ Input: next.Input,
1448
+ Explore: next.Explore,
1449
+ })
1450
+ },
1451
+ })
1452
+ }
1453
+
1454
+ type checkerProgrammer_exploreArrayLikeUnionTypesFactoryProps struct {
1455
+ Parameters []*shimast.Node
1456
+ Definitions []any
1457
+ Input *shimast.Expression
1458
+ Explore CheckerProgrammer_IExplore
1459
+ }
1460
+
1461
+ type checkerProgrammer_exploreArrayLikeUnionTypesProps struct {
1462
+ Config CheckerProgrammer_IConfig
1463
+ Functor *nativehelpers.FunctionProgrammer
1464
+ Factory func(next checkerProgrammer_exploreArrayLikeUnionTypesFactoryProps) *shimast.Node
1465
+ Input *shimast.Expression
1466
+ Definitions []any
1467
+ Explore CheckerProgrammer_IExplore
1468
+ }
1469
+
1470
+ func checkerProgrammer_explore_array_like_union_types(props checkerProgrammer_exploreArrayLikeUnionTypesProps) *shimast.Node {
1471
+ arrayExplore := props.Explore
1472
+ arrayExplore.Source = "function"
1473
+ arrayExplore.From = "array"
1474
+ names := checkerProgrammer_definition_names(props.Definitions)
1475
+ return checkerProgrammer_or(
1476
+ checkerProgrammer_factory.NewCallExpression(
1477
+ checkerProgrammer_factory.NewIdentifier(
1478
+ props.Functor.EmplaceUnion(
1479
+ props.Config.Prefix,
1480
+ strings.Join(names, " | "),
1481
+ func() *shimast.Node {
1482
+ nextExplore := arrayExplore
1483
+ nextExplore.Postfix = ""
1484
+ return props.Factory(checkerProgrammer_exploreArrayLikeUnionTypesFactoryProps{
1485
+ Parameters: FeatureProgrammer.ParameterDeclarations(FeatureProgrammer_ParameterDeclarationsProps{
1486
+ Config: FeatureProgrammer_ParameterConfig{Path: props.Config.Path, Trace: props.Config.Trace},
1487
+ Type: nativefactories.TypeFactory.Keyword("any"),
1488
+ Input: checkerProgrammer_factory.NewIdentifier("input"),
1489
+ }),
1490
+ Definitions: props.Definitions,
1491
+ Explore: nextExplore,
1492
+ Input: checkerProgrammer_factory.NewIdentifier("input"),
1493
+ })
1494
+ },
1495
+ ),
1496
+ ),
1497
+ nil,
1498
+ nil,
1499
+ checkerProgrammer_factory.NewNodeList(FeatureProgrammer.ArgumentsArray(FeatureProgrammer_ArgumentsArrayProps{
1500
+ Config: FeatureProgrammer_ArgumentsArrayConfig{Path: props.Config.Path, Trace: props.Config.Trace},
1501
+ Input: props.Input,
1502
+ Explore: props.Explore,
1503
+ })),
1504
+ shimast.NodeFlagsNone,
1505
+ ),
1506
+ props.Config.Joiner.Failure(CheckerProgrammer_JoinerFailureProps{
1507
+ Input: props.Input,
1508
+ Expected: strings.Join(names, " | "),
1509
+ Explore: &arrayExplore,
1510
+ }),
1511
+ )
1512
+ }
1513
+
1514
+ type checkerProgrammer_exploreObjectsProps struct {
1515
+ Config CheckerProgrammer_IConfig
1516
+ Functor *nativehelpers.FunctionProgrammer
1517
+ Input *shimast.Expression
1518
+ Metadata *nativemetadata.MetadataSchema
1519
+ Explore CheckerProgrammer_IExplore
1520
+ }
1521
+
1522
+ func checkerProgrammer_explore_objects(props checkerProgrammer_exploreObjectsProps) *shimast.Node {
1523
+ if len(props.Metadata.Objects) == 1 {
1524
+ return CheckerProgrammer.Decode_object(CheckerProgrammer_DecodeObjectProps{
1525
+ Config: props.Config,
1526
+ Functor: props.Functor,
1527
+ Object: props.Metadata.Objects[0].Type,
1528
+ Input: props.Input,
1529
+ Explore: props.Explore,
1530
+ })
1531
+ }
1532
+ index := 0
1533
+ if props.Metadata.Union_index != nil {
1534
+ index = *props.Metadata.Union_index
1535
+ }
1536
+ return checkerProgrammer_factory.NewCallExpression(
1537
+ checkerProgrammer_factory.NewIdentifier(props.Functor.UseLocal(fmt.Sprintf("%su%d", props.Config.Prefix, index))),
1538
+ nil,
1539
+ nil,
1540
+ checkerProgrammer_factory.NewNodeList(FeatureProgrammer.ArgumentsArray(FeatureProgrammer_ArgumentsArrayProps{
1541
+ Config: FeatureProgrammer_ArgumentsArrayConfig{Path: props.Config.Path, Trace: props.Config.Trace},
1542
+ Input: props.Input,
1543
+ Explore: props.Explore,
1544
+ })),
1545
+ shimast.NodeFlagsNone,
1546
+ )
1547
+ }
1548
+
1549
+ func checkerProgrammer_array_like_config(context nativecontext.ITypiaContext, config CheckerProgrammer_IConfig, functor *nativehelpers.FunctionProgrammer, checker func(v nativehelpers.UnionExplorer_ArrayLikeCheckerProps) *shimast.Node, decoder func(v nativehelpers.UnionExplorer_ArrayLikeDecoderProps) *shimast.Node) nativehelpers.UnionExplorer_ArrayLikeConfig {
1550
+ return nativehelpers.UnionExplorer_ArrayLikeConfig{
1551
+ Checker: checker,
1552
+ Decoder: decoder,
1553
+ Empty: config.Success,
1554
+ Success: config.Success,
1555
+ Failure: func(v nativehelpers.UnionExplorer_ArrayLikeFailureProps) *shimast.Node {
1556
+ explore := featureProgrammer_as_explore(v.Explore)
1557
+ return checkerProgrammer_factory.NewReturnStatement(config.Joiner.Failure(CheckerProgrammer_JoinerFailureProps{
1558
+ Input: v.Input,
1559
+ Expected: v.Expected,
1560
+ Explore: &explore,
1561
+ }))
1562
+ },
1563
+ }
1564
+ }
1565
+
1566
+ type checkerProgrammer_IInstance struct {
1567
+ Head *shimast.Node
1568
+ Body *shimast.Node
1569
+ Expected string
1570
+ }
1571
+
1572
+ func checkerProgrammer_create_add(binaries *[]CheckerProgrammer_IBinary, input *shimast.Expression, exact bool, left *shimast.Expression, right *shimast.Expression) {
1573
+ if right == nil {
1574
+ right = input
1575
+ }
1576
+ operator := shimast.KindExclamationEqualsEqualsToken
1577
+ if exact {
1578
+ operator = shimast.KindEqualsEqualsEqualsToken
1579
+ }
1580
+ *binaries = append(*binaries, CheckerProgrammer_IBinary{
1581
+ Expression: checkerProgrammer_binary(left, operator, right),
1582
+ Combined: false,
1583
+ })
1584
+ }
1585
+
1586
+ func checkerProgrammer_binary(left *shimast.Expression, operator shimast.Kind, right *shimast.Expression) *shimast.Node {
1587
+ return checkerProgrammer_factory.NewBinaryExpression(
1588
+ nil,
1589
+ left,
1590
+ nil,
1591
+ checkerProgrammer_factory.NewToken(operator),
1592
+ right,
1593
+ )
1594
+ }
1595
+
1596
+ func checkerProgrammer_and(x *shimast.Expression, y *shimast.Expression) *shimast.Node {
1597
+ return checkerProgrammer_binary(x, shimast.KindAmpersandAmpersandToken, y)
1598
+ }
1599
+
1600
+ func checkerProgrammer_or(x *shimast.Expression, y *shimast.Expression) *shimast.Node {
1601
+ return checkerProgrammer_binary(x, shimast.KindBarBarToken, y)
1602
+ }
1603
+
1604
+ func checkerProgrammer_equal(x *shimast.Expression, y *shimast.Expression) *shimast.Node {
1605
+ return checkerProgrammer_binary(x, shimast.KindEqualsEqualsEqualsToken, y)
1606
+ }
1607
+
1608
+ func checkerProgrammer_array_any(arrays []*nativemetadata.MetadataArray) bool {
1609
+ for _, elem := range arrays {
1610
+ if elem.Type.Value.Any {
1611
+ return true
1612
+ }
1613
+ }
1614
+ return false
1615
+ }
1616
+
1617
+ func checkerProgrammer_array_tuple_definitions(arrays []*nativemetadata.MetadataArray, tuples []*nativemetadata.MetadataTuple) []any {
1618
+ output := []any{}
1619
+ for _, tuple := range tuples {
1620
+ output = append(output, tuple)
1621
+ }
1622
+ for _, array := range arrays {
1623
+ output = append(output, array)
1624
+ }
1625
+ return output
1626
+ }
1627
+
1628
+ func checkerProgrammer_definition_names(definitions []any) []string {
1629
+ names := make([]string, 0, len(definitions))
1630
+ for _, elem := range definitions {
1631
+ switch v := elem.(type) {
1632
+ case *nativemetadata.MetadataArray:
1633
+ names = append(names, v.Type.Name)
1634
+ case *nativemetadata.MetadataTuple:
1635
+ names = append(names, v.Type.Name)
1636
+ }
1637
+ }
1638
+ return names
1639
+ }
1640
+
1641
+ func checkerProgrammer_postfix_of_tuple(str string) string {
1642
+ if len(str) > 0 && str[len(str)-1] == '"' {
1643
+ return str[:len(str)-1]
1644
+ }
1645
+ return str + " + \""
1646
+ }
1647
+
1648
+ func checkerProgrammer_wrap_metadata_rest_tuple(rest *nativemetadata.MetadataSchema) *nativemetadata.MetadataSchema {
1649
+ wrapper := nativemetadata.MetadataSchema_initialize()
1650
+ wrapper.Arrays = append(wrapper.Arrays, nativemetadata.MetadataArray_create(nativemetadata.MetadataArray{
1651
+ Type: nativemetadata.MetadataArrayType_create(nativemetadata.MetadataArrayType{
1652
+ Name: "..." + rest.GetName(),
1653
+ Value: rest,
1654
+ Nullables: []bool{},
1655
+ Recursive: false,
1656
+ Index: nil,
1657
+ }),
1658
+ Tags: [][]nativemetadata.IMetadataTypeTag{},
1659
+ }))
1660
+ return wrapper
1661
+ }
1662
+
1663
+ func checkerProgrammer_decode_to_json(props struct {
1664
+ Input *shimast.Expression
1665
+ CheckNull bool
1666
+ }) *shimast.Node {
1667
+ return checkerProgrammer_and(
1668
+ nativefactories.ExpressionFactory.IsObject(nativefactories.ExpressionFactory_IsObjectProps{
1669
+ CheckArray: false,
1670
+ CheckNull: props.CheckNull,
1671
+ Input: props.Input,
1672
+ }),
1673
+ checkerProgrammer_equal(
1674
+ checkerProgrammer_factory.NewStringLiteral("function", shimast.TokenFlagsNone),
1675
+ nativefactories.ValueFactory.TYPEOF(nativefactories.IdentifierFactory.Access(props.Input, "toJSON")),
1676
+ ),
1677
+ )
1678
+ }
1679
+
1680
+ func checkerProgrammer_errors(errors []nativefactories.MetadataFactory_IError) []nativecontext.TransformerError_MetadataFactory_IError {
1681
+ output := make([]nativecontext.TransformerError_MetadataFactory_IError, 0, len(errors))
1682
+ for _, err := range errors {
1683
+ output = append(output, nativecontext.TransformerError_MetadataFactory_IError{
1684
+ Name: err.Name,
1685
+ Explore: nativecontext.TransformerError_MetadataFactory_IExplore{
1686
+ Object: err.Explore.Object,
1687
+ Property: err.Explore.Property,
1688
+ Parameter: err.Explore.Parameter,
1689
+ Output: err.Explore.Output,
1690
+ },
1691
+ Messages: err.Messages,
1692
+ })
1693
+ }
1694
+ return output
1695
+ }