@scalar/openapi-parser 0.10.15 → 0.10.17

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 (332) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +0 -22
  3. package/dist/configuration/index.js +19 -22
  4. package/dist/configuration/index.js.map +7 -0
  5. package/dist/declarations.d.js +1 -0
  6. package/dist/declarations.d.js.map +7 -0
  7. package/dist/index.d.ts +4 -4
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +5 -29
  10. package/dist/index.js.map +7 -0
  11. package/dist/lib/Validator/Validator.d.ts +2 -2
  12. package/dist/lib/Validator/Validator.d.ts.map +1 -1
  13. package/dist/lib/Validator/Validator.js +99 -119
  14. package/dist/lib/Validator/Validator.js.map +7 -0
  15. package/dist/lib/Validator/Validator.test.js +8 -0
  16. package/dist/lib/Validator/Validator.test.js.map +7 -0
  17. package/dist/lib/Validator/index.d.ts +2 -2
  18. package/dist/lib/Validator/index.d.ts.map +1 -1
  19. package/dist/lib/Validator/index.js +3 -0
  20. package/dist/lib/Validator/index.js.map +7 -0
  21. package/dist/plugins/fetch-urls/fetchUrls.d.ts +1 -2
  22. package/dist/plugins/fetch-urls/fetchUrls.d.ts.map +1 -1
  23. package/dist/plugins/fetch-urls/fetchUrls.js +36 -111
  24. package/dist/plugins/fetch-urls/fetchUrls.js.map +7 -0
  25. package/dist/plugins/fetch-urls/fetchUrls.test.js +50 -0
  26. package/dist/plugins/fetch-urls/fetchUrls.test.js.map +7 -0
  27. package/dist/plugins/fetch-urls/index.d.ts +1 -1
  28. package/dist/plugins/fetch-urls/index.d.ts.map +1 -1
  29. package/dist/plugins/fetch-urls/index.js +2 -1
  30. package/dist/plugins/fetch-urls/index.js.map +7 -0
  31. package/dist/plugins/read-files/index.d.ts +1 -1
  32. package/dist/plugins/read-files/index.d.ts.map +1 -1
  33. package/dist/plugins/read-files/index.js +2 -1
  34. package/dist/plugins/read-files/index.js.map +7 -0
  35. package/dist/plugins/read-files/readFiles.d.ts +1 -1
  36. package/dist/plugins/read-files/readFiles.d.ts.map +1 -1
  37. package/dist/plugins/read-files/readFiles.js +50 -70
  38. package/dist/plugins/read-files/readFiles.js.map +7 -0
  39. package/dist/plugins/read-files/readFiles.test.js +20 -0
  40. package/dist/plugins/read-files/readFiles.test.js.map +7 -0
  41. package/dist/polyfills/index.d.ts +1 -1
  42. package/dist/polyfills/index.d.ts.map +1 -1
  43. package/dist/polyfills/index.js +5 -0
  44. package/dist/polyfills/index.js.map +7 -0
  45. package/dist/polyfills/path.js +155 -98
  46. package/dist/polyfills/path.js.map +7 -0
  47. package/dist/schemas/v2.0/schema.d.ts +1405 -0
  48. package/dist/schemas/v2.0/schema.d.ts.map +1 -0
  49. package/dist/schemas/v2.0/schema.js +1463 -0
  50. package/dist/schemas/v2.0/schema.js.map +7 -0
  51. package/dist/schemas/v3.0/schema.d.ts +1264 -0
  52. package/dist/schemas/v3.0/schema.d.ts.map +1 -0
  53. package/dist/schemas/v3.0/schema.js +1493 -0
  54. package/dist/schemas/v3.0/schema.js.map +7 -0
  55. package/dist/schemas/v3.1/schema.d.ts +1225 -0
  56. package/dist/schemas/v3.1/schema.d.ts.map +1 -0
  57. package/dist/schemas/v3.1/schema.js +1296 -0
  58. package/dist/schemas/v3.1/schema.js.map +7 -0
  59. package/dist/types/index.d.ts +5 -24
  60. package/dist/types/index.d.ts.map +1 -1
  61. package/dist/types/index.js +1 -0
  62. package/dist/types/index.js.map +7 -0
  63. package/dist/utils/betterAjvErrors/helpers.js +88 -93
  64. package/dist/utils/betterAjvErrors/helpers.js.map +7 -0
  65. package/dist/utils/betterAjvErrors/index.js +14 -13
  66. package/dist/utils/betterAjvErrors/index.js.map +7 -0
  67. package/dist/utils/betterAjvErrors/json/get-meta-from-path.d.ts +2 -0
  68. package/dist/utils/betterAjvErrors/json/get-meta-from-path.d.ts.map +1 -0
  69. package/dist/utils/betterAjvErrors/json/get-meta-from-path.js +27 -0
  70. package/dist/utils/betterAjvErrors/json/get-meta-from-path.js.map +7 -0
  71. package/dist/utils/betterAjvErrors/json/index.d.ts +2 -0
  72. package/dist/utils/betterAjvErrors/json/index.d.ts.map +1 -0
  73. package/dist/utils/betterAjvErrors/json/index.js +5 -0
  74. package/dist/utils/betterAjvErrors/json/index.js.map +7 -0
  75. package/dist/utils/betterAjvErrors/json/utils.d.ts +2 -0
  76. package/dist/utils/betterAjvErrors/json/utils.d.ts.map +1 -0
  77. package/dist/utils/betterAjvErrors/json/utils.js +11 -0
  78. package/dist/utils/betterAjvErrors/json/utils.js.map +7 -0
  79. package/dist/utils/betterAjvErrors/utils.js +21 -14
  80. package/dist/utils/betterAjvErrors/utils.js.map +7 -0
  81. package/dist/utils/betterAjvErrors/validation-errors/additional-prop.d.ts +10 -0
  82. package/dist/utils/betterAjvErrors/validation-errors/additional-prop.d.ts.map +1 -0
  83. package/dist/utils/betterAjvErrors/validation-errors/additional-prop.js +8 -9
  84. package/dist/utils/betterAjvErrors/validation-errors/additional-prop.js.map +7 -0
  85. package/dist/utils/betterAjvErrors/validation-errors/base.d.ts +23 -0
  86. package/dist/utils/betterAjvErrors/validation-errors/base.d.ts.map +1 -0
  87. package/dist/utils/betterAjvErrors/validation-errors/base.js +6 -10
  88. package/dist/utils/betterAjvErrors/validation-errors/base.js.map +7 -0
  89. package/dist/utils/betterAjvErrors/validation-errors/default.d.ts +10 -0
  90. package/dist/utils/betterAjvErrors/validation-errors/default.d.ts.map +1 -0
  91. package/dist/utils/betterAjvErrors/validation-errors/default.js +8 -9
  92. package/dist/utils/betterAjvErrors/validation-errors/default.js.map +7 -0
  93. package/dist/utils/betterAjvErrors/validation-errors/enum.d.ts +11 -0
  94. package/dist/utils/betterAjvErrors/validation-errors/enum.d.ts.map +1 -0
  95. package/dist/utils/betterAjvErrors/validation-errors/enum.js +19 -29
  96. package/dist/utils/betterAjvErrors/validation-errors/enum.js.map +7 -0
  97. package/dist/utils/betterAjvErrors/validation-errors/index.d.ts +7 -0
  98. package/dist/utils/betterAjvErrors/validation-errors/index.d.ts.map +1 -0
  99. package/dist/utils/betterAjvErrors/validation-errors/index.js +15 -0
  100. package/dist/utils/betterAjvErrors/validation-errors/index.js.map +7 -0
  101. package/dist/utils/betterAjvErrors/validation-errors/pattern.d.ts +10 -0
  102. package/dist/utils/betterAjvErrors/validation-errors/pattern.d.ts.map +1 -0
  103. package/dist/utils/betterAjvErrors/validation-errors/pattern.js +8 -9
  104. package/dist/utils/betterAjvErrors/validation-errors/pattern.js.map +7 -0
  105. package/dist/utils/betterAjvErrors/validation-errors/required.d.ts +10 -0
  106. package/dist/utils/betterAjvErrors/validation-errors/required.d.ts.map +1 -0
  107. package/dist/utils/betterAjvErrors/validation-errors/required.js +8 -9
  108. package/dist/utils/betterAjvErrors/validation-errors/required.js.map +7 -0
  109. package/dist/utils/betterAjvErrors/validation-errors/unevaluated-prop.d.ts +10 -0
  110. package/dist/utils/betterAjvErrors/validation-errors/unevaluated-prop.d.ts.map +1 -0
  111. package/dist/utils/betterAjvErrors/validation-errors/unevaluated-prop.js +8 -9
  112. package/dist/utils/betterAjvErrors/validation-errors/unevaluated-prop.js.map +7 -0
  113. package/dist/utils/dereference.d.ts +2 -2
  114. package/dist/utils/dereference.d.ts.map +1 -1
  115. package/dist/utils/dereference.js +17 -19
  116. package/dist/utils/dereference.js.map +7 -0
  117. package/dist/utils/dereference.test.js +300 -0
  118. package/dist/utils/dereference.test.js.map +7 -0
  119. package/dist/utils/details.d.ts +1 -1
  120. package/dist/utils/details.d.ts.map +1 -1
  121. package/dist/utils/details.js +26 -28
  122. package/dist/utils/details.js.map +7 -0
  123. package/dist/utils/errors.test.js +48 -0
  124. package/dist/utils/errors.test.js.map +7 -0
  125. package/dist/utils/escapeJsonPointer.js +5 -8
  126. package/dist/utils/escapeJsonPointer.js.map +7 -0
  127. package/dist/utils/escapeJsonPointer.test.js +11 -0
  128. package/dist/utils/escapeJsonPointer.test.js.map +7 -0
  129. package/dist/utils/filter.d.ts +1 -1
  130. package/dist/utils/filter.d.ts.map +1 -1
  131. package/dist/utils/filter.js +13 -15
  132. package/dist/utils/filter.js.map +7 -0
  133. package/dist/utils/getEntrypoint.d.ts +1 -1
  134. package/dist/utils/getEntrypoint.d.ts.map +1 -1
  135. package/dist/utils/getEntrypoint.js +5 -6
  136. package/dist/utils/getEntrypoint.js.map +7 -0
  137. package/dist/utils/getEntrypoint.test.js +18 -0
  138. package/dist/utils/getEntrypoint.test.js.map +7 -0
  139. package/dist/utils/getListOfReferences.d.ts +1 -1
  140. package/dist/utils/getListOfReferences.d.ts.map +1 -1
  141. package/dist/utils/getListOfReferences.js +15 -22
  142. package/dist/utils/getListOfReferences.js.map +7 -0
  143. package/dist/utils/getSegmentsFromPath.js +8 -15
  144. package/dist/utils/getSegmentsFromPath.js.map +7 -0
  145. package/dist/utils/getSegmentsFromPath.test.js +13 -0
  146. package/dist/utils/getSegmentsFromPath.test.js.map +7 -0
  147. package/dist/utils/index.d.ts +26 -26
  148. package/dist/utils/index.d.ts.map +1 -1
  149. package/dist/utils/index.js +27 -0
  150. package/dist/utils/index.js.map +7 -0
  151. package/dist/utils/isFilesystem.d.ts +1 -2
  152. package/dist/utils/isFilesystem.d.ts.map +1 -1
  153. package/dist/utils/isFilesystem.js +5 -9
  154. package/dist/utils/isFilesystem.js.map +7 -0
  155. package/dist/utils/isJson.js +10 -9
  156. package/dist/utils/isJson.js.map +7 -0
  157. package/dist/utils/isObject.js +5 -6
  158. package/dist/utils/isObject.js.map +7 -0
  159. package/dist/utils/isObject.test.js +23 -0
  160. package/dist/utils/isObject.test.js.map +7 -0
  161. package/dist/utils/isYaml.js +16 -17
  162. package/dist/utils/isYaml.js.map +7 -0
  163. package/dist/utils/load/index.d.ts +1 -1
  164. package/dist/utils/load/index.d.ts.map +1 -1
  165. package/dist/utils/load/index.js +2 -0
  166. package/dist/utils/load/index.js.map +7 -0
  167. package/dist/utils/load/load.d.ts +3 -12
  168. package/dist/utils/load/load.d.ts.map +1 -1
  169. package/dist/utils/load/load.js +89 -149
  170. package/dist/utils/load/load.js.map +7 -0
  171. package/dist/utils/load/load.test.js +361 -0
  172. package/dist/utils/load/load.test.js.map +7 -0
  173. package/dist/utils/makeFilesystem.d.ts +2 -19
  174. package/dist/utils/makeFilesystem.d.ts.map +1 -1
  175. package/dist/utils/makeFilesystem.js +20 -68
  176. package/dist/utils/makeFilesystem.js.map +7 -0
  177. package/dist/utils/makeFilesystem.test.js +15 -0
  178. package/dist/utils/makeFilesystem.test.js.map +7 -0
  179. package/dist/utils/normalize.d.ts +1 -1
  180. package/dist/utils/normalize.d.ts.map +1 -1
  181. package/dist/utils/normalize.js +22 -27
  182. package/dist/utils/normalize.js.map +7 -0
  183. package/dist/utils/normalize.test.js +88 -0
  184. package/dist/utils/normalize.test.js.map +7 -0
  185. package/dist/utils/openapi/actions/details.d.ts +2 -2
  186. package/dist/utils/openapi/actions/details.d.ts.map +1 -1
  187. package/dist/utils/openapi/actions/details.js +9 -11
  188. package/dist/utils/openapi/actions/details.js.map +7 -0
  189. package/dist/utils/openapi/actions/files.d.ts +1 -1
  190. package/dist/utils/openapi/actions/files.d.ts.map +1 -1
  191. package/dist/utils/openapi/actions/files.js +7 -9
  192. package/dist/utils/openapi/actions/files.js.map +7 -0
  193. package/dist/utils/openapi/actions/get.d.ts +1 -1
  194. package/dist/utils/openapi/actions/get.d.ts.map +1 -1
  195. package/dist/utils/openapi/actions/get.js +9 -11
  196. package/dist/utils/openapi/actions/get.js.map +7 -0
  197. package/dist/utils/openapi/actions/toJson.d.ts +1 -1
  198. package/dist/utils/openapi/actions/toJson.d.ts.map +1 -1
  199. package/dist/utils/openapi/actions/toJson.js +9 -11
  200. package/dist/utils/openapi/actions/toJson.js.map +7 -0
  201. package/dist/utils/openapi/actions/toYaml.d.ts +1 -1
  202. package/dist/utils/openapi/actions/toYaml.d.ts.map +1 -1
  203. package/dist/utils/openapi/actions/toYaml.js +9 -11
  204. package/dist/utils/openapi/actions/toYaml.js.map +7 -0
  205. package/dist/utils/openapi/commands/dereferenceCommand.d.ts +5 -5
  206. package/dist/utils/openapi/commands/dereferenceCommand.d.ts.map +1 -1
  207. package/dist/utils/openapi/commands/dereferenceCommand.js +25 -27
  208. package/dist/utils/openapi/commands/dereferenceCommand.js.map +7 -0
  209. package/dist/utils/openapi/commands/filterCommand.d.ts +9 -9
  210. package/dist/utils/openapi/commands/filterCommand.d.ts.map +1 -1
  211. package/dist/utils/openapi/commands/filterCommand.js +24 -26
  212. package/dist/utils/openapi/commands/filterCommand.js.map +7 -0
  213. package/dist/utils/openapi/commands/loadCommand.d.ts +1174 -1174
  214. package/dist/utils/openapi/commands/loadCommand.d.ts.map +1 -1
  215. package/dist/utils/openapi/commands/loadCommand.js +40 -42
  216. package/dist/utils/openapi/commands/loadCommand.js.map +7 -0
  217. package/dist/utils/openapi/commands/upgradeCommand.d.ts +311 -311
  218. package/dist/utils/openapi/commands/upgradeCommand.d.ts.map +1 -1
  219. package/dist/utils/openapi/commands/upgradeCommand.js +27 -29
  220. package/dist/utils/openapi/commands/upgradeCommand.js.map +7 -0
  221. package/dist/utils/openapi/commands/validateCommand.d.ts +311 -311
  222. package/dist/utils/openapi/commands/validateCommand.d.ts.map +1 -1
  223. package/dist/utils/openapi/commands/validateCommand.js +31 -33
  224. package/dist/utils/openapi/commands/validateCommand.js.map +7 -0
  225. package/dist/utils/openapi/index.d.ts +1 -1
  226. package/dist/utils/openapi/index.d.ts.map +1 -1
  227. package/dist/utils/openapi/index.js +2 -0
  228. package/dist/utils/openapi/index.js.map +7 -0
  229. package/dist/utils/openapi/openapi.d.ts +700 -700
  230. package/dist/utils/openapi/openapi.d.ts.map +1 -1
  231. package/dist/utils/openapi/openapi.js +13 -16
  232. package/dist/utils/openapi/openapi.js.map +7 -0
  233. package/dist/utils/openapi/openapi.test-d.js +14 -0
  234. package/dist/utils/openapi/openapi.test-d.js.map +7 -0
  235. package/dist/utils/openapi/openapi.test.js +309 -0
  236. package/dist/utils/openapi/openapi.test.js.map +7 -0
  237. package/dist/utils/openapi/utils/queueTask.d.ts +1 -1
  238. package/dist/utils/openapi/utils/queueTask.d.ts.map +1 -1
  239. package/dist/utils/openapi/utils/queueTask.js +8 -9
  240. package/dist/utils/openapi/utils/queueTask.js.map +7 -0
  241. package/dist/utils/openapi/utils/workThroughQueue.d.ts +1 -1
  242. package/dist/utils/openapi/utils/workThroughQueue.d.ts.map +1 -1
  243. package/dist/utils/openapi/utils/workThroughQueue.js +49 -64
  244. package/dist/utils/openapi/utils/workThroughQueue.js.map +7 -0
  245. package/dist/utils/openapi/utils/workThroughQueue.test.js +244 -0
  246. package/dist/utils/openapi/utils/workThroughQueue.test.js.map +7 -0
  247. package/dist/utils/resolveReferences.d.ts +1 -7
  248. package/dist/utils/resolveReferences.d.ts.map +1 -1
  249. package/dist/utils/resolveReferences.js +91 -149
  250. package/dist/utils/resolveReferences.js.map +7 -0
  251. package/dist/utils/resolveReferences.test.js +567 -0
  252. package/dist/utils/resolveReferences.test.js.map +7 -0
  253. package/dist/utils/toJson.d.ts +1 -1
  254. package/dist/utils/toJson.d.ts.map +1 -1
  255. package/dist/utils/toJson.js +4 -2
  256. package/dist/utils/toJson.js.map +7 -0
  257. package/dist/utils/toYaml.d.ts +1 -1
  258. package/dist/utils/toYaml.d.ts.map +1 -1
  259. package/dist/utils/toYaml.js +5 -4
  260. package/dist/utils/toYaml.js.map +7 -0
  261. package/dist/utils/transform/index.d.ts +1 -1
  262. package/dist/utils/transform/index.d.ts.map +1 -1
  263. package/dist/utils/transform/index.js +2 -0
  264. package/dist/utils/transform/index.js.map +7 -0
  265. package/dist/utils/transform/sanitize.d.ts +3 -3
  266. package/dist/utils/transform/sanitize.d.ts.map +1 -1
  267. package/dist/utils/transform/sanitize.js +22 -21
  268. package/dist/utils/transform/sanitize.js.map +7 -0
  269. package/dist/utils/transform/sanitize.test.js +148 -0
  270. package/dist/utils/transform/sanitize.test.js.map +7 -0
  271. package/dist/utils/transform/utils/addInfoObject.d.ts +1 -1
  272. package/dist/utils/transform/utils/addInfoObject.d.ts.map +1 -1
  273. package/dist/utils/transform/utils/addInfoObject.js +14 -10
  274. package/dist/utils/transform/utils/addInfoObject.js.map +7 -0
  275. package/dist/utils/transform/utils/addLatestOpenApiVersion.d.ts +1 -1
  276. package/dist/utils/transform/utils/addLatestOpenApiVersion.d.ts.map +1 -1
  277. package/dist/utils/transform/utils/addLatestOpenApiVersion.js +8 -5
  278. package/dist/utils/transform/utils/addLatestOpenApiVersion.js.map +7 -0
  279. package/dist/utils/transform/utils/addMissingTags.d.ts +1 -1
  280. package/dist/utils/transform/utils/addMissingTags.d.ts.map +1 -1
  281. package/dist/utils/transform/utils/addMissingTags.js +26 -27
  282. package/dist/utils/transform/utils/addMissingTags.js.map +7 -0
  283. package/dist/utils/transform/utils/normalizeSecuritySchemes.d.ts +1 -1
  284. package/dist/utils/transform/utils/normalizeSecuritySchemes.d.ts.map +1 -1
  285. package/dist/utils/transform/utils/normalizeSecuritySchemes.js +36 -40
  286. package/dist/utils/transform/utils/normalizeSecuritySchemes.js.map +7 -0
  287. package/dist/utils/transform/utils/rejectSwaggerDocuments.d.ts +1 -1
  288. package/dist/utils/transform/utils/rejectSwaggerDocuments.d.ts.map +1 -1
  289. package/dist/utils/transform/utils/rejectSwaggerDocuments.js +8 -6
  290. package/dist/utils/transform/utils/rejectSwaggerDocuments.js.map +7 -0
  291. package/dist/utils/transformErrors.d.ts +1 -1
  292. package/dist/utils/transformErrors.d.ts.map +1 -1
  293. package/dist/utils/transformErrors.js +18 -21
  294. package/dist/utils/transformErrors.js.map +7 -0
  295. package/dist/utils/transformErrors.test.js +17 -0
  296. package/dist/utils/transformErrors.test.js.map +7 -0
  297. package/dist/utils/traverse.d.ts +1 -1
  298. package/dist/utils/traverse.d.ts.map +1 -1
  299. package/dist/utils/traverse.js +19 -22
  300. package/dist/utils/traverse.js.map +7 -0
  301. package/dist/utils/traverse.test.js +68 -0
  302. package/dist/utils/traverse.test.js.map +7 -0
  303. package/dist/utils/unescapeJsonPointer.js +5 -9
  304. package/dist/utils/unescapeJsonPointer.js.map +7 -0
  305. package/dist/utils/unescapeJsonPointer.test.js +19 -0
  306. package/dist/utils/unescapeJsonPointer.test.js.map +7 -0
  307. package/dist/utils/upgrade.d.ts +1 -1
  308. package/dist/utils/upgrade.d.ts.map +1 -1
  309. package/dist/utils/upgrade.js +22 -22
  310. package/dist/utils/upgrade.js.map +7 -0
  311. package/dist/utils/upgrade.test-d.js +16 -0
  312. package/dist/utils/upgrade.test-d.js.map +7 -0
  313. package/dist/utils/upgrade.test.js +57 -0
  314. package/dist/utils/upgrade.test.js.map +7 -0
  315. package/dist/utils/upgradeFromThreeToThreeOne.js +114 -140
  316. package/dist/utils/upgradeFromThreeToThreeOne.js.map +7 -0
  317. package/dist/utils/upgradeFromThreeToThreeOne.test.js +462 -0
  318. package/dist/utils/upgradeFromThreeToThreeOne.test.js.map +7 -0
  319. package/dist/utils/upgradeFromTwoToThree.js +212 -219
  320. package/dist/utils/upgradeFromTwoToThree.js.map +7 -0
  321. package/dist/utils/upgradeFromTwoToThree.test.js +589 -0
  322. package/dist/utils/upgradeFromTwoToThree.test.js.map +7 -0
  323. package/dist/utils/validate.d.ts +1 -1
  324. package/dist/utils/validate.d.ts.map +1 -1
  325. package/dist/utils/validate.js +14 -16
  326. package/dist/utils/validate.js.map +7 -0
  327. package/dist/utils/validate.test.js +64 -0
  328. package/dist/utils/validate.test.js.map +7 -0
  329. package/package.json +6 -8
  330. package/dist/schemas/v2.0/schema.json.js +0 -1623
  331. package/dist/schemas/v3.0/schema.json.js +0 -1673
  332. package/dist/schemas/v3.1/schema.json.js +0 -1451
@@ -0,0 +1,462 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { isSchemaPath, upgradeFromThreeToThreeOne } from "./upgradeFromThreeToThreeOne.js";
3
+ describe("isSchemaPath", () => {
4
+ it("correctly identifies schema paths", () => {
5
+ expect(isSchemaPath(["components", "schemas", "User"])).toBe(true);
6
+ expect(isSchemaPath(["paths", "/users", "get", "responses", "200", "content", "application/json", "schema"])).toBe(
7
+ true
8
+ );
9
+ expect(isSchemaPath(["paths", "/users", "post", "requestBody", "content", "application/json", "schema"])).toBe(true);
10
+ expect(isSchemaPath(["components", "schemas", "User", "properties", "address"])).toBe(true);
11
+ expect(isSchemaPath(["components", "schemas", "User", "allOf", "0"])).toBe(true);
12
+ expect(isSchemaPath(["paths", "/users", "get", "parameters", "0", "schema"])).toBe(true);
13
+ });
14
+ it("correctly identifies non-schema paths", () => {
15
+ expect(isSchemaPath(["info"])).toBe(false);
16
+ expect(isSchemaPath(["paths", "/users", "get", "summary"])).toBe(false);
17
+ expect(isSchemaPath(["components", "parameters", "userId"])).toBe(false);
18
+ });
19
+ });
20
+ describe("upgradeFromThreeToThreeOne", () => {
21
+ describe("version", () => {
22
+ it("doesn\u2019t modify Swagger 2.0 files", async () => {
23
+ const result = upgradeFromThreeToThreeOne({
24
+ swagger: "2.0",
25
+ info: {
26
+ title: "Hello World",
27
+ version: "1.0.0"
28
+ },
29
+ paths: {}
30
+ });
31
+ expect(result.swagger).toBe("2.0");
32
+ });
33
+ it("changes the version to from 3.0.0 to 3.1.1", async () => {
34
+ const result = upgradeFromThreeToThreeOne({
35
+ openapi: "3.0.0",
36
+ info: {
37
+ title: "Hello World",
38
+ version: "1.0.0"
39
+ },
40
+ paths: {}
41
+ });
42
+ expect(result.openapi).toBe("3.1.1");
43
+ });
44
+ it("changes the version to 3.0.3 to 3.1.1", async () => {
45
+ const result = upgradeFromThreeToThreeOne({
46
+ openapi: "3.0.3",
47
+ info: {
48
+ title: "Hello World",
49
+ version: "1.0.0"
50
+ },
51
+ paths: {}
52
+ });
53
+ expect(result.openapi).toBe("3.1.1");
54
+ });
55
+ });
56
+ describe("nullable types", () => {
57
+ it("migrates nullable types", async () => {
58
+ const result = upgradeFromThreeToThreeOne({
59
+ openapi: "3.0.0",
60
+ info: {
61
+ title: "Hello World",
62
+ version: "1.0.0"
63
+ },
64
+ paths: {
65
+ "/test": {
66
+ get: {
67
+ responses: {
68
+ "200": {
69
+ description: "foobar",
70
+ content: {
71
+ "application/json": {
72
+ schema: {
73
+ type: "string",
74
+ nullable: true
75
+ }
76
+ }
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ }
83
+ });
84
+ expect(result.paths["/test"].get.responses["200"].content["application/json"].schema).toEqual({
85
+ type: ["string", "null"]
86
+ });
87
+ });
88
+ });
89
+ describe("exclusiveMinimum and exclusiveMaximum", () => {
90
+ it("migrate exclusiveMinimum and exclusiveMaximum", async () => {
91
+ const result = upgradeFromThreeToThreeOne({
92
+ openapi: "3.0.0",
93
+ info: {
94
+ title: "Hello World",
95
+ version: "1.0.0"
96
+ },
97
+ paths: {
98
+ "/test": {
99
+ get: {
100
+ responses: {
101
+ "200": {
102
+ description: "foobar",
103
+ content: {
104
+ "application/json": {
105
+ schema: {
106
+ type: "integer",
107
+ minimum: 1,
108
+ exclusiveMinimum: true,
109
+ maximum: 100,
110
+ exclusiveMaximum: true
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
119
+ });
120
+ expect(result.paths["/test"].get.responses["200"].content["application/json"].schema).toEqual({
121
+ type: "integer",
122
+ exclusiveMinimum: 1,
123
+ exclusiveMaximum: 100
124
+ });
125
+ });
126
+ });
127
+ describe("migrates example to examples", () => {
128
+ it("uses arrays in schemas", async () => {
129
+ const result = upgradeFromThreeToThreeOne({
130
+ openapi: "3.0.0",
131
+ info: {
132
+ title: "Hello World",
133
+ version: "1.0.0"
134
+ },
135
+ paths: {
136
+ "/test": {
137
+ get: {
138
+ responses: {
139
+ "200": {
140
+ description: "foobar",
141
+ content: {
142
+ "application/json": {
143
+ schema: {
144
+ type: "integer",
145
+ example: 1
146
+ }
147
+ }
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ });
155
+ expect(result.paths["/test"].get.responses["200"].content["application/json"].schema).toEqual({
156
+ type: "integer",
157
+ examples: [1]
158
+ });
159
+ });
160
+ it("uses example objects everywhere else", async () => {
161
+ const result = upgradeFromThreeToThreeOne({
162
+ openapi: "3.0.0",
163
+ info: {
164
+ title: "Hello World",
165
+ version: "1.0.0"
166
+ },
167
+ paths: {
168
+ "/test": {
169
+ get: {
170
+ parameters: [
171
+ {
172
+ name: "limit",
173
+ in: "query",
174
+ schema: {
175
+ type: "integer",
176
+ example: 10
177
+ },
178
+ example: 10
179
+ }
180
+ ]
181
+ }
182
+ }
183
+ }
184
+ });
185
+ expect(result.paths["/test"].get.parameters[0]).toEqual({
186
+ name: "limit",
187
+ in: "query",
188
+ schema: {
189
+ type: "integer",
190
+ // array, because it’s in a schema
191
+ examples: [10]
192
+ },
193
+ // object, because it’s not in a schema
194
+ examples: {
195
+ default: {
196
+ value: 10
197
+ }
198
+ }
199
+ });
200
+ });
201
+ it("doesn\u2019t transform arrays into objects", () => {
202
+ const result = upgradeFromThreeToThreeOne({
203
+ openapi: "3.0.0",
204
+ info: {
205
+ title: "Sample API",
206
+ version: "1.0.0",
207
+ description: "A simple example API"
208
+ },
209
+ tags: [
210
+ {
211
+ "name": "users",
212
+ "description": "Operations about users",
213
+ "x-internal": true
214
+ }
215
+ ],
216
+ paths: {
217
+ "/users": {
218
+ post: {
219
+ tags: ["users"],
220
+ summary: "hello",
221
+ description: "Returns a list of users",
222
+ operationId: "getUsers",
223
+ requestBody: {
224
+ content: {
225
+ "application/json": {
226
+ schema: {
227
+ type: "object",
228
+ properties: {
229
+ foobar: {
230
+ type: "array",
231
+ example: ["Portfolio1", "Portfolio2"],
232
+ items: {
233
+ type: "string"
234
+ }
235
+ }
236
+ }
237
+ }
238
+ }
239
+ }
240
+ }
241
+ }
242
+ }
243
+ }
244
+ });
245
+ expect(
246
+ result.paths["/users"].post.requestBody.content["application/json"].schema.properties.foobar
247
+ ).toStrictEqual({
248
+ type: "array",
249
+ examples: [["Portfolio1", "Portfolio2"]],
250
+ items: {
251
+ type: "string"
252
+ }
253
+ });
254
+ });
255
+ });
256
+ describe("describing File Upload Payloads", () => {
257
+ it("removes schema for binary file uploads", async () => {
258
+ const result = upgradeFromThreeToThreeOne({
259
+ openapi: "3.0.0",
260
+ info: {
261
+ title: "Hello World",
262
+ version: "1.0.0"
263
+ },
264
+ paths: {
265
+ "/upload": {
266
+ post: {
267
+ requestBody: {
268
+ content: {
269
+ "application/octet-stream": {
270
+ schema: {
271
+ type: "string",
272
+ format: "binary"
273
+ }
274
+ }
275
+ }
276
+ }
277
+ }
278
+ }
279
+ }
280
+ });
281
+ expect(result.paths["/upload"].post.requestBody.content["application/octet-stream"]).toEqual({});
282
+ });
283
+ it("migrates base64 format to contentEncoding for image uploads", async () => {
284
+ const result = upgradeFromThreeToThreeOne({
285
+ openapi: "3.0.0",
286
+ info: {
287
+ title: "Hello World",
288
+ version: "1.0.0"
289
+ },
290
+ paths: {
291
+ "/upload": {
292
+ post: {
293
+ requestBody: {
294
+ content: {
295
+ "image/png": {
296
+ schema: {
297
+ type: "string",
298
+ format: "base64"
299
+ }
300
+ }
301
+ }
302
+ }
303
+ }
304
+ }
305
+ }
306
+ });
307
+ expect(result.paths["/upload"].post.requestBody.content["image/png"]).toEqual({
308
+ schema: {
309
+ type: "string",
310
+ contentEncoding: "base64"
311
+ }
312
+ });
313
+ });
314
+ it("migrates binary format for multipart file uploads", async () => {
315
+ const result = upgradeFromThreeToThreeOne({
316
+ openapi: "3.0.0",
317
+ info: {
318
+ title: "Hello World",
319
+ version: "1.0.0"
320
+ },
321
+ paths: {
322
+ "/upload": {
323
+ post: {
324
+ requestBody: {
325
+ content: {
326
+ "multipart/form-data": {
327
+ schema: {
328
+ type: "object",
329
+ properties: {
330
+ orderId: {
331
+ type: "integer"
332
+ },
333
+ fileName: {
334
+ type: "string",
335
+ format: "binary"
336
+ }
337
+ }
338
+ }
339
+ }
340
+ }
341
+ }
342
+ }
343
+ }
344
+ }
345
+ });
346
+ expect(result.paths["/upload"].post.requestBody.content["multipart/form-data"]).toEqual({
347
+ schema: {
348
+ type: "object",
349
+ properties: {
350
+ orderId: {
351
+ type: "integer"
352
+ },
353
+ fileName: {
354
+ type: "string",
355
+ contentMediaType: "application/octet-stream"
356
+ }
357
+ }
358
+ }
359
+ });
360
+ });
361
+ });
362
+ it("migrates byte format", async () => {
363
+ const result = upgradeFromThreeToThreeOne({
364
+ openapi: "3.0.0",
365
+ info: {
366
+ title: "Hello World",
367
+ version: "1.0.0"
368
+ },
369
+ paths: {
370
+ "/upload": {
371
+ post: {
372
+ requestBody: {
373
+ content: {
374
+ "image/png": {
375
+ schema: {
376
+ type: "string",
377
+ format: "byte"
378
+ }
379
+ }
380
+ }
381
+ }
382
+ }
383
+ }
384
+ }
385
+ });
386
+ expect(result.paths["/upload"].post.requestBody.content["image/png"]).toEqual({
387
+ schema: {
388
+ type: "string",
389
+ contentMediaType: "image/png",
390
+ contentEncoding: "base64"
391
+ }
392
+ });
393
+ });
394
+ describe.skip("declaring $schema", () => {
395
+ it("adds a $schema", async () => {
396
+ const result = upgradeFromThreeToThreeOne({
397
+ openapi: "3.0.0",
398
+ info: {
399
+ title: "Hello World",
400
+ version: "1.0.0"
401
+ },
402
+ paths: {}
403
+ });
404
+ expect(result.$schema).toBe("http://json-schema.org/draft-07/schema#");
405
+ });
406
+ });
407
+ describe("binary format handling with oneOf", () => {
408
+ it("correctly handles format: binary in oneOf schemas", async () => {
409
+ const result = upgradeFromThreeToThreeOne({
410
+ openapi: "3.0.0",
411
+ info: {
412
+ title: "Hello World",
413
+ version: "1.0.0"
414
+ },
415
+ paths: {
416
+ "/images/edits": {
417
+ post: {
418
+ requestBody: {
419
+ required: true,
420
+ content: {
421
+ "multipart/form-data": {
422
+ schema: {
423
+ type: "object",
424
+ required: ["model", "prompt"],
425
+ properties: {
426
+ model: {
427
+ type: "string",
428
+ enum: ["Kolors"]
429
+ },
430
+ image: {
431
+ oneOf: [
432
+ {
433
+ type: "string",
434
+ format: "binary"
435
+ },
436
+ {
437
+ type: "string"
438
+ }
439
+ ]
440
+ },
441
+ prompt: {
442
+ type: "string"
443
+ }
444
+ }
445
+ }
446
+ }
447
+ }
448
+ }
449
+ }
450
+ }
451
+ }
452
+ });
453
+ expect(
454
+ result.paths["/images/edits"].post.requestBody.content["multipart/form-data"].schema.properties.image.oneOf[0]
455
+ ).toEqual({
456
+ type: "string",
457
+ contentMediaType: "application/octet-stream"
458
+ });
459
+ });
460
+ });
461
+ });
462
+ //# sourceMappingURL=upgradeFromThreeToThreeOne.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/upgradeFromThreeToThreeOne.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { isSchemaPath, upgradeFromThreeToThreeOne } from './upgradeFromThreeToThreeOne'\n\ndescribe('isSchemaPath', () => {\n it('correctly identifies schema paths', () => {\n expect(isSchemaPath(['components', 'schemas', 'User'])).toBe(true)\n expect(isSchemaPath(['paths', '/users', 'get', 'responses', '200', 'content', 'application/json', 'schema'])).toBe(\n true,\n )\n expect(isSchemaPath(['paths', '/users', 'post', 'requestBody', 'content', 'application/json', 'schema'])).toBe(true)\n expect(isSchemaPath(['components', 'schemas', 'User', 'properties', 'address'])).toBe(true)\n expect(isSchemaPath(['components', 'schemas', 'User', 'allOf', '0'])).toBe(true)\n expect(isSchemaPath(['paths', '/users', 'get', 'parameters', '0', 'schema'])).toBe(true)\n })\n\n it('correctly identifies non-schema paths', () => {\n expect(isSchemaPath(['info'])).toBe(false)\n expect(isSchemaPath(['paths', '/users', 'get', 'summary'])).toBe(false)\n expect(isSchemaPath(['components', 'parameters', 'userId'])).toBe(false)\n })\n})\n\ndescribe('upgradeFromThreeToThreeOne', () => {\n describe('version', () => {\n it('doesn\u2019t modify Swagger 2.0 files', async () => {\n const result = upgradeFromThreeToThreeOne({\n swagger: '2.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n })\n\n expect(result.swagger).toBe('2.0')\n })\n\n it('changes the version to from 3.0.0 to 3.1.1', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n })\n\n expect(result.openapi).toBe('3.1.1')\n })\n\n it('changes the version to 3.0.3 to 3.1.1', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.3',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n })\n\n expect(result.openapi).toBe('3.1.1')\n })\n })\n\n describe('nullable types', () => {\n it('migrates nullable types', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {\n '/test': {\n get: {\n responses: {\n '200': {\n description: 'foobar',\n content: {\n 'application/json': {\n schema: {\n type: 'string',\n nullable: true,\n },\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths['/test'].get.responses['200'].content['application/json'].schema).toEqual({\n type: ['string', 'null'],\n })\n })\n })\n\n describe('exclusiveMinimum and exclusiveMaximum', () => {\n it('migrate exclusiveMinimum and exclusiveMaximum', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {\n '/test': {\n get: {\n responses: {\n '200': {\n description: 'foobar',\n content: {\n 'application/json': {\n schema: {\n type: 'integer',\n minimum: 1,\n exclusiveMinimum: true,\n maximum: 100,\n exclusiveMaximum: true,\n },\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths['/test'].get.responses['200'].content['application/json'].schema).toEqual({\n type: 'integer',\n exclusiveMinimum: 1,\n exclusiveMaximum: 100,\n })\n })\n })\n\n describe('migrates example to examples', () => {\n it('uses arrays in schemas', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {\n '/test': {\n get: {\n responses: {\n '200': {\n description: 'foobar',\n content: {\n 'application/json': {\n schema: {\n type: 'integer',\n example: 1,\n },\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths['/test'].get.responses['200'].content['application/json'].schema).toEqual({\n type: 'integer',\n examples: [1],\n })\n })\n\n it('uses example objects everywhere else', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {\n '/test': {\n get: {\n parameters: [\n {\n name: 'limit',\n in: 'query',\n schema: {\n type: 'integer',\n example: 10,\n },\n example: 10,\n },\n ],\n },\n },\n },\n })\n\n expect(result.paths['/test'].get.parameters[0]).toEqual({\n name: 'limit',\n in: 'query',\n schema: {\n type: 'integer',\n // array, because it\u2019s in a schema\n examples: [10],\n },\n // object, because it\u2019s not in a schema\n examples: {\n default: {\n value: 10,\n },\n },\n })\n })\n\n it('doesn\u2019t transform arrays into objects', () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Sample API',\n version: '1.0.0',\n description: 'A simple example API',\n },\n tags: [\n {\n 'name': 'users',\n 'description': 'Operations about users',\n 'x-internal': true,\n },\n ],\n paths: {\n '/users': {\n post: {\n tags: ['users'],\n summary: 'hello',\n description: 'Returns a list of users',\n operationId: 'getUsers',\n requestBody: {\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n foobar: {\n type: 'array',\n example: ['Portfolio1', 'Portfolio2'],\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(\n result.paths['/users'].post.requestBody.content['application/json'].schema.properties.foobar,\n ).toStrictEqual({\n type: 'array',\n examples: [['Portfolio1', 'Portfolio2']],\n items: {\n type: 'string',\n },\n })\n })\n })\n\n describe('describing File Upload Payloads', () => {\n it('removes schema for binary file uploads', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {\n '/upload': {\n post: {\n requestBody: {\n content: {\n 'application/octet-stream': {\n schema: {\n type: 'string',\n format: 'binary',\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths['/upload'].post.requestBody.content['application/octet-stream']).toEqual({})\n })\n\n it('migrates base64 format to contentEncoding for image uploads', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {\n '/upload': {\n post: {\n requestBody: {\n content: {\n 'image/png': {\n schema: {\n type: 'string',\n format: 'base64',\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths['/upload'].post.requestBody.content['image/png']).toEqual({\n schema: {\n type: 'string',\n contentEncoding: 'base64',\n },\n })\n })\n\n it('migrates binary format for multipart file uploads', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {\n '/upload': {\n post: {\n requestBody: {\n content: {\n 'multipart/form-data': {\n schema: {\n type: 'object',\n properties: {\n orderId: {\n type: 'integer',\n },\n fileName: {\n type: 'string',\n format: 'binary',\n },\n },\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths['/upload'].post.requestBody.content['multipart/form-data']).toEqual({\n schema: {\n type: 'object',\n properties: {\n orderId: {\n type: 'integer',\n },\n fileName: {\n type: 'string',\n contentMediaType: 'application/octet-stream',\n },\n },\n },\n })\n })\n })\n\n it('migrates byte format', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {\n '/upload': {\n post: {\n requestBody: {\n content: {\n 'image/png': {\n schema: {\n type: 'string',\n format: 'byte',\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths['/upload'].post.requestBody.content['image/png']).toEqual({\n schema: {\n type: 'string',\n contentMediaType: 'image/png',\n contentEncoding: 'base64',\n },\n })\n })\n\n describe.skip('declaring $schema', () => {\n it('adds a $schema', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n })\n\n expect(result.$schema).toBe('http://json-schema.org/draft-07/schema#')\n })\n })\n\n describe('binary format handling with oneOf', () => {\n it('correctly handles format: binary in oneOf schemas', async () => {\n const result = upgradeFromThreeToThreeOne({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {\n '/images/edits': {\n post: {\n requestBody: {\n required: true,\n content: {\n 'multipart/form-data': {\n schema: {\n type: 'object',\n required: ['model', 'prompt'],\n properties: {\n model: {\n type: 'string',\n enum: ['Kolors'],\n },\n image: {\n oneOf: [\n {\n type: 'string',\n format: 'binary',\n },\n {\n type: 'string',\n },\n ],\n },\n prompt: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(\n result.paths['/images/edits'].post.requestBody.content['multipart/form-data'].schema.properties.image.oneOf[0],\n ).toEqual({\n type: 'string',\n contentMediaType: 'application/octet-stream',\n })\n })\n })\n})\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }