typia 7.0.0-dev.20241003 → 7.0.0-dev.20241007

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 (955) hide show
  1. package/lib/IRandomGenerator.d.ts +17 -21
  2. package/lib/factories/ExpressionFactory.js +2 -2
  3. package/lib/factories/ExpressionFactory.js.map +1 -1
  4. package/lib/factories/IdentifierFactory.d.ts +1 -1
  5. package/lib/factories/LiteralFactory.d.ts +1 -1
  6. package/lib/factories/LiteralFactory.js +20 -17
  7. package/lib/factories/LiteralFactory.js.map +1 -1
  8. package/lib/factories/MetadataCommentTagFactory.js +28 -6
  9. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  10. package/lib/functional.d.ts +18 -54
  11. package/lib/functional.js +18 -75
  12. package/lib/functional.js.map +1 -1
  13. package/lib/http.d.ts +39 -91
  14. package/lib/http.js +26 -121
  15. package/lib/http.js.map +1 -1
  16. package/lib/index.mjs +188 -2688
  17. package/lib/index.mjs.map +1 -1
  18. package/lib/internal/$ProtobufReader.js.map +1 -0
  19. package/lib/{functional → internal}/$ProtobufSizer.d.ts +2 -2
  20. package/lib/{functional → internal}/$ProtobufSizer.js +9 -2
  21. package/lib/internal/$ProtobufSizer.js.map +1 -0
  22. package/lib/{functional → internal}/$ProtobufWriter.d.ts +2 -2
  23. package/lib/internal/$ProtobufWriter.js.map +1 -0
  24. package/lib/internal/$accessExpressionAsString.d.ts +1 -0
  25. package/lib/{functional/$join.js → internal/$accessExpressionAsString.js} +4 -4
  26. package/lib/internal/$accessExpressionAsString.js.map +1 -0
  27. package/lib/internal/$assertGuard.d.ts +2 -0
  28. package/lib/internal/$assertGuard.js +15 -0
  29. package/lib/internal/$assertGuard.js.map +1 -0
  30. package/lib/internal/$functionalTypeGuardErrorFactory.d.ts +2 -0
  31. package/lib/internal/$functionalTypeGuardErrorFactory.js +9 -0
  32. package/lib/internal/$functionalTypeGuardErrorFactory.js.map +1 -0
  33. package/lib/internal/$httpFormDataReadArray.d.ts +1 -0
  34. package/lib/internal/$httpFormDataReadArray.js +6 -0
  35. package/lib/internal/$httpFormDataReadArray.js.map +1 -0
  36. package/lib/internal/$httpFormDataReadBigint.d.ts +1 -0
  37. package/lib/internal/$httpFormDataReadBigint.js +22 -0
  38. package/lib/internal/$httpFormDataReadBigint.js.map +1 -0
  39. package/lib/internal/$httpFormDataReadBlob.d.ts +1 -0
  40. package/lib/internal/$httpFormDataReadBlob.js +14 -0
  41. package/lib/internal/$httpFormDataReadBlob.js.map +1 -0
  42. package/lib/internal/$httpFormDataReadBoolean.d.ts +1 -0
  43. package/lib/internal/$httpFormDataReadBoolean.js +20 -0
  44. package/lib/internal/$httpFormDataReadBoolean.js.map +1 -0
  45. package/lib/internal/$httpFormDataReadFile.d.ts +1 -0
  46. package/lib/internal/$httpFormDataReadFile.js +14 -0
  47. package/lib/internal/$httpFormDataReadFile.js.map +1 -0
  48. package/lib/internal/$httpFormDataReadNumber.d.ts +1 -0
  49. package/lib/internal/$httpFormDataReadNumber.js +18 -0
  50. package/lib/internal/$httpFormDataReadNumber.js.map +1 -0
  51. package/lib/internal/$httpFormDataReadString.d.ts +1 -0
  52. package/lib/internal/$httpFormDataReadString.js +14 -0
  53. package/lib/internal/$httpFormDataReadString.js.map +1 -0
  54. package/lib/internal/$httpHeaderReadBigint.d.ts +1 -0
  55. package/lib/internal/$httpHeaderReadBigint.js +16 -0
  56. package/lib/internal/$httpHeaderReadBigint.js.map +1 -0
  57. package/lib/internal/$httpHeaderReadBoolean.d.ts +1 -0
  58. package/lib/internal/$httpHeaderReadBoolean.js +14 -0
  59. package/lib/internal/$httpHeaderReadBoolean.js.map +1 -0
  60. package/lib/internal/$httpHeaderReadNumber.d.ts +1 -0
  61. package/lib/internal/$httpHeaderReadNumber.js +12 -0
  62. package/lib/internal/$httpHeaderReadNumber.js.map +1 -0
  63. package/lib/internal/$httpParameterBigint.d.ts +1 -0
  64. package/lib/internal/$httpParameterBigint.js +16 -0
  65. package/lib/internal/$httpParameterBigint.js.map +1 -0
  66. package/lib/internal/$httpParameterBoolean.d.ts +1 -0
  67. package/lib/internal/$httpParameterBoolean.js +14 -0
  68. package/lib/internal/$httpParameterBoolean.js.map +1 -0
  69. package/lib/internal/$httpParameterNumber.d.ts +1 -0
  70. package/lib/internal/$httpParameterNumber.js +12 -0
  71. package/lib/internal/$httpParameterNumber.js.map +1 -0
  72. package/lib/internal/$httpParameterString.d.ts +1 -0
  73. package/lib/internal/$httpParameterString.js +8 -0
  74. package/lib/internal/$httpParameterString.js.map +1 -0
  75. package/lib/internal/$httpQueryParseURLSearchParams.d.ts +1 -0
  76. package/lib/internal/$httpQueryParseURLSearchParams.js +13 -0
  77. package/lib/internal/$httpQueryParseURLSearchParams.js.map +1 -0
  78. package/lib/internal/$httpQueryReadArray.d.ts +1 -0
  79. package/lib/internal/$httpQueryReadArray.js +6 -0
  80. package/lib/internal/$httpQueryReadArray.js.map +1 -0
  81. package/lib/internal/$httpQueryReadBigint.d.ts +1 -0
  82. package/lib/internal/$httpQueryReadBigint.js +16 -0
  83. package/lib/internal/$httpQueryReadBigint.js.map +1 -0
  84. package/lib/internal/$httpQueryReadBoolean.d.ts +1 -0
  85. package/lib/internal/$httpQueryReadBoolean.js +18 -0
  86. package/lib/internal/$httpQueryReadBoolean.js.map +1 -0
  87. package/lib/internal/$httpQueryReadNumber.d.ts +1 -0
  88. package/lib/internal/$httpQueryReadNumber.js +12 -0
  89. package/lib/internal/$httpQueryReadNumber.js.map +1 -0
  90. package/lib/internal/$httpQueryReadString.d.ts +1 -0
  91. package/lib/internal/$httpQueryReadString.js +8 -0
  92. package/lib/internal/$httpQueryReadString.js.map +1 -0
  93. package/lib/internal/$isBetween.d.ts +1 -0
  94. package/lib/internal/$isBetween.js +8 -0
  95. package/lib/internal/$isBetween.js.map +1 -0
  96. package/lib/internal/$isBigintString.d.ts +1 -0
  97. package/lib/{functional/$stoll.js → internal/$isBigintString.js} +4 -4
  98. package/lib/internal/$isBigintString.js.map +1 -0
  99. package/lib/internal/$jsonStringifyNumber.d.ts +1 -0
  100. package/lib/{functional/$number.js → internal/$jsonStringifyNumber.js} +4 -4
  101. package/lib/internal/$jsonStringifyNumber.js.map +1 -0
  102. package/lib/internal/$jsonStringifyRest.d.ts +1 -0
  103. package/lib/internal/$jsonStringifyRest.js +8 -0
  104. package/lib/internal/$jsonStringifyRest.js.map +1 -0
  105. package/lib/{functional/$string.js → internal/$jsonStringifyString.js} +4 -4
  106. package/lib/internal/$jsonStringifyString.js.map +1 -0
  107. package/lib/internal/$jsonStringifyTail.d.ts +1 -0
  108. package/lib/internal/$jsonStringifyTail.js +8 -0
  109. package/lib/internal/$jsonStringifyTail.js.map +1 -0
  110. package/lib/internal/$llmApplicationFinalize.d.ts +2 -0
  111. package/lib/internal/$llmApplicationFinalize.js +42 -0
  112. package/lib/internal/$llmApplicationFinalize.js.map +1 -0
  113. package/lib/internal/$miscCloneAny.d.ts +2 -0
  114. package/lib/{functional/$clone.js → internal/$miscCloneAny.js} +4 -4
  115. package/lib/internal/$miscCloneAny.js.map +1 -0
  116. package/lib/internal/$notationAny.d.ts +1 -0
  117. package/lib/{functional/$convention.js → internal/$notationAny.js} +4 -4
  118. package/lib/{functional/$convention.js.map → internal/$notationAny.js.map} +1 -1
  119. package/lib/internal/$notationCamel.d.ts +1 -0
  120. package/lib/internal/$notationCamel.js +18 -0
  121. package/lib/internal/$notationCamel.js.map +1 -0
  122. package/lib/internal/$notationPascal.d.ts +1 -0
  123. package/lib/internal/$notationPascal.js +12 -0
  124. package/lib/internal/$notationPascal.js.map +1 -0
  125. package/lib/internal/$notationSnake.d.ts +1 -0
  126. package/lib/internal/$notationSnake.js +51 -0
  127. package/lib/internal/$notationSnake.js.map +1 -0
  128. package/lib/internal/$randomArray.d.ts +4 -0
  129. package/lib/internal/$randomArray.js +20 -0
  130. package/lib/internal/$randomArray.js.map +1 -0
  131. package/lib/internal/$randomBigint.d.ts +2 -0
  132. package/lib/internal/$randomBigint.js +9 -0
  133. package/lib/internal/$randomBigint.js.map +1 -0
  134. package/lib/internal/$randomBoolean.d.ts +1 -0
  135. package/lib/internal/$randomBoolean.js +6 -0
  136. package/lib/internal/$randomBoolean.js.map +1 -0
  137. package/lib/internal/$randomFormatByte.d.ts +1 -0
  138. package/lib/internal/$randomFormatByte.js +7 -0
  139. package/lib/internal/$randomFormatByte.js.map +1 -0
  140. package/lib/internal/$randomFormatDate.d.ts +4 -0
  141. package/lib/internal/$randomFormatDate.js +18 -0
  142. package/lib/internal/$randomFormatDate.js.map +1 -0
  143. package/lib/internal/$randomFormatDatetime.d.ts +4 -0
  144. package/lib/internal/$randomFormatDatetime.js +16 -0
  145. package/lib/internal/$randomFormatDatetime.js.map +1 -0
  146. package/lib/internal/$randomFormatDuration.d.ts +1 -0
  147. package/lib/internal/$randomFormatDuration.js +56 -0
  148. package/lib/internal/$randomFormatDuration.js.map +1 -0
  149. package/lib/internal/$randomFormatEmail.d.ts +1 -0
  150. package/lib/internal/$randomFormatEmail.js +16 -0
  151. package/lib/internal/$randomFormatEmail.js.map +1 -0
  152. package/lib/internal/$randomFormatHostname.d.ts +1 -0
  153. package/lib/internal/$randomFormatHostname.js +10 -0
  154. package/lib/internal/$randomFormatHostname.js.map +1 -0
  155. package/lib/internal/$randomFormatIdnEmail.d.ts +1 -0
  156. package/lib/internal/$randomFormatIdnEmail.js +7 -0
  157. package/lib/internal/$randomFormatIdnEmail.js.map +1 -0
  158. package/lib/internal/$randomFormatIdnHostname.d.ts +1 -0
  159. package/lib/internal/$randomFormatIdnHostname.js +7 -0
  160. package/lib/internal/$randomFormatIdnHostname.js.map +1 -0
  161. package/lib/internal/$randomFormatIpv4.d.ts +1 -0
  162. package/lib/internal/$randomFormatIpv4.js +16 -0
  163. package/lib/internal/$randomFormatIpv4.js.map +1 -0
  164. package/lib/internal/$randomFormatIpv6.d.ts +1 -0
  165. package/lib/internal/$randomFormatIpv6.js +16 -0
  166. package/lib/internal/$randomFormatIpv6.js.map +1 -0
  167. package/lib/internal/$randomFormatIri.d.ts +1 -0
  168. package/lib/internal/$randomFormatIri.js +7 -0
  169. package/lib/internal/$randomFormatIri.js.map +1 -0
  170. package/lib/internal/$randomFormatIriReference.d.ts +1 -0
  171. package/lib/internal/$randomFormatIriReference.js +7 -0
  172. package/lib/internal/$randomFormatIriReference.js.map +1 -0
  173. package/lib/internal/$randomFormatJsonPointer.d.ts +1 -0
  174. package/lib/internal/$randomFormatJsonPointer.js +12 -0
  175. package/lib/internal/$randomFormatJsonPointer.js.map +1 -0
  176. package/lib/internal/$randomFormatPassword.d.ts +1 -0
  177. package/lib/internal/$randomFormatPassword.js +13 -0
  178. package/lib/internal/$randomFormatPassword.js.map +1 -0
  179. package/lib/internal/$randomFormatRegex.d.ts +1 -0
  180. package/lib/internal/$randomFormatRegex.js +7 -0
  181. package/lib/internal/$randomFormatRegex.js.map +1 -0
  182. package/lib/internal/$randomFormatRelativeJsonPointer.d.ts +1 -0
  183. package/lib/internal/$randomFormatRelativeJsonPointer.js +13 -0
  184. package/lib/internal/$randomFormatRelativeJsonPointer.js.map +1 -0
  185. package/lib/internal/$randomFormatTime.d.ts +1 -0
  186. package/lib/internal/$randomFormatTime.js +16 -0
  187. package/lib/internal/$randomFormatTime.js.map +1 -0
  188. package/lib/internal/$randomFormatUri.d.ts +1 -0
  189. package/lib/internal/$randomFormatUri.js +7 -0
  190. package/lib/internal/$randomFormatUri.js.map +1 -0
  191. package/lib/internal/$randomFormatUriReference.d.ts +1 -0
  192. package/lib/internal/$randomFormatUriReference.js +7 -0
  193. package/lib/internal/$randomFormatUriReference.js.map +1 -0
  194. package/lib/internal/$randomFormatUriTemplate.d.ts +1 -0
  195. package/lib/internal/$randomFormatUriTemplate.js +7 -0
  196. package/lib/internal/$randomFormatUriTemplate.js.map +1 -0
  197. package/lib/internal/$randomFormatUrl.d.ts +1 -0
  198. package/lib/internal/$randomFormatUrl.js +16 -0
  199. package/lib/internal/$randomFormatUrl.js.map +1 -0
  200. package/lib/internal/$randomFormatUuid.d.ts +1 -0
  201. package/lib/internal/$randomFormatUuid.js +12 -0
  202. package/lib/internal/$randomFormatUuid.js.map +1 -0
  203. package/lib/internal/$randomInteger.d.ts +2 -0
  204. package/lib/internal/$randomInteger.js +42 -0
  205. package/lib/internal/$randomInteger.js.map +1 -0
  206. package/lib/internal/$randomNumber.d.ts +2 -0
  207. package/lib/internal/$randomNumber.js +59 -0
  208. package/lib/internal/$randomNumber.js.map +1 -0
  209. package/lib/internal/$randomPattern.d.ts +1 -0
  210. package/lib/internal/$randomPattern.js +18 -0
  211. package/lib/internal/$randomPattern.js.map +1 -0
  212. package/lib/internal/$randomPick.d.ts +1 -0
  213. package/lib/internal/$randomPick.js +14 -0
  214. package/lib/internal/$randomPick.js.map +1 -0
  215. package/lib/internal/$randomString.d.ts +2 -0
  216. package/lib/internal/$randomString.js +26 -0
  217. package/lib/internal/$randomString.js.map +1 -0
  218. package/lib/internal/$throwTypeGuardError.d.ts +2 -0
  219. package/lib/internal/$throwTypeGuardError.js +9 -0
  220. package/lib/internal/$throwTypeGuardError.js.map +1 -0
  221. package/lib/internal/$validateReport.d.ts +2 -0
  222. package/lib/{functional/$report.js → internal/$validateReport.js} +4 -4
  223. package/lib/internal/$validateReport.js.map +1 -0
  224. package/lib/{functional/IProtobufWriter.d.ts → internal/private/$__IProtobufWriter.d.ts} +1 -1
  225. package/lib/{functional/IProtobufWriter.js → internal/private/$__IProtobufWriter.js} +1 -1
  226. package/lib/internal/private/$__IProtobufWriter.js.map +1 -0
  227. package/lib/internal/private/$__notationCapitalize.d.ts +1 -0
  228. package/lib/internal/private/$__notationCapitalize.js +8 -0
  229. package/lib/internal/private/$__notationCapitalize.js.map +1 -0
  230. package/lib/internal/private/$__notationUnsnake.d.ts +4 -0
  231. package/lib/internal/private/$__notationUnsnake.js +28 -0
  232. package/lib/internal/private/$__notationUnsnake.js.map +1 -0
  233. package/lib/json.d.ts +27 -55
  234. package/lib/json.js +14 -62
  235. package/lib/json.js.map +1 -1
  236. package/lib/llm.d.ts +2 -4
  237. package/lib/llm.js +1 -28
  238. package/lib/llm.js.map +1 -1
  239. package/lib/misc.d.ts +30 -62
  240. package/lib/misc.js +16 -80
  241. package/lib/misc.js.map +1 -1
  242. package/lib/module.d.ts +36 -72
  243. package/lib/module.js +19 -44
  244. package/lib/module.js.map +1 -1
  245. package/lib/notations.d.ts +45 -93
  246. package/lib/notations.js +24 -114
  247. package/lib/notations.js.map +1 -1
  248. package/lib/programmers/AssertProgrammer.d.ts +2 -2
  249. package/lib/programmers/AssertProgrammer.js +24 -17
  250. package/lib/programmers/AssertProgrammer.js.map +1 -1
  251. package/lib/programmers/CheckerProgrammer.d.ts +9 -9
  252. package/lib/programmers/CheckerProgrammer.js +46 -46
  253. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  254. package/lib/programmers/FeatureProgrammer.d.ts +8 -8
  255. package/lib/programmers/FeatureProgrammer.js +10 -10
  256. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  257. package/lib/programmers/ImportProgrammer.d.ts +10 -0
  258. package/lib/programmers/ImportProgrammer.js +119 -0
  259. package/lib/programmers/ImportProgrammer.js.map +1 -0
  260. package/lib/programmers/IsProgrammer.d.ts +6 -6
  261. package/lib/programmers/IsProgrammer.js +11 -13
  262. package/lib/programmers/IsProgrammer.js.map +1 -1
  263. package/lib/programmers/RandomProgrammer.d.ts +2 -2
  264. package/lib/programmers/RandomProgrammer.js +298 -293
  265. package/lib/programmers/RandomProgrammer.js.map +1 -1
  266. package/lib/programmers/ValidateProgrammer.d.ts +2 -2
  267. package/lib/programmers/ValidateProgrammer.js +9 -10
  268. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  269. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.d.ts +1 -1
  270. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js +2 -3
  271. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js.map +1 -1
  272. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js +1 -1
  273. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js.map +1 -1
  274. package/lib/programmers/functional/FunctionalAssertReturnProgrammer.js +1 -1
  275. package/lib/programmers/functional/FunctionalAssertReturnProgrammer.js.map +1 -1
  276. package/lib/programmers/helpers/{FunctionImporter.d.ts → FunctionProgrammer.d.ts} +2 -6
  277. package/lib/programmers/helpers/{FunctionImporter.js → FunctionProgrammer.js} +14 -33
  278. package/lib/programmers/helpers/FunctionProgrammer.js.map +1 -0
  279. package/lib/programmers/helpers/RandomJoiner.d.ts +6 -11
  280. package/lib/programmers/helpers/RandomJoiner.js +68 -41
  281. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  282. package/lib/programmers/helpers/StringifyJoinder.d.ts +2 -2
  283. package/lib/programmers/helpers/StringifyJoinder.js +1 -1
  284. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  285. package/lib/programmers/helpers/disable_function_programmer_declare.d.ts +2 -0
  286. package/lib/programmers/helpers/disable_function_programmer_declare.js +16 -0
  287. package/lib/programmers/helpers/disable_function_programmer_declare.js.map +1 -0
  288. package/lib/programmers/http/HttpAssertFormDataProgrammer.d.ts +2 -2
  289. package/lib/programmers/http/HttpAssertFormDataProgrammer.js +4 -4
  290. package/lib/programmers/http/HttpAssertFormDataProgrammer.js.map +1 -1
  291. package/lib/programmers/http/HttpAssertHeadersProgrammer.d.ts +2 -2
  292. package/lib/programmers/http/HttpAssertHeadersProgrammer.js +4 -4
  293. package/lib/programmers/http/HttpAssertHeadersProgrammer.js.map +1 -1
  294. package/lib/programmers/http/HttpAssertQueryProgrammer.d.ts +2 -2
  295. package/lib/programmers/http/HttpAssertQueryProgrammer.js +4 -4
  296. package/lib/programmers/http/HttpAssertQueryProgrammer.js.map +1 -1
  297. package/lib/programmers/http/HttpFormDataProgrammer.d.ts +2 -2
  298. package/lib/programmers/http/HttpFormDataProgrammer.js +13 -12
  299. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  300. package/lib/programmers/http/HttpHeadersProgrammer.d.ts +3 -3
  301. package/lib/programmers/http/HttpHeadersProgrammer.js +37 -31
  302. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  303. package/lib/programmers/http/HttpIsFormDataProgrammer.d.ts +2 -2
  304. package/lib/programmers/http/HttpIsFormDataProgrammer.js +4 -4
  305. package/lib/programmers/http/HttpIsFormDataProgrammer.js.map +1 -1
  306. package/lib/programmers/http/HttpIsHeadersProgrammer.d.ts +2 -2
  307. package/lib/programmers/http/HttpIsHeadersProgrammer.js +4 -4
  308. package/lib/programmers/http/HttpIsHeadersProgrammer.js.map +1 -1
  309. package/lib/programmers/http/HttpIsQueryProgrammer.d.ts +2 -2
  310. package/lib/programmers/http/HttpIsQueryProgrammer.js +4 -4
  311. package/lib/programmers/http/HttpIsQueryProgrammer.js.map +1 -1
  312. package/lib/programmers/http/HttpParameterProgrammer.js +3 -4
  313. package/lib/programmers/http/HttpParameterProgrammer.js.map +1 -1
  314. package/lib/programmers/http/HttpQueryProgrammer.d.ts +2 -2
  315. package/lib/programmers/http/HttpQueryProgrammer.js +14 -13
  316. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  317. package/lib/programmers/http/HttpValidateFormDataProgrammer.d.ts +2 -2
  318. package/lib/programmers/http/HttpValidateFormDataProgrammer.js +4 -4
  319. package/lib/programmers/http/HttpValidateFormDataProgrammer.js.map +1 -1
  320. package/lib/programmers/http/HttpValidateHeadersProgrammer.d.ts +2 -2
  321. package/lib/programmers/http/HttpValidateHeadersProgrammer.js +4 -4
  322. package/lib/programmers/http/HttpValidateHeadersProgrammer.js.map +1 -1
  323. package/lib/programmers/http/HttpValidateQueryProgrammer.d.ts +2 -2
  324. package/lib/programmers/http/HttpValidateQueryProgrammer.js +4 -4
  325. package/lib/programmers/http/HttpValidateQueryProgrammer.js.map +1 -1
  326. package/lib/programmers/internal/check_dynamic_key.js +2 -2
  327. package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
  328. package/lib/programmers/internal/check_dynamic_properties.js +1 -2
  329. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  330. package/lib/programmers/internal/check_object.js +0 -1
  331. package/lib/programmers/internal/check_object.js.map +1 -1
  332. package/lib/programmers/internal/feature_object_entries.js +3 -2
  333. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  334. package/lib/programmers/json/JsonAssertParseProgrammer.d.ts +2 -2
  335. package/lib/programmers/json/JsonAssertParseProgrammer.js +4 -4
  336. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  337. package/lib/programmers/json/JsonAssertStringifyProgrammer.d.ts +2 -2
  338. package/lib/programmers/json/JsonAssertStringifyProgrammer.js +4 -4
  339. package/lib/programmers/json/JsonAssertStringifyProgrammer.js.map +1 -1
  340. package/lib/programmers/json/JsonIsParseProgrammer.d.ts +2 -2
  341. package/lib/programmers/json/JsonIsParseProgrammer.js +4 -4
  342. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  343. package/lib/programmers/json/JsonIsStringifyProgrammer.d.ts +2 -2
  344. package/lib/programmers/json/JsonIsStringifyProgrammer.js +4 -4
  345. package/lib/programmers/json/JsonIsStringifyProgrammer.js.map +1 -1
  346. package/lib/programmers/json/JsonStringifyProgrammer.d.ts +2 -2
  347. package/lib/programmers/json/JsonStringifyProgrammer.js +38 -33
  348. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  349. package/lib/programmers/json/JsonValidateParseProgrammer.d.ts +2 -2
  350. package/lib/programmers/json/JsonValidateParseProgrammer.js +4 -4
  351. package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
  352. package/lib/programmers/json/JsonValidateStringifyProgrammer.d.ts +2 -2
  353. package/lib/programmers/json/JsonValidateStringifyProgrammer.js +4 -4
  354. package/lib/programmers/json/JsonValidateStringifyProgrammer.js.map +1 -1
  355. package/lib/programmers/llm/LlmApplicationProgrammer.d.ts +1 -1
  356. package/lib/programmers/llm/LlmApplicationProgrammer.js +11 -11
  357. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
  358. package/lib/programmers/llm/LlmSchemaProgrammer.d.ts +1 -1
  359. package/lib/programmers/llm/LlmSchemaProgrammer.js +12 -12
  360. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  361. package/lib/programmers/misc/MiscAssertCloneProgrammer.d.ts +2 -2
  362. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +4 -4
  363. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  364. package/lib/programmers/misc/MiscAssertPruneProgrammer.d.ts +2 -2
  365. package/lib/programmers/misc/MiscAssertPruneProgrammer.js +4 -4
  366. package/lib/programmers/misc/MiscAssertPruneProgrammer.js.map +1 -1
  367. package/lib/programmers/misc/MiscCloneProgrammer.d.ts +2 -2
  368. package/lib/programmers/misc/MiscCloneProgrammer.js +43 -37
  369. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  370. package/lib/programmers/misc/MiscIsCloneProgrammer.d.ts +2 -2
  371. package/lib/programmers/misc/MiscIsCloneProgrammer.js +4 -4
  372. package/lib/programmers/misc/MiscIsCloneProgrammer.js.map +1 -1
  373. package/lib/programmers/misc/MiscIsPruneProgrammer.d.ts +2 -2
  374. package/lib/programmers/misc/MiscIsPruneProgrammer.js +4 -4
  375. package/lib/programmers/misc/MiscIsPruneProgrammer.js.map +1 -1
  376. package/lib/programmers/misc/MiscPruneProgrammer.d.ts +2 -2
  377. package/lib/programmers/misc/MiscPruneProgrammer.js +33 -29
  378. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  379. package/lib/programmers/misc/MiscValidateCloneProgrammer.d.ts +2 -2
  380. package/lib/programmers/misc/MiscValidateCloneProgrammer.js +4 -4
  381. package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
  382. package/lib/programmers/misc/MiscValidatePruneProgrammer.d.ts +2 -2
  383. package/lib/programmers/misc/MiscValidatePruneProgrammer.js +4 -4
  384. package/lib/programmers/misc/MiscValidatePruneProgrammer.js.map +1 -1
  385. package/lib/programmers/notations/NotationAssertGeneralProgrammer.d.ts +2 -2
  386. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js +4 -4
  387. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js.map +1 -1
  388. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +2 -2
  389. package/lib/programmers/notations/NotationGeneralProgrammer.js +49 -35
  390. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  391. package/lib/programmers/notations/NotationIsGeneralProgrammer.d.ts +2 -2
  392. package/lib/programmers/notations/NotationIsGeneralProgrammer.js +4 -4
  393. package/lib/programmers/notations/NotationIsGeneralProgrammer.js.map +1 -1
  394. package/lib/programmers/notations/NotationValidateGeneralProgrammer.d.ts +2 -2
  395. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js +4 -4
  396. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js.map +1 -1
  397. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.d.ts +2 -2
  398. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +4 -4
  399. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  400. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.d.ts +2 -2
  401. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js +4 -4
  402. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js.map +1 -1
  403. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.d.ts +2 -2
  404. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +14 -14
  405. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  406. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.d.ts +2 -2
  407. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +26 -22
  408. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  409. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.d.ts +2 -2
  410. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +4 -4
  411. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
  412. package/lib/programmers/protobuf/ProtobufIsEncodeProgrammer.d.ts +2 -2
  413. package/lib/programmers/protobuf/ProtobufIsEncodeProgrammer.js +4 -4
  414. package/lib/programmers/protobuf/ProtobufIsEncodeProgrammer.js.map +1 -1
  415. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.d.ts +2 -2
  416. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +4 -4
  417. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
  418. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.d.ts +2 -2
  419. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js +4 -4
  420. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js.map +1 -1
  421. package/lib/protobuf.d.ts +31 -63
  422. package/lib/protobuf.js +16 -83
  423. package/lib/protobuf.js.map +1 -1
  424. package/lib/reflect.d.ts +2 -4
  425. package/lib/reflect.js +1 -3
  426. package/lib/reflect.js.map +1 -1
  427. package/lib/transformers/FileTransformer.d.ts +1 -1
  428. package/lib/transformers/FileTransformer.js +36 -2
  429. package/lib/transformers/FileTransformer.js.map +1 -1
  430. package/lib/transformers/ITypiaContext.d.ts +2 -0
  431. package/lib/transformers/features/json/JsonApplicationTransformer.js +1 -1
  432. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  433. package/lib/transformers/features/llm/LlmApplicationTransformer.js +3 -5
  434. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  435. package/lib/transformers/features/llm/LlmSchemaTransformer.js +1 -1
  436. package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
  437. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +1 -1
  438. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
  439. package/lib/utils/NamingConvention.d.ts +5 -0
  440. package/lib/utils/NamingConvention.js +102 -0
  441. package/lib/utils/NamingConvention.js.map +1 -0
  442. package/lib/utils/StringUtil.d.ts +8 -0
  443. package/lib/utils/StringUtil.js +19 -0
  444. package/lib/utils/StringUtil.js.map +1 -0
  445. package/package.json +2 -2
  446. package/src/IRandomGenerator.ts +11 -28
  447. package/src/Resolved.ts +74 -74
  448. package/src/executable/TypiaGenerateWizard.ts +83 -83
  449. package/src/executable/TypiaPatchWizard.ts +42 -42
  450. package/src/executable/TypiaSetupWizard.ts +174 -174
  451. package/src/executable/setup/ArgumentParser.ts +42 -42
  452. package/src/executable/setup/CommandExecutor.ts +8 -8
  453. package/src/executable/setup/FileRetriever.ts +19 -19
  454. package/src/executable/setup/PackageManager.ts +87 -87
  455. package/src/executable/setup/PluginConfigurator.ts +69 -69
  456. package/src/executable/typia.ts +55 -55
  457. package/src/factories/CommentFactory.ts +79 -79
  458. package/src/factories/ExpressionFactory.ts +3 -3
  459. package/src/factories/JsonMetadataFactory.ts +63 -63
  460. package/src/factories/LiteralFactory.ts +18 -15
  461. package/src/factories/MetadataCollection.ts +278 -278
  462. package/src/factories/MetadataCommentTagFactory.ts +650 -622
  463. package/src/factories/MetadataFactory.ts +400 -400
  464. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  465. package/src/factories/ProtobufFactory.ts +275 -275
  466. package/src/factories/StatementFactory.ts +90 -90
  467. package/src/factories/TypeFactory.ts +140 -140
  468. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +16 -16
  469. package/src/factories/internal/metadata/emplace_metadata_alias.ts +32 -32
  470. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  471. package/src/factories/internal/metadata/emplace_metadata_object.ts +206 -206
  472. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +56 -56
  473. package/src/factories/internal/metadata/explore_metadata.ts +30 -30
  474. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  475. package/src/factories/internal/metadata/iterate_metadata_alias.ts +28 -28
  476. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  477. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  478. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  479. package/src/factories/internal/metadata/iterate_metadata_collection.ts +145 -145
  480. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  481. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  482. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  483. package/src/factories/internal/metadata/iterate_metadata_function.ts +88 -88
  484. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +216 -216
  485. package/src/factories/internal/metadata/iterate_metadata_map.ts +52 -52
  486. package/src/factories/internal/metadata/iterate_metadata_native.ts +236 -236
  487. package/src/factories/internal/metadata/iterate_metadata_object.ts +27 -27
  488. package/src/factories/internal/metadata/iterate_metadata_set.ts +39 -39
  489. package/src/factories/internal/metadata/iterate_metadata_sort.ts +83 -83
  490. package/src/factories/internal/metadata/iterate_metadata_template.ts +42 -42
  491. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  492. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  493. package/src/functional.ts +36 -158
  494. package/src/http.ts +79 -303
  495. package/src/{functional → internal}/$ProtobufSizer.ts +11 -4
  496. package/src/{functional → internal}/$ProtobufWriter.ts +2 -2
  497. package/src/{functional/$join.ts → internal/$accessExpressionAsString.ts} +1 -1
  498. package/src/internal/$assertGuard.ts +13 -0
  499. package/src/internal/$functionalTypeGuardErrorFactory.ts +4 -0
  500. package/src/internal/$httpFormDataReadArray.ts +4 -0
  501. package/src/internal/$httpFormDataReadBigint.ts +18 -0
  502. package/src/internal/$httpFormDataReadBlob.ts +10 -0
  503. package/src/internal/$httpFormDataReadBoolean.ts +16 -0
  504. package/src/internal/$httpFormDataReadFile.ts +10 -0
  505. package/src/internal/$httpFormDataReadNumber.ts +15 -0
  506. package/src/internal/$httpFormDataReadString.ts +10 -0
  507. package/src/internal/$httpHeaderReadBigint.ts +10 -0
  508. package/src/internal/$httpHeaderReadBoolean.ts +8 -0
  509. package/src/internal/$httpHeaderReadNumber.ts +7 -0
  510. package/src/internal/$httpParameterBigint.ts +10 -0
  511. package/src/internal/$httpParameterBoolean.ts +8 -0
  512. package/src/internal/$httpParameterNumber.ts +7 -0
  513. package/src/internal/$httpParameterString.ts +2 -0
  514. package/src/internal/$httpQueryParseURLSearchParams.ts +10 -0
  515. package/src/internal/$httpQueryReadArray.ts +4 -0
  516. package/src/internal/$httpQueryReadBigint.ts +12 -0
  517. package/src/internal/$httpQueryReadBoolean.ts +14 -0
  518. package/src/internal/$httpQueryReadNumber.ts +9 -0
  519. package/src/internal/$httpQueryReadString.ts +4 -0
  520. package/src/internal/$isBetween.ts +2 -0
  521. package/src/{functional/$stoll.ts → internal/$isBigintString.ts} +1 -1
  522. package/src/{functional/$number.ts → internal/$jsonStringifyNumber.ts} +1 -1
  523. package/src/{functional/$rest.ts → internal/$jsonStringifyRest.ts} +1 -1
  524. package/src/{functional/$string.ts → internal/$jsonStringifyString.ts} +1 -1
  525. package/src/{functional/$tail.ts → internal/$jsonStringifyTail.ts} +1 -4
  526. package/src/internal/$llmApplicationFinalize.ts +18 -0
  527. package/src/{functional/$clone.ts → internal/$miscCloneAny.ts} +1 -1
  528. package/src/{functional/$convention.ts → internal/$notationAny.ts} +1 -1
  529. package/src/internal/$notationCamel.ts +13 -0
  530. package/src/internal/$notationPascal.ts +8 -0
  531. package/src/{utils/NamingConvention/NamingConvention.ts → internal/$notationSnake.ts} +2 -46
  532. package/src/internal/$randomArray.ts +21 -0
  533. package/src/internal/$randomBigint.ts +6 -0
  534. package/src/internal/$randomBoolean.ts +1 -0
  535. package/src/internal/$randomFormatByte.ts +3 -0
  536. package/src/internal/$randomFormatDate.ts +18 -0
  537. package/src/internal/$randomFormatDatetime.ts +16 -0
  538. package/src/internal/$randomFormatDuration.ts +27 -0
  539. package/src/internal/$randomFormatEmail.ts +11 -0
  540. package/src/internal/$randomFormatHostname.ts +6 -0
  541. package/src/internal/$randomFormatIdnEmail.ts +3 -0
  542. package/src/internal/$randomFormatIdnHostname.ts +3 -0
  543. package/src/internal/$randomFormatIpv4.ts +11 -0
  544. package/src/internal/$randomFormatIpv6.ts +11 -0
  545. package/src/internal/$randomFormatIri.ts +3 -0
  546. package/src/internal/$randomFormatIriReference.ts +3 -0
  547. package/src/internal/$randomFormatJsonPointer.ts +7 -0
  548. package/src/internal/$randomFormatPassword.ts +8 -0
  549. package/src/internal/$randomFormatRegex.ts +4 -0
  550. package/src/internal/$randomFormatRelativeJsonPointer.ts +8 -0
  551. package/src/internal/$randomFormatTime.ts +14 -0
  552. package/src/internal/$randomFormatUri.ts +3 -0
  553. package/src/internal/$randomFormatUriReference.ts +3 -0
  554. package/src/internal/$randomFormatUriTemplate.ts +3 -0
  555. package/src/internal/$randomFormatUrl.ts +11 -0
  556. package/src/internal/$randomFormatUuid.ts +6 -0
  557. package/src/internal/$randomInteger.ts +47 -0
  558. package/src/internal/$randomNumber.ts +74 -0
  559. package/src/internal/$randomPattern.ts +10 -0
  560. package/src/internal/$randomPick.ts +9 -0
  561. package/src/internal/$randomString.ts +24 -0
  562. package/src/internal/$throwTypeGuardError.ts +5 -0
  563. package/src/{functional/$report.ts → internal/$validateReport.ts} +1 -1
  564. package/src/{functional/IProtobufWriter.ts → internal/private/$__IProtobufWriter.ts} +1 -1
  565. package/src/internal/private/$__notationCapitalize.ts +2 -0
  566. package/src/internal/private/$__notationUnsnake.ts +24 -0
  567. package/src/json.ts +651 -738
  568. package/src/llm.ts +178 -186
  569. package/src/misc.ts +52 -151
  570. package/src/module.ts +933 -1023
  571. package/src/notations.ts +76 -269
  572. package/src/programmers/AssertProgrammer.ts +456 -441
  573. package/src/programmers/CheckerProgrammer.ts +1610 -1610
  574. package/src/programmers/FeatureProgrammer.ts +616 -616
  575. package/src/programmers/ImportProgrammer.ts +109 -0
  576. package/src/programmers/IsProgrammer.ts +273 -275
  577. package/src/programmers/RandomProgrammer.ts +424 -412
  578. package/src/programmers/TypiaProgrammer.ts +171 -171
  579. package/src/programmers/ValidateProgrammer.ts +430 -436
  580. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -158
  581. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  582. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  583. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  584. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  585. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  586. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +123 -123
  587. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +281 -281
  588. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +134 -134
  589. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  590. package/src/programmers/helpers/{FunctionImporter.ts → FunctionProgrammer.ts} +67 -98
  591. package/src/programmers/helpers/RandomJoiner.ts +97 -91
  592. package/src/programmers/helpers/StringifyJoinder.ts +4 -3
  593. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -0
  594. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +96 -96
  595. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +96 -96
  596. package/src/programmers/http/HttpAssertQueryProgrammer.ts +102 -102
  597. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -305
  598. package/src/programmers/http/HttpHeadersProgrammer.ts +404 -378
  599. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  600. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  601. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  602. package/src/programmers/http/HttpParameterProgrammer.ts +115 -118
  603. package/src/programmers/http/HttpQueryProgrammer.ts +333 -330
  604. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +90 -90
  605. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +90 -90
  606. package/src/programmers/http/HttpValidateQueryProgrammer.ts +96 -96
  607. package/src/programmers/internal/application_bigint.ts +25 -25
  608. package/src/programmers/internal/application_escaped.ts +96 -96
  609. package/src/programmers/internal/application_v30_alias.ts +59 -59
  610. package/src/programmers/internal/application_v30_object.ts +165 -165
  611. package/src/programmers/internal/application_v30_schema.ts +220 -220
  612. package/src/programmers/internal/application_v30_tuple.ts +33 -33
  613. package/src/programmers/internal/application_v31_constant.ts +29 -29
  614. package/src/programmers/internal/application_v31_object.ts +147 -147
  615. package/src/programmers/internal/application_v31_schema.ts +215 -215
  616. package/src/programmers/internal/check_array_length.ts +46 -46
  617. package/src/programmers/internal/check_bigint.ts +49 -49
  618. package/src/programmers/internal/check_dynamic_key.ts +201 -203
  619. package/src/programmers/internal/check_dynamic_properties.ts +208 -212
  620. package/src/programmers/internal/check_number.ts +111 -111
  621. package/src/programmers/internal/check_object.ts +75 -78
  622. package/src/programmers/internal/check_string.ts +49 -49
  623. package/src/programmers/internal/feature_object_entries.ts +7 -4
  624. package/src/programmers/internal/llm_schema_array.ts +22 -22
  625. package/src/programmers/internal/llm_schema_escaped.ts +84 -84
  626. package/src/programmers/internal/llm_schema_native.ts +17 -17
  627. package/src/programmers/internal/llm_schema_object.ts +132 -132
  628. package/src/programmers/internal/llm_schema_station.ts +190 -190
  629. package/src/programmers/internal/llm_schema_tuple.ts +31 -31
  630. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  631. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  632. package/src/programmers/json/JsonApplicationProgrammer.ts +92 -92
  633. package/src/programmers/json/JsonAssertParseProgrammer.ts +104 -104
  634. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +112 -112
  635. package/src/programmers/json/JsonIsParseProgrammer.ts +118 -118
  636. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  637. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1115
  638. package/src/programmers/json/JsonValidateParseProgrammer.ts +95 -95
  639. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +119 -119
  640. package/src/programmers/llm/LlmApplicationProgrammer.ts +235 -235
  641. package/src/programmers/llm/LlmSchemaProgrammer.ts +51 -49
  642. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +92 -92
  643. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +113 -113
  644. package/src/programmers/misc/MiscCloneProgrammer.ts +1029 -1019
  645. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  646. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  647. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  648. package/src/programmers/misc/MiscPruneProgrammer.ts +725 -717
  649. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +109 -109
  650. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +109 -109
  651. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +98 -98
  652. package/src/programmers/notations/NotationGeneralProgrammer.ts +973 -953
  653. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  654. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +117 -117
  655. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +95 -95
  656. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +99 -99
  657. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +711 -711
  658. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +1019 -1010
  659. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  660. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  661. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +201 -201
  662. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +90 -90
  663. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +114 -114
  664. package/src/protobuf.ts +868 -999
  665. package/src/reflect.ts +3 -9
  666. package/src/schemas/json/IJsonApplication.ts +22 -22
  667. package/src/schemas/metadata/IMetadata.ts +36 -36
  668. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  669. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  670. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  671. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  672. package/src/schemas/metadata/Metadata.ts +616 -616
  673. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  674. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  675. package/src/schemas/metadata/MetadataParameter.ts +50 -50
  676. package/src/tags/Constant.ts +15 -15
  677. package/src/tags/Default.ts +22 -22
  678. package/src/tags/Example.ts +17 -17
  679. package/src/tags/Examples.ts +16 -16
  680. package/src/tags/ExclusiveMaximum.ts +25 -25
  681. package/src/tags/ExclusiveMinimum.ts +25 -25
  682. package/src/tags/JsonSchemaPlugin.ts +8 -8
  683. package/src/tags/Maximum.ts +19 -19
  684. package/src/tags/Minimum.ts +19 -19
  685. package/src/tags/MultipleOf.ts +21 -21
  686. package/src/tags/Pattern.ts +31 -31
  687. package/src/tags/Type.ts +32 -32
  688. package/src/tags/index.ts +20 -20
  689. package/src/transform.ts +35 -35
  690. package/src/transformers/CallExpressionTransformer.ts +540 -540
  691. package/src/transformers/FileTransformer.ts +120 -101
  692. package/src/transformers/IProgrammerProps.ts +11 -11
  693. package/src/transformers/ITransformProps.ts +9 -9
  694. package/src/transformers/ITypiaContext.ts +18 -15
  695. package/src/transformers/NodeTransformer.ts +17 -17
  696. package/src/transformers/TransformerError.ts +59 -59
  697. package/src/transformers/features/AssertTransformer.ts +24 -24
  698. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  699. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  700. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  701. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  702. package/src/transformers/features/IsTransformer.ts +18 -18
  703. package/src/transformers/features/RandomTransformer.ts +41 -41
  704. package/src/transformers/features/ValidateTransformer.ts +18 -18
  705. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  706. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  707. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  708. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  709. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  710. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  711. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  712. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  713. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  714. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  715. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  716. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  717. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  718. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  719. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  720. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  721. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  722. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  723. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  724. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  725. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  726. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  727. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  728. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  729. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  730. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  731. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  732. package/src/transformers/features/json/JsonApplicationTransformer.ts +130 -130
  733. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  734. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  735. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  736. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  737. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  738. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  739. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  740. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  741. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  742. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  743. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  744. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  745. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  746. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  747. package/src/transformers/features/llm/LlmApplicationTransformer.ts +86 -91
  748. package/src/transformers/features/llm/LlmSchemaTransformer.ts +59 -59
  749. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  750. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  751. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  752. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  753. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  754. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  755. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  756. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  757. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  758. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  759. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  760. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  761. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  762. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  763. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  764. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  765. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  766. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  767. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  768. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  769. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  770. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  771. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  772. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  773. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  774. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  775. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  776. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  777. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  778. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  779. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  780. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  781. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  782. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  783. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  784. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  785. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  786. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  787. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  788. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  789. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  790. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  791. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  792. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  793. package/src/transformers/internal/GenericTransformer.ts +101 -101
  794. package/src/utils/Escaper.ts +50 -50
  795. package/src/utils/NamingConvention.ts +94 -0
  796. package/src/utils/StringUtil.ts +16 -0
  797. package/lib/functional/$FormDataReader/$FormDataReader.d.ts +0 -7
  798. package/lib/functional/$FormDataReader/$FormDataReader.js +0 -86
  799. package/lib/functional/$FormDataReader/$FormDataReader.js.map +0 -1
  800. package/lib/functional/$FormDataReader/index.d.ts +0 -1
  801. package/lib/functional/$FormDataReader/index.js +0 -28
  802. package/lib/functional/$FormDataReader/index.js.map +0 -1
  803. package/lib/functional/$HeadersReader/$HeadersReader.d.ts +0 -4
  804. package/lib/functional/$HeadersReader/$HeadersReader.js +0 -36
  805. package/lib/functional/$HeadersReader/$HeadersReader.js.map +0 -1
  806. package/lib/functional/$HeadersReader/index.d.ts +0 -1
  807. package/lib/functional/$HeadersReader/index.js +0 -28
  808. package/lib/functional/$HeadersReader/index.js.map +0 -1
  809. package/lib/functional/$ParameterReader/$ParameterReader.d.ts +0 -4
  810. package/lib/functional/$ParameterReader/$ParameterReader.js +0 -36
  811. package/lib/functional/$ParameterReader/$ParameterReader.js.map +0 -1
  812. package/lib/functional/$ParameterReader/index.d.ts +0 -1
  813. package/lib/functional/$ParameterReader/index.js +0 -28
  814. package/lib/functional/$ParameterReader/index.js.map +0 -1
  815. package/lib/functional/$ProtobufReader.js.map +0 -1
  816. package/lib/functional/$ProtobufSizer.js.map +0 -1
  817. package/lib/functional/$ProtobufWriter.js.map +0 -1
  818. package/lib/functional/$QueryReader/$QueryReader.d.ts +0 -6
  819. package/lib/functional/$QueryReader/$QueryReader.js +0 -55
  820. package/lib/functional/$QueryReader/$QueryReader.js.map +0 -1
  821. package/lib/functional/$QueryReader/index.d.ts +0 -1
  822. package/lib/functional/$QueryReader/index.js +0 -28
  823. package/lib/functional/$QueryReader/index.js.map +0 -1
  824. package/lib/functional/$any.d.ts +0 -1
  825. package/lib/functional/$any.js +0 -7
  826. package/lib/functional/$any.js.map +0 -1
  827. package/lib/functional/$clone.d.ts +0 -2
  828. package/lib/functional/$clone.js.map +0 -1
  829. package/lib/functional/$convention.d.ts +0 -1
  830. package/lib/functional/$dictionary.d.ts +0 -2
  831. package/lib/functional/$dictionary.js +0 -18
  832. package/lib/functional/$dictionary.js.map +0 -1
  833. package/lib/functional/$every.d.ts +0 -2
  834. package/lib/functional/$every.js +0 -12
  835. package/lib/functional/$every.js.map +0 -1
  836. package/lib/functional/$guard.js +0 -21
  837. package/lib/functional/$guard.js.map +0 -1
  838. package/lib/functional/$is_between.d.ts +0 -1
  839. package/lib/functional/$is_between.js +0 -8
  840. package/lib/functional/$is_between.js.map +0 -1
  841. package/lib/functional/$join.d.ts +0 -1
  842. package/lib/functional/$join.js.map +0 -1
  843. package/lib/functional/$number.d.ts +0 -1
  844. package/lib/functional/$number.js.map +0 -1
  845. package/lib/functional/$report.d.ts +0 -2
  846. package/lib/functional/$report.js.map +0 -1
  847. package/lib/functional/$rest.d.ts +0 -1
  848. package/lib/functional/$rest.js +0 -8
  849. package/lib/functional/$rest.js.map +0 -1
  850. package/lib/functional/$stoll.d.ts +0 -1
  851. package/lib/functional/$stoll.js.map +0 -1
  852. package/lib/functional/$string.d.ts +0 -1
  853. package/lib/functional/$string.js.map +0 -1
  854. package/lib/functional/$strlen.d.ts +0 -1
  855. package/lib/functional/$strlen.js +0 -13
  856. package/lib/functional/$strlen.js.map +0 -1
  857. package/lib/functional/$tail.d.ts +0 -1
  858. package/lib/functional/$tail.js +0 -11
  859. package/lib/functional/$tail.js.map +0 -1
  860. package/lib/functional/$throws.d.ts +0 -2
  861. package/lib/functional/$throws.js +0 -22
  862. package/lib/functional/$throws.js.map +0 -1
  863. package/lib/functional/IProtobufWriter.js.map +0 -1
  864. package/lib/functional/Namespace/functional.d.ts +0 -4
  865. package/lib/functional/Namespace/functional.js +0 -9
  866. package/lib/functional/Namespace/functional.js.map +0 -1
  867. package/lib/functional/Namespace/http.d.ts +0 -8
  868. package/lib/functional/Namespace/http.js +0 -16
  869. package/lib/functional/Namespace/http.js.map +0 -1
  870. package/lib/functional/Namespace/index.d.ts +0 -31
  871. package/lib/functional/Namespace/index.js +0 -86
  872. package/lib/functional/Namespace/index.js.map +0 -1
  873. package/lib/functional/Namespace/json.d.ts +0 -9
  874. package/lib/functional/Namespace/json.js +0 -23
  875. package/lib/functional/Namespace/json.js.map +0 -1
  876. package/lib/functional/Namespace/llm.d.ts +0 -4
  877. package/lib/functional/Namespace/llm.js +0 -44
  878. package/lib/functional/Namespace/llm.js.map +0 -1
  879. package/lib/functional/Namespace/misc.d.ts +0 -11
  880. package/lib/functional/Namespace/misc.js +0 -22
  881. package/lib/functional/Namespace/misc.js.map +0 -1
  882. package/lib/functional/Namespace/notations.d.ts +0 -18
  883. package/lib/functional/Namespace/notations.js +0 -26
  884. package/lib/functional/Namespace/notations.js.map +0 -1
  885. package/lib/functional/Namespace/protobuf.d.ts +0 -17
  886. package/lib/functional/Namespace/protobuf.js +0 -25
  887. package/lib/functional/Namespace/protobuf.js.map +0 -1
  888. package/lib/functional/is.d.ts +0 -1
  889. package/lib/functional/is.js +0 -14
  890. package/lib/functional/is.js.map +0 -1
  891. package/lib/programmers/helpers/FunctionImporter.js.map +0 -1
  892. package/lib/programmers/helpers/RandomRanger.d.ts +0 -33
  893. package/lib/programmers/helpers/RandomRanger.js +0 -158
  894. package/lib/programmers/helpers/RandomRanger.js.map +0 -1
  895. package/lib/programmers/helpers/disable_function_importer_declare.d.ts +0 -2
  896. package/lib/programmers/helpers/disable_function_importer_declare.js +0 -19
  897. package/lib/programmers/helpers/disable_function_importer_declare.js.map +0 -1
  898. package/lib/programmers/internal/random_custom.d.ts +0 -1
  899. package/lib/programmers/internal/random_custom.js +0 -23
  900. package/lib/programmers/internal/random_custom.js.map +0 -1
  901. package/lib/utils/NamingConvention/NamingConvention.d.ts +0 -3
  902. package/lib/utils/NamingConvention/NamingConvention.js +0 -93
  903. package/lib/utils/NamingConvention/NamingConvention.js.map +0 -1
  904. package/lib/utils/NamingConvention/index.d.ts +0 -1
  905. package/lib/utils/NamingConvention/index.js +0 -28
  906. package/lib/utils/NamingConvention/index.js.map +0 -1
  907. package/lib/utils/RandomGenerator/RandomGenerator.d.ts +0 -31
  908. package/lib/utils/RandomGenerator/RandomGenerator.js +0 -176
  909. package/lib/utils/RandomGenerator/RandomGenerator.js.map +0 -1
  910. package/lib/utils/RandomGenerator/index.d.ts +0 -1
  911. package/lib/utils/RandomGenerator/index.js +0 -28
  912. package/lib/utils/RandomGenerator/index.js.map +0 -1
  913. package/lib/utils/StringUtil/StringUtil.d.ts +0 -6
  914. package/lib/utils/StringUtil/StringUtil.js +0 -18
  915. package/lib/utils/StringUtil/StringUtil.js.map +0 -1
  916. package/lib/utils/StringUtil/index.d.ts +0 -1
  917. package/lib/utils/StringUtil/index.js +0 -28
  918. package/lib/utils/StringUtil/index.js.map +0 -1
  919. package/src/functional/$FormDataReader/$FormDataReader.ts +0 -83
  920. package/src/functional/$FormDataReader/index.ts +0 -1
  921. package/src/functional/$HeadersReader/$HeadersReader.ts +0 -26
  922. package/src/functional/$HeadersReader/index.ts +0 -1
  923. package/src/functional/$ParameterReader/$ParameterReader.ts +0 -29
  924. package/src/functional/$ParameterReader/index.ts +0 -1
  925. package/src/functional/$QueryReader/$QueryReader.ts +0 -46
  926. package/src/functional/$QueryReader/index.ts +0 -1
  927. package/src/functional/$any.ts +0 -3
  928. package/src/functional/$dictionary.ts +0 -22
  929. package/src/functional/$every.ts +0 -11
  930. package/src/functional/$guard.ts +0 -21
  931. package/src/functional/$is_between.ts +0 -2
  932. package/src/functional/$strlen.ts +0 -7
  933. package/src/functional/$throws.ts +0 -10
  934. package/src/functional/Namespace/functional.ts +0 -5
  935. package/src/functional/Namespace/http.ts +0 -9
  936. package/src/functional/Namespace/index.ts +0 -77
  937. package/src/functional/Namespace/json.ts +0 -15
  938. package/src/functional/Namespace/llm.ts +0 -20
  939. package/src/functional/Namespace/misc.ts +0 -14
  940. package/src/functional/Namespace/notations.ts +0 -23
  941. package/src/functional/Namespace/protobuf.ts +0 -20
  942. package/src/functional/is.ts +0 -10
  943. package/src/programmers/helpers/RandomRanger.ts +0 -225
  944. package/src/programmers/helpers/disable_function_importer_declare.ts +0 -33
  945. package/src/programmers/internal/random_custom.ts +0 -39
  946. package/src/utils/NamingConvention/index.ts +0 -1
  947. package/src/utils/RandomGenerator/RandomGenerator.ts +0 -119
  948. package/src/utils/RandomGenerator/index.ts +0 -1
  949. package/src/utils/StringUtil/StringUtil.ts +0 -14
  950. package/src/utils/StringUtil/index.ts +0 -1
  951. /package/lib/{functional → internal}/$ProtobufReader.d.ts +0 -0
  952. /package/lib/{functional → internal}/$ProtobufReader.js +0 -0
  953. /package/lib/{functional → internal}/$ProtobufWriter.js +0 -0
  954. /package/lib/{functional/$guard.d.ts → internal/$jsonStringifyString.d.ts} +0 -0
  955. /package/src/{functional → internal}/$ProtobufReader.ts +0 -0
@@ -1,3 +1,4 @@
1
+ import { OpenApi } from "@samchon/openapi";
1
2
  import ts from "typescript";
2
3
 
3
4
  import { ExpressionFactory } from "../factories/ExpressionFactory";
@@ -20,14 +21,19 @@ import { MetadataTupleType } from "../schemas/metadata/MetadataTupleType";
20
21
  import { ITypiaContext } from "../transformers/ITypiaContext";
21
22
  import { TransformerError } from "../transformers/TransformerError";
22
23
 
23
- import { Escaper } from "../utils/Escaper";
24
+ import { StringUtil } from "../utils/StringUtil";
24
25
 
25
- import { Format } from "../tags";
26
26
  import { FeatureProgrammer } from "./FeatureProgrammer";
27
- import { FunctionImporter } from "./helpers/FunctionImporter";
27
+ import { FunctionProgrammer } from "./helpers/FunctionProgrammer";
28
28
  import { RandomJoiner } from "./helpers/RandomJoiner";
29
- import { RandomRanger } from "./helpers/RandomRanger";
30
- import { random_custom } from "./internal/random_custom";
29
+ import { LiteralFactory } from "../factories/LiteralFactory";
30
+ import { application_array } from "./internal/application_array";
31
+ import { application_v31_schema } from "./internal/application_v31_schema";
32
+ import { MetadataCommentTagFactory } from "../factories/MetadataCommentTagFactory";
33
+ import { application_boolean } from "./internal/application_boolean";
34
+ import { application_string } from "./internal/application_string";
35
+ import { application_bigint } from "./internal/application_bigint";
36
+ import { application_number } from "./internal/application_number";
31
37
 
32
38
  export namespace RandomProgrammer {
33
39
  export interface IProps {
@@ -39,7 +45,7 @@ export namespace RandomProgrammer {
39
45
  }
40
46
  export interface IDecomposeProps {
41
47
  context: ITypiaContext;
42
- importer: FunctionImporter;
48
+ functor: FunctionProgrammer;
43
49
  type: ts.Type;
44
50
  name: string | undefined;
45
51
  init: ts.Expression | undefined;
@@ -70,22 +76,25 @@ export namespace RandomProgrammer {
70
76
  });
71
77
  if (result.success === false)
72
78
  throw TransformerError.from({
73
- code: `typia.${props.importer.method}`,
79
+ code: props.functor.method,
74
80
  errors: result.errors,
75
81
  });
76
82
 
77
83
  // GENERATE FUNCTION
78
84
  const functions: Record<string, ts.VariableStatement> = Object.fromEntries([
79
85
  ...write_object_functions({
80
- importer: props.importer,
86
+ context: props.context,
87
+ functor: props.functor,
81
88
  collection,
82
89
  }).map((v, i) => [Prefix.object(i), v]),
83
90
  ...write_array_functions({
84
- importer: props.importer,
91
+ context: props.context,
92
+ functor: props.functor,
85
93
  collection,
86
94
  }).map((v, i) => [Prefix.array(i), v]),
87
95
  ...write_tuple_functions({
88
- importer: props.importer,
96
+ context: props.context,
97
+ functor: props.functor,
89
98
  collection,
90
99
  }).map((v, i) => [Prefix.tuple(i), v]),
91
100
  ]);
@@ -128,7 +137,8 @@ export namespace RandomProgrammer {
128
137
  ),
129
138
  ts.factory.createReturnStatement(
130
139
  decode({
131
- importer: props.importer,
140
+ context: props.context,
141
+ functor: props.functor,
132
142
  explore: {
133
143
  function: false,
134
144
  recursive: false,
@@ -148,22 +158,23 @@ export namespace RandomProgrammer {
148
158
  };
149
159
 
150
160
  export const write = (props: IProps) => {
151
- const importer: FunctionImporter = new FunctionImporter(
161
+ const functor: FunctionProgrammer = new FunctionProgrammer(
152
162
  props.modulo.getText(),
153
163
  );
154
164
  const result: FeatureProgrammer.IDecomposed = decompose({
155
165
  ...props,
156
- importer,
166
+ functor,
157
167
  });
158
168
  return FeatureProgrammer.writeDecomposed({
159
169
  modulo: props.modulo,
160
- importer,
170
+ functor,
161
171
  result,
162
172
  });
163
173
  };
164
174
 
165
175
  const write_object_functions = (props: {
166
- importer: FunctionImporter;
176
+ context: ITypiaContext;
177
+ functor: FunctionProgrammer;
167
178
  collection: MetadataCollection;
168
179
  }): ts.VariableStatement[] =>
169
180
  props.collection.objects().map((obj, i) =>
@@ -187,10 +198,10 @@ export namespace RandomProgrammer {
187
198
  TypeFactory.keyword("any"),
188
199
  undefined,
189
200
  RandomJoiner.object({
190
- coalesce: coalesce(props.importer),
191
201
  decode: (metadata) =>
192
202
  decode({
193
- importer: props.importer,
203
+ context: props.context,
204
+ functor: props.functor,
194
205
  explore: {
195
206
  recursive: obj.recursive,
196
207
  function: true,
@@ -204,7 +215,8 @@ export namespace RandomProgrammer {
204
215
  );
205
216
 
206
217
  const write_array_functions = (props: {
207
- importer: FunctionImporter;
218
+ context: ITypiaContext;
219
+ functor: FunctionProgrammer;
208
220
  collection: MetadataCollection;
209
221
  }): ts.VariableStatement[] =>
210
222
  props.collection
@@ -218,11 +230,7 @@ export namespace RandomProgrammer {
218
230
  undefined,
219
231
  [
220
232
  IdentifierFactory.parameter(
221
- "length",
222
- TypeFactory.keyword("number"),
223
- ),
224
- IdentifierFactory.parameter(
225
- "unique",
233
+ "_schema",
226
234
  TypeFactory.keyword("boolean"),
227
235
  ),
228
236
  IdentifierFactory.parameter(
@@ -239,30 +247,32 @@ export namespace RandomProgrammer {
239
247
  TypeFactory.keyword("any"),
240
248
  undefined,
241
249
  RandomJoiner.array({
242
- coalesce: coalesce(props.importer),
243
250
  decode: (metadata) =>
244
251
  decode({
245
- importer: props.importer,
252
+ context: props.context,
253
+ functor: props.functor,
246
254
  explore: {
247
255
  recursive: true,
248
256
  function: true,
249
257
  },
250
258
  metadata,
251
259
  }),
252
- explore: {
253
- recursive: true,
254
- function: true,
255
- },
256
- length: ts.factory.createIdentifier("length"),
257
- unique: ts.factory.createIdentifier("unique"),
258
- metadata: array.value,
260
+ recursive: true,
261
+ expression: coalesce({
262
+ context: props.context,
263
+ method: "array",
264
+ internal: "randomArray",
265
+ }),
266
+ array,
267
+ schema: undefined
259
268
  }),
260
269
  ),
261
270
  }),
262
271
  );
263
272
 
264
273
  const write_tuple_functions = (props: {
265
- importer: FunctionImporter;
274
+ context: ITypiaContext;
275
+ functor: FunctionProgrammer;
266
276
  collection: MetadataCollection;
267
277
  }): ts.VariableStatement[] =>
268
278
  props.collection
@@ -291,7 +301,8 @@ export namespace RandomProgrammer {
291
301
  RandomJoiner.tuple({
292
302
  decode: (metadata) =>
293
303
  decode({
294
- importer: props.importer,
304
+ context: props.context,
305
+ functor: props.functor,
295
306
  explore: {
296
307
  function: true,
297
308
  recursive: true,
@@ -308,7 +319,8 @@ export namespace RandomProgrammer {
308
319
  DECODERS
309
320
  ----------------------------------------------------------- */
310
321
  const decode = (props: {
311
- importer: FunctionImporter;
322
+ context: ITypiaContext;
323
+ functor: FunctionProgrammer;
312
324
  explore: IExplore;
313
325
  metadata: Metadata;
314
326
  }): ts.Expression => {
@@ -328,7 +340,15 @@ export namespace RandomProgrammer {
328
340
  // CONSTANT TYPES
329
341
  for (const constant of props.metadata.constants)
330
342
  for (const { value } of constant.values)
331
- expressions.push(decode_atomic(value));
343
+ expressions.push(
344
+ constant.type === "boolean"
345
+ ? value === true ? ts.factory.createTrue() : ts.factory.createFalse()
346
+ : constant.type === "bigint"
347
+ ? ExpressionFactory.bigint(<bigint>value)
348
+ : constant.type === "number"
349
+ ? ExpressionFactory.number(<number>value)
350
+ : ts.factory.createStringLiteral(<string>value),
351
+ );
332
352
 
333
353
  // ATOMIC VARIABLES
334
354
  for (const template of props.metadata.templates)
@@ -339,29 +359,12 @@ export namespace RandomProgrammer {
339
359
  }),
340
360
  );
341
361
  for (const atomic of props.metadata.atomics)
342
- if (atomic.type === "boolean")
343
- expressions.push(decode_boolean(props.importer));
344
- else if (atomic.type === "number")
345
- expressions.push(
346
- ...decode_number({
347
- importer: props.importer,
348
- atomic,
349
- }),
350
- );
351
- else if (atomic.type === "string")
352
- expressions.push(
353
- ...decode_string({
354
- importer: props.importer,
355
- atomic,
356
- }),
357
- );
358
- else if (atomic.type === "bigint")
359
- expressions.push(
360
- ...decode_bigint({
361
- importer: props.importer,
362
- atomic,
363
- }),
364
- );
362
+ expressions.push(
363
+ ...decode_atomic({
364
+ context: props.context,
365
+ atomic,
366
+ }),
367
+ );
365
368
 
366
369
  // INSTANCE TYPES
367
370
  if (props.metadata.escaped)
@@ -395,7 +398,9 @@ export namespace RandomProgrammer {
395
398
  for (const name of props.metadata.natives)
396
399
  expressions.push(
397
400
  decode_native({
398
- importer: props.importer,
401
+ context: props.context,
402
+ functor: props.functor,
403
+ explore: props.explore,
399
404
  name,
400
405
  }),
401
406
  );
@@ -417,7 +422,7 @@ export namespace RandomProgrammer {
417
422
  // PICK UP A TYPE
418
423
  if (expressions.length === 1) return expressions[0]!;
419
424
  return ts.factory.createCallExpression(
420
- ts.factory.createCallExpression(props.importer.use("pick"), undefined, [
425
+ ts.factory.createCallExpression(props.context.importer.internal("randomPick"), undefined, [
421
426
  ts.factory.createArrayLiteralExpression(
422
427
  expressions.map((expr) =>
423
428
  ts.factory.createArrowFunction(
@@ -437,24 +442,89 @@ export namespace RandomProgrammer {
437
442
  );
438
443
  };
439
444
 
440
- const decode_boolean = (importer: FunctionImporter) =>
441
- ts.factory.createCallExpression(
442
- coalesce(importer)("boolean"),
443
- undefined,
445
+ const decode_atomic = (props: {
446
+ context: ITypiaContext;
447
+ atomic: MetadataAtomic;
448
+ }) => {
449
+ const schemaList: OpenApi.IJsonSchema[] = props.atomic.type === "boolean"
450
+ ? application_boolean<"3.1">(props.atomic)
451
+ : props.atomic.type === "string"
452
+ ? application_string<"3.1">(props.atomic)
453
+ : props.atomic.type === "bigint"
454
+ ? application_bigint<"3.1">(props.atomic)
455
+ : application_number<"3.1">(props.atomic);
456
+ return schemaList.map((schema) => {
457
+ const { method, internal } = (() => {
458
+ if (props.atomic.type === "string") {
459
+ const string: OpenApi.IJsonSchema.IString =
460
+ schema as OpenApi.IJsonSchema.IString;
461
+ if (string.format !== undefined) {
462
+ const format: string = string.format!;
463
+ if (format === "date-time")
464
+ return {
465
+ method: "datetime",
466
+ internal: "randomFormatDatetime",
467
+ };
468
+ return {
469
+ method: format
470
+ .split("-")
471
+ .map((s, i) => (i === 0 ? s : StringUtil.capitalize(s)))
472
+ .join(""),
473
+ internal: `randomFormat${format
474
+ .split("-")
475
+ .map(StringUtil.capitalize)
476
+ .join("")}`,
477
+ };
478
+ } else if (string.pattern !== undefined)
479
+ return {
480
+ method: "pattern",
481
+ internal: "randomPattern",
482
+ };
483
+ } else if (props.atomic.type === "number") {
484
+ const number:
485
+ | OpenApi.IJsonSchema.INumber
486
+ | OpenApi.IJsonSchema.IInteger = schema as
487
+ | OpenApi.IJsonSchema.INumber
488
+ | OpenApi.IJsonSchema.IInteger;
489
+ if (number.type === "integer")
490
+ return {
491
+ method: "integer",
492
+ internal: "randomInteger",
493
+ };
494
+ }
495
+ return {
496
+ method: props.atomic.type,
497
+ internal: `random${StringUtil.capitalize(props.atomic.type)}`,
498
+ };
499
+ })();
500
+ return ts.factory.createCallExpression(
501
+ ExpressionFactory.coalesce(
502
+ ts.factory.createPropertyAccessChain(
503
+ ts.factory.createIdentifier("_generator"),
504
+ ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
505
+ ts.factory.createIdentifier(method),
506
+ ),
507
+ props.context.importer.internal(internal),
508
+ ),
444
509
  undefined,
445
- );
446
-
447
- const decode_atomic = (value: Atomic) =>
448
- typeof value === "boolean"
449
- ? ts.factory.createIdentifier(value.toString())
450
- : typeof value === "number"
451
- ? ExpressionFactory.number(value)
452
- : typeof value === "string"
453
- ? ts.factory.createStringLiteral(value)
454
- : ExpressionFactory.bigint(Number(value));
510
+ [
511
+ method === "pattern"
512
+ ? ts.factory.createNewExpression(
513
+ ts.factory.createIdentifier("RegExp"),
514
+ undefined,
515
+ [
516
+ ts.factory.createStringLiteral((schema as OpenApi.IJsonSchema.IString).pattern!)
517
+ ]
518
+ )
519
+ : LiteralFactory.write(schema)
520
+ ]
521
+ )
522
+ });
523
+ };
455
524
 
456
525
  const decode_template = (props: {
457
- importer: FunctionImporter;
526
+ context: ITypiaContext;
527
+ functor: FunctionProgrammer;
458
528
  explore: IExplore;
459
529
  template: MetadataTemplate;
460
530
  }) =>
@@ -467,226 +537,71 @@ export namespace RandomProgrammer {
467
537
  ),
468
538
  );
469
539
 
470
- const decode_number = (props: {
471
- importer: FunctionImporter;
472
- atomic: MetadataAtomic;
473
- }): ts.Expression[] =>
474
- (props.atomic.tags.length ? props.atomic.tags : [[]]).map((tags) => {
475
- const type = tags.find(
476
- (t) =>
477
- t.kind === "type" && (t.value === "int32" || t.value === "int64"),
478
- )
479
- ? "int"
480
- : tags.find(
481
- (t) =>
482
- t.kind === "type" &&
483
- (t.value === "uint32" || t.value === "uint64"),
484
- )
485
- ? "uint"
486
- : "double";
487
- const multiply = tags.find((t) => t.kind === "multipleOf");
488
- return random_custom({
489
- accessor: coalesce(props.importer),
490
- type: "number",
491
- tags,
492
- expression: RandomRanger.number({
493
- config: {
494
- type,
495
- transform: (value) => ExpressionFactory.number(value),
496
- setter: (args) =>
497
- ts.factory.createCallExpression(
498
- type !== "double" || multiply !== undefined
499
- ? coalesce(props.importer)("integer")
500
- : coalesce(props.importer)("number"),
501
- undefined,
502
- args.map((val) => ExpressionFactory.number(val)),
503
- ),
504
- },
505
- defaults: {
506
- minimum: 0,
507
- maximum: 100,
508
- gap: 10,
509
- },
510
- tags,
511
- }),
512
- });
513
- });
514
-
515
- const decode_bigint = (props: {
516
- importer: FunctionImporter;
517
- atomic: MetadataAtomic;
518
- }): ts.Expression[] =>
519
- (props.atomic.tags.length ? props.atomic.tags : [[]]).map((tags) =>
520
- random_custom({
521
- accessor: coalesce(props.importer),
522
- type: "bigint",
523
- tags,
524
- expression: RandomRanger.number({
525
- config: {
526
- type: tags.find(
527
- (t) =>
528
- t.kind === "type" &&
529
- (t.value === "uint" || t.value === "uint64"),
530
- )
531
- ? "uint"
532
- : "int",
533
- transform: (value) => ExpressionFactory.bigint(value),
534
- setter: (args) =>
535
- ts.factory.createCallExpression(
536
- coalesce(props.importer)("bigint"),
537
- undefined,
538
- args.map((value) => ExpressionFactory.bigint(value)),
539
- ),
540
- },
541
- defaults: {
542
- minimum: 0,
543
- maximum: 100,
544
- gap: 10,
545
- },
546
- tags,
547
- }),
548
- }),
549
- );
550
-
551
- const decode_string = (props: {
552
- importer: FunctionImporter;
553
- atomic: MetadataAtomic;
554
- }): ts.Expression[] =>
555
- (props.atomic.tags.length ? props.atomic.tags : [[]]).map((tags) =>
556
- random_custom({
557
- accessor: coalesce(props.importer),
558
- type: "string",
559
- tags,
560
- expression: (() => {
561
- for (const t of tags)
562
- if (t.kind === "format")
563
- return ts.factory.createCallExpression(
564
- coalesce(props.importer)(emendFormat(t.value)),
565
- undefined,
566
- undefined,
567
- );
568
- else if (t.kind === "pattern")
569
- return ts.factory.createCallExpression(
570
- coalesce(props.importer)("pattern"),
571
- undefined,
572
- [
573
- ts.factory.createIdentifier(
574
- `RegExp(${JSON.stringify(t.value)})`,
575
- ),
576
- ],
577
- );
578
-
579
- const tail = RandomRanger.length({
580
- coalesce: coalesce(props.importer),
581
- defaults: {
582
- minimum: 5,
583
- maximum: 25,
584
- gap: 5,
585
- },
586
- accessors: {
587
- minimum: "minLength",
588
- maximum: "maxLength",
589
- },
590
- tags,
591
- });
592
- return ts.factory.createCallExpression(
593
- coalesce(props.importer)("string"),
594
- undefined,
595
- tail ? [tail] : undefined,
596
- );
597
- })(),
598
- }),
599
- );
600
-
601
540
  const decode_array = (props: {
602
- importer: FunctionImporter;
541
+ context: ITypiaContext;
542
+ functor: FunctionProgrammer;
603
543
  explore: IExplore;
604
544
  array: MetadataArray;
605
545
  }): ts.Expression[] => {
606
- const fixed: Array<[ts.Expression | undefined, ts.Expression | undefined]> =
607
- (props.array.tags.length ? props.array.tags : [[]]).map((tags) => [
608
- RandomRanger.length({
609
- coalesce: coalesce(props.importer),
610
- defaults: {
611
- minimum: 0,
612
- maximum: 3,
613
- gap: 3,
614
- },
615
- accessors: {
616
- minimum: "minItems",
617
- maximum: "maxItems",
618
- },
619
- tags,
620
- }),
621
- (() => {
622
- const uniqueItems = tags.find((t) => t.kind === "uniqueItems");
623
- return uniqueItems === undefined
624
- ? undefined
625
- : uniqueItems.value === false
626
- ? ts.factory.createFalse()
627
- : ts.factory.createTrue();
628
- })(),
629
- ]);
546
+ const components: OpenApi.IComponents = {};
547
+ const schemaList: OpenApi.IJsonSchema.IArray[] = application_array<"3.1">({
548
+ generator: (value) => application_v31_schema({
549
+ blockNever: true,
550
+ components,
551
+ attribute: {},
552
+ metadata: value,
553
+ })!,
554
+ components,
555
+ array: props.array,
556
+ }) as OpenApi.IJsonSchema.IArray[];
630
557
  if (props.array.type.recursive)
631
- return fixed.map(([len, unique]) =>
558
+ return schemaList.map(schema =>
632
559
  ts.factory.createCallExpression(
633
560
  ts.factory.createIdentifier(
634
- props.importer.useLocal(Prefix.array(props.array.type.index!)),
561
+ props.functor.useLocal(Prefix.array(props.array.type.index!)),
635
562
  ),
636
563
  undefined,
637
564
  [
638
- len ?? coalesce(props.importer)("length"),
639
- unique ?? ts.factory.createFalse(),
640
- ts.factory.createTrue(),
641
- props.explore.recursive
642
- ? ts.factory.createAdd(
643
- ExpressionFactory.number(1),
644
- ts.factory.createIdentifier("_depth"),
645
- )
646
- : ExpressionFactory.number(0),
565
+ ts.factory.createObjectLiteralExpression(Object.entries(schema)
566
+ .filter(([key]) => key !== "items")
567
+ .map(([key, value]) =>
568
+ ts.factory.createPropertyAssignment(
569
+ key,
570
+ LiteralFactory.write(value),
571
+ ),
572
+ ), true),
647
573
  ],
648
574
  ),
649
575
  );
650
- return fixed.map(([len, unique]) => {
651
- const expr: ts.Expression = RandomJoiner.array({
652
- coalesce: coalesce(props.importer),
576
+ return schemaList.map(schema =>
577
+ RandomJoiner.array({
653
578
  decode: (metadata) =>
654
579
  decode({
655
580
  ...props,
656
581
  metadata,
657
582
  }),
658
- explore: props.explore,
659
- length: len,
660
- unique,
661
- metadata: props.array.type.value,
662
- });
663
- return props.explore.recursive
664
- ? ts.factory.createConditionalExpression(
665
- ts.factory.createLogicalAnd(
666
- ts.factory.createIdentifier("_recursive"),
667
- ts.factory.createLessThan(
668
- ExpressionFactory.number(5),
669
- ts.factory.createIdentifier("_depth"),
670
- ),
671
- ),
672
- undefined,
673
- ts.factory.createIdentifier("[]"),
674
- undefined,
675
- expr,
676
- )
677
- : expr;
678
- });
679
- };
583
+ expression: coalesce({
584
+ context: props.context,
585
+ method: "array",
586
+ internal: "randomArray",
587
+ }),
588
+ array: props.array.type,
589
+ recursive: props.explore.recursive,
590
+ schema,
591
+ })
592
+ );
593
+ }
680
594
 
681
595
  const decode_tuple = (props: {
682
- importer: FunctionImporter;
596
+ context: ITypiaContext;
597
+ functor: FunctionProgrammer;
683
598
  explore: IExplore;
684
599
  tuple: MetadataTuple;
685
600
  }): ts.Expression =>
686
601
  props.tuple.type.recursive
687
602
  ? ts.factory.createCallExpression(
688
603
  ts.factory.createIdentifier(
689
- props.importer.useLocal(Prefix.tuple(props.tuple.type.index!)),
604
+ props.functor.useLocal(Prefix.tuple(props.tuple.type.index!)),
690
605
  ),
691
606
  undefined,
692
607
  [
@@ -709,13 +624,13 @@ export namespace RandomProgrammer {
709
624
  });
710
625
 
711
626
  const decode_object = (props: {
712
- importer: FunctionImporter;
627
+ functor: FunctionProgrammer;
713
628
  explore: IExplore;
714
629
  object: MetadataObject;
715
630
  }) =>
716
631
  ts.factory.createCallExpression(
717
632
  ts.factory.createIdentifier(
718
- props.importer.useLocal(Prefix.object(props.object.index)),
633
+ props.functor.useLocal(Prefix.object(props.object.index)),
719
634
  ),
720
635
  undefined,
721
636
  props.explore.function
@@ -741,7 +656,8 @@ export namespace RandomProgrammer {
741
656
  NATIVE CLASSES
742
657
  ----------------------------------------------------------- */
743
658
  const decode_set = (props: {
744
- importer: FunctionImporter;
659
+ context: ITypiaContext;
660
+ functor: FunctionProgrammer;
745
661
  explore: IExplore;
746
662
  metadata: Metadata;
747
663
  }) =>
@@ -766,7 +682,8 @@ export namespace RandomProgrammer {
766
682
  );
767
683
 
768
684
  const decode_map = (props: {
769
- importer: FunctionImporter;
685
+ context: ITypiaContext;
686
+ functor: FunctionProgrammer;
770
687
  explore: IExplore;
771
688
  entry: Metadata.Entry;
772
689
  }) =>
@@ -809,27 +726,25 @@ export namespace RandomProgrammer {
809
726
  );
810
727
 
811
728
  const decode_native = (props: {
812
- importer: FunctionImporter;
729
+ context: ITypiaContext;
730
+ functor: FunctionProgrammer;
731
+ explore: IExplore;
813
732
  name: string;
814
733
  }): ts.Expression => {
815
- if (props.name === "Boolean") return decode_boolean(props.importer);
816
- else if (props.name === "Number")
817
- return decode_number({
818
- importer: props.importer,
819
- atomic: MetadataAtomic.create({
820
- type: "number",
821
- tags: [],
822
- }),
823
- })[0]!;
824
- else if (props.name === "String")
825
- return decode_string({
826
- importer: props.importer,
734
+ if (
735
+ props.name === "Boolean" ||
736
+ props.name === "Number" ||
737
+ props.name === "BigInt" ||
738
+ props.name === "String"
739
+ )
740
+ return decode_atomic({
741
+ context: props.context,
827
742
  atomic: MetadataAtomic.create({
828
- type: "string",
743
+ type: props.name.toLowerCase() as "string",
829
744
  tags: [],
830
745
  }),
831
746
  })[0]!;
832
- else if (props.name === "Date") return decode_native_date(props.importer);
747
+ else if (props.name === "Date") return decode_native_date(props.context);
833
748
  else if (
834
749
  props.name === "Uint8Array" ||
835
750
  props.name === "Uint8ClampedArray" ||
@@ -852,11 +767,10 @@ export namespace RandomProgrammer {
852
767
  ...props,
853
768
  name: props.name,
854
769
  });
855
- else if (props.name === "DataView")
856
- return decode_native_data_view(props.importer);
857
- else if (props.name === "Blob") return decode_native_blob(props.importer);
858
- else if (props.name === "File") return decode_native_file(props.importer);
859
- else if (props.name === "RegExp") return decode_regexp();
770
+ else if (props.name === "DataView")return decode_native_data_view(props);
771
+ else if (props.name === "Blob") return decode_native_blob(props);
772
+ else if (props.name === "File") return decode_native_file(props);
773
+ else if (props.name === "RegExp") return decode_regexp(props.context);
860
774
  else
861
775
  return ts.factory.createNewExpression(
862
776
  ts.factory.createIdentifier(props.name),
@@ -865,13 +779,17 @@ export namespace RandomProgrammer {
865
779
  );
866
780
  };
867
781
 
868
- const decode_native_date = (importer: FunctionImporter) =>
782
+ const decode_native_date = (context: ITypiaContext) =>
869
783
  ts.factory.createNewExpression(
870
784
  ts.factory.createIdentifier("Date"),
871
785
  undefined,
872
786
  [
873
787
  ts.factory.createCallExpression(
874
- coalesce(importer)("datetime"),
788
+ coalesce({
789
+ context,
790
+ method: "datetime",
791
+ internal: "randomFormatDatetime",
792
+ }),
875
793
  undefined,
876
794
  [],
877
795
  ),
@@ -879,7 +797,9 @@ export namespace RandomProgrammer {
879
797
  );
880
798
 
881
799
  const decode_native_byte_array = (props: {
882
- importer: FunctionImporter;
800
+ context: ITypiaContext;
801
+ functor: FunctionProgrammer;
802
+ explore: IExplore;
883
803
  name:
884
804
  | "Uint8Array"
885
805
  | "Uint8ClampedArray"
@@ -894,60 +814,80 @@ export namespace RandomProgrammer {
894
814
  | "Float64Array";
895
815
  }): ts.Expression => {
896
816
  new BigInt64Array();
897
- const [minimum, maximum]: [number, number] = (() => {
817
+ const [type, minimum, maximum]: [string, number, number] = (() => {
898
818
  if (props.name === "Uint8Array" || props.name === "Uint8ClampedArray")
899
- return [0, 255];
900
- else if (props.name === "Uint16Array") return [0, 65535];
901
- else if (props.name === "Uint32Array") return [0, 4294967295];
819
+ return ["uint32", 0, 255];
820
+ else if (props.name === "Uint16Array") return ["uint32", 0, 65535];
821
+ else if (props.name === "Uint32Array") return ["uint32", 0, 4294967295];
902
822
  else if (props.name === "BigUint64Array")
903
- return [0, 18446744073709551615];
904
- else if (props.name === "Int8Array") return [-128, 127];
905
- else if (props.name === "Int16Array") return [-32768, 32767];
906
- else if (props.name === "Int32Array") return [-2147483648, 2147483647];
823
+ return ["uint64", 0, 18446744073709551615];
824
+ else if (props.name === "Int8Array") return ["int32", -128, 127];
825
+ else if (props.name === "Int16Array") return ["int32", -32768, 32767];
826
+ else if (props.name === "Int32Array") return ["int32", -2147483648, 2147483647];
907
827
  else if (props.name === "BigInt64Array")
908
- return [-9223372036854775808, 9223372036854775807];
828
+ return ["uint64", -9223372036854775808, 9223372036854775807];
909
829
  else if (props.name === "Float32Array")
910
- return [-1.175494351e38, 3.4028235e38];
911
- return [Number.MIN_VALUE, Number.MAX_VALUE];
830
+ return ["float", -1.175494351e38, 3.4028235e38];
831
+ return ["double", Number.MIN_VALUE, Number.MAX_VALUE];
912
832
  })();
913
- const literal =
914
- props.name === "BigInt64Array" || props.name === "BigUint64Array"
915
- ? ExpressionFactory.bigint
916
- : ExpressionFactory.number;
833
+ const atomic: "bigint" | "number" =
834
+ props.name === "BigInt64Array" ||
835
+ props.name === "BigUint64Array"
836
+ ? "bigint"
837
+ : "number"
838
+ const value: Metadata = Metadata.create({
839
+ ...Metadata.initialize(),
840
+ atomics: [
841
+ MetadataAtomic.create({
842
+ type: atomic,
843
+ tags: [
844
+ [
845
+ ...MetadataCommentTagFactory.get({
846
+ kind: "type",
847
+ type: atomic,
848
+ value: type,
849
+ }),
850
+ ...MetadataCommentTagFactory.get({
851
+ kind: "minimum",
852
+ type: "number",
853
+ value: minimum.toString(),
854
+ }),
855
+ ...MetadataCommentTagFactory.get({
856
+ kind: "maximum",
857
+ type: "number",
858
+ value: maximum.toString(),
859
+ }),
860
+ ]
861
+ ],
862
+ })
863
+ ],
864
+ });
917
865
  return ts.factory.createNewExpression(
918
866
  ts.factory.createIdentifier(props.name),
919
867
  [],
920
- [
921
- ts.factory.createCallExpression(
922
- coalesce(props.importer)("array"),
923
- undefined,
924
- [
925
- ts.factory.createArrowFunction(
926
- undefined,
927
- undefined,
928
- [],
929
- TypeFactory.keyword("any"),
930
- undefined,
931
- ts.factory.createCallExpression(
932
- coalesce(props.importer)(
933
- props.name === "Float32Array" || props.name === "Float64Array"
934
- ? "number"
935
- : props.name === "BigInt64Array" ||
936
- props.name === "BigUint64Array"
937
- ? "bigint"
938
- : "integer",
939
- ),
940
- undefined,
941
- [literal(minimum), literal(maximum)],
942
- ),
943
- ),
944
- ],
945
- ),
946
- ],
868
+ decode_array({
869
+ context: props.context,
870
+ functor: props.functor,
871
+ explore: props.explore,
872
+ array: MetadataArray.create({
873
+ tags: [],
874
+ type: MetadataArrayType.create({
875
+ name: `${props.name}<${atomic}>`,
876
+ value,
877
+ recursive: false,
878
+ index: null,
879
+ nullables: [],
880
+ }),
881
+ }),
882
+ }),
947
883
  );
948
884
  };
949
885
 
950
- const decode_native_blob = (importer: FunctionImporter) =>
886
+ const decode_native_blob = (props: {
887
+ context: ITypiaContext;
888
+ functor: FunctionProgrammer;
889
+ explore: IExplore;
890
+ }) =>
951
891
  ts.factory.createNewExpression(
952
892
  ts.factory.createIdentifier("Blob"),
953
893
  undefined,
@@ -955,7 +895,9 @@ export namespace RandomProgrammer {
955
895
  ts.factory.createArrayLiteralExpression(
956
896
  [
957
897
  decode_native_byte_array({
958
- importer,
898
+ context: props.context,
899
+ functor: props.functor,
900
+ explore: props.explore,
959
901
  name: "Uint8Array",
960
902
  }),
961
903
  ],
@@ -964,7 +906,11 @@ export namespace RandomProgrammer {
964
906
  ],
965
907
  );
966
908
 
967
- const decode_native_file = (importer: FunctionImporter) =>
909
+ const decode_native_file = (props: {
910
+ context: ITypiaContext;
911
+ functor: FunctionProgrammer;
912
+ explore: IExplore;
913
+ }) =>
968
914
  ts.factory.createNewExpression(
969
915
  ts.factory.createIdentifier("File"),
970
916
  undefined,
@@ -972,7 +918,9 @@ export namespace RandomProgrammer {
972
918
  ts.factory.createArrayLiteralExpression(
973
919
  [
974
920
  decode_native_byte_array({
975
- importer,
921
+ context: props.context,
922
+ functor: props.functor,
923
+ explore: props.explore,
976
924
  name: "Uint8Array",
977
925
  }),
978
926
  ],
@@ -980,19 +928,19 @@ export namespace RandomProgrammer {
980
928
  ),
981
929
  ts.factory.createTemplateExpression(ts.factory.createTemplateHead(""), [
982
930
  ts.factory.createTemplateSpan(
983
- ts.factory.createCallExpression(
984
- coalesce(importer)("string"),
985
- undefined,
986
- [ts.factory.createNumericLiteral(8)],
987
- ),
931
+ writeRangedString({
932
+ context: props.context,
933
+ minLength: 1,
934
+ maxLength: 8,
935
+ }),
988
936
  ts.factory.createTemplateMiddle("."),
989
937
  ),
990
938
  ts.factory.createTemplateSpan(
991
- ts.factory.createCallExpression(
992
- coalesce(importer)("string"),
993
- undefined,
994
- [ts.factory.createNumericLiteral(3)],
995
- ),
939
+ writeRangedString({
940
+ context: props.context,
941
+ minLength: 3,
942
+ maxLength: 3,
943
+ }),
996
944
  ts.factory.createTemplateTail(""),
997
945
  ),
998
946
  ]),
@@ -1000,13 +948,17 @@ export namespace RandomProgrammer {
1000
948
  );
1001
949
 
1002
950
  const decode_native_array_buffer = (props: {
1003
- importer: FunctionImporter;
951
+ context: ITypiaContext;
952
+ functor: FunctionProgrammer;
953
+ explore: IExplore;
1004
954
  name: "ArrayBuffer" | "SharedArrayBuffer";
1005
955
  }): ts.Expression =>
1006
956
  props.name === "ArrayBuffer"
1007
957
  ? IdentifierFactory.access(
1008
958
  decode_native_byte_array({
1009
- importer: props.importer,
959
+ context: props.context,
960
+ functor: props.functor,
961
+ explore: props.explore,
1010
962
  name: "Uint8Array",
1011
963
  }),
1012
964
  "buffer",
@@ -1016,11 +968,19 @@ export namespace RandomProgrammer {
1016
968
  [
1017
969
  StatementFactory.constant({
1018
970
  name: "length",
1019
- value: ts.factory.createCallExpression(
1020
- coalesce(props.importer)("integer"),
1021
- undefined,
1022
- [],
1023
- ),
971
+ value: decode_atomic({
972
+ context: props.context,
973
+ atomic: MetadataAtomic.create({
974
+ type: "number",
975
+ tags: [
976
+ MetadataCommentTagFactory.get({
977
+ type: "number",
978
+ kind: "type",
979
+ value: "uint32",
980
+ }),
981
+ ],
982
+ }),
983
+ })[0]!,
1024
984
  }),
1025
985
  StatementFactory.constant({
1026
986
  name: "buffer",
@@ -1047,26 +1007,54 @@ export namespace RandomProgrammer {
1047
1007
  undefined,
1048
1008
  [
1049
1009
  ts.factory.createCallExpression(
1050
- coalesce(props.importer)("array"),
1051
- undefined,
1052
- [
1053
- ts.factory.createArrowFunction(
1054
- undefined,
1055
- undefined,
1056
- [],
1057
- TypeFactory.keyword("any"),
1058
- undefined,
1059
- ts.factory.createCallExpression(
1060
- coalesce(props.importer)("integer"),
1061
- undefined,
1062
- [
1063
- ExpressionFactory.number(0),
1064
- ExpressionFactory.number(255),
1065
- ],
1010
+ ts.factory.createPropertyAccessExpression(
1011
+ ts.factory.createCallExpression(
1012
+ ts.factory.createPropertyAccessExpression(
1013
+ ts.factory.createNewExpression(
1014
+ ts.factory.createIdentifier("Array"),
1015
+ undefined,
1016
+ [ts.factory.createIdentifier("length")]
1017
+ ),
1018
+ ts.factory.createIdentifier("fill")
1066
1019
  ),
1020
+ undefined,
1021
+ [ts.factory.createNumericLiteral("0")]
1067
1022
  ),
1068
- ts.factory.createIdentifier("length"),
1069
- ],
1023
+ ts.factory.createIdentifier("map")
1024
+ ),
1025
+ undefined,
1026
+ [ts.factory.createArrowFunction(
1027
+ undefined,
1028
+ undefined,
1029
+ [],
1030
+ undefined,
1031
+ undefined,
1032
+ decode_atomic({
1033
+ context: props.context,
1034
+ atomic: MetadataAtomic.create({
1035
+ type: "number",
1036
+ tags: [
1037
+ [
1038
+ ...MetadataCommentTagFactory.get({
1039
+ kind: "type",
1040
+ type: "number",
1041
+ value: "uint32",
1042
+ }),
1043
+ ...MetadataCommentTagFactory.get({
1044
+ kind: "minimum",
1045
+ type: "number",
1046
+ value: "0",
1047
+ }),
1048
+ ...MetadataCommentTagFactory.get({
1049
+ kind: "maximum",
1050
+ type: "number",
1051
+ value: "255",
1052
+ }),
1053
+ ]
1054
+ ],
1055
+ }),
1056
+ })[0]!
1057
+ )]
1070
1058
  ),
1071
1059
  ExpressionFactory.number(0),
1072
1060
  ],
@@ -1080,14 +1068,20 @@ export namespace RandomProgrammer {
1080
1068
  ),
1081
1069
  );
1082
1070
 
1083
- const decode_native_data_view = (importer: FunctionImporter) =>
1071
+ const decode_native_data_view = (props: {
1072
+ context: ITypiaContext;
1073
+ functor: FunctionProgrammer;
1074
+ explore: IExplore;
1075
+ }) =>
1084
1076
  ts.factory.createNewExpression(
1085
1077
  ts.factory.createIdentifier("DataView"),
1086
1078
  [],
1087
1079
  [
1088
1080
  IdentifierFactory.access(
1089
1081
  decode_native_byte_array({
1090
- importer,
1082
+ context: props.context,
1083
+ functor: props.functor,
1084
+ explore: props.explore,
1091
1085
  name: "Uint8Array",
1092
1086
  }),
1093
1087
  "buffer",
@@ -1095,15 +1089,61 @@ export namespace RandomProgrammer {
1095
1089
  ],
1096
1090
  );
1097
1091
 
1098
- const decode_regexp = () =>
1092
+ const decode_regexp = (context: ITypiaContext) =>
1099
1093
  ts.factory.createNewExpression(
1100
1094
  ts.factory.createIdentifier("RegExp"),
1101
1095
  [],
1102
- [ts.factory.createIdentifier("/(?:)/")],
1103
- );
1096
+ [
1097
+ ts.factory.createCallExpression(
1098
+ coalesce({
1099
+ context,
1100
+ method: "regex",
1101
+ internal: "randomFormatRegex",
1102
+ }),
1103
+ undefined,
1104
+ undefined,
1105
+ )
1106
+ ]);
1107
+
1108
+ const writeRangedString = (props: {
1109
+ context: ITypiaContext;
1110
+ minLength: number;
1111
+ maxLength: number;
1112
+ }): ts.CallExpression =>
1113
+ decode_atomic({
1114
+ context: props.context,
1115
+ atomic: MetadataAtomic.create({
1116
+ type: "string",
1117
+ tags: [[
1118
+ ...MetadataCommentTagFactory.get({
1119
+ kind: "minLength",
1120
+ type: "string",
1121
+ value: props.minLength.toString(),
1122
+ }),
1123
+ ...MetadataCommentTagFactory.get({
1124
+ kind: "maxLength",
1125
+ type: "string",
1126
+ value: props.maxLength.toString(),
1127
+ }),
1128
+ ]],
1129
+ }),
1130
+ })[0]!;
1104
1131
  }
1105
1132
 
1106
- type Atomic = boolean | number | string | bigint;
1133
+ const coalesce = (props: {
1134
+ context: ITypiaContext,
1135
+ method: string,
1136
+ internal: string,
1137
+ }): ts.Expression =>
1138
+ ExpressionFactory.coalesce(
1139
+ ts.factory.createPropertyAccessChain(
1140
+ ts.factory.createIdentifier("_generator"),
1141
+ ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
1142
+ ts.factory.createIdentifier(props.method),
1143
+ ),
1144
+ props.context.importer.internal(props.internal),
1145
+ );
1146
+
1107
1147
  interface IExplore {
1108
1148
  function: boolean;
1109
1149
  recursive: boolean;
@@ -1114,31 +1154,3 @@ const Prefix = {
1114
1154
  array: (i: number) => `$ra${i}`,
1115
1155
  tuple: (i: number) => `$rt${i}`,
1116
1156
  };
1117
-
1118
- const coalesce = (importer: FunctionImporter) => (name: string) =>
1119
- ExpressionFactory.coalesce(
1120
- Escaper.variable(name)
1121
- ? ts.factory.createPropertyAccessChain(
1122
- ts.factory.createIdentifier("_generator"),
1123
- ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
1124
- ts.factory.createIdentifier(name),
1125
- )
1126
- : ts.factory.createElementAccessChain(
1127
- ts.factory.createIdentifier("_generator"),
1128
- ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
1129
- ts.factory.createStringLiteral(name),
1130
- ),
1131
- IdentifierFactory.access(importer.use("generator"), name),
1132
- );
1133
-
1134
- const emendFormat = (key: keyof Format.Validator) =>
1135
- key === "date-time"
1136
- ? "datetime"
1137
- : key
1138
- .split("-")
1139
- .map((str, i) =>
1140
- i === 0 || str.length === 0
1141
- ? str
1142
- : str[0]!.toUpperCase() + str.substring(1),
1143
- )
1144
- .join("");