@typia/utils 13.0.0-dev.20260427-3 → 13.0.0-dev.20260501

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 (345) hide show
  1. package/lib/converters/LlmSchemaConverter.js +6 -6
  2. package/lib/converters/LlmSchemaConverter.js.map +1 -1
  3. package/lib/converters/LlmSchemaConverter.mjs +2 -7
  4. package/lib/converters/LlmSchemaConverter.mjs.map +1 -1
  5. package/lib/converters/LlmSchemaConverter2.mjs +449 -451
  6. package/lib/converters/LlmSchemaConverter2.mjs.map +1 -1
  7. package/lib/converters/OpenApiConverter.mjs +2 -7
  8. package/lib/converters/OpenApiConverter.mjs.map +1 -1
  9. package/lib/converters/OpenApiConverter2.mjs +163 -164
  10. package/lib/converters/OpenApiConverter2.mjs.map +1 -1
  11. package/lib/converters/index.mjs +1 -7
  12. package/lib/converters/index.mjs.map +1 -1
  13. package/lib/converters/index2.mjs +31 -32
  14. package/lib/converters/index2.mjs.map +1 -1
  15. package/lib/converters/internal/LlmDescriptionInverter.mjs +2 -7
  16. package/lib/converters/internal/LlmDescriptionInverter.mjs.map +1 -1
  17. package/lib/converters/internal/LlmDescriptionInverter2.mjs +143 -150
  18. package/lib/converters/internal/LlmDescriptionInverter2.mjs.map +1 -1
  19. package/lib/converters/internal/LlmParametersComposer.mjs +2 -7
  20. package/lib/converters/internal/LlmParametersComposer.mjs.map +1 -1
  21. package/lib/converters/internal/LlmParametersComposer2.mjs +37 -44
  22. package/lib/converters/internal/LlmParametersComposer2.mjs.map +1 -1
  23. package/lib/converters/internal/OpenApiConstraintShifter.mjs +2 -7
  24. package/lib/converters/internal/OpenApiConstraintShifter.mjs.map +1 -1
  25. package/lib/converters/internal/OpenApiConstraintShifter2.mjs +105 -112
  26. package/lib/converters/internal/OpenApiConstraintShifter2.mjs.map +1 -1
  27. package/lib/converters/internal/OpenApiExclusiveEmender.mjs +2 -7
  28. package/lib/converters/internal/OpenApiExclusiveEmender.mjs.map +1 -1
  29. package/lib/converters/internal/OpenApiExclusiveEmender2.mjs +32 -40
  30. package/lib/converters/internal/OpenApiExclusiveEmender2.mjs.map +1 -1
  31. package/lib/converters/internal/OpenApiV3Downgrader.mjs +2 -7
  32. package/lib/converters/internal/OpenApiV3Downgrader.mjs.map +1 -1
  33. package/lib/converters/internal/OpenApiV3Downgrader2.mjs +237 -244
  34. package/lib/converters/internal/OpenApiV3Downgrader2.mjs.map +1 -1
  35. package/lib/converters/internal/OpenApiV3Upgrader.mjs +2 -7
  36. package/lib/converters/internal/OpenApiV3Upgrader.mjs.map +1 -1
  37. package/lib/converters/internal/OpenApiV3Upgrader2.mjs +300 -305
  38. package/lib/converters/internal/OpenApiV3Upgrader2.mjs.map +1 -1
  39. package/lib/converters/internal/OpenApiV3_1Downgrader.mjs +2 -7
  40. package/lib/converters/internal/OpenApiV3_1Downgrader.mjs.map +1 -1
  41. package/lib/converters/internal/OpenApiV3_1Downgrader2.mjs +193 -200
  42. package/lib/converters/internal/OpenApiV3_1Downgrader2.mjs.map +1 -1
  43. package/lib/converters/internal/OpenApiV3_1Upgrader.mjs +2 -7
  44. package/lib/converters/internal/OpenApiV3_1Upgrader.mjs.map +1 -1
  45. package/lib/converters/internal/OpenApiV3_1Upgrader2.mjs +424 -429
  46. package/lib/converters/internal/OpenApiV3_1Upgrader2.mjs.map +1 -1
  47. package/lib/converters/internal/OpenApiV3_2Upgrader.mjs +2 -7
  48. package/lib/converters/internal/OpenApiV3_2Upgrader.mjs.map +1 -1
  49. package/lib/converters/internal/OpenApiV3_2Upgrader2.mjs +202 -208
  50. package/lib/converters/internal/OpenApiV3_2Upgrader2.mjs.map +1 -1
  51. package/lib/converters/internal/SwaggerV2Downgrader.mjs +2 -7
  52. package/lib/converters/internal/SwaggerV2Downgrader.mjs.map +1 -1
  53. package/lib/converters/internal/SwaggerV2Downgrader2.mjs +287 -294
  54. package/lib/converters/internal/SwaggerV2Downgrader2.mjs.map +1 -1
  55. package/lib/converters/internal/SwaggerV2Upgrader.mjs +2 -7
  56. package/lib/converters/internal/SwaggerV2Upgrader.mjs.map +1 -1
  57. package/lib/converters/internal/SwaggerV2Upgrader2.mjs +370 -375
  58. package/lib/converters/internal/SwaggerV2Upgrader2.mjs.map +1 -1
  59. package/lib/http/HttpError.mjs +2 -7
  60. package/lib/http/HttpError.mjs.map +1 -1
  61. package/lib/http/HttpError2.mjs +69 -77
  62. package/lib/http/HttpError2.mjs.map +1 -1
  63. package/lib/http/HttpLlm.mjs +2 -7
  64. package/lib/http/HttpLlm.mjs.map +1 -1
  65. package/lib/http/HttpLlm2.mjs +107 -112
  66. package/lib/http/HttpLlm2.mjs.map +1 -1
  67. package/lib/http/HttpMigration.mjs +2 -7
  68. package/lib/http/HttpMigration.mjs.map +1 -1
  69. package/lib/http/HttpMigration2.mjs +58 -63
  70. package/lib/http/HttpMigration2.mjs.map +1 -1
  71. package/lib/http/index.mjs +1 -7
  72. package/lib/http/index.mjs.map +1 -1
  73. package/lib/http/index2.mjs +30 -31
  74. package/lib/http/index2.mjs.map +1 -1
  75. package/lib/http/internal/HttpLlmApplicationComposer.mjs +2 -7
  76. package/lib/http/internal/HttpLlmApplicationComposer.mjs.map +1 -1
  77. package/lib/http/internal/HttpLlmApplicationComposer2.mjs +301 -306
  78. package/lib/http/internal/HttpLlmApplicationComposer2.mjs.map +1 -1
  79. package/lib/http/internal/HttpLlmFunctionFetcher.mjs +2 -7
  80. package/lib/http/internal/HttpLlmFunctionFetcher.mjs.map +1 -1
  81. package/lib/http/internal/HttpLlmFunctionFetcher2.mjs +26 -33
  82. package/lib/http/internal/HttpLlmFunctionFetcher2.mjs.map +1 -1
  83. package/lib/http/internal/HttpMigrateApplicationComposer.mjs +2 -7
  84. package/lib/http/internal/HttpMigrateApplicationComposer.mjs.map +1 -1
  85. package/lib/http/internal/HttpMigrateApplicationComposer2.mjs +51 -56
  86. package/lib/http/internal/HttpMigrateApplicationComposer2.mjs.map +1 -1
  87. package/lib/http/internal/HttpMigrateRouteAccessor.mjs +2 -7
  88. package/lib/http/internal/HttpMigrateRouteAccessor.mjs.map +1 -1
  89. package/lib/http/internal/HttpMigrateRouteAccessor2.mjs +113 -118
  90. package/lib/http/internal/HttpMigrateRouteAccessor2.mjs.map +1 -1
  91. package/lib/http/internal/HttpMigrateRouteComposer.mjs +2 -7
  92. package/lib/http/internal/HttpMigrateRouteComposer.mjs.map +1 -1
  93. package/lib/http/internal/HttpMigrateRouteComposer2.mjs +376 -381
  94. package/lib/http/internal/HttpMigrateRouteComposer2.mjs.map +1 -1
  95. package/lib/http/internal/HttpMigrateRouteFetcher.mjs +2 -7
  96. package/lib/http/internal/HttpMigrateRouteFetcher.mjs.map +1 -1
  97. package/lib/http/internal/HttpMigrateRouteFetcher2.mjs +182 -189
  98. package/lib/http/internal/HttpMigrateRouteFetcher2.mjs.map +1 -1
  99. package/lib/index.mjs +1 -7
  100. package/lib/index.mjs.map +1 -1
  101. package/lib/index2.mjs +33 -33
  102. package/lib/index2.mjs.map +1 -1
  103. package/lib/utils/ArrayUtil.mjs +2 -7
  104. package/lib/utils/ArrayUtil.mjs.map +1 -1
  105. package/lib/utils/ArrayUtil2.mjs +29 -37
  106. package/lib/utils/ArrayUtil2.mjs.map +1 -1
  107. package/lib/utils/LlmJson.mjs +2 -7
  108. package/lib/utils/LlmJson.mjs.map +1 -1
  109. package/lib/utils/LlmJson2.mjs +166 -169
  110. package/lib/utils/LlmJson2.mjs.map +1 -1
  111. package/lib/utils/MapUtil.mjs +2 -7
  112. package/lib/utils/MapUtil.mjs.map +1 -1
  113. package/lib/utils/MapUtil2.mjs +16 -24
  114. package/lib/utils/MapUtil2.mjs.map +1 -1
  115. package/lib/utils/NamingConvention.mjs +2 -7
  116. package/lib/utils/NamingConvention.mjs.map +1 -1
  117. package/lib/utils/NamingConvention2.mjs +199 -207
  118. package/lib/utils/NamingConvention2.mjs.map +1 -1
  119. package/lib/utils/Singleton.d.ts +1 -6
  120. package/lib/utils/Singleton.js +1 -0
  121. package/lib/utils/Singleton.js.map +1 -1
  122. package/lib/utils/Singleton.mjs +2 -7
  123. package/lib/utils/Singleton.mjs.map +1 -1
  124. package/lib/utils/Singleton2.mjs +17 -24
  125. package/lib/utils/Singleton2.mjs.map +1 -1
  126. package/lib/utils/StringUtil.mjs +2 -7
  127. package/lib/utils/StringUtil.mjs.map +1 -1
  128. package/lib/utils/StringUtil2.mjs +14 -22
  129. package/lib/utils/StringUtil2.mjs.map +1 -1
  130. package/lib/utils/dedent.mjs +2 -7
  131. package/lib/utils/dedent.mjs.map +1 -1
  132. package/lib/utils/dedent2.mjs +50 -58
  133. package/lib/utils/dedent2.mjs.map +1 -1
  134. package/lib/utils/index.mjs +1 -7
  135. package/lib/utils/index.mjs.map +1 -1
  136. package/lib/utils/index2.mjs +42 -39
  137. package/lib/utils/index2.mjs.map +1 -1
  138. package/lib/utils/internal/EndpointUtil.mjs +2 -7
  139. package/lib/utils/internal/EndpointUtil.mjs.map +1 -1
  140. package/lib/utils/internal/EndpointUtil2.mjs +39 -46
  141. package/lib/utils/internal/EndpointUtil2.mjs.map +1 -1
  142. package/lib/utils/internal/JsonDescriptor.mjs +2 -7
  143. package/lib/utils/internal/JsonDescriptor.mjs.map +1 -1
  144. package/lib/utils/internal/JsonDescriptor2.mjs +55 -61
  145. package/lib/utils/internal/JsonDescriptor2.mjs.map +1 -1
  146. package/lib/utils/internal/OpenApiTypeCheckerBase.js +23 -14
  147. package/lib/utils/internal/OpenApiTypeCheckerBase.js.map +1 -1
  148. package/lib/utils/internal/OpenApiTypeCheckerBase.mjs +2 -7
  149. package/lib/utils/internal/OpenApiTypeCheckerBase.mjs.map +1 -1
  150. package/lib/utils/internal/OpenApiTypeCheckerBase2.mjs +539 -536
  151. package/lib/utils/internal/OpenApiTypeCheckerBase2.mjs.map +1 -1
  152. package/lib/utils/internal/coerceLlmArguments.js +27 -1
  153. package/lib/utils/internal/coerceLlmArguments.js.map +1 -1
  154. package/lib/utils/internal/coerceLlmArguments.mjs +2 -7
  155. package/lib/utils/internal/coerceLlmArguments.mjs.map +1 -1
  156. package/lib/utils/internal/coerceLlmArguments2.mjs +278 -258
  157. package/lib/utils/internal/coerceLlmArguments2.mjs.map +1 -1
  158. package/lib/utils/internal/parseLenientJson.mjs +2 -7
  159. package/lib/utils/internal/parseLenientJson.mjs.map +1 -1
  160. package/lib/utils/internal/parseLenientJson2.mjs +803 -811
  161. package/lib/utils/internal/parseLenientJson2.mjs.map +1 -1
  162. package/lib/utils/internal/stringifyValidationFailure.mjs +2 -7
  163. package/lib/utils/internal/stringifyValidationFailure.mjs.map +1 -1
  164. package/lib/utils/internal/stringifyValidationFailure2.mjs +310 -316
  165. package/lib/utils/internal/stringifyValidationFailure2.mjs.map +1 -1
  166. package/lib/validators/LlmTypeChecker.mjs +2 -7
  167. package/lib/validators/LlmTypeChecker.mjs.map +1 -1
  168. package/lib/validators/LlmTypeChecker2.mjs +314 -320
  169. package/lib/validators/LlmTypeChecker2.mjs.map +1 -1
  170. package/lib/validators/OpenApiTypeChecker.mjs +2 -7
  171. package/lib/validators/OpenApiTypeChecker.mjs.map +1 -1
  172. package/lib/validators/OpenApiTypeChecker2.mjs +209 -216
  173. package/lib/validators/OpenApiTypeChecker2.mjs.map +1 -1
  174. package/lib/validators/OpenApiV3TypeChecker.mjs +2 -7
  175. package/lib/validators/OpenApiV3TypeChecker.mjs.map +1 -1
  176. package/lib/validators/OpenApiV3TypeChecker2.mjs +30 -38
  177. package/lib/validators/OpenApiV3TypeChecker2.mjs.map +1 -1
  178. package/lib/validators/OpenApiV3_1TypeChecker.mjs +2 -7
  179. package/lib/validators/OpenApiV3_1TypeChecker.mjs.map +1 -1
  180. package/lib/validators/OpenApiV3_1TypeChecker2.mjs +34 -42
  181. package/lib/validators/OpenApiV3_1TypeChecker2.mjs.map +1 -1
  182. package/lib/validators/OpenApiValidator.mjs +2 -7
  183. package/lib/validators/OpenApiValidator.mjs.map +1 -1
  184. package/lib/validators/OpenApiValidator2.mjs +73 -80
  185. package/lib/validators/OpenApiValidator2.mjs.map +1 -1
  186. package/lib/validators/SwaggerV2TypeChecker.mjs +2 -7
  187. package/lib/validators/SwaggerV2TypeChecker.mjs.map +1 -1
  188. package/lib/validators/SwaggerV2TypeChecker2.mjs +31 -39
  189. package/lib/validators/SwaggerV2TypeChecker2.mjs.map +1 -1
  190. package/lib/validators/functional/_isBigintString.mjs +2 -7
  191. package/lib/validators/functional/_isBigintString.mjs.map +1 -1
  192. package/lib/validators/functional/_isBigintString2.mjs +14 -22
  193. package/lib/validators/functional/_isBigintString2.mjs.map +1 -1
  194. package/lib/validators/functional/_isFormatByte.mjs +2 -7
  195. package/lib/validators/functional/_isFormatByte.mjs.map +1 -1
  196. package/lib/validators/functional/_isFormatByte2.mjs +10 -18
  197. package/lib/validators/functional/_isFormatByte2.mjs.map +1 -1
  198. package/lib/validators/functional/_isFormatDate.mjs +2 -7
  199. package/lib/validators/functional/_isFormatDate.mjs.map +1 -1
  200. package/lib/validators/functional/_isFormatDate2.mjs +7 -15
  201. package/lib/validators/functional/_isFormatDate2.mjs.map +1 -1
  202. package/lib/validators/functional/_isFormatDateTime.mjs +2 -7
  203. package/lib/validators/functional/_isFormatDateTime.mjs.map +1 -1
  204. package/lib/validators/functional/_isFormatDateTime2.mjs +7 -15
  205. package/lib/validators/functional/_isFormatDateTime2.mjs.map +1 -1
  206. package/lib/validators/functional/_isFormatDuration.mjs +2 -7
  207. package/lib/validators/functional/_isFormatDuration.mjs.map +1 -1
  208. package/lib/validators/functional/_isFormatDuration2.mjs +7 -15
  209. package/lib/validators/functional/_isFormatDuration2.mjs.map +1 -1
  210. package/lib/validators/functional/_isFormatEmail.mjs +2 -7
  211. package/lib/validators/functional/_isFormatEmail.mjs.map +1 -1
  212. package/lib/validators/functional/_isFormatEmail2.mjs +7 -15
  213. package/lib/validators/functional/_isFormatEmail2.mjs.map +1 -1
  214. package/lib/validators/functional/_isFormatHostname.mjs +2 -7
  215. package/lib/validators/functional/_isFormatHostname.mjs.map +1 -1
  216. package/lib/validators/functional/_isFormatHostname2.mjs +7 -15
  217. package/lib/validators/functional/_isFormatHostname2.mjs.map +1 -1
  218. package/lib/validators/functional/_isFormatIdnEmail.mjs +2 -7
  219. package/lib/validators/functional/_isFormatIdnEmail.mjs.map +1 -1
  220. package/lib/validators/functional/_isFormatIdnEmail2.mjs +7 -15
  221. package/lib/validators/functional/_isFormatIdnEmail2.mjs.map +1 -1
  222. package/lib/validators/functional/_isFormatIdnHostname.mjs +2 -7
  223. package/lib/validators/functional/_isFormatIdnHostname.mjs.map +1 -1
  224. package/lib/validators/functional/_isFormatIdnHostname2.mjs +7 -15
  225. package/lib/validators/functional/_isFormatIdnHostname2.mjs.map +1 -1
  226. package/lib/validators/functional/_isFormatIpv4.mjs +2 -7
  227. package/lib/validators/functional/_isFormatIpv4.mjs.map +1 -1
  228. package/lib/validators/functional/_isFormatIpv42.mjs +7 -15
  229. package/lib/validators/functional/_isFormatIpv42.mjs.map +1 -1
  230. package/lib/validators/functional/_isFormatIpv6.mjs +2 -7
  231. package/lib/validators/functional/_isFormatIpv6.mjs.map +1 -1
  232. package/lib/validators/functional/_isFormatIpv62.mjs +7 -15
  233. package/lib/validators/functional/_isFormatIpv62.mjs.map +1 -1
  234. package/lib/validators/functional/_isFormatIri.mjs +2 -7
  235. package/lib/validators/functional/_isFormatIri.mjs.map +1 -1
  236. package/lib/validators/functional/_isFormatIri2.mjs +7 -15
  237. package/lib/validators/functional/_isFormatIri2.mjs.map +1 -1
  238. package/lib/validators/functional/_isFormatIriReference.mjs +2 -7
  239. package/lib/validators/functional/_isFormatIriReference.mjs.map +1 -1
  240. package/lib/validators/functional/_isFormatIriReference2.mjs +7 -15
  241. package/lib/validators/functional/_isFormatIriReference2.mjs.map +1 -1
  242. package/lib/validators/functional/_isFormatJsonPointer.mjs +2 -7
  243. package/lib/validators/functional/_isFormatJsonPointer.mjs.map +1 -1
  244. package/lib/validators/functional/_isFormatJsonPointer2.mjs +7 -15
  245. package/lib/validators/functional/_isFormatJsonPointer2.mjs.map +1 -1
  246. package/lib/validators/functional/_isFormatPassword.mjs +2 -7
  247. package/lib/validators/functional/_isFormatPassword.mjs.map +1 -1
  248. package/lib/validators/functional/_isFormatPassword2.mjs +6 -14
  249. package/lib/validators/functional/_isFormatPassword2.mjs.map +1 -1
  250. package/lib/validators/functional/_isFormatRegex.mjs +2 -7
  251. package/lib/validators/functional/_isFormatRegex.mjs.map +1 -1
  252. package/lib/validators/functional/_isFormatRegex2.mjs +14 -22
  253. package/lib/validators/functional/_isFormatRegex2.mjs.map +1 -1
  254. package/lib/validators/functional/_isFormatRelativeJsonPointer.mjs +2 -7
  255. package/lib/validators/functional/_isFormatRelativeJsonPointer.mjs.map +1 -1
  256. package/lib/validators/functional/_isFormatRelativeJsonPointer2.mjs +7 -15
  257. package/lib/validators/functional/_isFormatRelativeJsonPointer2.mjs.map +1 -1
  258. package/lib/validators/functional/_isFormatTime.mjs +2 -7
  259. package/lib/validators/functional/_isFormatTime.mjs.map +1 -1
  260. package/lib/validators/functional/_isFormatTime2.mjs +7 -15
  261. package/lib/validators/functional/_isFormatTime2.mjs.map +1 -1
  262. package/lib/validators/functional/_isFormatUri.mjs +2 -7
  263. package/lib/validators/functional/_isFormatUri.mjs.map +1 -1
  264. package/lib/validators/functional/_isFormatUri2.mjs +8 -16
  265. package/lib/validators/functional/_isFormatUri2.mjs.map +1 -1
  266. package/lib/validators/functional/_isFormatUriReference.mjs +2 -7
  267. package/lib/validators/functional/_isFormatUriReference.mjs.map +1 -1
  268. package/lib/validators/functional/_isFormatUriReference2.mjs +7 -15
  269. package/lib/validators/functional/_isFormatUriReference2.mjs.map +1 -1
  270. package/lib/validators/functional/_isFormatUriTemplate.mjs +2 -7
  271. package/lib/validators/functional/_isFormatUriTemplate.mjs.map +1 -1
  272. package/lib/validators/functional/_isFormatUriTemplate2.mjs +7 -15
  273. package/lib/validators/functional/_isFormatUriTemplate2.mjs.map +1 -1
  274. package/lib/validators/functional/_isFormatUrl.mjs +2 -7
  275. package/lib/validators/functional/_isFormatUrl.mjs.map +1 -1
  276. package/lib/validators/functional/_isFormatUrl2.mjs +7 -15
  277. package/lib/validators/functional/_isFormatUrl2.mjs.map +1 -1
  278. package/lib/validators/functional/_isFormatUuid.mjs +2 -7
  279. package/lib/validators/functional/_isFormatUuid.mjs.map +1 -1
  280. package/lib/validators/functional/_isFormatUuid2.mjs +7 -15
  281. package/lib/validators/functional/_isFormatUuid2.mjs.map +1 -1
  282. package/lib/validators/functional/_isUniqueItems.mjs +2 -7
  283. package/lib/validators/functional/_isUniqueItems.mjs.map +1 -1
  284. package/lib/validators/functional/_isUniqueItems2.mjs +140 -148
  285. package/lib/validators/functional/_isUniqueItems2.mjs.map +1 -1
  286. package/lib/validators/index.mjs +1 -7
  287. package/lib/validators/index.mjs.map +1 -1
  288. package/lib/validators/index2.mjs +42 -40
  289. package/lib/validators/index2.mjs.map +1 -1
  290. package/lib/validators/internal/IOpenApiValidatorContext.mjs +2 -7
  291. package/lib/validators/internal/IOpenApiValidatorContext.mjs.map +1 -1
  292. package/lib/validators/internal/IOpenApiValidatorContext2.mjs +2 -10
  293. package/lib/validators/internal/IOpenApiValidatorContext2.mjs.map +1 -1
  294. package/lib/validators/internal/OpenApiArrayValidator.mjs +2 -7
  295. package/lib/validators/internal/OpenApiArrayValidator.mjs.map +1 -1
  296. package/lib/validators/internal/OpenApiArrayValidator2.mjs +36 -42
  297. package/lib/validators/internal/OpenApiArrayValidator2.mjs.map +1 -1
  298. package/lib/validators/internal/OpenApiBooleanValidator.mjs +2 -7
  299. package/lib/validators/internal/OpenApiBooleanValidator.mjs.map +1 -1
  300. package/lib/validators/internal/OpenApiBooleanValidator2.mjs +10 -18
  301. package/lib/validators/internal/OpenApiBooleanValidator2.mjs.map +1 -1
  302. package/lib/validators/internal/OpenApiConstantValidator.mjs +2 -7
  303. package/lib/validators/internal/OpenApiConstantValidator.mjs.map +1 -1
  304. package/lib/validators/internal/OpenApiConstantValidator2.mjs +10 -18
  305. package/lib/validators/internal/OpenApiConstantValidator2.mjs.map +1 -1
  306. package/lib/validators/internal/OpenApiIntegerValidator.mjs +2 -7
  307. package/lib/validators/internal/OpenApiIntegerValidator.mjs.map +1 -1
  308. package/lib/validators/internal/OpenApiIntegerValidator2.mjs +33 -41
  309. package/lib/validators/internal/OpenApiIntegerValidator2.mjs.map +1 -1
  310. package/lib/validators/internal/OpenApiNumberValidator.mjs +2 -7
  311. package/lib/validators/internal/OpenApiNumberValidator.mjs.map +1 -1
  312. package/lib/validators/internal/OpenApiNumberValidator2.mjs +33 -41
  313. package/lib/validators/internal/OpenApiNumberValidator2.mjs.map +1 -1
  314. package/lib/validators/internal/OpenApiObjectValidator.js +2 -3
  315. package/lib/validators/internal/OpenApiObjectValidator.js.map +1 -1
  316. package/lib/validators/internal/OpenApiObjectValidator.mjs +2 -7
  317. package/lib/validators/internal/OpenApiObjectValidator.mjs.map +1 -1
  318. package/lib/validators/internal/OpenApiObjectValidator2.mjs +55 -62
  319. package/lib/validators/internal/OpenApiObjectValidator2.mjs.map +1 -1
  320. package/lib/validators/internal/OpenApiOneOfValidator.mjs +2 -7
  321. package/lib/validators/internal/OpenApiOneOfValidator.mjs.map +1 -1
  322. package/lib/validators/internal/OpenApiOneOfValidator2.mjs +188 -193
  323. package/lib/validators/internal/OpenApiOneOfValidator2.mjs.map +1 -1
  324. package/lib/validators/internal/OpenApiSchemaNamingRule.mjs +2 -7
  325. package/lib/validators/internal/OpenApiSchemaNamingRule.mjs.map +1 -1
  326. package/lib/validators/internal/OpenApiSchemaNamingRule2.mjs +124 -131
  327. package/lib/validators/internal/OpenApiSchemaNamingRule2.mjs.map +1 -1
  328. package/lib/validators/internal/OpenApiStationValidator.mjs +2 -7
  329. package/lib/validators/internal/OpenApiStationValidator.mjs.map +1 -1
  330. package/lib/validators/internal/OpenApiStationValidator2.mjs +86 -83
  331. package/lib/validators/internal/OpenApiStationValidator2.mjs.map +1 -1
  332. package/lib/validators/internal/OpenApiStringValidator.mjs +2 -7
  333. package/lib/validators/internal/OpenApiStringValidator.mjs.map +1 -1
  334. package/lib/validators/internal/OpenApiStringValidator2.mjs +115 -102
  335. package/lib/validators/internal/OpenApiStringValidator2.mjs.map +1 -1
  336. package/lib/validators/internal/OpenApiTupleValidator.mjs +2 -7
  337. package/lib/validators/internal/OpenApiTupleValidator.mjs.map +1 -1
  338. package/lib/validators/internal/OpenApiTupleValidator2.mjs +33 -40
  339. package/lib/validators/internal/OpenApiTupleValidator2.mjs.map +1 -1
  340. package/package.json +4 -4
  341. package/src/converters/LlmSchemaConverter.ts +1 -1
  342. package/src/utils/Singleton.ts +1 -0
  343. package/src/utils/internal/OpenApiTypeCheckerBase.ts +12 -3
  344. package/src/utils/internal/coerceLlmArguments.ts +27 -1
  345. package/src/validators/internal/OpenApiObjectValidator.ts +1 -2
@@ -1,539 +1,542 @@
1
- import { __exports as OpenApiTypeCheckerBase } from '../../_virtual/OpenApiTypeCheckerBase.mjs';
2
- import { __require as requireMapUtil } from '../MapUtil2.mjs';
3
- import { __require as requireJsonDescriptor } from './JsonDescriptor2.mjs';
1
+ import { __exports as OpenApiTypeCheckerBase$1 } from '../../_virtual/OpenApiTypeCheckerBase.mjs';
2
+ import '../MapUtil2.mjs';
3
+ import './JsonDescriptor2.mjs';
4
+ import { __exports as JsonDescriptor } from '../../_virtual/JsonDescriptor.mjs';
5
+ import { __exports as MapUtil } from '../../_virtual/MapUtil.mjs';
4
6
 
5
- var hasRequiredOpenApiTypeCheckerBase;
7
+ Object.defineProperty(OpenApiTypeCheckerBase$1, "__esModule", { value: true });
8
+ var OpenApiTypeCheckerBase_2 = OpenApiTypeCheckerBase$1.OpenApiTypeCheckerBase = void 0;
9
+ const MapUtil_1 = MapUtil;
10
+ const JsonDescriptor_1 = JsonDescriptor;
11
+ /** @internal */
12
+ var OpenApiTypeCheckerBase;
13
+ (function (OpenApiTypeCheckerBase) {
14
+ /* -----------------------------------------------------------
15
+ TYPE CHECKERS
16
+ ----------------------------------------------------------- */
17
+ OpenApiTypeCheckerBase.isNull = (schema) => schema !== undefined &&
18
+ schema.type === "null";
19
+ OpenApiTypeCheckerBase.isUnknown = (schema) => schema !== undefined &&
20
+ schema.type === undefined &&
21
+ !OpenApiTypeCheckerBase.isConstant(schema) &&
22
+ !OpenApiTypeCheckerBase.isOneOf(schema) &&
23
+ !OpenApiTypeCheckerBase.isReference(schema);
24
+ OpenApiTypeCheckerBase.isConstant = (schema) => schema !== undefined &&
25
+ schema.const !== undefined;
26
+ OpenApiTypeCheckerBase.isBoolean = (schema) => schema !== undefined &&
27
+ schema.type === "boolean";
28
+ OpenApiTypeCheckerBase.isInteger = (schema) => schema !== undefined &&
29
+ schema.type === "integer";
30
+ OpenApiTypeCheckerBase.isNumber = (schema) => schema !== undefined &&
31
+ schema.type === "number";
32
+ OpenApiTypeCheckerBase.isString = (schema) => schema !== undefined &&
33
+ schema.type === "string";
34
+ OpenApiTypeCheckerBase.isArray = (schema) => schema !== undefined &&
35
+ schema.type === "array" &&
36
+ schema.items !== undefined;
37
+ OpenApiTypeCheckerBase.isTuple = (schema) => schema !== undefined &&
38
+ schema.type === "array" &&
39
+ schema.prefixItems !== undefined;
40
+ OpenApiTypeCheckerBase.isObject = (schema) => schema !== undefined &&
41
+ schema.type === "object";
42
+ OpenApiTypeCheckerBase.isReference = (schema) => schema !== undefined && schema.$ref !== undefined;
43
+ OpenApiTypeCheckerBase.isOneOf = (schema) => schema !== undefined &&
44
+ schema.oneOf !== undefined;
45
+ OpenApiTypeCheckerBase.isRecursiveReference = (props) => {
46
+ var _a;
47
+ if (OpenApiTypeCheckerBase.isReference(props.schema) === false)
48
+ return false;
49
+ const current = (_a = props.schema.$ref.split(props.prefix)[1]) !== null && _a !== void 0 ? _a : props.schema.$ref.split("/").at(-1);
50
+ let counter = 0;
51
+ OpenApiTypeCheckerBase.visit({
52
+ prefix: props.prefix,
53
+ components: props.components,
54
+ schema: props.schema,
55
+ closure: (schema) => {
56
+ var _a;
57
+ if (OpenApiTypeCheckerBase.isReference(schema)) {
58
+ const next = (_a = schema.$ref.split(props.prefix)[1]) !== null && _a !== void 0 ? _a : schema.$ref.split("/").at(-1);
59
+ if (current === next)
60
+ ++counter;
61
+ }
62
+ },
63
+ });
64
+ return counter > 1;
65
+ };
66
+ /* -----------------------------------------------------------
67
+ OPERATORS
68
+ ----------------------------------------------------------- */
69
+ OpenApiTypeCheckerBase.unreference = (props) => {
70
+ var _a, _b;
71
+ const reasons = [];
72
+ const result = unreferenceSchema({
73
+ prefix: props.prefix,
74
+ refAccessor: (_a = props.refAccessor) !== null && _a !== void 0 ? _a : `$input.${props.prefix
75
+ .substring(2)
76
+ .split("/")
77
+ .filter((s) => !!s.length)
78
+ .join(".")}`,
79
+ accessor: (_b = props.accessor) !== null && _b !== void 0 ? _b : "$input.schema",
80
+ components: props.components,
81
+ schema: props.schema,
82
+ reasons,
83
+ });
84
+ if (result === null)
85
+ return {
86
+ success: false,
87
+ error: {
88
+ method: props.method,
89
+ message: `failed to unreference due to unable to find.`,
90
+ reasons,
91
+ },
92
+ };
93
+ return {
94
+ success: true,
95
+ value: result,
96
+ };
97
+ };
98
+ OpenApiTypeCheckerBase.escape = (props) => {
99
+ var _a, _b;
100
+ const reasons = [];
101
+ const result = escapeSchema(Object.assign(Object.assign({}, props), { reasons, visited: new Map(), accessor: (_a = props.accessor) !== null && _a !== void 0 ? _a : "$input.schema", refAccessor: (_b = props.refAccessor) !== null && _b !== void 0 ? _b : getReference(props.prefix) })) || null;
102
+ if (result === null)
103
+ return {
104
+ success: false,
105
+ error: {
106
+ method: props.method,
107
+ message: `failed to escape some reference type(s) due to unable to find${Number(props.recursive) === 0 ? " or recursive relationship" : ""}.`,
108
+ reasons,
109
+ },
110
+ };
111
+ return {
112
+ success: true,
113
+ value: result,
114
+ };
115
+ };
116
+ OpenApiTypeCheckerBase.visit = (props) => {
117
+ var _a, _b;
118
+ const already = new Set();
119
+ const refAccessor = (_a = props.refAccessor) !== null && _a !== void 0 ? _a : `$input.${getReference(props.prefix)}`;
120
+ const next = (schema, accessor) => {
121
+ var _a;
122
+ var _b, _c;
123
+ props.closure(schema, accessor);
124
+ if (OpenApiTypeCheckerBase.isReference(schema)) {
125
+ const key = schema.$ref.split(props.prefix).pop();
126
+ if (already.has(key) === true)
127
+ return;
128
+ already.add(key);
129
+ const found = (_a = props.components.schemas) === null || _a === void 0 ? void 0 : _a[key];
130
+ if (found !== undefined)
131
+ next(found, `${refAccessor}[${JSON.stringify(key)}]`);
132
+ }
133
+ else if (OpenApiTypeCheckerBase.isOneOf(schema))
134
+ schema.oneOf.forEach((s, i) => next(s, `${accessor}.oneOf[${i}]`));
135
+ else if (OpenApiTypeCheckerBase.isObject(schema)) {
136
+ for (const [key, value] of Object.entries((_b = schema.properties) !== null && _b !== void 0 ? _b : {}))
137
+ next(value, `${accessor}.properties[${JSON.stringify(key)}]`);
138
+ if (typeof schema.additionalProperties === "object" &&
139
+ schema.additionalProperties !== null)
140
+ next(schema.additionalProperties, `${accessor}.additionalProperties`);
141
+ }
142
+ else if (OpenApiTypeCheckerBase.isArray(schema))
143
+ next(schema.items, `${accessor}.items`);
144
+ else if (OpenApiTypeCheckerBase.isTuple(schema)) {
145
+ ((_c = schema.prefixItems) !== null && _c !== void 0 ? _c : []).forEach((s, i) => next(s, `${accessor}.prefixItems[${i}]`));
146
+ if (typeof schema.additionalItems === "object" &&
147
+ schema.additionalItems !== null)
148
+ next(schema.additionalItems, `${accessor}.additionalItems`);
149
+ }
150
+ };
151
+ next(props.schema, (_b = props.accessor) !== null && _b !== void 0 ? _b : "$input.schema");
152
+ };
153
+ OpenApiTypeCheckerBase.covers = (props) => coverStation({
154
+ prefix: props.prefix,
155
+ components: props.components,
156
+ x: props.x,
157
+ y: props.y,
158
+ visited: new Map(),
159
+ });
160
+ const unreferenceSchema = (props) => {
161
+ var _a;
162
+ if (OpenApiTypeCheckerBase.isReference(props.schema) === false)
163
+ return props.schema;
164
+ const key = props.schema.$ref.split(props.prefix).pop();
165
+ const found = (_a = props.components.schemas) === null || _a === void 0 ? void 0 : _a[key];
166
+ if (found === undefined) {
167
+ props.reasons.push({
168
+ schema: props.schema,
169
+ accessor: props.accessor,
170
+ message: `unable to find reference type ${JSON.stringify(key)}.`,
171
+ });
172
+ return null;
173
+ }
174
+ else if (OpenApiTypeCheckerBase.isReference(found) === false)
175
+ return found;
176
+ else if (props.first === key) {
177
+ props.reasons.push({
178
+ schema: props.schema,
179
+ accessor: props.accessor,
180
+ message: `recursive reference type ${JSON.stringify(key)}.`,
181
+ });
182
+ return null;
183
+ }
184
+ return unreferenceSchema(Object.assign(Object.assign({}, props), { accessor: `${props.refAccessor}[${JSON.stringify(key)}]`, first: key }));
185
+ };
186
+ const escapeSchema = (props) => {
187
+ var _a, _b;
188
+ var _c, _d, _e;
189
+ if (OpenApiTypeCheckerBase.isReference(props.schema)) {
190
+ // REFERENCE
191
+ const key = (_c = props.schema.$ref.split(props.prefix)[1]) !== null && _c !== void 0 ? _c : props.schema.$ref.split("/").at(-1);
192
+ const target = (_a = props.components.schemas) === null || _a === void 0 ? void 0 : _a[key];
193
+ if (target === undefined) {
194
+ props.reasons.push({
195
+ schema: props.schema,
196
+ accessor: props.accessor,
197
+ message: `unable to find reference type ${JSON.stringify(key)}.`,
198
+ });
199
+ return null;
200
+ }
201
+ else if (props.visited.has(key) === true) {
202
+ if (props.recursive === false)
203
+ return null;
204
+ const depth = props.visited.get(key);
205
+ if (depth > props.recursive) {
206
+ if (props.recursive === 0) {
207
+ props.reasons.push({
208
+ schema: props.schema,
209
+ accessor: props.accessor,
210
+ message: `recursive reference type ${JSON.stringify(key)}.`,
211
+ });
212
+ return null;
213
+ }
214
+ return undefined;
215
+ }
216
+ props.visited.set(key, depth + 1);
217
+ const res = escapeSchema(Object.assign(Object.assign({}, props), { schema: target, accessor: `${props.refAccessor}[${JSON.stringify(key)}]` }));
218
+ return res
219
+ ? Object.assign(Object.assign({}, res), { description: JsonDescriptor_1.JsonDescriptor.cascade({
220
+ prefix: props.prefix,
221
+ components: props.components,
222
+ schema: props.schema,
223
+ escape: true,
224
+ }) }) : res;
225
+ }
226
+ else {
227
+ const res = escapeSchema(Object.assign(Object.assign({}, props), { schema: target, accessor: `${props.refAccessor}[${JSON.stringify(key)}]`, visited: new Map([...props.visited, [key, 1]]) }));
228
+ return res
229
+ ? Object.assign(Object.assign({}, res), { description: JsonDescriptor_1.JsonDescriptor.cascade({
230
+ prefix: props.prefix,
231
+ components: props.components,
232
+ schema: props.schema,
233
+ escape: true,
234
+ }) }) : res;
235
+ }
236
+ }
237
+ else if (OpenApiTypeCheckerBase.isOneOf(props.schema)) {
238
+ // UNION
239
+ const elements = props.schema.oneOf.map((s, i) => escapeSchema(Object.assign(Object.assign({}, props), { schema: s, accessor: `${props.accessor}.oneOf[${i}]` })));
240
+ if (elements.some((v) => v === null))
241
+ return null;
242
+ const filtered = elements.filter((v) => v !== undefined);
243
+ if (filtered.length === 0)
244
+ return undefined;
245
+ return Object.assign(Object.assign({}, props.schema), { oneOf: filtered
246
+ .map((v) => flatSchema({
247
+ prefix: props.prefix,
248
+ components: props.components,
249
+ schema: v,
250
+ }))
251
+ .flat() });
252
+ }
253
+ else if (OpenApiTypeCheckerBase.isObject(props.schema)) {
254
+ // OBJECT
255
+ const object = props.schema;
256
+ const properties = Object.entries((_d = object.properties) !== null && _d !== void 0 ? _d : {}).map(([k, s]) => [
257
+ k,
258
+ escapeSchema(Object.assign(Object.assign({}, props), { schema: s, visited: props.visited, accessor: `${props.accessor}.properties[${JSON.stringify(k)}]` })),
259
+ ]);
260
+ const additionalProperties = object.additionalProperties
261
+ ? typeof object.additionalProperties === "object" &&
262
+ object.additionalProperties !== null
263
+ ? escapeSchema(Object.assign(Object.assign({}, props), { schema: object.additionalProperties, accessor: `${props.accessor}.additionalProperties` }))
264
+ : object.additionalProperties
265
+ : false;
266
+ if (properties.some(([_k, v]) => v === null) ||
267
+ additionalProperties === null)
268
+ return null;
269
+ else if (properties.some(([k, v]) => { var _a; return v === undefined && ((_a = object.required) === null || _a === void 0 ? void 0 : _a.includes(k)) === true; }) === true)
270
+ return undefined;
271
+ return Object.assign(Object.assign({}, object), { properties: Object.fromEntries(properties.filter(([_k, v]) => v !== undefined)), additionalProperties: additionalProperties !== null && additionalProperties !== void 0 ? additionalProperties : false, required: (_e = (_b = object.required) === null || _b === void 0 ? void 0 : _b.filter((k) => properties.some(([key, value]) => key === k && value !== undefined))) !== null && _e !== void 0 ? _e : [] });
272
+ }
273
+ else if (OpenApiTypeCheckerBase.isTuple(props.schema)) {
274
+ // TUPLE
275
+ const elements = props.schema.prefixItems.map((s, i) => escapeSchema(Object.assign(Object.assign({}, props), { schema: s, accessor: `${props.accessor}.prefixItems[${i}]` })));
276
+ const additionalItems = props.schema.additionalItems
277
+ ? typeof props.schema.additionalItems === "object" &&
278
+ props.schema.additionalItems !== null
279
+ ? escapeSchema(Object.assign(Object.assign({}, props), { schema: props.schema.additionalItems, accessor: `${props.accessor}.additionalItems` }))
280
+ : props.schema.additionalItems
281
+ : false;
282
+ if (elements.some((v) => v === null) || additionalItems === null)
283
+ return null;
284
+ else if (elements.some((v) => v === undefined))
285
+ return undefined;
286
+ return Object.assign(Object.assign({}, props.schema), { prefixItems: elements, additionalItems: additionalItems !== null && additionalItems !== void 0 ? additionalItems : false });
287
+ }
288
+ else if (OpenApiTypeCheckerBase.isArray(props.schema)) {
289
+ // ARRAY
290
+ const items = escapeSchema(Object.assign(Object.assign({}, props), { schema: props.schema.items, accessor: `${props.accessor}.items` }));
291
+ if (items === null)
292
+ return null;
293
+ else if (items === undefined)
294
+ return Object.assign(Object.assign({}, props.schema), { minItems: undefined, maxItems: 0, items: {} });
295
+ return Object.assign(Object.assign({}, props.schema), { items: items });
296
+ }
297
+ return props.schema;
298
+ };
299
+ const coverStation = (p) => {
300
+ var _a;
301
+ const cache = (_a = p.visited.get(p.x)) === null || _a === void 0 ? void 0 : _a.get(p.y);
302
+ if (cache !== undefined)
303
+ return cache;
304
+ // FOR RECURSIVE CASE
305
+ const nested = MapUtil_1.MapUtil.take(p.visited, p.x, () => new Map());
306
+ nested.set(p.y, true);
307
+ // COMPUTE IT
308
+ const result = coverSchema(p);
309
+ nested.set(p.y, result);
310
+ return result;
311
+ };
312
+ const coverSchema = (p) => {
313
+ // CHECK EQUALITY
314
+ if (p.x === p.y)
315
+ return true;
316
+ else if (OpenApiTypeCheckerBase.isReference(p.x) && OpenApiTypeCheckerBase.isReference(p.y) && p.x.$ref === p.y.$ref)
317
+ return true;
318
+ // COMPARE WITH FLATTENING
319
+ const alpha = flatSchema({
320
+ prefix: p.prefix,
321
+ components: p.components,
322
+ schema: p.x,
323
+ });
324
+ const beta = flatSchema({
325
+ prefix: p.prefix,
326
+ components: p.components,
327
+ schema: p.y,
328
+ });
329
+ if (alpha.some((x) => OpenApiTypeCheckerBase.isUnknown(x)))
330
+ return true;
331
+ else if (beta.some((x) => OpenApiTypeCheckerBase.isUnknown(x)))
332
+ return false;
333
+ return beta.every((b) => alpha.some((a) => coverEscapedSchema({
334
+ prefix: p.prefix,
335
+ components: p.components,
336
+ visited: p.visited,
337
+ x: a,
338
+ y: b,
339
+ })));
340
+ };
341
+ const coverEscapedSchema = (p) => {
342
+ // CHECK EQUALITY
343
+ if (p.x === p.y)
344
+ return true;
345
+ else if (OpenApiTypeCheckerBase.isUnknown(p.x))
346
+ return true;
347
+ else if (OpenApiTypeCheckerBase.isUnknown(p.y))
348
+ return false;
349
+ else if (OpenApiTypeCheckerBase.isNull(p.x))
350
+ return OpenApiTypeCheckerBase.isNull(p.y);
351
+ // ATOMIC CASE
352
+ else if (OpenApiTypeCheckerBase.isConstant(p.x))
353
+ return OpenApiTypeCheckerBase.isConstant(p.y) && p.x.const === p.y.const;
354
+ else if (OpenApiTypeCheckerBase.isBoolean(p.x))
355
+ return (OpenApiTypeCheckerBase.isBoolean(p.y) || (OpenApiTypeCheckerBase.isConstant(p.y) && typeof p.y.const === "boolean"));
356
+ else if (OpenApiTypeCheckerBase.isInteger(p.x))
357
+ return (OpenApiTypeCheckerBase.isInteger(p.y) || OpenApiTypeCheckerBase.isConstant(p.y)) && OpenApiTypeCheckerBase.coverInteger(p.x, p.y);
358
+ else if (OpenApiTypeCheckerBase.isNumber(p.x))
359
+ return ((OpenApiTypeCheckerBase.isConstant(p.y) || OpenApiTypeCheckerBase.isInteger(p.y) || OpenApiTypeCheckerBase.isNumber(p.y)) &&
360
+ OpenApiTypeCheckerBase.coverNumber(p.x, p.y));
361
+ else if (OpenApiTypeCheckerBase.isString(p.x))
362
+ return (OpenApiTypeCheckerBase.isConstant(p.y) || OpenApiTypeCheckerBase.isString(p.y)) && OpenApiTypeCheckerBase.coverString(p.x, p.y);
363
+ // INSTANCE CASE
364
+ else if (OpenApiTypeCheckerBase.isArray(p.x))
365
+ return ((OpenApiTypeCheckerBase.isArray(p.y) || OpenApiTypeCheckerBase.isTuple(p.y)) &&
366
+ coverArray({
367
+ prefix: p.prefix,
368
+ components: p.components,
369
+ visited: p.visited,
370
+ x: p.x,
371
+ y: p.y,
372
+ }));
373
+ else if (OpenApiTypeCheckerBase.isObject(p.x))
374
+ return (OpenApiTypeCheckerBase.isObject(p.y) &&
375
+ coverObject({
376
+ prefix: p.prefix,
377
+ components: p.components,
378
+ visited: p.visited,
379
+ x: p.x,
380
+ y: p.y,
381
+ }));
382
+ else if (OpenApiTypeCheckerBase.isReference(p.x))
383
+ return OpenApiTypeCheckerBase.isReference(p.y) && p.x.$ref === p.y.$ref;
384
+ return false;
385
+ };
386
+ const coverArray = (p) => {
387
+ if (OpenApiTypeCheckerBase.isTuple(p.y))
388
+ return (p.y.prefixItems.every((v) => coverStation({
389
+ prefix: p.prefix,
390
+ components: p.components,
391
+ visited: p.visited,
392
+ x: p.x.items,
393
+ y: v,
394
+ })) &&
395
+ (p.y.additionalItems === undefined ||
396
+ (typeof p.y.additionalItems === "object" &&
397
+ coverStation({
398
+ prefix: p.prefix,
399
+ components: p.components,
400
+ visited: p.visited,
401
+ x: p.x.items,
402
+ y: p.y.additionalItems,
403
+ }))));
404
+ else if (!(p.x.minItems === undefined ||
405
+ (p.y.minItems !== undefined && p.x.minItems <= p.y.minItems)))
406
+ return false;
407
+ else if (!(p.x.maxItems === undefined ||
408
+ (p.y.maxItems !== undefined && p.x.maxItems >= p.y.maxItems)))
409
+ return false;
410
+ return coverStation({
411
+ prefix: p.prefix,
412
+ components: p.components,
413
+ visited: p.visited,
414
+ x: p.x.items,
415
+ y: p.y.items,
416
+ });
417
+ };
418
+ const coverObject = (p) => {
419
+ var _a;
420
+ if (!p.x.additionalProperties && !!p.y.additionalProperties)
421
+ return false;
422
+ else if (!!p.x.additionalProperties &&
423
+ !!p.y.additionalProperties &&
424
+ ((typeof p.x.additionalProperties === "object" &&
425
+ p.y.additionalProperties === true) ||
426
+ (typeof p.x.additionalProperties === "object" &&
427
+ typeof p.y.additionalProperties === "object" &&
428
+ !coverStation({
429
+ prefix: p.prefix,
430
+ components: p.components,
431
+ visited: p.visited,
432
+ x: p.x.additionalProperties,
433
+ y: p.y.additionalProperties,
434
+ }))))
435
+ return false;
436
+ return Object.entries((_a = p.y.properties) !== null && _a !== void 0 ? _a : {}).every(([key, b]) => {
437
+ var _a, _b, _c;
438
+ var _d;
439
+ const a = (_a = p.x.properties) === null || _a === void 0 ? void 0 : _a[key];
440
+ if (a === undefined)
441
+ return false;
442
+ else if (((_b = p.x.required) === null || _b === void 0 ? void 0 : _b.includes(key)) === true &&
443
+ ((_d = (_c = p.y.required) === null || _c === void 0 ? void 0 : _c.includes(key)) !== null && _d !== void 0 ? _d : false) === false)
444
+ return false;
445
+ return coverStation({
446
+ prefix: p.prefix,
447
+ components: p.components,
448
+ visited: p.visited,
449
+ x: a,
450
+ y: b,
451
+ });
452
+ });
453
+ };
454
+ OpenApiTypeCheckerBase.coverInteger = (x, y) => {
455
+ if (OpenApiTypeCheckerBase.isConstant(y))
456
+ return typeof y.const === "number" && Number.isInteger(y.const);
457
+ return x.type === y.type && OpenApiTypeCheckerBase.coverNumericRange(x, y);
458
+ };
459
+ OpenApiTypeCheckerBase.coverNumber = (x, y) => {
460
+ if (OpenApiTypeCheckerBase.isConstant(y))
461
+ return typeof y.const === "number";
462
+ return ((x.type === y.type || (x.type === "number" && y.type === "integer")) &&
463
+ OpenApiTypeCheckerBase.coverNumericRange(x, y));
464
+ };
465
+ OpenApiTypeCheckerBase.coverString = (x, y) => {
466
+ if (OpenApiTypeCheckerBase.isConstant(y))
467
+ return typeof y.const === "string";
468
+ return [
469
+ x.format === undefined ||
470
+ (y.format !== undefined && coverFormat(x.format, y.format)),
471
+ x.pattern === undefined || x.pattern === y.pattern,
472
+ x.minLength === undefined ||
473
+ (y.minLength !== undefined && x.minLength <= y.minLength),
474
+ x.maxLength === undefined ||
475
+ (y.maxLength !== undefined && x.maxLength >= y.maxLength),
476
+ ].every((v) => v);
477
+ };
478
+ const coverFormat = (x, y) => x === y ||
479
+ (x === "idn-email" && y === "email") ||
480
+ (x === "idn-hostname" && y === "hostname") ||
481
+ (["uri", "iri"].includes(x) && y === "url") ||
482
+ (x === "iri" && y === "uri") ||
483
+ (x === "iri-reference" && y === "uri-reference");
484
+ const flatSchema = (props) => {
485
+ const schema = escapeReferenceOfFlatSchema(props);
486
+ if (OpenApiTypeCheckerBase.isOneOf(schema))
487
+ return schema.oneOf
488
+ .map((v) => flatSchema({
489
+ prefix: props.prefix,
490
+ components: props.components,
491
+ schema: v,
492
+ }))
493
+ .flat();
494
+ return [schema];
495
+ };
496
+ const escapeReferenceOfFlatSchema = (props) => {
497
+ var _a;
498
+ var _b;
499
+ if (OpenApiTypeCheckerBase.isReference(props.schema) === false)
500
+ return props.schema;
501
+ const key = props.schema.$ref.replace(props.prefix, "");
502
+ const found = escapeReferenceOfFlatSchema({
503
+ prefix: props.prefix,
504
+ components: props.components,
505
+ schema: (_b = (_a = props.components.schemas) === null || _a === void 0 ? void 0 : _a[key]) !== null && _b !== void 0 ? _b : {},
506
+ });
507
+ if (found === undefined)
508
+ throw new Error(`Reference type not found: ${JSON.stringify(props.schema.$ref)}`);
509
+ return escapeReferenceOfFlatSchema({
510
+ prefix: props.prefix,
511
+ components: props.components,
512
+ schema: found,
513
+ });
514
+ };
515
+ OpenApiTypeCheckerBase.coverNumericRange = (x, y) => [
516
+ x.minimum === undefined ||
517
+ (y.minimum !== undefined && x.minimum <= y.minimum) ||
518
+ (y.exclusiveMinimum !== undefined && x.minimum < y.exclusiveMinimum),
519
+ x.maximum === undefined ||
520
+ (y.maximum !== undefined && x.maximum >= y.maximum) ||
521
+ (y.exclusiveMaximum !== undefined && x.maximum > y.exclusiveMaximum),
522
+ x.exclusiveMinimum === undefined ||
523
+ (y.minimum !== undefined && x.exclusiveMinimum <= y.minimum) ||
524
+ (y.exclusiveMinimum !== undefined &&
525
+ x.exclusiveMinimum <= y.exclusiveMinimum),
526
+ x.exclusiveMaximum === undefined ||
527
+ (y.maximum !== undefined && x.exclusiveMaximum >= y.maximum) ||
528
+ (y.exclusiveMaximum !== undefined &&
529
+ x.exclusiveMaximum >= y.exclusiveMaximum),
530
+ x.multipleOf === undefined ||
531
+ (y.multipleOf !== undefined &&
532
+ y.multipleOf / x.multipleOf ===
533
+ Math.floor(y.multipleOf / x.multipleOf)),
534
+ ].every((v) => v);
535
+ })(OpenApiTypeCheckerBase || (OpenApiTypeCheckerBase_2 = OpenApiTypeCheckerBase$1.OpenApiTypeCheckerBase = OpenApiTypeCheckerBase = {}));
536
+ const getReference = (prefix) => prefix
537
+ .split("/")
538
+ .filter((str, i) => !!str.length && !(i === 0 && str === "#"))
539
+ .join(".");
6
540
 
7
- function requireOpenApiTypeCheckerBase () {
8
- if (hasRequiredOpenApiTypeCheckerBase) return OpenApiTypeCheckerBase;
9
- hasRequiredOpenApiTypeCheckerBase = 1;
10
- Object.defineProperty(OpenApiTypeCheckerBase, "__esModule", { value: true });
11
- OpenApiTypeCheckerBase.OpenApiTypeCheckerBase = void 0;
12
- const MapUtil_1 = requireMapUtil();
13
- const JsonDescriptor_1 = /*@__PURE__*/ requireJsonDescriptor();
14
- /** @internal */
15
- var OpenApiTypeCheckerBase$1;
16
- (function (OpenApiTypeCheckerBase) {
17
- /* -----------------------------------------------------------
18
- TYPE CHECKERS
19
- ----------------------------------------------------------- */
20
- OpenApiTypeCheckerBase.isNull = (schema) => schema.type === "null";
21
- OpenApiTypeCheckerBase.isUnknown = (schema) => schema.type === undefined &&
22
- !OpenApiTypeCheckerBase.isConstant(schema) &&
23
- !OpenApiTypeCheckerBase.isOneOf(schema) &&
24
- !OpenApiTypeCheckerBase.isReference(schema);
25
- OpenApiTypeCheckerBase.isConstant = (schema) => schema.const !== undefined;
26
- OpenApiTypeCheckerBase.isBoolean = (schema) => schema.type === "boolean";
27
- OpenApiTypeCheckerBase.isInteger = (schema) => schema.type === "integer";
28
- OpenApiTypeCheckerBase.isNumber = (schema) => schema.type === "number";
29
- OpenApiTypeCheckerBase.isString = (schema) => schema.type === "string";
30
- OpenApiTypeCheckerBase.isArray = (schema) => schema.type === "array" &&
31
- schema.items !== undefined;
32
- OpenApiTypeCheckerBase.isTuple = (schema) => schema.type === "array" &&
33
- schema.prefixItems !== undefined;
34
- OpenApiTypeCheckerBase.isObject = (schema) => schema.type === "object";
35
- OpenApiTypeCheckerBase.isReference = (schema) => !!schema &&
36
- typeof schema === "object" &&
37
- schema.$ref !== undefined;
38
- OpenApiTypeCheckerBase.isOneOf = (schema) => schema.oneOf !== undefined;
39
- OpenApiTypeCheckerBase.isRecursiveReference = (props) => {
40
- var _a;
41
- if (OpenApiTypeCheckerBase.isReference(props.schema) === false)
42
- return false;
43
- const current = (_a = props.schema.$ref.split(props.prefix)[1]) !== null && _a !== void 0 ? _a : props.schema.$ref.split("/").at(-1);
44
- let counter = 0;
45
- OpenApiTypeCheckerBase.visit({
46
- prefix: props.prefix,
47
- components: props.components,
48
- schema: props.schema,
49
- closure: (schema) => {
50
- var _a;
51
- if (OpenApiTypeCheckerBase.isReference(schema)) {
52
- const next = (_a = schema.$ref.split(props.prefix)[1]) !== null && _a !== void 0 ? _a : schema.$ref.split("/").at(-1);
53
- if (current === next)
54
- ++counter;
55
- }
56
- },
57
- });
58
- return counter > 1;
59
- };
60
- /* -----------------------------------------------------------
61
- OPERATORS
62
- ----------------------------------------------------------- */
63
- OpenApiTypeCheckerBase.unreference = (props) => {
64
- var _a, _b;
65
- const reasons = [];
66
- const result = unreferenceSchema({
67
- prefix: props.prefix,
68
- refAccessor: (_a = props.refAccessor) !== null && _a !== void 0 ? _a : `$input.${props.prefix
69
- .substring(2)
70
- .split("/")
71
- .filter((s) => !!s.length)
72
- .join(".")}`,
73
- accessor: (_b = props.accessor) !== null && _b !== void 0 ? _b : "$input.schema",
74
- components: props.components,
75
- schema: props.schema,
76
- reasons,
77
- });
78
- if (result === null)
79
- return {
80
- success: false,
81
- error: {
82
- method: props.method,
83
- message: `failed to unreference due to unable to find.`,
84
- reasons,
85
- },
86
- };
87
- return {
88
- success: true,
89
- value: result,
90
- };
91
- };
92
- OpenApiTypeCheckerBase.escape = (props) => {
93
- var _a, _b;
94
- const reasons = [];
95
- const result = escapeSchema(Object.assign(Object.assign({}, props), { reasons, visited: new Map(), accessor: (_a = props.accessor) !== null && _a !== void 0 ? _a : "$input.schema", refAccessor: (_b = props.refAccessor) !== null && _b !== void 0 ? _b : getReference(props.prefix) })) || null;
96
- if (result === null)
97
- return {
98
- success: false,
99
- error: {
100
- method: props.method,
101
- message: `failed to escape some reference type(s) due to unable to find${Number(props.recursive) === 0 ? " or recursive relationship" : ""}.`,
102
- reasons,
103
- },
104
- };
105
- return {
106
- success: true,
107
- value: result,
108
- };
109
- };
110
- OpenApiTypeCheckerBase.visit = (props) => {
111
- var _a, _b;
112
- const already = new Set();
113
- const refAccessor = (_a = props.refAccessor) !== null && _a !== void 0 ? _a : `$input.${getReference(props.prefix)}`;
114
- const next = (schema, accessor) => {
115
- var _a;
116
- var _b, _c;
117
- props.closure(schema, accessor);
118
- if (OpenApiTypeCheckerBase.isReference(schema)) {
119
- const key = schema.$ref.split(props.prefix).pop();
120
- if (already.has(key) === true)
121
- return;
122
- already.add(key);
123
- const found = (_a = props.components.schemas) === null || _a === void 0 ? void 0 : _a[key];
124
- if (found !== undefined)
125
- next(found, `${refAccessor}[${JSON.stringify(key)}]`);
126
- }
127
- else if (OpenApiTypeCheckerBase.isOneOf(schema))
128
- schema.oneOf.forEach((s, i) => next(s, `${accessor}.oneOf[${i}]`));
129
- else if (OpenApiTypeCheckerBase.isObject(schema)) {
130
- for (const [key, value] of Object.entries((_b = schema.properties) !== null && _b !== void 0 ? _b : {}))
131
- next(value, `${accessor}.properties[${JSON.stringify(key)}]`);
132
- if (typeof schema.additionalProperties === "object" &&
133
- schema.additionalProperties !== null)
134
- next(schema.additionalProperties, `${accessor}.additionalProperties`);
135
- }
136
- else if (OpenApiTypeCheckerBase.isArray(schema))
137
- next(schema.items, `${accessor}.items`);
138
- else if (OpenApiTypeCheckerBase.isTuple(schema)) {
139
- ((_c = schema.prefixItems) !== null && _c !== void 0 ? _c : []).forEach((s, i) => next(s, `${accessor}.prefixItems[${i}]`));
140
- if (typeof schema.additionalItems === "object" &&
141
- schema.additionalItems !== null)
142
- next(schema.additionalItems, `${accessor}.additionalItems`);
143
- }
144
- };
145
- next(props.schema, (_b = props.accessor) !== null && _b !== void 0 ? _b : "$input.schema");
146
- };
147
- OpenApiTypeCheckerBase.covers = (props) => coverStation({
148
- prefix: props.prefix,
149
- components: props.components,
150
- x: props.x,
151
- y: props.y,
152
- visited: new Map(),
153
- });
154
- const unreferenceSchema = (props) => {
155
- var _a;
156
- if (OpenApiTypeCheckerBase.isReference(props.schema) === false)
157
- return props.schema;
158
- const key = props.schema.$ref.split(props.prefix).pop();
159
- const found = (_a = props.components.schemas) === null || _a === void 0 ? void 0 : _a[key];
160
- if (found === undefined) {
161
- props.reasons.push({
162
- schema: props.schema,
163
- accessor: props.accessor,
164
- message: `unable to find reference type ${JSON.stringify(key)}.`,
165
- });
166
- return null;
167
- }
168
- else if (OpenApiTypeCheckerBase.isReference(found) === false)
169
- return found;
170
- else if (props.first === key) {
171
- props.reasons.push({
172
- schema: props.schema,
173
- accessor: props.accessor,
174
- message: `recursive reference type ${JSON.stringify(key)}.`,
175
- });
176
- return null;
177
- }
178
- return unreferenceSchema(Object.assign(Object.assign({}, props), { accessor: `${props.refAccessor}[${JSON.stringify(key)}]`, first: key }));
179
- };
180
- const escapeSchema = (props) => {
181
- var _a, _b;
182
- var _c, _d, _e;
183
- if (OpenApiTypeCheckerBase.isReference(props.schema)) {
184
- // REFERENCE
185
- const key = (_c = props.schema.$ref.split(props.prefix)[1]) !== null && _c !== void 0 ? _c : props.schema.$ref.split("/").at(-1);
186
- const target = (_a = props.components.schemas) === null || _a === void 0 ? void 0 : _a[key];
187
- if (target === undefined) {
188
- props.reasons.push({
189
- schema: props.schema,
190
- accessor: props.accessor,
191
- message: `unable to find reference type ${JSON.stringify(key)}.`,
192
- });
193
- return null;
194
- }
195
- else if (props.visited.has(key) === true) {
196
- if (props.recursive === false)
197
- return null;
198
- const depth = props.visited.get(key);
199
- if (depth > props.recursive) {
200
- if (props.recursive === 0) {
201
- props.reasons.push({
202
- schema: props.schema,
203
- accessor: props.accessor,
204
- message: `recursive reference type ${JSON.stringify(key)}.`,
205
- });
206
- return null;
207
- }
208
- return undefined;
209
- }
210
- props.visited.set(key, depth + 1);
211
- const res = escapeSchema(Object.assign(Object.assign({}, props), { schema: target, accessor: `${props.refAccessor}[${JSON.stringify(key)}]` }));
212
- return res
213
- ? Object.assign(Object.assign({}, res), { description: JsonDescriptor_1.JsonDescriptor.cascade({
214
- prefix: props.prefix,
215
- components: props.components,
216
- schema: props.schema,
217
- escape: true,
218
- }) }) : res;
219
- }
220
- else {
221
- const res = escapeSchema(Object.assign(Object.assign({}, props), { schema: target, accessor: `${props.refAccessor}[${JSON.stringify(key)}]`, visited: new Map([...props.visited, [key, 1]]) }));
222
- return res
223
- ? Object.assign(Object.assign({}, res), { description: JsonDescriptor_1.JsonDescriptor.cascade({
224
- prefix: props.prefix,
225
- components: props.components,
226
- schema: props.schema,
227
- escape: true,
228
- }) }) : res;
229
- }
230
- }
231
- else if (OpenApiTypeCheckerBase.isOneOf(props.schema)) {
232
- // UNION
233
- const elements = props.schema.oneOf.map((s, i) => escapeSchema(Object.assign(Object.assign({}, props), { schema: s, accessor: `${props.accessor}.oneOf[${i}]` })));
234
- if (elements.some((v) => v === null))
235
- return null;
236
- const filtered = elements.filter((v) => v !== undefined);
237
- if (filtered.length === 0)
238
- return undefined;
239
- return Object.assign(Object.assign({}, props.schema), { oneOf: filtered
240
- .map((v) => flatSchema({
241
- prefix: props.prefix,
242
- components: props.components,
243
- schema: v,
244
- }))
245
- .flat() });
246
- }
247
- else if (OpenApiTypeCheckerBase.isObject(props.schema)) {
248
- // OBJECT
249
- const object = props.schema;
250
- const properties = Object.entries((_d = object.properties) !== null && _d !== void 0 ? _d : {}).map(([k, s]) => [
251
- k,
252
- escapeSchema(Object.assign(Object.assign({}, props), { schema: s, visited: props.visited, accessor: `${props.accessor}.properties[${JSON.stringify(k)}]` })),
253
- ]);
254
- const additionalProperties = object.additionalProperties
255
- ? typeof object.additionalProperties === "object" &&
256
- object.additionalProperties !== null
257
- ? escapeSchema(Object.assign(Object.assign({}, props), { schema: object.additionalProperties, accessor: `${props.accessor}.additionalProperties` }))
258
- : object.additionalProperties
259
- : false;
260
- if (properties.some(([_k, v]) => v === null) ||
261
- additionalProperties === null)
262
- return null;
263
- else if (properties.some(([k, v]) => { var _a; return v === undefined && ((_a = object.required) === null || _a === void 0 ? void 0 : _a.includes(k)) === true; }) === true)
264
- return undefined;
265
- return Object.assign(Object.assign({}, object), { properties: Object.fromEntries(properties.filter(([_k, v]) => v !== undefined)), additionalProperties: additionalProperties !== null && additionalProperties !== void 0 ? additionalProperties : false, required: (_e = (_b = object.required) === null || _b === void 0 ? void 0 : _b.filter((k) => properties.some(([key, value]) => key === k && value !== undefined))) !== null && _e !== void 0 ? _e : [] });
266
- }
267
- else if (OpenApiTypeCheckerBase.isTuple(props.schema)) {
268
- // TUPLE
269
- const elements = props.schema.prefixItems.map((s, i) => escapeSchema(Object.assign(Object.assign({}, props), { schema: s, accessor: `${props.accessor}.prefixItems[${i}]` })));
270
- const additionalItems = props.schema.additionalItems
271
- ? typeof props.schema.additionalItems === "object" &&
272
- props.schema.additionalItems !== null
273
- ? escapeSchema(Object.assign(Object.assign({}, props), { schema: props.schema.additionalItems, accessor: `${props.accessor}.additionalItems` }))
274
- : props.schema.additionalItems
275
- : false;
276
- if (elements.some((v) => v === null) || additionalItems === null)
277
- return null;
278
- else if (elements.some((v) => v === undefined))
279
- return undefined;
280
- return Object.assign(Object.assign({}, props.schema), { prefixItems: elements, additionalItems: additionalItems !== null && additionalItems !== void 0 ? additionalItems : false });
281
- }
282
- else if (OpenApiTypeCheckerBase.isArray(props.schema)) {
283
- // ARRAY
284
- const items = escapeSchema(Object.assign(Object.assign({}, props), { schema: props.schema.items, accessor: `${props.accessor}.items` }));
285
- if (items === null)
286
- return null;
287
- else if (items === undefined)
288
- return Object.assign(Object.assign({}, props.schema), { minItems: undefined, maxItems: 0, items: {} });
289
- return Object.assign(Object.assign({}, props.schema), { items: items });
290
- }
291
- return props.schema;
292
- };
293
- const coverStation = (p) => {
294
- var _a;
295
- const cache = (_a = p.visited.get(p.x)) === null || _a === void 0 ? void 0 : _a.get(p.y);
296
- if (cache !== undefined)
297
- return cache;
298
- // FOR RECURSIVE CASE
299
- const nested = MapUtil_1.MapUtil.take(p.visited, p.x, () => new Map());
300
- nested.set(p.y, true);
301
- // COMPUTE IT
302
- const result = coverSchema(p);
303
- nested.set(p.y, result);
304
- return result;
305
- };
306
- const coverSchema = (p) => {
307
- // CHECK EQUALITY
308
- if (p.x === p.y)
309
- return true;
310
- else if (OpenApiTypeCheckerBase.isReference(p.x) && OpenApiTypeCheckerBase.isReference(p.y) && p.x.$ref === p.y.$ref)
311
- return true;
312
- // COMPARE WITH FLATTENING
313
- const alpha = flatSchema({
314
- prefix: p.prefix,
315
- components: p.components,
316
- schema: p.x,
317
- });
318
- const beta = flatSchema({
319
- prefix: p.prefix,
320
- components: p.components,
321
- schema: p.y,
322
- });
323
- if (alpha.some((x) => OpenApiTypeCheckerBase.isUnknown(x)))
324
- return true;
325
- else if (beta.some((x) => OpenApiTypeCheckerBase.isUnknown(x)))
326
- return false;
327
- return beta.every((b) => alpha.some((a) => coverEscapedSchema({
328
- prefix: p.prefix,
329
- components: p.components,
330
- visited: p.visited,
331
- x: a,
332
- y: b,
333
- })));
334
- };
335
- const coverEscapedSchema = (p) => {
336
- // CHECK EQUALITY
337
- if (p.x === p.y)
338
- return true;
339
- else if (OpenApiTypeCheckerBase.isUnknown(p.x))
340
- return true;
341
- else if (OpenApiTypeCheckerBase.isUnknown(p.y))
342
- return false;
343
- else if (OpenApiTypeCheckerBase.isNull(p.x))
344
- return OpenApiTypeCheckerBase.isNull(p.y);
345
- // ATOMIC CASE
346
- else if (OpenApiTypeCheckerBase.isConstant(p.x))
347
- return OpenApiTypeCheckerBase.isConstant(p.y) && p.x.const === p.y.const;
348
- else if (OpenApiTypeCheckerBase.isBoolean(p.x))
349
- return (OpenApiTypeCheckerBase.isBoolean(p.y) || (OpenApiTypeCheckerBase.isConstant(p.y) && typeof p.y.const === "boolean"));
350
- else if (OpenApiTypeCheckerBase.isInteger(p.x))
351
- return (OpenApiTypeCheckerBase.isInteger(p.y) || OpenApiTypeCheckerBase.isConstant(p.y)) && OpenApiTypeCheckerBase.coverInteger(p.x, p.y);
352
- else if (OpenApiTypeCheckerBase.isNumber(p.x))
353
- return ((OpenApiTypeCheckerBase.isConstant(p.y) || OpenApiTypeCheckerBase.isInteger(p.y) || OpenApiTypeCheckerBase.isNumber(p.y)) &&
354
- OpenApiTypeCheckerBase.coverNumber(p.x, p.y));
355
- else if (OpenApiTypeCheckerBase.isString(p.x))
356
- return (OpenApiTypeCheckerBase.isConstant(p.y) || OpenApiTypeCheckerBase.isString(p.y)) && OpenApiTypeCheckerBase.coverString(p.x, p.y);
357
- // INSTANCE CASE
358
- else if (OpenApiTypeCheckerBase.isArray(p.x))
359
- return ((OpenApiTypeCheckerBase.isArray(p.y) || OpenApiTypeCheckerBase.isTuple(p.y)) &&
360
- coverArray({
361
- prefix: p.prefix,
362
- components: p.components,
363
- visited: p.visited,
364
- x: p.x,
365
- y: p.y,
366
- }));
367
- else if (OpenApiTypeCheckerBase.isObject(p.x))
368
- return (OpenApiTypeCheckerBase.isObject(p.y) &&
369
- coverObject({
370
- prefix: p.prefix,
371
- components: p.components,
372
- visited: p.visited,
373
- x: p.x,
374
- y: p.y,
375
- }));
376
- else if (OpenApiTypeCheckerBase.isReference(p.x))
377
- return OpenApiTypeCheckerBase.isReference(p.y) && p.x.$ref === p.y.$ref;
378
- return false;
379
- };
380
- const coverArray = (p) => {
381
- if (OpenApiTypeCheckerBase.isTuple(p.y))
382
- return (p.y.prefixItems.every((v) => coverStation({
383
- prefix: p.prefix,
384
- components: p.components,
385
- visited: p.visited,
386
- x: p.x.items,
387
- y: v,
388
- })) &&
389
- (p.y.additionalItems === undefined ||
390
- (typeof p.y.additionalItems === "object" &&
391
- coverStation({
392
- prefix: p.prefix,
393
- components: p.components,
394
- visited: p.visited,
395
- x: p.x.items,
396
- y: p.y.additionalItems,
397
- }))));
398
- else if (!(p.x.minItems === undefined ||
399
- (p.y.minItems !== undefined && p.x.minItems <= p.y.minItems)))
400
- return false;
401
- else if (!(p.x.maxItems === undefined ||
402
- (p.y.maxItems !== undefined && p.x.maxItems >= p.y.maxItems)))
403
- return false;
404
- return coverStation({
405
- prefix: p.prefix,
406
- components: p.components,
407
- visited: p.visited,
408
- x: p.x.items,
409
- y: p.y.items,
410
- });
411
- };
412
- const coverObject = (p) => {
413
- var _a;
414
- if (!p.x.additionalProperties && !!p.y.additionalProperties)
415
- return false;
416
- else if (!!p.x.additionalProperties &&
417
- !!p.y.additionalProperties &&
418
- ((typeof p.x.additionalProperties === "object" &&
419
- p.y.additionalProperties === true) ||
420
- (typeof p.x.additionalProperties === "object" &&
421
- typeof p.y.additionalProperties === "object" &&
422
- !coverStation({
423
- prefix: p.prefix,
424
- components: p.components,
425
- visited: p.visited,
426
- x: p.x.additionalProperties,
427
- y: p.y.additionalProperties,
428
- }))))
429
- return false;
430
- return Object.entries((_a = p.y.properties) !== null && _a !== void 0 ? _a : {}).every(([key, b]) => {
431
- var _a, _b, _c;
432
- var _d;
433
- const a = (_a = p.x.properties) === null || _a === void 0 ? void 0 : _a[key];
434
- if (a === undefined)
435
- return false;
436
- else if (((_b = p.x.required) === null || _b === void 0 ? void 0 : _b.includes(key)) === true &&
437
- ((_d = (_c = p.y.required) === null || _c === void 0 ? void 0 : _c.includes(key)) !== null && _d !== void 0 ? _d : false) === false)
438
- return false;
439
- return coverStation({
440
- prefix: p.prefix,
441
- components: p.components,
442
- visited: p.visited,
443
- x: a,
444
- y: b,
445
- });
446
- });
447
- };
448
- OpenApiTypeCheckerBase.coverInteger = (x, y) => {
449
- if (OpenApiTypeCheckerBase.isConstant(y))
450
- return typeof y.const === "number" && Number.isInteger(y.const);
451
- return x.type === y.type && OpenApiTypeCheckerBase.coverNumericRange(x, y);
452
- };
453
- OpenApiTypeCheckerBase.coverNumber = (x, y) => {
454
- if (OpenApiTypeCheckerBase.isConstant(y))
455
- return typeof y.const === "number";
456
- return ((x.type === y.type || (x.type === "number" && y.type === "integer")) &&
457
- OpenApiTypeCheckerBase.coverNumericRange(x, y));
458
- };
459
- OpenApiTypeCheckerBase.coverString = (x, y) => {
460
- if (OpenApiTypeCheckerBase.isConstant(y))
461
- return typeof y.const === "string";
462
- return [
463
- x.format === undefined ||
464
- (y.format !== undefined && coverFormat(x.format, y.format)),
465
- x.pattern === undefined || x.pattern === y.pattern,
466
- x.minLength === undefined ||
467
- (y.minLength !== undefined && x.minLength <= y.minLength),
468
- x.maxLength === undefined ||
469
- (y.maxLength !== undefined && x.maxLength >= y.maxLength),
470
- ].every((v) => v);
471
- };
472
- const coverFormat = (x, y) => x === y ||
473
- (x === "idn-email" && y === "email") ||
474
- (x === "idn-hostname" && y === "hostname") ||
475
- (["uri", "iri"].includes(x) && y === "url") ||
476
- (x === "iri" && y === "uri") ||
477
- (x === "iri-reference" && y === "uri-reference");
478
- const flatSchema = (props) => {
479
- const schema = escapeReferenceOfFlatSchema(props);
480
- if (OpenApiTypeCheckerBase.isOneOf(schema))
481
- return schema.oneOf
482
- .map((v) => flatSchema({
483
- prefix: props.prefix,
484
- components: props.components,
485
- schema: v,
486
- }))
487
- .flat();
488
- return [schema];
489
- };
490
- const escapeReferenceOfFlatSchema = (props) => {
491
- var _a;
492
- var _b;
493
- if (OpenApiTypeCheckerBase.isReference(props.schema) === false)
494
- return props.schema;
495
- const key = props.schema.$ref.replace(props.prefix, "");
496
- const found = escapeReferenceOfFlatSchema({
497
- prefix: props.prefix,
498
- components: props.components,
499
- schema: (_b = (_a = props.components.schemas) === null || _a === void 0 ? void 0 : _a[key]) !== null && _b !== void 0 ? _b : {},
500
- });
501
- if (found === undefined)
502
- throw new Error(`Reference type not found: ${JSON.stringify(props.schema.$ref)}`);
503
- return escapeReferenceOfFlatSchema({
504
- prefix: props.prefix,
505
- components: props.components,
506
- schema: found,
507
- });
508
- };
509
- OpenApiTypeCheckerBase.coverNumericRange = (x, y) => [
510
- x.minimum === undefined ||
511
- (y.minimum !== undefined && x.minimum <= y.minimum) ||
512
- (y.exclusiveMinimum !== undefined && x.minimum < y.exclusiveMinimum),
513
- x.maximum === undefined ||
514
- (y.maximum !== undefined && x.maximum >= y.maximum) ||
515
- (y.exclusiveMaximum !== undefined && x.maximum > y.exclusiveMaximum),
516
- x.exclusiveMinimum === undefined ||
517
- (y.minimum !== undefined && x.exclusiveMinimum <= y.minimum) ||
518
- (y.exclusiveMinimum !== undefined &&
519
- x.exclusiveMinimum <= y.exclusiveMinimum),
520
- x.exclusiveMaximum === undefined ||
521
- (y.maximum !== undefined && x.exclusiveMaximum >= y.maximum) ||
522
- (y.exclusiveMaximum !== undefined &&
523
- x.exclusiveMaximum >= y.exclusiveMaximum),
524
- x.multipleOf === undefined ||
525
- (y.multipleOf !== undefined &&
526
- y.multipleOf / x.multipleOf ===
527
- Math.floor(y.multipleOf / x.multipleOf)),
528
- ].every((v) => v);
529
- })(OpenApiTypeCheckerBase$1 || (OpenApiTypeCheckerBase.OpenApiTypeCheckerBase = OpenApiTypeCheckerBase$1 = {}));
530
- const getReference = (prefix) => prefix
531
- .split("/")
532
- .filter((str, i) => !!str.length && !(i === 0 && str === "#"))
533
- .join(".");
534
-
535
- return OpenApiTypeCheckerBase;
536
- }
537
-
538
- export { requireOpenApiTypeCheckerBase as __require };
541
+ export { OpenApiTypeCheckerBase_2 as OpenApiTypeCheckerBase, OpenApiTypeCheckerBase$1 as default };
539
542
  //# sourceMappingURL=OpenApiTypeCheckerBase2.mjs.map