@typia/utils 12.1.0-dev.20260325 → 13.0.0-dev.20260426

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 (619) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +85 -85
  3. package/lib/_virtual/ArrayUtil.mjs +4 -0
  4. package/lib/_virtual/ArrayUtil.mjs.map +1 -0
  5. package/lib/_virtual/EndpointUtil.mjs +4 -0
  6. package/lib/_virtual/EndpointUtil.mjs.map +1 -0
  7. package/lib/_virtual/HttpError.mjs +4 -0
  8. package/lib/_virtual/HttpError.mjs.map +1 -0
  9. package/lib/_virtual/HttpLlm.mjs +4 -0
  10. package/lib/_virtual/HttpLlm.mjs.map +1 -0
  11. package/lib/_virtual/HttpLlmApplicationComposer.mjs +4 -0
  12. package/lib/_virtual/HttpLlmApplicationComposer.mjs.map +1 -0
  13. package/lib/_virtual/HttpLlmFunctionFetcher.mjs +4 -0
  14. package/lib/_virtual/HttpLlmFunctionFetcher.mjs.map +1 -0
  15. package/lib/_virtual/HttpMigrateApplicationComposer.mjs +4 -0
  16. package/lib/_virtual/HttpMigrateApplicationComposer.mjs.map +1 -0
  17. package/lib/_virtual/HttpMigrateRouteAccessor.mjs +4 -0
  18. package/lib/_virtual/HttpMigrateRouteAccessor.mjs.map +1 -0
  19. package/lib/_virtual/HttpMigrateRouteComposer.mjs +4 -0
  20. package/lib/_virtual/HttpMigrateRouteComposer.mjs.map +1 -0
  21. package/lib/_virtual/HttpMigrateRouteFetcher.mjs +4 -0
  22. package/lib/_virtual/HttpMigrateRouteFetcher.mjs.map +1 -0
  23. package/lib/_virtual/HttpMigration.mjs +4 -0
  24. package/lib/_virtual/HttpMigration.mjs.map +1 -0
  25. package/lib/_virtual/IOpenApiValidatorContext.mjs +4 -0
  26. package/lib/_virtual/IOpenApiValidatorContext.mjs.map +1 -0
  27. package/lib/_virtual/JsonDescriptor.mjs +4 -0
  28. package/lib/_virtual/JsonDescriptor.mjs.map +1 -0
  29. package/lib/_virtual/LlmDescriptionInverter.mjs +4 -0
  30. package/lib/_virtual/LlmDescriptionInverter.mjs.map +1 -0
  31. package/lib/_virtual/LlmJson.mjs +4 -0
  32. package/lib/_virtual/LlmJson.mjs.map +1 -0
  33. package/lib/_virtual/LlmParametersComposer.mjs +4 -0
  34. package/lib/_virtual/LlmParametersComposer.mjs.map +1 -0
  35. package/lib/_virtual/LlmSchemaConverter.mjs +4 -0
  36. package/lib/_virtual/LlmSchemaConverter.mjs.map +1 -0
  37. package/lib/_virtual/LlmTypeChecker.mjs +4 -0
  38. package/lib/_virtual/LlmTypeChecker.mjs.map +1 -0
  39. package/lib/_virtual/MapUtil.mjs +4 -0
  40. package/lib/_virtual/MapUtil.mjs.map +1 -0
  41. package/lib/_virtual/NamingConvention.mjs +4 -0
  42. package/lib/_virtual/NamingConvention.mjs.map +1 -0
  43. package/lib/_virtual/OpenApiArrayValidator.mjs +4 -0
  44. package/lib/_virtual/OpenApiArrayValidator.mjs.map +1 -0
  45. package/lib/_virtual/OpenApiBooleanValidator.mjs +4 -0
  46. package/lib/_virtual/OpenApiBooleanValidator.mjs.map +1 -0
  47. package/lib/_virtual/OpenApiConstantValidator.mjs +4 -0
  48. package/lib/_virtual/OpenApiConstantValidator.mjs.map +1 -0
  49. package/lib/_virtual/OpenApiConstraintShifter.mjs +4 -0
  50. package/lib/_virtual/OpenApiConstraintShifter.mjs.map +1 -0
  51. package/lib/_virtual/OpenApiConverter.mjs +4 -0
  52. package/lib/_virtual/OpenApiConverter.mjs.map +1 -0
  53. package/lib/_virtual/OpenApiExclusiveEmender.mjs +4 -0
  54. package/lib/_virtual/OpenApiExclusiveEmender.mjs.map +1 -0
  55. package/lib/_virtual/OpenApiIntegerValidator.mjs +4 -0
  56. package/lib/_virtual/OpenApiIntegerValidator.mjs.map +1 -0
  57. package/lib/_virtual/OpenApiNumberValidator.mjs +4 -0
  58. package/lib/_virtual/OpenApiNumberValidator.mjs.map +1 -0
  59. package/lib/_virtual/OpenApiObjectValidator.mjs +4 -0
  60. package/lib/_virtual/OpenApiObjectValidator.mjs.map +1 -0
  61. package/lib/_virtual/OpenApiOneOfValidator.mjs +4 -0
  62. package/lib/_virtual/OpenApiOneOfValidator.mjs.map +1 -0
  63. package/lib/_virtual/OpenApiSchemaNamingRule.mjs +4 -0
  64. package/lib/_virtual/OpenApiSchemaNamingRule.mjs.map +1 -0
  65. package/lib/_virtual/OpenApiStationValidator.mjs +4 -0
  66. package/lib/_virtual/OpenApiStationValidator.mjs.map +1 -0
  67. package/lib/_virtual/OpenApiStringValidator.mjs +4 -0
  68. package/lib/_virtual/OpenApiStringValidator.mjs.map +1 -0
  69. package/lib/_virtual/OpenApiTupleValidator.mjs +4 -0
  70. package/lib/_virtual/OpenApiTupleValidator.mjs.map +1 -0
  71. package/lib/_virtual/OpenApiTypeChecker.mjs +4 -0
  72. package/lib/_virtual/OpenApiTypeChecker.mjs.map +1 -0
  73. package/lib/_virtual/OpenApiTypeCheckerBase.mjs +4 -0
  74. package/lib/_virtual/OpenApiTypeCheckerBase.mjs.map +1 -0
  75. package/lib/_virtual/OpenApiV3Downgrader.mjs +4 -0
  76. package/lib/_virtual/OpenApiV3Downgrader.mjs.map +1 -0
  77. package/lib/_virtual/OpenApiV3TypeChecker.mjs +4 -0
  78. package/lib/_virtual/OpenApiV3TypeChecker.mjs.map +1 -0
  79. package/lib/_virtual/OpenApiV3Upgrader.mjs +4 -0
  80. package/lib/_virtual/OpenApiV3Upgrader.mjs.map +1 -0
  81. package/lib/_virtual/OpenApiV3_1Downgrader.mjs +4 -0
  82. package/lib/_virtual/OpenApiV3_1Downgrader.mjs.map +1 -0
  83. package/lib/_virtual/OpenApiV3_1TypeChecker.mjs +4 -0
  84. package/lib/_virtual/OpenApiV3_1TypeChecker.mjs.map +1 -0
  85. package/lib/_virtual/OpenApiV3_1Upgrader.mjs +4 -0
  86. package/lib/_virtual/OpenApiV3_1Upgrader.mjs.map +1 -0
  87. package/lib/_virtual/OpenApiV3_2Upgrader.mjs +4 -0
  88. package/lib/_virtual/OpenApiV3_2Upgrader.mjs.map +1 -0
  89. package/lib/_virtual/OpenApiValidator.mjs +4 -0
  90. package/lib/_virtual/OpenApiValidator.mjs.map +1 -0
  91. package/lib/_virtual/Singleton.mjs +4 -0
  92. package/lib/_virtual/Singleton.mjs.map +1 -0
  93. package/lib/_virtual/StringUtil.mjs +4 -0
  94. package/lib/_virtual/StringUtil.mjs.map +1 -0
  95. package/lib/_virtual/SwaggerV2Downgrader.mjs +4 -0
  96. package/lib/_virtual/SwaggerV2Downgrader.mjs.map +1 -0
  97. package/lib/_virtual/SwaggerV2TypeChecker.mjs +4 -0
  98. package/lib/_virtual/SwaggerV2TypeChecker.mjs.map +1 -0
  99. package/lib/_virtual/SwaggerV2Upgrader.mjs +4 -0
  100. package/lib/_virtual/SwaggerV2Upgrader.mjs.map +1 -0
  101. package/lib/_virtual/_commonjsHelpers.mjs +6 -0
  102. package/lib/_virtual/_commonjsHelpers.mjs.map +1 -0
  103. package/lib/_virtual/_isBigintString.mjs +4 -0
  104. package/lib/_virtual/_isBigintString.mjs.map +1 -0
  105. package/lib/_virtual/_isFormatByte.mjs +4 -0
  106. package/lib/_virtual/_isFormatByte.mjs.map +1 -0
  107. package/lib/_virtual/_isFormatDate.mjs +4 -0
  108. package/lib/_virtual/_isFormatDate.mjs.map +1 -0
  109. package/lib/_virtual/_isFormatDateTime.mjs +4 -0
  110. package/lib/_virtual/_isFormatDateTime.mjs.map +1 -0
  111. package/lib/_virtual/_isFormatDuration.mjs +4 -0
  112. package/lib/_virtual/_isFormatDuration.mjs.map +1 -0
  113. package/lib/_virtual/_isFormatEmail.mjs +4 -0
  114. package/lib/_virtual/_isFormatEmail.mjs.map +1 -0
  115. package/lib/_virtual/_isFormatHostname.mjs +4 -0
  116. package/lib/_virtual/_isFormatHostname.mjs.map +1 -0
  117. package/lib/_virtual/_isFormatIdnEmail.mjs +4 -0
  118. package/lib/_virtual/_isFormatIdnEmail.mjs.map +1 -0
  119. package/lib/_virtual/_isFormatIdnHostname.mjs +4 -0
  120. package/lib/_virtual/_isFormatIdnHostname.mjs.map +1 -0
  121. package/lib/_virtual/_isFormatIpv4.mjs +4 -0
  122. package/lib/_virtual/_isFormatIpv4.mjs.map +1 -0
  123. package/lib/_virtual/_isFormatIpv6.mjs +4 -0
  124. package/lib/_virtual/_isFormatIpv6.mjs.map +1 -0
  125. package/lib/_virtual/_isFormatIri.mjs +4 -0
  126. package/lib/_virtual/_isFormatIri.mjs.map +1 -0
  127. package/lib/_virtual/_isFormatIriReference.mjs +4 -0
  128. package/lib/_virtual/_isFormatIriReference.mjs.map +1 -0
  129. package/lib/_virtual/_isFormatJsonPointer.mjs +4 -0
  130. package/lib/_virtual/_isFormatJsonPointer.mjs.map +1 -0
  131. package/lib/_virtual/_isFormatPassword.mjs +4 -0
  132. package/lib/_virtual/_isFormatPassword.mjs.map +1 -0
  133. package/lib/_virtual/_isFormatRegex.mjs +4 -0
  134. package/lib/_virtual/_isFormatRegex.mjs.map +1 -0
  135. package/lib/_virtual/_isFormatRelativeJsonPointer.mjs +4 -0
  136. package/lib/_virtual/_isFormatRelativeJsonPointer.mjs.map +1 -0
  137. package/lib/_virtual/_isFormatTime.mjs +4 -0
  138. package/lib/_virtual/_isFormatTime.mjs.map +1 -0
  139. package/lib/_virtual/_isFormatUri.mjs +4 -0
  140. package/lib/_virtual/_isFormatUri.mjs.map +1 -0
  141. package/lib/_virtual/_isFormatUriReference.mjs +4 -0
  142. package/lib/_virtual/_isFormatUriReference.mjs.map +1 -0
  143. package/lib/_virtual/_isFormatUriTemplate.mjs +4 -0
  144. package/lib/_virtual/_isFormatUriTemplate.mjs.map +1 -0
  145. package/lib/_virtual/_isFormatUrl.mjs +4 -0
  146. package/lib/_virtual/_isFormatUrl.mjs.map +1 -0
  147. package/lib/_virtual/_isFormatUuid.mjs +4 -0
  148. package/lib/_virtual/_isFormatUuid.mjs.map +1 -0
  149. package/lib/_virtual/_isUniqueItems.mjs +4 -0
  150. package/lib/_virtual/_isUniqueItems.mjs.map +1 -0
  151. package/lib/_virtual/coerceLlmArguments.mjs +4 -0
  152. package/lib/_virtual/coerceLlmArguments.mjs.map +1 -0
  153. package/lib/_virtual/dedent.mjs +4 -0
  154. package/lib/_virtual/dedent.mjs.map +1 -0
  155. package/lib/_virtual/index.mjs +4 -0
  156. package/lib/_virtual/index.mjs.map +1 -0
  157. package/lib/_virtual/index2.mjs +4 -0
  158. package/lib/_virtual/index2.mjs.map +1 -0
  159. package/lib/_virtual/index3.mjs +4 -0
  160. package/lib/_virtual/index3.mjs.map +1 -0
  161. package/lib/_virtual/index4.mjs +4 -0
  162. package/lib/_virtual/index4.mjs.map +1 -0
  163. package/lib/_virtual/index5.mjs +4 -0
  164. package/lib/_virtual/index5.mjs.map +1 -0
  165. package/lib/_virtual/parseLenientJson.mjs +4 -0
  166. package/lib/_virtual/parseLenientJson.mjs.map +1 -0
  167. package/lib/_virtual/stringifyValidationFailure.mjs +4 -0
  168. package/lib/_virtual/stringifyValidationFailure.mjs.map +1 -0
  169. package/lib/converters/LlmSchemaConverter.js +149 -51
  170. package/lib/converters/LlmSchemaConverter.js.map +1 -1
  171. package/lib/converters/LlmSchemaConverter.mjs +5 -511
  172. package/lib/converters/LlmSchemaConverter.mjs.map +1 -1
  173. package/lib/converters/LlmSchemaConverter2.mjs +551 -0
  174. package/lib/converters/LlmSchemaConverter2.mjs.map +1 -0
  175. package/lib/converters/OpenApiConverter.js.map +1 -1
  176. package/lib/converters/OpenApiConverter.mjs +5 -146
  177. package/lib/converters/OpenApiConverter.mjs.map +1 -1
  178. package/lib/converters/OpenApiConverter2.mjs +167 -0
  179. package/lib/converters/OpenApiConverter2.mjs.map +1 -0
  180. package/lib/converters/index.mjs +7 -3
  181. package/lib/converters/index.mjs.map +1 -1
  182. package/lib/converters/index2.mjs +37 -0
  183. package/lib/converters/index2.mjs.map +1 -0
  184. package/lib/converters/internal/LlmDescriptionInverter.js.map +1 -1
  185. package/lib/converters/internal/LlmDescriptionInverter.mjs +5 -138
  186. package/lib/converters/internal/LlmDescriptionInverter.mjs.map +1 -1
  187. package/lib/converters/internal/LlmDescriptionInverter2.mjs +153 -0
  188. package/lib/converters/internal/LlmDescriptionInverter2.mjs.map +1 -0
  189. package/lib/converters/internal/LlmParametersComposer.js +14 -17
  190. package/lib/converters/internal/LlmParametersComposer.js.map +1 -1
  191. package/lib/converters/internal/LlmParametersComposer.mjs +5 -39
  192. package/lib/converters/internal/LlmParametersComposer.mjs.map +1 -1
  193. package/lib/converters/internal/LlmParametersComposer2.mjs +48 -0
  194. package/lib/converters/internal/LlmParametersComposer2.mjs.map +1 -0
  195. package/lib/converters/internal/OpenApiConstraintShifter.js.map +1 -1
  196. package/lib/converters/internal/OpenApiConstraintShifter.mjs +5 -99
  197. package/lib/converters/internal/OpenApiConstraintShifter.mjs.map +1 -1
  198. package/lib/converters/internal/OpenApiConstraintShifter2.mjs +115 -0
  199. package/lib/converters/internal/OpenApiConstraintShifter2.mjs.map +1 -0
  200. package/lib/converters/internal/OpenApiExclusiveEmender.js.map +1 -1
  201. package/lib/converters/internal/OpenApiExclusiveEmender.mjs +6 -33
  202. package/lib/converters/internal/OpenApiExclusiveEmender.mjs.map +1 -1
  203. package/lib/converters/internal/OpenApiExclusiveEmender2.mjs +43 -0
  204. package/lib/converters/internal/OpenApiExclusiveEmender2.mjs.map +1 -0
  205. package/lib/converters/internal/OpenApiV3Downgrader.js +2 -1
  206. package/lib/converters/internal/OpenApiV3Downgrader.js.map +1 -1
  207. package/lib/converters/internal/OpenApiV3Downgrader.mjs +5 -299
  208. package/lib/converters/internal/OpenApiV3Downgrader.mjs.map +1 -1
  209. package/lib/converters/internal/OpenApiV3Downgrader2.mjs +247 -0
  210. package/lib/converters/internal/OpenApiV3Downgrader2.mjs.map +1 -0
  211. package/lib/converters/internal/OpenApiV3Upgrader.js +58 -67
  212. package/lib/converters/internal/OpenApiV3Upgrader.js.map +1 -1
  213. package/lib/converters/internal/OpenApiV3Upgrader.mjs +5 -367
  214. package/lib/converters/internal/OpenApiV3Upgrader.mjs.map +1 -1
  215. package/lib/converters/internal/OpenApiV3Upgrader2.mjs +308 -0
  216. package/lib/converters/internal/OpenApiV3Upgrader2.mjs.map +1 -0
  217. package/lib/converters/internal/OpenApiV3_1Downgrader.js.map +1 -1
  218. package/lib/converters/internal/OpenApiV3_1Downgrader.mjs +5 -236
  219. package/lib/converters/internal/OpenApiV3_1Downgrader.mjs.map +1 -1
  220. package/lib/converters/internal/OpenApiV3_1Downgrader2.mjs +203 -0
  221. package/lib/converters/internal/OpenApiV3_1Downgrader2.mjs.map +1 -0
  222. package/lib/converters/internal/OpenApiV3_1Upgrader.js +68 -70
  223. package/lib/converters/internal/OpenApiV3_1Upgrader.js.map +1 -1
  224. package/lib/converters/internal/OpenApiV3_1Upgrader.mjs +5 -564
  225. package/lib/converters/internal/OpenApiV3_1Upgrader.mjs.map +1 -1
  226. package/lib/converters/internal/OpenApiV3_1Upgrader2.mjs +435 -0
  227. package/lib/converters/internal/OpenApiV3_1Upgrader2.mjs.map +1 -0
  228. package/lib/converters/internal/OpenApiV3_2Upgrader.js +57 -63
  229. package/lib/converters/internal/OpenApiV3_2Upgrader.js.map +1 -1
  230. package/lib/converters/internal/OpenApiV3_2Upgrader.mjs +5 -240
  231. package/lib/converters/internal/OpenApiV3_2Upgrader.mjs.map +1 -1
  232. package/lib/converters/internal/OpenApiV3_2Upgrader2.mjs +211 -0
  233. package/lib/converters/internal/OpenApiV3_2Upgrader2.mjs.map +1 -0
  234. package/lib/converters/internal/SwaggerV2Downgrader.js +44 -56
  235. package/lib/converters/internal/SwaggerV2Downgrader.js.map +1 -1
  236. package/lib/converters/internal/SwaggerV2Downgrader.mjs +5 -352
  237. package/lib/converters/internal/SwaggerV2Downgrader.mjs.map +1 -1
  238. package/lib/converters/internal/SwaggerV2Downgrader2.mjs +297 -0
  239. package/lib/converters/internal/SwaggerV2Downgrader2.mjs.map +1 -0
  240. package/lib/converters/internal/SwaggerV2Upgrader.js +52 -63
  241. package/lib/converters/internal/SwaggerV2Upgrader.js.map +1 -1
  242. package/lib/converters/internal/SwaggerV2Upgrader.mjs +5 -421
  243. package/lib/converters/internal/SwaggerV2Upgrader.mjs.map +1 -1
  244. package/lib/converters/internal/SwaggerV2Upgrader2.mjs +378 -0
  245. package/lib/converters/internal/SwaggerV2Upgrader2.mjs.map +1 -0
  246. package/lib/http/HttpError.js.map +1 -1
  247. package/lib/http/HttpError.mjs +6 -74
  248. package/lib/http/HttpError.mjs.map +1 -1
  249. package/lib/http/HttpError2.mjs +81 -0
  250. package/lib/http/HttpError2.mjs.map +1 -0
  251. package/lib/http/HttpLlm.js +5 -4
  252. package/lib/http/HttpLlm.js.map +1 -1
  253. package/lib/http/HttpLlm.mjs +5 -96
  254. package/lib/http/HttpLlm.mjs.map +1 -1
  255. package/lib/http/HttpLlm2.mjs +115 -0
  256. package/lib/http/HttpLlm2.mjs.map +1 -0
  257. package/lib/http/HttpMigration.js.map +1 -1
  258. package/lib/http/HttpMigration.mjs +5 -49
  259. package/lib/http/HttpMigration.mjs.map +1 -1
  260. package/lib/http/HttpMigration2.mjs +66 -0
  261. package/lib/http/HttpMigration2.mjs.map +1 -0
  262. package/lib/http/index.mjs +7 -3
  263. package/lib/http/index.mjs.map +1 -1
  264. package/lib/http/index2.mjs +36 -0
  265. package/lib/http/index2.mjs.map +1 -0
  266. package/lib/http/internal/HttpLlmApplicationComposer.js +12 -13
  267. package/lib/http/internal/HttpLlmApplicationComposer.js.map +1 -1
  268. package/lib/http/internal/HttpLlmApplicationComposer.mjs +5 -297
  269. package/lib/http/internal/HttpLlmApplicationComposer.mjs.map +1 -1
  270. package/lib/http/internal/HttpLlmApplicationComposer2.mjs +309 -0
  271. package/lib/http/internal/HttpLlmApplicationComposer2.mjs.map +1 -0
  272. package/lib/http/internal/HttpLlmFunctionFetcher.js.map +1 -1
  273. package/lib/http/internal/HttpLlmFunctionFetcher.mjs +5 -21
  274. package/lib/http/internal/HttpLlmFunctionFetcher.mjs.map +1 -1
  275. package/lib/http/internal/HttpLlmFunctionFetcher2.mjs +36 -0
  276. package/lib/http/internal/HttpLlmFunctionFetcher2.mjs.map +1 -0
  277. package/lib/http/internal/HttpMigrateApplicationComposer.js.map +1 -1
  278. package/lib/http/internal/HttpMigrateApplicationComposer.mjs +5 -44
  279. package/lib/http/internal/HttpMigrateApplicationComposer.mjs.map +1 -1
  280. package/lib/http/internal/HttpMigrateApplicationComposer2.mjs +59 -0
  281. package/lib/http/internal/HttpMigrateApplicationComposer2.mjs.map +1 -0
  282. package/lib/http/internal/HttpMigrateRouteAccessor.js.map +1 -1
  283. package/lib/http/internal/HttpMigrateRouteAccessor.mjs +5 -103
  284. package/lib/http/internal/HttpMigrateRouteAccessor.mjs.map +1 -1
  285. package/lib/http/internal/HttpMigrateRouteAccessor2.mjs +121 -0
  286. package/lib/http/internal/HttpMigrateRouteAccessor2.mjs.map +1 -0
  287. package/lib/http/internal/HttpMigrateRouteComposer.js +35 -54
  288. package/lib/http/internal/HttpMigrateRouteComposer.js.map +1 -1
  289. package/lib/http/internal/HttpMigrateRouteComposer.mjs +5 -381
  290. package/lib/http/internal/HttpMigrateRouteComposer.mjs.map +1 -1
  291. package/lib/http/internal/HttpMigrateRouteComposer2.mjs +384 -0
  292. package/lib/http/internal/HttpMigrateRouteComposer2.mjs.map +1 -0
  293. package/lib/http/internal/HttpMigrateRouteFetcher.js +7 -6
  294. package/lib/http/internal/HttpMigrateRouteFetcher.js.map +1 -1
  295. package/lib/http/internal/HttpMigrateRouteFetcher.mjs +5 -171
  296. package/lib/http/internal/HttpMigrateRouteFetcher.mjs.map +1 -1
  297. package/lib/http/internal/HttpMigrateRouteFetcher2.mjs +192 -0
  298. package/lib/http/internal/HttpMigrateRouteFetcher2.mjs.map +1 -0
  299. package/lib/index.mjs +7 -19
  300. package/lib/index.mjs.map +1 -1
  301. package/lib/index2.mjs +38 -0
  302. package/lib/index2.mjs.map +1 -0
  303. package/lib/utils/ArrayUtil.js.map +1 -1
  304. package/lib/utils/ArrayUtil.mjs +6 -26
  305. package/lib/utils/ArrayUtil.mjs.map +1 -1
  306. package/lib/utils/ArrayUtil2.mjs +40 -0
  307. package/lib/utils/ArrayUtil2.mjs.map +1 -0
  308. package/lib/utils/LlmJson.d.ts +1 -1
  309. package/lib/utils/LlmJson.js.map +1 -1
  310. package/lib/utils/LlmJson.mjs +5 -153
  311. package/lib/utils/LlmJson.mjs.map +1 -1
  312. package/lib/utils/LlmJson2.mjs +172 -0
  313. package/lib/utils/LlmJson2.mjs.map +1 -0
  314. package/lib/utils/MapUtil.js.map +1 -1
  315. package/lib/utils/MapUtil.mjs +6 -13
  316. package/lib/utils/MapUtil.mjs.map +1 -1
  317. package/lib/utils/MapUtil2.mjs +27 -0
  318. package/lib/utils/MapUtil2.mjs.map +1 -0
  319. package/lib/utils/NamingConvention.js.map +1 -1
  320. package/lib/utils/NamingConvention.mjs +6 -196
  321. package/lib/utils/NamingConvention.mjs.map +1 -1
  322. package/lib/utils/NamingConvention2.mjs +210 -0
  323. package/lib/utils/NamingConvention2.mjs.map +1 -0
  324. package/lib/utils/Singleton.d.ts +6 -1
  325. package/lib/utils/Singleton.js +0 -1
  326. package/lib/utils/Singleton.js.map +1 -1
  327. package/lib/utils/Singleton.mjs +6 -16
  328. package/lib/utils/Singleton.mjs.map +1 -1
  329. package/lib/utils/Singleton2.mjs +28 -0
  330. package/lib/utils/Singleton2.mjs.map +1 -0
  331. package/lib/utils/StringUtil.js +6 -9
  332. package/lib/utils/StringUtil.js.map +1 -1
  333. package/lib/utils/StringUtil.mjs +6 -11
  334. package/lib/utils/StringUtil.mjs.map +1 -1
  335. package/lib/utils/StringUtil2.mjs +25 -0
  336. package/lib/utils/StringUtil2.mjs.map +1 -0
  337. package/lib/utils/dedent.js.map +1 -1
  338. package/lib/utils/dedent.mjs +6 -48
  339. package/lib/utils/dedent.mjs.map +1 -1
  340. package/lib/utils/dedent2.mjs +62 -0
  341. package/lib/utils/dedent2.mjs.map +1 -0
  342. package/lib/utils/index.mjs +7 -7
  343. package/lib/utils/index.mjs.map +1 -1
  344. package/lib/utils/index2.mjs +44 -0
  345. package/lib/utils/index2.mjs.map +1 -0
  346. package/lib/utils/internal/EndpointUtil.js.map +1 -1
  347. package/lib/utils/internal/EndpointUtil.mjs +5 -34
  348. package/lib/utils/internal/EndpointUtil.mjs.map +1 -1
  349. package/lib/utils/internal/EndpointUtil2.mjs +49 -0
  350. package/lib/utils/internal/EndpointUtil2.mjs.map +1 -0
  351. package/lib/utils/internal/JsonDescriptor.js +18 -25
  352. package/lib/utils/internal/JsonDescriptor.js.map +1 -1
  353. package/lib/utils/internal/JsonDescriptor.mjs +5 -45
  354. package/lib/utils/internal/JsonDescriptor.mjs.map +1 -1
  355. package/lib/utils/internal/JsonDescriptor2.mjs +64 -0
  356. package/lib/utils/internal/JsonDescriptor2.mjs.map +1 -0
  357. package/lib/utils/internal/OpenApiTypeCheckerBase.js +15 -9
  358. package/lib/utils/internal/OpenApiTypeCheckerBase.js.map +1 -1
  359. package/lib/utils/internal/OpenApiTypeCheckerBase.mjs +5 -581
  360. package/lib/utils/internal/OpenApiTypeCheckerBase.mjs.map +1 -1
  361. package/lib/utils/internal/OpenApiTypeCheckerBase2.mjs +539 -0
  362. package/lib/utils/internal/OpenApiTypeCheckerBase2.mjs.map +1 -0
  363. package/lib/utils/internal/coerceLlmArguments.js +18 -4
  364. package/lib/utils/internal/coerceLlmArguments.js.map +1 -1
  365. package/lib/utils/internal/coerceLlmArguments.mjs +5 -245
  366. package/lib/utils/internal/coerceLlmArguments.mjs.map +1 -1
  367. package/lib/utils/internal/coerceLlmArguments2.mjs +276 -0
  368. package/lib/utils/internal/coerceLlmArguments2.mjs.map +1 -0
  369. package/lib/utils/internal/parseLenientJson.js.map +1 -1
  370. package/lib/utils/internal/parseLenientJson.mjs +6 -803
  371. package/lib/utils/internal/parseLenientJson.mjs.map +1 -1
  372. package/lib/utils/internal/parseLenientJson2.mjs +815 -0
  373. package/lib/utils/internal/parseLenientJson2.mjs.map +1 -0
  374. package/lib/utils/internal/stringifyValidationFailure.js.map +1 -1
  375. package/lib/utils/internal/stringifyValidationFailure.mjs +5 -315
  376. package/lib/utils/internal/stringifyValidationFailure.mjs.map +1 -1
  377. package/lib/utils/internal/stringifyValidationFailure2.mjs +333 -0
  378. package/lib/utils/internal/stringifyValidationFailure2.mjs.map +1 -0
  379. package/lib/validators/LlmTypeChecker.js +4 -3
  380. package/lib/validators/LlmTypeChecker.js.map +1 -1
  381. package/lib/validators/LlmTypeChecker.mjs +5 -297
  382. package/lib/validators/LlmTypeChecker.mjs.map +1 -1
  383. package/lib/validators/LlmTypeChecker2.mjs +323 -0
  384. package/lib/validators/LlmTypeChecker2.mjs.map +1 -0
  385. package/lib/validators/OpenApiTypeChecker.js.map +1 -1
  386. package/lib/validators/OpenApiTypeChecker.mjs +5 -215
  387. package/lib/validators/OpenApiTypeChecker.mjs.map +1 -1
  388. package/lib/validators/OpenApiTypeChecker2.mjs +219 -0
  389. package/lib/validators/OpenApiTypeChecker2.mjs.map +1 -0
  390. package/lib/validators/OpenApiV3TypeChecker.js.map +1 -1
  391. package/lib/validators/OpenApiV3TypeChecker.mjs +6 -27
  392. package/lib/validators/OpenApiV3TypeChecker.mjs.map +1 -1
  393. package/lib/validators/OpenApiV3TypeChecker2.mjs +41 -0
  394. package/lib/validators/OpenApiV3TypeChecker2.mjs.map +1 -0
  395. package/lib/validators/OpenApiV3_1TypeChecker.js.map +1 -1
  396. package/lib/validators/OpenApiV3_1TypeChecker.mjs +6 -31
  397. package/lib/validators/OpenApiV3_1TypeChecker.mjs.map +1 -1
  398. package/lib/validators/OpenApiV3_1TypeChecker2.mjs +45 -0
  399. package/lib/validators/OpenApiV3_1TypeChecker2.mjs.map +1 -0
  400. package/lib/validators/OpenApiValidator.js.map +1 -1
  401. package/lib/validators/OpenApiValidator.mjs +5 -72
  402. package/lib/validators/OpenApiValidator.mjs.map +1 -1
  403. package/lib/validators/OpenApiValidator2.mjs +83 -0
  404. package/lib/validators/OpenApiValidator2.mjs.map +1 -0
  405. package/lib/validators/SwaggerV2TypeChecker.js.map +1 -1
  406. package/lib/validators/SwaggerV2TypeChecker.mjs +6 -28
  407. package/lib/validators/SwaggerV2TypeChecker.mjs.map +1 -1
  408. package/lib/validators/SwaggerV2TypeChecker2.mjs +42 -0
  409. package/lib/validators/SwaggerV2TypeChecker2.mjs.map +1 -0
  410. package/lib/validators/functional/_isBigintString.js.map +1 -1
  411. package/lib/validators/functional/_isBigintString.mjs +6 -10
  412. package/lib/validators/functional/_isBigintString.mjs.map +1 -1
  413. package/lib/validators/functional/_isBigintString2.mjs +25 -0
  414. package/lib/validators/functional/_isBigintString2.mjs.map +1 -0
  415. package/lib/validators/functional/_isFormatByte.js.map +1 -1
  416. package/lib/validators/functional/_isFormatByte.mjs +6 -6
  417. package/lib/validators/functional/_isFormatByte.mjs.map +1 -1
  418. package/lib/validators/functional/_isFormatByte2.mjs +21 -0
  419. package/lib/validators/functional/_isFormatByte2.mjs.map +1 -0
  420. package/lib/validators/functional/_isFormatDate.js.map +1 -1
  421. package/lib/validators/functional/_isFormatDate.mjs +6 -3
  422. package/lib/validators/functional/_isFormatDate.mjs.map +1 -1
  423. package/lib/validators/functional/_isFormatDate2.mjs +18 -0
  424. package/lib/validators/functional/_isFormatDate2.mjs.map +1 -0
  425. package/lib/validators/functional/_isFormatDateTime.js.map +1 -1
  426. package/lib/validators/functional/_isFormatDateTime.mjs +6 -3
  427. package/lib/validators/functional/_isFormatDateTime.mjs.map +1 -1
  428. package/lib/validators/functional/_isFormatDateTime2.mjs +18 -0
  429. package/lib/validators/functional/_isFormatDateTime2.mjs.map +1 -0
  430. package/lib/validators/functional/_isFormatDuration.js.map +1 -1
  431. package/lib/validators/functional/_isFormatDuration.mjs +6 -3
  432. package/lib/validators/functional/_isFormatDuration.mjs.map +1 -1
  433. package/lib/validators/functional/_isFormatDuration2.mjs +18 -0
  434. package/lib/validators/functional/_isFormatDuration2.mjs.map +1 -0
  435. package/lib/validators/functional/_isFormatEmail.js.map +1 -1
  436. package/lib/validators/functional/_isFormatEmail.mjs +6 -3
  437. package/lib/validators/functional/_isFormatEmail.mjs.map +1 -1
  438. package/lib/validators/functional/_isFormatEmail2.mjs +18 -0
  439. package/lib/validators/functional/_isFormatEmail2.mjs.map +1 -0
  440. package/lib/validators/functional/_isFormatHostname.js.map +1 -1
  441. package/lib/validators/functional/_isFormatHostname.mjs +6 -3
  442. package/lib/validators/functional/_isFormatHostname.mjs.map +1 -1
  443. package/lib/validators/functional/_isFormatHostname2.mjs +18 -0
  444. package/lib/validators/functional/_isFormatHostname2.mjs.map +1 -0
  445. package/lib/validators/functional/_isFormatIdnEmail.js.map +1 -1
  446. package/lib/validators/functional/_isFormatIdnEmail.mjs +6 -3
  447. package/lib/validators/functional/_isFormatIdnEmail.mjs.map +1 -1
  448. package/lib/validators/functional/_isFormatIdnEmail2.mjs +18 -0
  449. package/lib/validators/functional/_isFormatIdnEmail2.mjs.map +1 -0
  450. package/lib/validators/functional/_isFormatIdnHostname.js.map +1 -1
  451. package/lib/validators/functional/_isFormatIdnHostname.mjs +6 -3
  452. package/lib/validators/functional/_isFormatIdnHostname.mjs.map +1 -1
  453. package/lib/validators/functional/_isFormatIdnHostname2.mjs +18 -0
  454. package/lib/validators/functional/_isFormatIdnHostname2.mjs.map +1 -0
  455. package/lib/validators/functional/_isFormatIpv4.js.map +1 -1
  456. package/lib/validators/functional/_isFormatIpv4.mjs +6 -3
  457. package/lib/validators/functional/_isFormatIpv4.mjs.map +1 -1
  458. package/lib/validators/functional/_isFormatIpv42.mjs +18 -0
  459. package/lib/validators/functional/_isFormatIpv42.mjs.map +1 -0
  460. package/lib/validators/functional/_isFormatIpv6.js.map +1 -1
  461. package/lib/validators/functional/_isFormatIpv6.mjs +6 -3
  462. package/lib/validators/functional/_isFormatIpv6.mjs.map +1 -1
  463. package/lib/validators/functional/_isFormatIpv62.mjs +18 -0
  464. package/lib/validators/functional/_isFormatIpv62.mjs.map +1 -0
  465. package/lib/validators/functional/_isFormatIri.js.map +1 -1
  466. package/lib/validators/functional/_isFormatIri.mjs +6 -3
  467. package/lib/validators/functional/_isFormatIri.mjs.map +1 -1
  468. package/lib/validators/functional/_isFormatIri2.mjs +18 -0
  469. package/lib/validators/functional/_isFormatIri2.mjs.map +1 -0
  470. package/lib/validators/functional/_isFormatIriReference.js.map +1 -1
  471. package/lib/validators/functional/_isFormatIriReference.mjs +6 -3
  472. package/lib/validators/functional/_isFormatIriReference.mjs.map +1 -1
  473. package/lib/validators/functional/_isFormatIriReference2.mjs +18 -0
  474. package/lib/validators/functional/_isFormatIriReference2.mjs.map +1 -0
  475. package/lib/validators/functional/_isFormatJsonPointer.js.map +1 -1
  476. package/lib/validators/functional/_isFormatJsonPointer.mjs +6 -3
  477. package/lib/validators/functional/_isFormatJsonPointer.mjs.map +1 -1
  478. package/lib/validators/functional/_isFormatJsonPointer2.mjs +18 -0
  479. package/lib/validators/functional/_isFormatJsonPointer2.mjs.map +1 -0
  480. package/lib/validators/functional/_isFormatPassword.js.map +1 -1
  481. package/lib/validators/functional/_isFormatPassword.mjs +6 -2
  482. package/lib/validators/functional/_isFormatPassword.mjs.map +1 -1
  483. package/lib/validators/functional/_isFormatPassword2.mjs +17 -0
  484. package/lib/validators/functional/_isFormatPassword2.mjs.map +1 -0
  485. package/lib/validators/functional/_isFormatRegex.js.map +1 -1
  486. package/lib/validators/functional/_isFormatRegex.mjs +6 -10
  487. package/lib/validators/functional/_isFormatRegex.mjs.map +1 -1
  488. package/lib/validators/functional/_isFormatRegex2.mjs +25 -0
  489. package/lib/validators/functional/_isFormatRegex2.mjs.map +1 -0
  490. package/lib/validators/functional/_isFormatRelativeJsonPointer.js.map +1 -1
  491. package/lib/validators/functional/_isFormatRelativeJsonPointer.mjs +6 -3
  492. package/lib/validators/functional/_isFormatRelativeJsonPointer.mjs.map +1 -1
  493. package/lib/validators/functional/_isFormatRelativeJsonPointer2.mjs +18 -0
  494. package/lib/validators/functional/_isFormatRelativeJsonPointer2.mjs.map +1 -0
  495. package/lib/validators/functional/_isFormatTime.js.map +1 -1
  496. package/lib/validators/functional/_isFormatTime.mjs +6 -3
  497. package/lib/validators/functional/_isFormatTime.mjs.map +1 -1
  498. package/lib/validators/functional/_isFormatTime2.mjs +18 -0
  499. package/lib/validators/functional/_isFormatTime2.mjs.map +1 -0
  500. package/lib/validators/functional/_isFormatUri.js.map +1 -1
  501. package/lib/validators/functional/_isFormatUri.mjs +6 -4
  502. package/lib/validators/functional/_isFormatUri.mjs.map +1 -1
  503. package/lib/validators/functional/_isFormatUri2.mjs +19 -0
  504. package/lib/validators/functional/_isFormatUri2.mjs.map +1 -0
  505. package/lib/validators/functional/_isFormatUriReference.js.map +1 -1
  506. package/lib/validators/functional/_isFormatUriReference.mjs +6 -3
  507. package/lib/validators/functional/_isFormatUriReference.mjs.map +1 -1
  508. package/lib/validators/functional/_isFormatUriReference2.mjs +18 -0
  509. package/lib/validators/functional/_isFormatUriReference2.mjs.map +1 -0
  510. package/lib/validators/functional/_isFormatUriTemplate.js.map +1 -1
  511. package/lib/validators/functional/_isFormatUriTemplate.mjs +6 -3
  512. package/lib/validators/functional/_isFormatUriTemplate.mjs.map +1 -1
  513. package/lib/validators/functional/_isFormatUriTemplate2.mjs +18 -0
  514. package/lib/validators/functional/_isFormatUriTemplate2.mjs.map +1 -0
  515. package/lib/validators/functional/_isFormatUrl.js.map +1 -1
  516. package/lib/validators/functional/_isFormatUrl.mjs +6 -3
  517. package/lib/validators/functional/_isFormatUrl.mjs.map +1 -1
  518. package/lib/validators/functional/_isFormatUrl2.mjs +18 -0
  519. package/lib/validators/functional/_isFormatUrl2.mjs.map +1 -0
  520. package/lib/validators/functional/_isFormatUuid.js.map +1 -1
  521. package/lib/validators/functional/_isFormatUuid.mjs +6 -3
  522. package/lib/validators/functional/_isFormatUuid.mjs.map +1 -1
  523. package/lib/validators/functional/_isFormatUuid2.mjs +18 -0
  524. package/lib/validators/functional/_isFormatUuid2.mjs.map +1 -0
  525. package/lib/validators/functional/_isUniqueItems.js.map +1 -1
  526. package/lib/validators/functional/_isUniqueItems.mjs +6 -136
  527. package/lib/validators/functional/_isUniqueItems.mjs.map +1 -1
  528. package/lib/validators/functional/_isUniqueItems2.mjs +151 -0
  529. package/lib/validators/functional/_isUniqueItems2.mjs.map +1 -0
  530. package/lib/validators/index.d.ts +1 -0
  531. package/lib/validators/index.js +0 -1
  532. package/lib/validators/index.js.map +1 -1
  533. package/lib/validators/index.mjs +7 -6
  534. package/lib/validators/index.mjs.map +1 -1
  535. package/lib/validators/index2.mjs +45 -0
  536. package/lib/validators/index2.mjs.map +1 -0
  537. package/lib/validators/internal/IOpenApiValidatorContext.mjs +6 -0
  538. package/lib/validators/internal/IOpenApiValidatorContext.mjs.map +1 -1
  539. package/lib/validators/internal/IOpenApiValidatorContext2.mjs +14 -0
  540. package/lib/validators/internal/IOpenApiValidatorContext2.mjs.map +1 -0
  541. package/lib/validators/internal/OpenApiArrayValidator.js.map +1 -1
  542. package/lib/validators/internal/OpenApiArrayValidator.mjs +5 -44
  543. package/lib/validators/internal/OpenApiArrayValidator.mjs.map +1 -1
  544. package/lib/validators/internal/OpenApiArrayValidator2.mjs +45 -0
  545. package/lib/validators/internal/OpenApiArrayValidator2.mjs.map +1 -0
  546. package/lib/validators/internal/OpenApiBooleanValidator.js.map +1 -1
  547. package/lib/validators/internal/OpenApiBooleanValidator.mjs +6 -7
  548. package/lib/validators/internal/OpenApiBooleanValidator.mjs.map +1 -1
  549. package/lib/validators/internal/OpenApiBooleanValidator2.mjs +21 -0
  550. package/lib/validators/internal/OpenApiBooleanValidator2.mjs.map +1 -0
  551. package/lib/validators/internal/OpenApiConstantValidator.js.map +1 -1
  552. package/lib/validators/internal/OpenApiConstantValidator.mjs +6 -7
  553. package/lib/validators/internal/OpenApiConstantValidator.mjs.map +1 -1
  554. package/lib/validators/internal/OpenApiConstantValidator2.mjs +21 -0
  555. package/lib/validators/internal/OpenApiConstantValidator2.mjs.map +1 -0
  556. package/lib/validators/internal/OpenApiIntegerValidator.js.map +1 -1
  557. package/lib/validators/internal/OpenApiIntegerValidator.mjs +6 -45
  558. package/lib/validators/internal/OpenApiIntegerValidator.mjs.map +1 -1
  559. package/lib/validators/internal/OpenApiIntegerValidator2.mjs +44 -0
  560. package/lib/validators/internal/OpenApiIntegerValidator2.mjs.map +1 -0
  561. package/lib/validators/internal/OpenApiNumberValidator.js.map +1 -1
  562. package/lib/validators/internal/OpenApiNumberValidator.mjs +6 -45
  563. package/lib/validators/internal/OpenApiNumberValidator.mjs.map +1 -1
  564. package/lib/validators/internal/OpenApiNumberValidator2.mjs +44 -0
  565. package/lib/validators/internal/OpenApiNumberValidator2.mjs.map +1 -0
  566. package/lib/validators/internal/OpenApiObjectValidator.js +6 -12
  567. package/lib/validators/internal/OpenApiObjectValidator.js.map +1 -1
  568. package/lib/validators/internal/OpenApiObjectValidator.mjs +5 -65
  569. package/lib/validators/internal/OpenApiObjectValidator.mjs.map +1 -1
  570. package/lib/validators/internal/OpenApiObjectValidator2.mjs +65 -0
  571. package/lib/validators/internal/OpenApiObjectValidator2.mjs.map +1 -0
  572. package/lib/validators/internal/OpenApiOneOfValidator.js +20 -20
  573. package/lib/validators/internal/OpenApiOneOfValidator.js.map +1 -1
  574. package/lib/validators/internal/OpenApiOneOfValidator.mjs +5 -203
  575. package/lib/validators/internal/OpenApiOneOfValidator.mjs.map +1 -1
  576. package/lib/validators/internal/OpenApiOneOfValidator2.mjs +196 -0
  577. package/lib/validators/internal/OpenApiOneOfValidator2.mjs.map +1 -0
  578. package/lib/validators/internal/OpenApiSchemaNamingRule.js.map +1 -1
  579. package/lib/validators/internal/OpenApiSchemaNamingRule.mjs +5 -118
  580. package/lib/validators/internal/OpenApiSchemaNamingRule.mjs.map +1 -1
  581. package/lib/validators/internal/OpenApiSchemaNamingRule2.mjs +134 -0
  582. package/lib/validators/internal/OpenApiSchemaNamingRule2.mjs.map +1 -0
  583. package/lib/validators/internal/OpenApiStationValidator.js +2 -1
  584. package/lib/validators/internal/OpenApiStationValidator.js.map +1 -1
  585. package/lib/validators/internal/OpenApiStationValidator.mjs +5 -104
  586. package/lib/validators/internal/OpenApiStationValidator.mjs.map +1 -1
  587. package/lib/validators/internal/OpenApiStationValidator2.mjs +86 -0
  588. package/lib/validators/internal/OpenApiStationValidator2.mjs.map +1 -0
  589. package/lib/validators/internal/OpenApiStringValidator.js.map +1 -1
  590. package/lib/validators/internal/OpenApiStringValidator.mjs +5 -82
  591. package/lib/validators/internal/OpenApiStringValidator.mjs.map +1 -1
  592. package/lib/validators/internal/OpenApiStringValidator2.mjs +105 -0
  593. package/lib/validators/internal/OpenApiStringValidator2.mjs.map +1 -0
  594. package/lib/validators/internal/OpenApiTupleValidator.js.map +1 -1
  595. package/lib/validators/internal/OpenApiTupleValidator.mjs +5 -43
  596. package/lib/validators/internal/OpenApiTupleValidator.mjs.map +1 -1
  597. package/lib/validators/internal/OpenApiTupleValidator2.mjs +43 -0
  598. package/lib/validators/internal/OpenApiTupleValidator2.mjs.map +1 -0
  599. package/package.json +8 -9
  600. package/src/converters/LlmSchemaConverter.ts +152 -33
  601. package/src/converters/OpenApiConverter.ts +375 -375
  602. package/src/converters/internal/OpenApiV3Downgrader.ts +381 -381
  603. package/src/converters/internal/OpenApiV3Upgrader.ts +494 -494
  604. package/src/converters/internal/OpenApiV3_1Downgrader.ts +318 -318
  605. package/src/converters/internal/OpenApiV3_1Upgrader.ts +713 -710
  606. package/src/converters/internal/OpenApiV3_2Upgrader.ts +342 -342
  607. package/src/converters/internal/SwaggerV2Downgrader.ts +450 -450
  608. package/src/converters/internal/SwaggerV2Upgrader.ts +547 -547
  609. package/src/http/HttpError.ts +114 -114
  610. package/src/http/HttpLlm.ts +169 -169
  611. package/src/http/HttpMigration.ts +94 -94
  612. package/src/http/internal/HttpMigrateApplicationComposer.ts +56 -56
  613. package/src/http/internal/HttpMigrateRouteComposer.ts +505 -505
  614. package/src/utils/LlmJson.ts +173 -173
  615. package/src/utils/Singleton.ts +0 -1
  616. package/src/utils/internal/OpenApiTypeCheckerBase.ts +2 -0
  617. package/src/utils/internal/coerceLlmArguments.ts +21 -3
  618. package/src/utils/internal/parseLenientJson.ts +919 -919
  619. package/src/validators/index.ts +0 -1
@@ -1,342 +1,342 @@
1
- import { OpenApi, OpenApiV3_2 } from "@typia/interface";
2
-
3
- import { OpenApiV3_1TypeChecker } from "../../validators/OpenApiV3_1TypeChecker";
4
- import { OpenApiV3_1Upgrader } from "./OpenApiV3_1Upgrader";
5
-
6
- /**
7
- * OpenAPI v3.2 to emended OpenApi converter.
8
- *
9
- * Reuses JSON Schema conversion logic from OpenApiV3_1Upgrader since
10
- * the schema format is identical between v3.1 and v3.2.
11
- */
12
- export namespace OpenApiV3_2Upgrader {
13
- export const convert = (input: OpenApiV3_2.IDocument): OpenApi.IDocument => {
14
- if ((input as OpenApi.IDocument)["x-typia-emended-v12"] === true)
15
- return input as OpenApi.IDocument;
16
- return {
17
- ...input,
18
- openapi: "3.2.0",
19
- components: convertComponents(input.components ?? {}),
20
- tags: input.tags?.map(convertTag),
21
- paths: input.paths
22
- ? Object.fromEntries(
23
- Object.entries(input.paths)
24
- .filter(([_, v]) => v !== undefined)
25
- .map(
26
- ([key, value]) => [key, convertPathItem(input)(value)] as const,
27
- ),
28
- )
29
- : undefined,
30
- webhooks: input.webhooks
31
- ? Object.fromEntries(
32
- Object.entries(input.webhooks)
33
- .filter(([_, v]) => v !== undefined)
34
- .map(
35
- ([key, value]) =>
36
- [key, convertWebhooks(input)(value)!] as const,
37
- )
38
- .filter(([_, value]) => value !== undefined),
39
- )
40
- : undefined,
41
- "x-typia-emended-v12": true,
42
- };
43
- };
44
-
45
- /* -----------------------------------------------------------
46
- TAGS
47
- ----------------------------------------------------------- */
48
- const convertTag = (tag: OpenApiV3_2.IDocument.ITag): OpenApi.IDocument.ITag => ({
49
- name: tag.name,
50
- summary: tag.summary,
51
- description: tag.description,
52
- parent: tag.parent,
53
- kind: tag.kind,
54
- });
55
-
56
- /* -----------------------------------------------------------
57
- OPERATORS
58
- ----------------------------------------------------------- */
59
- const convertWebhooks =
60
- (doc: OpenApiV3_2.IDocument) =>
61
- (
62
- webhook:
63
- | OpenApiV3_2.IPath
64
- | OpenApiV3_2.IJsonSchema.IReference<`#/components/pathItems/${string}`>,
65
- ): OpenApi.IPath | undefined => {
66
- if (!OpenApiV3_1TypeChecker.isReference(webhook))
67
- return convertPathItem(doc)(webhook);
68
- const found: OpenApiV3_2.IPath | undefined =
69
- doc.components?.pathItems?.[webhook.$ref.split("/").pop() ?? ""];
70
- return found ? convertPathItem(doc)(found) : undefined;
71
- };
72
-
73
- const convertPathItem =
74
- (doc: OpenApiV3_2.IDocument) =>
75
- (pathItem: OpenApiV3_2.IPath): OpenApi.IPath => ({
76
- ...(pathItem as any),
77
- ...(pathItem.get
78
- ? { get: convertOperation(doc)(pathItem)(pathItem.get) }
79
- : undefined),
80
- ...(pathItem.put
81
- ? { put: convertOperation(doc)(pathItem)(pathItem.put) }
82
- : undefined),
83
- ...(pathItem.post
84
- ? { post: convertOperation(doc)(pathItem)(pathItem.post) }
85
- : undefined),
86
- ...(pathItem.delete
87
- ? { delete: convertOperation(doc)(pathItem)(pathItem.delete) }
88
- : undefined),
89
- ...(pathItem.options
90
- ? { options: convertOperation(doc)(pathItem)(pathItem.options) }
91
- : undefined),
92
- ...(pathItem.head
93
- ? { head: convertOperation(doc)(pathItem)(pathItem.head) }
94
- : undefined),
95
- ...(pathItem.patch
96
- ? { patch: convertOperation(doc)(pathItem)(pathItem.patch) }
97
- : undefined),
98
- ...(pathItem.trace
99
- ? { trace: convertOperation(doc)(pathItem)(pathItem.trace) }
100
- : undefined),
101
- ...(pathItem.query
102
- ? { query: convertOperation(doc)(pathItem)(pathItem.query) }
103
- : undefined),
104
- ...(pathItem.additionalOperations
105
- ? {
106
- additionalOperations: Object.fromEntries(
107
- Object.entries(pathItem.additionalOperations)
108
- .filter(([_, v]) => v !== undefined)
109
- .map(
110
- ([key, value]) =>
111
- [key, convertOperation(doc)(pathItem)(value)] as const,
112
- ),
113
- ),
114
- }
115
- : undefined),
116
- });
117
-
118
- const convertOperation =
119
- (doc: OpenApiV3_2.IDocument) =>
120
- (pathItem: OpenApiV3_2.IPath) =>
121
- (input: OpenApiV3_2.IOperation): OpenApi.IOperation => ({
122
- ...input,
123
- parameters:
124
- pathItem.parameters !== undefined || input.parameters !== undefined
125
- ? [...(pathItem.parameters ?? []), ...(input.parameters ?? [])]
126
- .map((p) => {
127
- if (!OpenApiV3_1TypeChecker.isReference(p))
128
- return convertParameter(doc.components ?? {})(p);
129
- const found:
130
- | Omit<OpenApiV3_2.IOperation.IParameter, "in">
131
- | undefined = p.$ref.startsWith("#/components/headers/")
132
- ? doc.components?.headers?.[p.$ref.split("/").pop() ?? ""]
133
- : doc.components?.parameters?.[p.$ref.split("/").pop() ?? ""];
134
- return found !== undefined
135
- ? convertParameter(doc.components ?? {})({
136
- ...found,
137
- in: "header",
138
- })
139
- : undefined!;
140
- })
141
- .filter((_, v) => v !== undefined)
142
- : undefined,
143
- requestBody: input.requestBody
144
- ? convertRequestBody(doc)(input.requestBody)
145
- : undefined,
146
- responses: input.responses
147
- ? Object.fromEntries(
148
- Object.entries(input.responses)
149
- .filter(([_, v]) => v !== undefined)
150
- .map(
151
- ([key, value]) => [key, convertResponse(doc)(value)!] as const,
152
- )
153
- .filter(([_, value]) => value !== undefined),
154
- )
155
- : undefined,
156
- });
157
-
158
- const convertParameter =
159
- (components: OpenApiV3_2.IComponents) =>
160
- (
161
- input: OpenApiV3_2.IOperation.IParameter,
162
- ): OpenApi.IOperation.IParameter => ({
163
- ...input,
164
- schema: convertSchema(components)(input.schema),
165
- examples: input.examples
166
- ? Object.fromEntries(
167
- Object.entries(input.examples)
168
- .map(([key, value]) => [
169
- key,
170
- OpenApiV3_1TypeChecker.isReference(value)
171
- ? components.examples?.[value.$ref.split("/").pop() ?? ""]
172
- : value,
173
- ])
174
- .filter(([_, v]) => v !== undefined),
175
- )
176
- : undefined,
177
- });
178
-
179
- const convertRequestBody =
180
- (doc: OpenApiV3_2.IDocument) =>
181
- (
182
- input:
183
- | OpenApiV3_2.IOperation.IRequestBody
184
- | OpenApiV3_2.IJsonSchema.IReference<`#/components/requestBodies/${string}`>,
185
- ): OpenApi.IOperation.IRequestBody | undefined => {
186
- if (OpenApiV3_1TypeChecker.isReference(input)) {
187
- const found: OpenApiV3_2.IOperation.IRequestBody | undefined =
188
- doc.components?.requestBodies?.[input.$ref.split("/").pop() ?? ""];
189
- if (found === undefined) return undefined;
190
- input = found;
191
- }
192
- return {
193
- ...input,
194
- content: input.content
195
- ? convertContent(doc.components ?? {})(input.content)
196
- : undefined,
197
- };
198
- };
199
-
200
- const convertResponse =
201
- (doc: OpenApiV3_2.IDocument) =>
202
- (
203
- input:
204
- | OpenApiV3_2.IOperation.IResponse
205
- | OpenApiV3_2.IJsonSchema.IReference<`#/components/responses/${string}`>,
206
- ): OpenApi.IOperation.IResponse | undefined => {
207
- if (OpenApiV3_1TypeChecker.isReference(input)) {
208
- const found: OpenApiV3_2.IOperation.IResponse | undefined =
209
- doc.components?.responses?.[input.$ref.split("/").pop() ?? ""];
210
- if (found === undefined) return undefined;
211
- input = found;
212
- }
213
- return {
214
- ...input,
215
- content: input.content
216
- ? convertContent(doc.components ?? {})(input.content)
217
- : undefined,
218
- headers: input.headers
219
- ? Object.fromEntries(
220
- Object.entries(input.headers)
221
- .filter(([_, v]) => v !== undefined)
222
- .map(
223
- ([key, value]) =>
224
- [
225
- key,
226
- (() => {
227
- if (OpenApiV3_1TypeChecker.isReference(value) === false)
228
- return convertParameter(doc.components ?? {})({
229
- ...value,
230
- in: "header",
231
- });
232
- const found:
233
- | Omit<OpenApiV3_2.IOperation.IParameter, "in">
234
- | undefined = value.$ref.startsWith(
235
- "#/components/headers/",
236
- )
237
- ? doc.components?.headers?.[
238
- value.$ref.split("/").pop() ?? ""
239
- ]
240
- : undefined;
241
- return found !== undefined
242
- ? convertParameter(doc.components ?? {})({
243
- ...found,
244
- in: "header",
245
- })
246
- : undefined!;
247
- })(),
248
- ] as const,
249
- )
250
- .filter(([_, v]) => v !== undefined),
251
- )
252
- : undefined,
253
- };
254
- };
255
-
256
- const convertContent =
257
- (components: OpenApiV3_2.IComponents) =>
258
- (
259
- record: Record<string, OpenApiV3_2.IOperation.IMediaType>,
260
- ): Record<string, OpenApi.IOperation.IMediaType> =>
261
- Object.fromEntries(
262
- Object.entries(record)
263
- .filter(([_, v]) => v !== undefined)
264
- .map(
265
- ([key, value]) =>
266
- [
267
- key,
268
- {
269
- ...value,
270
- schema: value.schema
271
- ? convertSchema(components)(value.schema)
272
- : undefined,
273
- itemSchema: value.itemSchema
274
- ? convertSchema(components)(value.itemSchema)
275
- : undefined,
276
- examples: value.examples
277
- ? Object.fromEntries(
278
- Object.entries(value.examples)
279
- .map(([key, value]) => [
280
- key,
281
- OpenApiV3_1TypeChecker.isReference(value)
282
- ? components.examples?.[
283
- value.$ref.split("/").pop() ?? ""
284
- ]
285
- : value,
286
- ])
287
- .filter(([_, v]) => v !== undefined),
288
- )
289
- : undefined,
290
- },
291
- ] as const,
292
- ),
293
- );
294
-
295
- /* -----------------------------------------------------------
296
- DEFINITIONS
297
- ----------------------------------------------------------- */
298
- export const convertComponents = (
299
- input: OpenApiV3_2.IComponents,
300
- ): OpenApi.IComponents => ({
301
- schemas: Object.fromEntries(
302
- Object.entries(input.schemas ?? {})
303
- .filter(([_, v]) => v !== undefined)
304
- .map(([key, value]) => [key, convertSchema(input)(value)] as const),
305
- ),
306
- securitySchemes: input.securitySchemes
307
- ? Object.fromEntries(
308
- Object.entries(input.securitySchemes)
309
- .filter(([_, v]) => v !== undefined)
310
- .map(
311
- ([key, value]) =>
312
- [key, convertSecurityScheme(value)] as const,
313
- ),
314
- )
315
- : undefined,
316
- });
317
-
318
- const convertSecurityScheme = (
319
- input: OpenApiV3_2.ISecurityScheme,
320
- ): OpenApi.ISecurityScheme => {
321
- if (input.type === "oauth2") {
322
- return {
323
- ...input,
324
- flows: {
325
- ...input.flows,
326
- deviceAuthorization: input.flows.deviceAuthorization,
327
- },
328
- oauth2MetadataUrl: input.oauth2MetadataUrl,
329
- };
330
- }
331
- return input;
332
- };
333
-
334
- /**
335
- * Reuse schema conversion from OpenApiV3_1Upgrader.
336
- * OpenAPI v3.2 uses the same JSON Schema (2020-12) as v3.1.
337
- */
338
- export const convertSchema =
339
- (components: OpenApiV3_2.IComponents) =>
340
- (input: OpenApiV3_2.IJsonSchema): OpenApi.IJsonSchema =>
341
- OpenApiV3_1Upgrader.convertSchema(components as any)(input as any);
342
- }
1
+ import { OpenApi, OpenApiV3_2 } from "@typia/interface";
2
+
3
+ import { OpenApiV3_1TypeChecker } from "../../validators/OpenApiV3_1TypeChecker";
4
+ import { OpenApiV3_1Upgrader } from "./OpenApiV3_1Upgrader";
5
+
6
+ /**
7
+ * OpenAPI v3.2 to emended OpenApi converter.
8
+ *
9
+ * Reuses JSON Schema conversion logic from OpenApiV3_1Upgrader since
10
+ * the schema format is identical between v3.1 and v3.2.
11
+ */
12
+ export namespace OpenApiV3_2Upgrader {
13
+ export const convert = (input: OpenApiV3_2.IDocument): OpenApi.IDocument => {
14
+ if ((input as OpenApi.IDocument)["x-typia-emended-v12"] === true)
15
+ return input as OpenApi.IDocument;
16
+ return {
17
+ ...input,
18
+ openapi: "3.2.0",
19
+ components: convertComponents(input.components ?? {}),
20
+ tags: input.tags?.map(convertTag),
21
+ paths: input.paths
22
+ ? Object.fromEntries(
23
+ Object.entries(input.paths)
24
+ .filter(([_, v]) => v !== undefined)
25
+ .map(
26
+ ([key, value]) => [key, convertPathItem(input)(value)] as const,
27
+ ),
28
+ )
29
+ : undefined,
30
+ webhooks: input.webhooks
31
+ ? Object.fromEntries(
32
+ Object.entries(input.webhooks)
33
+ .filter(([_, v]) => v !== undefined)
34
+ .map(
35
+ ([key, value]) =>
36
+ [key, convertWebhooks(input)(value)!] as const,
37
+ )
38
+ .filter(([_, value]) => value !== undefined),
39
+ )
40
+ : undefined,
41
+ "x-typia-emended-v12": true,
42
+ };
43
+ };
44
+
45
+ /* -----------------------------------------------------------
46
+ TAGS
47
+ ----------------------------------------------------------- */
48
+ const convertTag = (tag: OpenApiV3_2.IDocument.ITag): OpenApi.IDocument.ITag => ({
49
+ name: tag.name,
50
+ summary: tag.summary,
51
+ description: tag.description,
52
+ parent: tag.parent,
53
+ kind: tag.kind,
54
+ });
55
+
56
+ /* -----------------------------------------------------------
57
+ OPERATORS
58
+ ----------------------------------------------------------- */
59
+ const convertWebhooks =
60
+ (doc: OpenApiV3_2.IDocument) =>
61
+ (
62
+ webhook:
63
+ | OpenApiV3_2.IPath
64
+ | OpenApiV3_2.IJsonSchema.IReference<`#/components/pathItems/${string}`>,
65
+ ): OpenApi.IPath | undefined => {
66
+ if (!OpenApiV3_1TypeChecker.isReference(webhook))
67
+ return convertPathItem(doc)(webhook);
68
+ const found: OpenApiV3_2.IPath | undefined =
69
+ doc.components?.pathItems?.[webhook.$ref.split("/").pop() ?? ""];
70
+ return found ? convertPathItem(doc)(found) : undefined;
71
+ };
72
+
73
+ const convertPathItem =
74
+ (doc: OpenApiV3_2.IDocument) =>
75
+ (pathItem: OpenApiV3_2.IPath): OpenApi.IPath => ({
76
+ ...(pathItem as any),
77
+ ...(pathItem.get
78
+ ? { get: convertOperation(doc)(pathItem)(pathItem.get) }
79
+ : undefined),
80
+ ...(pathItem.put
81
+ ? { put: convertOperation(doc)(pathItem)(pathItem.put) }
82
+ : undefined),
83
+ ...(pathItem.post
84
+ ? { post: convertOperation(doc)(pathItem)(pathItem.post) }
85
+ : undefined),
86
+ ...(pathItem.delete
87
+ ? { delete: convertOperation(doc)(pathItem)(pathItem.delete) }
88
+ : undefined),
89
+ ...(pathItem.options
90
+ ? { options: convertOperation(doc)(pathItem)(pathItem.options) }
91
+ : undefined),
92
+ ...(pathItem.head
93
+ ? { head: convertOperation(doc)(pathItem)(pathItem.head) }
94
+ : undefined),
95
+ ...(pathItem.patch
96
+ ? { patch: convertOperation(doc)(pathItem)(pathItem.patch) }
97
+ : undefined),
98
+ ...(pathItem.trace
99
+ ? { trace: convertOperation(doc)(pathItem)(pathItem.trace) }
100
+ : undefined),
101
+ ...(pathItem.query
102
+ ? { query: convertOperation(doc)(pathItem)(pathItem.query) }
103
+ : undefined),
104
+ ...(pathItem.additionalOperations
105
+ ? {
106
+ additionalOperations: Object.fromEntries(
107
+ Object.entries(pathItem.additionalOperations)
108
+ .filter(([_, v]) => v !== undefined)
109
+ .map(
110
+ ([key, value]) =>
111
+ [key, convertOperation(doc)(pathItem)(value)] as const,
112
+ ),
113
+ ),
114
+ }
115
+ : undefined),
116
+ });
117
+
118
+ const convertOperation =
119
+ (doc: OpenApiV3_2.IDocument) =>
120
+ (pathItem: OpenApiV3_2.IPath) =>
121
+ (input: OpenApiV3_2.IOperation): OpenApi.IOperation => ({
122
+ ...input,
123
+ parameters:
124
+ pathItem.parameters !== undefined || input.parameters !== undefined
125
+ ? [...(pathItem.parameters ?? []), ...(input.parameters ?? [])]
126
+ .map((p) => {
127
+ if (!OpenApiV3_1TypeChecker.isReference(p))
128
+ return convertParameter(doc.components ?? {})(p);
129
+ const found:
130
+ | Omit<OpenApiV3_2.IOperation.IParameter, "in">
131
+ | undefined = p.$ref.startsWith("#/components/headers/")
132
+ ? doc.components?.headers?.[p.$ref.split("/").pop() ?? ""]
133
+ : doc.components?.parameters?.[p.$ref.split("/").pop() ?? ""];
134
+ return found !== undefined
135
+ ? convertParameter(doc.components ?? {})({
136
+ ...found,
137
+ in: "header",
138
+ })
139
+ : undefined!;
140
+ })
141
+ .filter((_, v) => v !== undefined)
142
+ : undefined,
143
+ requestBody: input.requestBody
144
+ ? convertRequestBody(doc)(input.requestBody)
145
+ : undefined,
146
+ responses: input.responses
147
+ ? Object.fromEntries(
148
+ Object.entries(input.responses)
149
+ .filter(([_, v]) => v !== undefined)
150
+ .map(
151
+ ([key, value]) => [key, convertResponse(doc)(value)!] as const,
152
+ )
153
+ .filter(([_, value]) => value !== undefined),
154
+ )
155
+ : undefined,
156
+ });
157
+
158
+ const convertParameter =
159
+ (components: OpenApiV3_2.IComponents) =>
160
+ (
161
+ input: OpenApiV3_2.IOperation.IParameter,
162
+ ): OpenApi.IOperation.IParameter => ({
163
+ ...input,
164
+ schema: convertSchema(components)(input.schema),
165
+ examples: input.examples
166
+ ? Object.fromEntries(
167
+ Object.entries(input.examples)
168
+ .map(([key, value]) => [
169
+ key,
170
+ OpenApiV3_1TypeChecker.isReference(value)
171
+ ? components.examples?.[value.$ref.split("/").pop() ?? ""]
172
+ : value,
173
+ ])
174
+ .filter(([_, v]) => v !== undefined),
175
+ )
176
+ : undefined,
177
+ });
178
+
179
+ const convertRequestBody =
180
+ (doc: OpenApiV3_2.IDocument) =>
181
+ (
182
+ input:
183
+ | OpenApiV3_2.IOperation.IRequestBody
184
+ | OpenApiV3_2.IJsonSchema.IReference<`#/components/requestBodies/${string}`>,
185
+ ): OpenApi.IOperation.IRequestBody | undefined => {
186
+ if (OpenApiV3_1TypeChecker.isReference(input)) {
187
+ const found: OpenApiV3_2.IOperation.IRequestBody | undefined =
188
+ doc.components?.requestBodies?.[input.$ref.split("/").pop() ?? ""];
189
+ if (found === undefined) return undefined;
190
+ input = found;
191
+ }
192
+ return {
193
+ ...input,
194
+ content: input.content
195
+ ? convertContent(doc.components ?? {})(input.content)
196
+ : undefined,
197
+ };
198
+ };
199
+
200
+ const convertResponse =
201
+ (doc: OpenApiV3_2.IDocument) =>
202
+ (
203
+ input:
204
+ | OpenApiV3_2.IOperation.IResponse
205
+ | OpenApiV3_2.IJsonSchema.IReference<`#/components/responses/${string}`>,
206
+ ): OpenApi.IOperation.IResponse | undefined => {
207
+ if (OpenApiV3_1TypeChecker.isReference(input)) {
208
+ const found: OpenApiV3_2.IOperation.IResponse | undefined =
209
+ doc.components?.responses?.[input.$ref.split("/").pop() ?? ""];
210
+ if (found === undefined) return undefined;
211
+ input = found;
212
+ }
213
+ return {
214
+ ...input,
215
+ content: input.content
216
+ ? convertContent(doc.components ?? {})(input.content)
217
+ : undefined,
218
+ headers: input.headers
219
+ ? Object.fromEntries(
220
+ Object.entries(input.headers)
221
+ .filter(([_, v]) => v !== undefined)
222
+ .map(
223
+ ([key, value]) =>
224
+ [
225
+ key,
226
+ (() => {
227
+ if (OpenApiV3_1TypeChecker.isReference(value) === false)
228
+ return convertParameter(doc.components ?? {})({
229
+ ...value,
230
+ in: "header",
231
+ });
232
+ const found:
233
+ | Omit<OpenApiV3_2.IOperation.IParameter, "in">
234
+ | undefined = value.$ref.startsWith(
235
+ "#/components/headers/",
236
+ )
237
+ ? doc.components?.headers?.[
238
+ value.$ref.split("/").pop() ?? ""
239
+ ]
240
+ : undefined;
241
+ return found !== undefined
242
+ ? convertParameter(doc.components ?? {})({
243
+ ...found,
244
+ in: "header",
245
+ })
246
+ : undefined!;
247
+ })(),
248
+ ] as const,
249
+ )
250
+ .filter(([_, v]) => v !== undefined),
251
+ )
252
+ : undefined,
253
+ };
254
+ };
255
+
256
+ const convertContent =
257
+ (components: OpenApiV3_2.IComponents) =>
258
+ (
259
+ record: Record<string, OpenApiV3_2.IOperation.IMediaType>,
260
+ ): Record<string, OpenApi.IOperation.IMediaType> =>
261
+ Object.fromEntries(
262
+ Object.entries(record)
263
+ .filter(([_, v]) => v !== undefined)
264
+ .map(
265
+ ([key, value]) =>
266
+ [
267
+ key,
268
+ {
269
+ ...value,
270
+ schema: value.schema
271
+ ? convertSchema(components)(value.schema)
272
+ : undefined,
273
+ itemSchema: value.itemSchema
274
+ ? convertSchema(components)(value.itemSchema)
275
+ : undefined,
276
+ examples: value.examples
277
+ ? Object.fromEntries(
278
+ Object.entries(value.examples)
279
+ .map(([key, value]) => [
280
+ key,
281
+ OpenApiV3_1TypeChecker.isReference(value)
282
+ ? components.examples?.[
283
+ value.$ref.split("/").pop() ?? ""
284
+ ]
285
+ : value,
286
+ ])
287
+ .filter(([_, v]) => v !== undefined),
288
+ )
289
+ : undefined,
290
+ },
291
+ ] as const,
292
+ ),
293
+ );
294
+
295
+ /* -----------------------------------------------------------
296
+ DEFINITIONS
297
+ ----------------------------------------------------------- */
298
+ export const convertComponents = (
299
+ input: OpenApiV3_2.IComponents,
300
+ ): OpenApi.IComponents => ({
301
+ schemas: Object.fromEntries(
302
+ Object.entries(input.schemas ?? {})
303
+ .filter(([_, v]) => v !== undefined)
304
+ .map(([key, value]) => [key, convertSchema(input)(value)] as const),
305
+ ),
306
+ securitySchemes: input.securitySchemes
307
+ ? Object.fromEntries(
308
+ Object.entries(input.securitySchemes)
309
+ .filter(([_, v]) => v !== undefined)
310
+ .map(
311
+ ([key, value]) =>
312
+ [key, convertSecurityScheme(value)] as const,
313
+ ),
314
+ )
315
+ : undefined,
316
+ });
317
+
318
+ const convertSecurityScheme = (
319
+ input: OpenApiV3_2.ISecurityScheme,
320
+ ): OpenApi.ISecurityScheme => {
321
+ if (input.type === "oauth2") {
322
+ return {
323
+ ...input,
324
+ flows: {
325
+ ...input.flows,
326
+ deviceAuthorization: input.flows.deviceAuthorization,
327
+ },
328
+ oauth2MetadataUrl: input.oauth2MetadataUrl,
329
+ };
330
+ }
331
+ return input;
332
+ };
333
+
334
+ /**
335
+ * Reuse schema conversion from OpenApiV3_1Upgrader.
336
+ * OpenAPI v3.2 uses the same JSON Schema (2020-12) as v3.1.
337
+ */
338
+ export const convertSchema =
339
+ (components: OpenApiV3_2.IComponents) =>
340
+ (input: OpenApiV3_2.IJsonSchema): OpenApi.IJsonSchema =>
341
+ OpenApiV3_1Upgrader.convertSchema(components as any)(input as any);
342
+ }