@scalar/openapi-parser 0.11.1 → 0.12.0

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 (281) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/configuration/index.js.map +1 -1
  3. package/dist/index.d.ts +17 -4
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +34 -4
  6. package/dist/index.js.map +2 -2
  7. package/dist/lib/Validator/Validator.d.ts.map +1 -1
  8. package/dist/lib/Validator/Validator.js +2 -2
  9. package/dist/lib/Validator/Validator.js.map +1 -1
  10. package/dist/lib/Validator/index.d.ts +1 -2
  11. package/dist/lib/Validator/index.d.ts.map +1 -1
  12. package/dist/lib/Validator/index.js +4 -2
  13. package/dist/lib/Validator/index.js.map +2 -2
  14. package/dist/plugins/fetch-urls/{fetchUrls.d.ts → fetch-urls.d.ts} +1 -1
  15. package/dist/plugins/fetch-urls/fetch-urls.d.ts.map +1 -0
  16. package/dist/plugins/fetch-urls/{fetchUrls.js → fetch-urls.js} +1 -1
  17. package/dist/plugins/fetch-urls/fetch-urls.js.map +7 -0
  18. package/dist/plugins/fetch-urls/{fetchUrls.test.js → fetch-urls.test.js} +2 -2
  19. package/dist/plugins/fetch-urls/fetch-urls.test.js.map +7 -0
  20. package/dist/plugins/fetch-urls/index.d.ts +1 -1
  21. package/dist/plugins/fetch-urls/index.d.ts.map +1 -1
  22. package/dist/plugins/fetch-urls/index.js +5 -1
  23. package/dist/plugins/fetch-urls/index.js.map +2 -2
  24. package/dist/plugins/read-files/index.d.ts +1 -1
  25. package/dist/plugins/read-files/index.d.ts.map +1 -1
  26. package/dist/plugins/read-files/index.js +4 -1
  27. package/dist/plugins/read-files/index.js.map +2 -2
  28. package/dist/plugins/read-files/{readFiles.d.ts → read-files.d.ts} +1 -1
  29. package/dist/plugins/read-files/read-files.d.ts.map +1 -0
  30. package/dist/plugins/read-files/{readFiles.js → read-files.js} +3 -3
  31. package/dist/plugins/read-files/read-files.js.map +7 -0
  32. package/dist/plugins/read-files/{readFiles.test.js → read-files.test.js} +2 -2
  33. package/dist/plugins/read-files/read-files.test.js.map +7 -0
  34. package/dist/polyfills/index.d.ts +1 -1
  35. package/dist/polyfills/index.d.ts.map +1 -1
  36. package/dist/polyfills/index.js +22 -2
  37. package/dist/polyfills/index.js.map +2 -2
  38. package/dist/types/index.d.ts.map +1 -1
  39. package/dist/utils/betterAjvErrors/validation-errors/base.js.map +1 -1
  40. package/dist/utils/dereference.d.ts +1 -1
  41. package/dist/utils/dereference.d.ts.map +1 -1
  42. package/dist/utils/dereference.js +3 -3
  43. package/dist/utils/dereference.js.map +1 -1
  44. package/dist/utils/details.d.ts.map +1 -1
  45. package/dist/utils/details.js.map +1 -1
  46. package/dist/utils/{escapeJsonPointer.d.ts → escape-json-pointer.d.ts} +1 -1
  47. package/dist/utils/escape-json-pointer.d.ts.map +1 -0
  48. package/dist/utils/{escapeJsonPointer.js → escape-json-pointer.js} +1 -1
  49. package/dist/utils/{escapeJsonPointer.js.map → escape-json-pointer.js.map} +1 -1
  50. package/dist/utils/{escapeJsonPointer.test.js → escape-json-pointer.test.js} +2 -2
  51. package/dist/utils/escape-json-pointer.test.js.map +7 -0
  52. package/dist/utils/filter.d.ts.map +1 -1
  53. package/dist/utils/filter.js +2 -2
  54. package/dist/utils/filter.js.map +1 -1
  55. package/dist/utils/{getEntrypoint.d.ts → get-entrypoint.d.ts} +1 -1
  56. package/dist/utils/get-entrypoint.d.ts.map +1 -0
  57. package/dist/utils/{getEntrypoint.js → get-entrypoint.js} +1 -1
  58. package/dist/utils/get-entrypoint.js.map +7 -0
  59. package/dist/utils/{getEntrypoint.test.js → get-entrypoint.test.js} +3 -3
  60. package/dist/utils/get-entrypoint.test.js.map +7 -0
  61. package/dist/utils/{getListOfReferences.d.ts → get-list-of-references.d.ts} +1 -1
  62. package/dist/utils/get-list-of-references.d.ts.map +1 -0
  63. package/dist/utils/{getListOfReferences.js → get-list-of-references.js} +1 -1
  64. package/dist/utils/get-list-of-references.js.map +7 -0
  65. package/dist/utils/{getSegmentsFromPath.d.ts → get-segments-from-path.d.ts} +1 -1
  66. package/dist/utils/get-segments-from-path.d.ts.map +1 -0
  67. package/dist/utils/{getSegmentsFromPath.js → get-segments-from-path.js} +2 -2
  68. package/dist/utils/get-segments-from-path.js.map +7 -0
  69. package/dist/utils/{getSegmentsFromPath.test.js → get-segments-from-path.test.js} +2 -2
  70. package/dist/utils/get-segments-from-path.test.js.map +7 -0
  71. package/dist/utils/{isFilesystem.d.ts → is-filesystem.d.ts} +1 -1
  72. package/dist/utils/is-filesystem.d.ts.map +1 -0
  73. package/dist/utils/{isFilesystem.js → is-filesystem.js} +1 -1
  74. package/dist/utils/is-filesystem.js.map +7 -0
  75. package/dist/utils/{makeFilesystem.test.js → is-filesystem.test.js} +3 -3
  76. package/dist/utils/is-filesystem.test.js.map +7 -0
  77. package/dist/utils/{isJson.d.ts → is-json.d.ts} +1 -1
  78. package/dist/utils/is-json.d.ts.map +1 -0
  79. package/dist/utils/{isJson.js → is-json.js} +1 -1
  80. package/dist/utils/{isJson.js.map → is-json.js.map} +1 -1
  81. package/dist/utils/{isObject.d.ts → is-object.d.ts} +1 -1
  82. package/dist/utils/is-object.d.ts.map +1 -0
  83. package/dist/utils/{isObject.js → is-object.js} +1 -1
  84. package/dist/utils/{isObject.js.map → is-object.js.map} +1 -1
  85. package/dist/utils/{isObject.test.js → is-object.test.js} +2 -2
  86. package/dist/utils/is-object.test.js.map +7 -0
  87. package/dist/utils/{isYaml.d.ts → is-yaml.d.ts} +1 -1
  88. package/dist/utils/is-yaml.d.ts.map +1 -0
  89. package/dist/utils/{isYaml.js → is-yaml.js} +1 -1
  90. package/dist/utils/{isYaml.js.map → is-yaml.js.map} +1 -1
  91. package/dist/utils/load/index.d.ts +1 -1
  92. package/dist/utils/load/index.d.ts.map +1 -1
  93. package/dist/utils/load/index.js +4 -1
  94. package/dist/utils/load/index.js.map +2 -2
  95. package/dist/utils/load/load.d.ts.map +1 -1
  96. package/dist/utils/load/load.js +4 -4
  97. package/dist/utils/load/load.js.map +1 -1
  98. package/dist/utils/load/load.test.js +3 -3
  99. package/dist/utils/load/load.test.js.map +1 -1
  100. package/dist/utils/{makeFilesystem.d.ts → make-filesystem.d.ts} +1 -1
  101. package/dist/utils/make-filesystem.d.ts.map +1 -0
  102. package/dist/utils/{makeFilesystem.js → make-filesystem.js} +3 -3
  103. package/dist/utils/make-filesystem.js.map +7 -0
  104. package/dist/utils/normalize.d.ts.map +1 -1
  105. package/dist/utils/normalize.js +1 -1
  106. package/dist/utils/normalize.js.map +1 -1
  107. package/dist/utils/{resolveReferences.d.ts → resolve-references.d.ts} +1 -1
  108. package/dist/utils/{resolveReferences.d.ts.map → resolve-references.d.ts.map} +1 -1
  109. package/dist/utils/{resolveReferences.js → resolve-references.js} +4 -4
  110. package/dist/utils/resolve-references.js.map +7 -0
  111. package/dist/utils/{resolveReferences.test.js → resolve-references.test.js} +4 -4
  112. package/dist/utils/{resolveReferences.test.js.map → resolve-references.test.js.map} +3 -3
  113. package/dist/utils/{toJson.d.ts → to-json.d.ts} +1 -1
  114. package/dist/utils/to-json.d.ts.map +1 -0
  115. package/dist/utils/{toJson.js → to-json.js} +1 -1
  116. package/dist/utils/to-json.js.map +7 -0
  117. package/dist/utils/{toYaml.d.ts → to-yaml.d.ts} +1 -1
  118. package/dist/utils/to-yaml.d.ts.map +1 -0
  119. package/dist/utils/{toYaml.js → to-yaml.js} +1 -1
  120. package/dist/utils/{toYaml.js.map → to-yaml.js.map} +2 -2
  121. package/dist/utils/transform/sanitize.d.ts +2 -0
  122. package/dist/utils/transform/sanitize.d.ts.map +1 -1
  123. package/dist/utils/transform/sanitize.js.map +2 -2
  124. package/dist/utils/transform/utils/addInfoObject.d.ts.map +1 -1
  125. package/dist/utils/transform/utils/addInfoObject.js.map +1 -1
  126. package/dist/utils/transform/utils/addLatestOpenApiVersion.d.ts.map +1 -1
  127. package/dist/utils/transform/utils/addLatestOpenApiVersion.js.map +1 -1
  128. package/dist/utils/transform/utils/addMissingTags.d.ts.map +1 -1
  129. package/dist/utils/transform/utils/addMissingTags.js.map +1 -1
  130. package/dist/utils/transform/utils/normalizeSecuritySchemes.d.ts.map +1 -1
  131. package/dist/utils/transform/utils/normalizeSecuritySchemes.js.map +1 -1
  132. package/dist/utils/transform/utils/rejectSwaggerDocuments.d.ts.map +1 -1
  133. package/dist/utils/transform/utils/rejectSwaggerDocuments.js.map +1 -1
  134. package/dist/utils/{transformErrors.d.ts → transform-errors.d.ts} +1 -1
  135. package/dist/utils/transform-errors.d.ts.map +1 -0
  136. package/dist/utils/{transformErrors.js → transform-errors.js} +1 -1
  137. package/dist/utils/transform-errors.js.map +7 -0
  138. package/dist/utils/{transformErrors.test.js → transform-errors.test.js} +3 -3
  139. package/dist/utils/transform-errors.test.js.map +7 -0
  140. package/dist/utils/traverse.d.ts.map +1 -1
  141. package/dist/utils/traverse.js.map +1 -1
  142. package/dist/utils/{unescapeJsonPointer.d.ts → unescape-json-pointer.d.ts} +1 -1
  143. package/dist/utils/unescape-json-pointer.d.ts.map +1 -0
  144. package/dist/utils/{unescapeJsonPointer.js → unescape-json-pointer.js} +1 -1
  145. package/dist/utils/{unescapeJsonPointer.js.map → unescape-json-pointer.js.map} +1 -1
  146. package/dist/utils/{unescapeJsonPointer.test.js → unescape-json-pointer.test.js} +2 -2
  147. package/dist/utils/unescape-json-pointer.test.js.map +7 -0
  148. package/dist/utils/{upgradeFromThreeToThreeOne.d.ts → upgrade-from-three-to-three-one.d.ts} +1 -1
  149. package/dist/utils/upgrade-from-three-to-three-one.d.ts.map +1 -0
  150. package/dist/utils/{upgradeFromThreeToThreeOne.js → upgrade-from-three-to-three-one.js} +1 -2
  151. package/dist/utils/upgrade-from-three-to-three-one.js.map +7 -0
  152. package/dist/utils/{upgradeFromThreeToThreeOne.test.js → upgrade-from-three-to-three-one.test.js} +2 -2
  153. package/dist/utils/upgrade-from-three-to-three-one.test.js.map +7 -0
  154. package/dist/utils/{upgradeFromTwoToThree.d.ts → upgrade-from-two-to-three.d.ts} +1 -1
  155. package/dist/utils/upgrade-from-two-to-three.d.ts.map +1 -0
  156. package/dist/utils/{upgradeFromTwoToThree.js → upgrade-from-two-to-three.js} +1 -1
  157. package/dist/utils/{upgradeFromTwoToThree.js.map → upgrade-from-two-to-three.js.map} +1 -1
  158. package/dist/utils/{upgradeFromTwoToThree.test.js → upgrade-from-two-to-three.test.js} +2 -2
  159. package/dist/utils/upgrade-from-two-to-three.test.js.map +7 -0
  160. package/dist/utils/upgrade.bench.js +1 -1
  161. package/dist/utils/upgrade.bench.js.map +1 -1
  162. package/dist/utils/upgrade.d.ts.map +1 -1
  163. package/dist/utils/upgrade.js +4 -4
  164. package/dist/utils/upgrade.js.map +1 -1
  165. package/dist/utils/upgrade.test.js +1 -1
  166. package/dist/utils/upgrade.test.js.map +1 -1
  167. package/dist/utils/validate.d.ts.map +1 -1
  168. package/dist/utils/validate.js +1 -1
  169. package/dist/utils/validate.js.map +1 -1
  170. package/package.json +2 -2
  171. package/dist/plugins/fetch-urls/fetchUrls.d.ts.map +0 -1
  172. package/dist/plugins/fetch-urls/fetchUrls.js.map +0 -7
  173. package/dist/plugins/fetch-urls/fetchUrls.test.js.map +0 -7
  174. package/dist/plugins/read-files/readFiles.d.ts.map +0 -1
  175. package/dist/plugins/read-files/readFiles.js.map +0 -7
  176. package/dist/plugins/read-files/readFiles.test.js.map +0 -7
  177. package/dist/utils/escapeJsonPointer.d.ts.map +0 -1
  178. package/dist/utils/escapeJsonPointer.test.js.map +0 -7
  179. package/dist/utils/getEntrypoint.d.ts.map +0 -1
  180. package/dist/utils/getEntrypoint.js.map +0 -7
  181. package/dist/utils/getEntrypoint.test.js.map +0 -7
  182. package/dist/utils/getListOfReferences.d.ts.map +0 -1
  183. package/dist/utils/getListOfReferences.js.map +0 -7
  184. package/dist/utils/getSegmentsFromPath.d.ts.map +0 -1
  185. package/dist/utils/getSegmentsFromPath.js.map +0 -7
  186. package/dist/utils/getSegmentsFromPath.test.js.map +0 -7
  187. package/dist/utils/index.d.ts +0 -27
  188. package/dist/utils/index.d.ts.map +0 -1
  189. package/dist/utils/index.js +0 -27
  190. package/dist/utils/index.js.map +0 -7
  191. package/dist/utils/isFilesystem.d.ts.map +0 -1
  192. package/dist/utils/isFilesystem.js.map +0 -7
  193. package/dist/utils/isJson.d.ts.map +0 -1
  194. package/dist/utils/isObject.d.ts.map +0 -1
  195. package/dist/utils/isObject.test.js.map +0 -7
  196. package/dist/utils/isYaml.d.ts.map +0 -1
  197. package/dist/utils/makeFilesystem.d.ts.map +0 -1
  198. package/dist/utils/makeFilesystem.js.map +0 -7
  199. package/dist/utils/makeFilesystem.test.js.map +0 -7
  200. package/dist/utils/openapi/actions/details.d.ts +0 -7
  201. package/dist/utils/openapi/actions/details.d.ts.map +0 -1
  202. package/dist/utils/openapi/actions/details.js +0 -11
  203. package/dist/utils/openapi/actions/details.js.map +0 -7
  204. package/dist/utils/openapi/actions/files.d.ts +0 -6
  205. package/dist/utils/openapi/actions/files.d.ts.map +0 -1
  206. package/dist/utils/openapi/actions/files.js +0 -9
  207. package/dist/utils/openapi/actions/files.js.map +0 -7
  208. package/dist/utils/openapi/actions/get.d.ts +0 -6
  209. package/dist/utils/openapi/actions/get.d.ts.map +0 -1
  210. package/dist/utils/openapi/actions/get.js +0 -11
  211. package/dist/utils/openapi/actions/get.js.map +0 -7
  212. package/dist/utils/openapi/actions/toJson.d.ts +0 -6
  213. package/dist/utils/openapi/actions/toJson.d.ts.map +0 -1
  214. package/dist/utils/openapi/actions/toJson.js +0 -11
  215. package/dist/utils/openapi/actions/toJson.js.map +0 -7
  216. package/dist/utils/openapi/actions/toYaml.d.ts +0 -6
  217. package/dist/utils/openapi/actions/toYaml.d.ts.map +0 -1
  218. package/dist/utils/openapi/actions/toYaml.js +0 -11
  219. package/dist/utils/openapi/actions/toYaml.js.map +0 -7
  220. package/dist/utils/openapi/commands/dereferenceCommand.d.ts +0 -27
  221. package/dist/utils/openapi/commands/dereferenceCommand.d.ts.map +0 -1
  222. package/dist/utils/openapi/commands/dereferenceCommand.js +0 -27
  223. package/dist/utils/openapi/commands/dereferenceCommand.js.map +0 -7
  224. package/dist/utils/openapi/commands/filterCommand.d.ts +0 -41
  225. package/dist/utils/openapi/commands/filterCommand.d.ts.map +0 -1
  226. package/dist/utils/openapi/commands/filterCommand.js +0 -26
  227. package/dist/utils/openapi/commands/filterCommand.js.map +0 -7
  228. package/dist/utils/openapi/commands/loadCommand.d.ts +0 -8321
  229. package/dist/utils/openapi/commands/loadCommand.d.ts.map +0 -1
  230. package/dist/utils/openapi/commands/loadCommand.js +0 -42
  231. package/dist/utils/openapi/commands/loadCommand.js.map +0 -7
  232. package/dist/utils/openapi/commands/upgradeCommand.d.ts +0 -3406
  233. package/dist/utils/openapi/commands/upgradeCommand.d.ts.map +0 -1
  234. package/dist/utils/openapi/commands/upgradeCommand.js +0 -29
  235. package/dist/utils/openapi/commands/upgradeCommand.js.map +0 -7
  236. package/dist/utils/openapi/commands/validateCommand.d.ts +0 -3451
  237. package/dist/utils/openapi/commands/validateCommand.d.ts.map +0 -1
  238. package/dist/utils/openapi/commands/validateCommand.js +0 -33
  239. package/dist/utils/openapi/commands/validateCommand.js.map +0 -7
  240. package/dist/utils/openapi/index.d.ts +0 -2
  241. package/dist/utils/openapi/index.d.ts.map +0 -1
  242. package/dist/utils/openapi/index.js +0 -2
  243. package/dist/utils/openapi/index.js.map +0 -7
  244. package/dist/utils/openapi/openapi.d.ts +0 -1272
  245. package/dist/utils/openapi/openapi.d.ts.map +0 -1
  246. package/dist/utils/openapi/openapi.js +0 -15
  247. package/dist/utils/openapi/openapi.js.map +0 -7
  248. package/dist/utils/openapi/openapi.test-d.d.ts +0 -2
  249. package/dist/utils/openapi/openapi.test-d.d.ts.map +0 -1
  250. package/dist/utils/openapi/openapi.test-d.js +0 -14
  251. package/dist/utils/openapi/openapi.test-d.js.map +0 -7
  252. package/dist/utils/openapi/openapi.test.js +0 -309
  253. package/dist/utils/openapi/openapi.test.js.map +0 -7
  254. package/dist/utils/openapi/utils/queueTask.d.ts +0 -6
  255. package/dist/utils/openapi/utils/queueTask.d.ts.map +0 -1
  256. package/dist/utils/openapi/utils/queueTask.js +0 -10
  257. package/dist/utils/openapi/utils/queueTask.js.map +0 -7
  258. package/dist/utils/openapi/utils/workThroughQueue.d.ts +0 -6
  259. package/dist/utils/openapi/utils/workThroughQueue.d.ts.map +0 -1
  260. package/dist/utils/openapi/utils/workThroughQueue.js +0 -52
  261. package/dist/utils/openapi/utils/workThroughQueue.js.map +0 -7
  262. package/dist/utils/openapi/utils/workThroughQueue.test.js +0 -244
  263. package/dist/utils/openapi/utils/workThroughQueue.test.js.map +0 -7
  264. package/dist/utils/resolveReferences.js.map +0 -7
  265. package/dist/utils/toJson.d.ts.map +0 -1
  266. package/dist/utils/toJson.js.map +0 -7
  267. package/dist/utils/toYaml.d.ts.map +0 -1
  268. package/dist/utils/transform/index.d.ts +0 -2
  269. package/dist/utils/transform/index.d.ts.map +0 -1
  270. package/dist/utils/transform/index.js +0 -2
  271. package/dist/utils/transform/index.js.map +0 -7
  272. package/dist/utils/transformErrors.d.ts.map +0 -1
  273. package/dist/utils/transformErrors.js.map +0 -7
  274. package/dist/utils/transformErrors.test.js.map +0 -7
  275. package/dist/utils/unescapeJsonPointer.d.ts.map +0 -1
  276. package/dist/utils/unescapeJsonPointer.test.js.map +0 -7
  277. package/dist/utils/upgradeFromThreeToThreeOne.d.ts.map +0 -1
  278. package/dist/utils/upgradeFromThreeToThreeOne.js.map +0 -7
  279. package/dist/utils/upgradeFromThreeToThreeOne.test.js.map +0 -7
  280. package/dist/utils/upgradeFromTwoToThree.d.ts.map +0 -1
  281. package/dist/utils/upgradeFromTwoToThree.test.js.map +0 -7
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { isSchemaPath, upgradeFromThreeToThreeOne } from "./upgradeFromThreeToThreeOne.js";
2
+ import { isSchemaPath, upgradeFromThreeToThreeOne } from "./upgrade-from-three-to-three-one.js";
3
3
  describe("isSchemaPath", () => {
4
4
  it("correctly identifies schema paths", () => {
5
5
  expect(isSchemaPath(["components", "schemas", "User"])).toBe(true);
@@ -459,4 +459,4 @@ describe("upgradeFromThreeToThreeOne", () => {
459
459
  });
460
460
  });
461
461
  });
462
- //# sourceMappingURL=upgradeFromThreeToThreeOne.test.js.map
462
+ //# sourceMappingURL=upgrade-from-three-to-three-one.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/upgrade-from-three-to-three-one.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { isSchemaPath, upgradeFromThreeToThreeOne } from './upgrade-from-three-to-three-one'\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
+ }
@@ -6,4 +6,4 @@ import type { UnknownObject } from '@scalar/types/utils';
6
6
  * https://swagger.io/blog/news/whats-new-in-openapi-3-0/
7
7
  */
8
8
  export declare function upgradeFromTwoToThree(originalSpecification: UnknownObject): OpenAPIV3.Document<{}> | UnknownObject;
9
- //# sourceMappingURL=upgradeFromTwoToThree.d.ts.map
9
+ //# sourceMappingURL=upgrade-from-two-to-three.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-from-two-to-three.d.ts","sourceRoot":"","sources":["../../src/utils/upgrade-from-two-to-three.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAIxD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,qBAAqB,EAAE,aAAa,0CAsQzE"}
@@ -225,4 +225,4 @@ function transformParameterObject(parameter) {
225
225
  export {
226
226
  upgradeFromTwoToThree
227
227
  };
228
- //# sourceMappingURL=upgradeFromTwoToThree.js.map
228
+ //# sourceMappingURL=upgrade-from-two-to-three.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/utils/upgradeFromTwoToThree.ts"],
3
+ "sources": ["../../src/utils/upgrade-from-two-to-three.ts"],
4
4
  "sourcesContent": ["import type { OpenAPIV2, OpenAPIV3 } from '@scalar/openapi-types'\nimport type { UnknownObject } from '@scalar/types/utils'\n\nimport { traverse } from './traverse'\n\n/**\n * Upgrade Swagger 2.0 to OpenAPI 3.0\n *\n * https://swagger.io/blog/news/whats-new-in-openapi-3-0/\n */\nexport function upgradeFromTwoToThree(originalSpecification: UnknownObject) {\n let specification = originalSpecification\n\n // Version\n if (\n specification !== null &&\n typeof specification === 'object' &&\n typeof specification.swagger === 'string' &&\n specification.swagger?.startsWith('2.0')\n ) {\n specification.openapi = '3.0.4'\n delete specification.swagger\n } else {\n // Skip if it\u2019s something else than 3.0.x\n return specification\n }\n\n // Servers\n if (specification.host) {\n const schemes =\n Array.isArray(specification.schemes) && specification.schemes?.length ? specification.schemes : ['http']\n\n specification.servers = schemes.map((scheme: string[]) => ({\n url: `${scheme}://${specification.host}${specification.basePath ?? ''}`,\n }))\n\n delete specification.basePath\n delete specification.schemes\n delete specification.host\n } else if (specification.basePath) {\n specification.servers = [{ url: specification.basePath }]\n delete specification.basePath\n }\n\n // Schemas\n if (specification.definitions) {\n specification.components = Object.assign({}, specification.components, {\n schemas: specification.definitions,\n })\n\n delete specification.definitions\n\n // Rewrite $refs to definitions\n specification = traverse(specification, (schema) => {\n // Rewrite $refs to components\n if (typeof schema.$ref === 'string' && schema.$ref.startsWith('#/definitions/')) {\n schema.$ref = schema.$ref.replace(/^#\\/definitions\\//, '#/components/schemas/')\n }\n\n return schema\n })\n }\n\n // Transform file type to string with binary format\n specification = traverse(specification, (schema) => {\n if (schema.type === 'file') {\n schema.type = 'string'\n schema.format = 'binary'\n }\n\n return schema\n })\n\n // Paths\n if (typeof specification.paths === 'object') {\n for (const path in specification.paths) {\n if (Object.hasOwn(specification.paths, path)) {\n const pathItem = specification.paths[path]\n\n for (const method in pathItem) {\n if (Object.hasOwn(pathItem, method)) {\n const operationItem = pathItem[method]\n\n // Request bodies\n if (operationItem.parameters) {\n const bodyParameter = structuredClone(\n operationItem.parameters.find((parameter: OpenAPIV3.ParameterObject) => parameter.in === 'body') ?? {},\n )\n\n if (bodyParameter && Object.keys(bodyParameter).length) {\n delete bodyParameter.name\n delete bodyParameter.in\n\n const consumes = specification.consumes ?? operationItem.consumes ?? ['application/json']\n\n if (typeof operationItem.requestBody !== 'object') {\n operationItem.requestBody = {}\n }\n\n if (typeof operationItem.requestBody.content !== 'object') {\n operationItem.requestBody.content = {}\n }\n\n const { schema, ...requestBody } = bodyParameter\n\n operationItem.requestBody = {\n ...operationItem.requestBody,\n ...requestBody,\n }\n\n for (const type of consumes) {\n operationItem.requestBody.content[type] = {\n schema: schema,\n }\n }\n }\n\n // Delete body parameter\n operationItem.parameters = operationItem.parameters.filter(\n (parameter: OpenAPIV2.ParameterObject) => parameter.in !== 'body',\n )\n\n delete operationItem.consumes\n\n // formData parameters\n const formDataParameters = operationItem.parameters.filter(\n (parameter: OpenAPIV2.ParameterObject) => parameter.in === 'formData',\n )\n\n if (formDataParameters.length > 0) {\n if (typeof operationItem.requestBody !== 'object') {\n operationItem.requestBody = {}\n }\n\n if (typeof operationItem.requestBody.content !== 'object') {\n operationItem.requestBody.content = {}\n }\n\n operationItem.requestBody.content['application/x-www-form-urlencoded'] = {\n schema: {\n type: 'object',\n properties: {},\n required: [], // Initialize required array\n },\n }\n\n for (const param of formDataParameters) {\n operationItem.requestBody.content['application/x-www-form-urlencoded'].schema.properties[param.name] =\n {\n type: param.type,\n description: param.description,\n }\n\n // Add to required array if param is required\n if (param.required) {\n operationItem.requestBody.content['application/x-www-form-urlencoded'].schema.required.push(\n param.name,\n )\n }\n }\n\n // Remove formData parameters from the parameters array\n operationItem.parameters = operationItem.parameters.filter(\n (parameter: OpenAPIV2.ParameterObject) => parameter.in !== 'formData',\n )\n }\n\n operationItem.parameters = operationItem.parameters.map((parameter) =>\n transformParameterObject(parameter),\n )\n }\n\n // Responses\n if (operationItem.responses) {\n for (const response in operationItem.responses) {\n if (Object.hasOwn(operationItem.responses, response)) {\n const responseItem = operationItem.responses[response]\n\n if (responseItem.headers) {\n responseItem.headers = Object.entries(responseItem.headers).reduce((acc, [name, header]) => {\n return {\n [name]: transformParameterObject(header),\n ...acc,\n }\n }, {})\n }\n if (responseItem.schema) {\n const produces = specification.produces ?? operationItem.produces ?? ['application/json']\n\n if (typeof responseItem.content !== 'object') {\n responseItem.content = {}\n }\n\n for (const type of produces) {\n responseItem.content[type] = {\n schema: responseItem.schema,\n }\n }\n\n delete responseItem.schema\n }\n }\n }\n }\n\n delete operationItem.produces\n\n // Delete empty parameters\n if (operationItem.parameters?.length === 0) {\n delete operationItem.parameters\n }\n }\n }\n }\n }\n }\n\n // Upgrade securityDefinitions\n if (specification.securityDefinitions) {\n if (typeof specification.components !== 'object') {\n specification.components = {}\n }\n\n // Assert that components is of type OpenAPIV3.ComponentsObject\n specification.components = specification.components as OpenAPIV3.ComponentsObject\n\n Object.assign(specification.components, { securitySchemes: {} })\n\n for (const [key, securityScheme] of Object.entries(specification.securityDefinitions)) {\n if (typeof securityScheme === 'object') {\n if ('type' in securityScheme && securityScheme.type === 'oauth2') {\n const { flow, authorizationUrl, tokenUrl, scopes } = securityScheme as {\n type: 'oauth2'\n flow?: string\n authorizationUrl?: string\n tokenUrl?: string\n scopes?: Record<string, string>\n }\n\n // Assert that securitySchemes is of type OpenAPIV3.SecuritySchemeObject\n Object.assign((specification.components as OpenAPIV3.ComponentsObject).securitySchemes, {\n [key]: {\n type: 'oauth2',\n flows: {\n [flow as string]: Object.assign(\n {},\n authorizationUrl && { authorizationUrl },\n tokenUrl && { tokenUrl },\n scopes && { scopes },\n ),\n },\n },\n })\n } else if ('type' in securityScheme && securityScheme.type === 'basic') {\n Object.assign((specification.components as OpenAPIV3.ComponentsObject).securitySchemes, {\n [key]: {\n type: 'http',\n scheme: 'basic',\n },\n })\n } else {\n Object.assign((specification.components as OpenAPIV3.ComponentsObject).securitySchemes, {\n [key]: securityScheme,\n })\n }\n }\n }\n\n delete specification.securityDefinitions\n }\n\n return specification as OpenAPIV3.Document\n}\n\nfunction transformItemsObject<T extends Record<PropertyKey, unknown>>(obj: T): OpenAPIV3.SchemaObject {\n const schemaProperties = [\n 'type',\n 'format',\n 'items',\n 'maximum',\n 'exclusiveMaximum',\n 'minimum',\n 'exclusiveMinimum',\n 'maxLength',\n 'minLength',\n 'pattern',\n 'maxItems',\n 'minItems',\n 'uniqueItems',\n 'enum',\n 'multipleOf',\n ]\n\n return schemaProperties.reduce((acc, property) => {\n if (Object.hasOwn(obj, property)) {\n acc[property] = obj[property]\n delete obj[property]\n }\n\n return acc\n }, {} as OpenAPIV3.SchemaObject)\n}\n\nfunction transformParameterObject(parameter: OpenAPIV2.ParameterObject): OpenAPIV3.ParameterObject {\n delete parameter.collectionFormat\n delete parameter.default\n\n return {\n schema: transformItemsObject(parameter),\n ...parameter,\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { upgradeFromTwoToThree } from "./upgradeFromTwoToThree.js";
2
+ import { upgradeFromTwoToThree } from "./upgrade-from-two-to-three.js";
3
3
  describe("upgradeFromTwoToThree", () => {
4
4
  it("changes the version to from 3.0.0 to 3.1.0", async () => {
5
5
  const result = upgradeFromTwoToThree({
@@ -586,4 +586,4 @@ describe("upgradeFromTwoToThree", () => {
586
586
  });
587
587
  });
588
588
  });
589
- //# sourceMappingURL=upgradeFromTwoToThree.test.js.map
589
+ //# sourceMappingURL=upgrade-from-two-to-three.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/upgrade-from-two-to-three.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { upgradeFromTwoToThree } from './upgrade-from-two-to-three'\n\ndescribe('upgradeFromTwoToThree', () => {\n it('changes the version to from 3.0.0 to 3.1.0', async () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n })\n\n expect(result.openapi).toBe('3.0.4')\n expect(result.swagger).toBeUndefined()\n })\n\n it('upgrades URLs to new server syntax', async () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n basePath: '/v1',\n schemes: ['http'],\n host: 'api.example.com',\n })\n\n expect(result.servers).toStrictEqual([\n {\n url: 'http://api.example.com/v1',\n },\n ])\n\n expect(result.basePath).toBeUndefined()\n expect(result.schemes).toBeUndefined()\n expect(result.host).toBeUndefined()\n })\n\n it('upgrades basePath to new server syntax', async () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n basePath: '/v2',\n })\n\n expect(result.servers).toStrictEqual([\n {\n url: '/v2',\n },\n ])\n\n expect(result.basePath).toBeUndefined()\n expect(result.schemes).toBeUndefined()\n expect(result.host).toBeUndefined()\n })\n\n it('upgrades host to new server syntax', async () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n host: 'api.example.com',\n })\n\n expect(result.servers).toStrictEqual([\n {\n url: 'http://api.example.com',\n },\n ])\n\n expect(result.basePath).toBeUndefined()\n expect(result.schemes).toBeUndefined()\n expect(result.host).toBeUndefined()\n })\n\n it('moves definitions to components', async () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n definitions: {\n Category: {\n type: 'object',\n properties: {\n id: {\n type: 'integer',\n format: 'int64',\n },\n },\n },\n },\n })\n\n // @ts-expect-error it\u2019s fine\n expect(result.components?.schemas).toStrictEqual({\n Category: {\n type: 'object',\n properties: {\n id: {\n type: 'integer',\n format: 'int64',\n },\n },\n },\n })\n\n expect(result.definitions).toBeUndefined()\n })\n\n it('rewrites $refs to definitions', async () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n paths: {\n '/planets': {\n get: {\n responses: {\n '200': {\n schema: {\n $ref: '#/definitions/Planet',\n },\n },\n },\n },\n },\n },\n definitions: {\n Planet: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n },\n },\n },\n })\n expect(result.paths['/planets'].get.responses['200'].content['application/json'].schema.$ref).toBe(\n '#/components/schemas/Planet',\n )\n })\n\n it('transforms responses', async () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n paths: {\n '/planets': {\n get: {\n description: 'Returns all planets from the system that the user has access to',\n produces: ['application/json', 'application/xml'],\n responses: {\n '200': {\n description: 'A list of planets.',\n schema: {\n type: 'array',\n items: {\n $ref: '#/definitions/planet',\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths).toStrictEqual({\n '/planets': {\n get: {\n description: 'Returns all planets from the system that the user has access to',\n responses: {\n '200': {\n description: 'A list of planets.',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n $ref: '#/definitions/planet',\n },\n },\n },\n 'application/xml': {\n schema: {\n type: 'array',\n items: {\n $ref: '#/definitions/planet',\n },\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths['/planets'].get.produces).toBeUndefined()\n })\n\n it('uses global produces for responses', async () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n produces: ['application/json', 'application/xml'],\n paths: {\n '/planets': {\n get: {\n description: 'Returns all planets from the system that the user has access to',\n responses: {\n '200': {\n description: 'A list of planets.',\n schema: {\n type: 'array',\n items: {\n $ref: '#/definitions/Planet',\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths).toStrictEqual({\n '/planets': {\n get: {\n description: 'Returns all planets from the system that the user has access to',\n responses: {\n '200': {\n description: 'A list of planets.',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n $ref: '#/definitions/Planet',\n },\n },\n },\n 'application/xml': {\n schema: {\n type: 'array',\n items: {\n $ref: '#/definitions/Planet',\n },\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths['/planets'].get.produces).toBeUndefined()\n })\n\n it('transforms requestBody', async () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n\n paths: {\n '/planets': {\n get: {\n description: 'Returns all planets from the system that the user has access to',\n consumes: ['application/json', 'application/xml'],\n parameters: [\n {\n in: 'body',\n name: 'body',\n description: 'Planet object that needs to be added to the store',\n required: true,\n schema: {\n $ref: '#/definitions/Planet',\n },\n },\n ],\n },\n },\n },\n })\n\n expect(result.paths).toStrictEqual({\n '/planets': {\n get: {\n description: 'Returns all planets from the system that the user has access to',\n requestBody: {\n description: 'Planet object that needs to be added to the store',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/definitions/Planet',\n },\n },\n 'application/xml': {\n schema: {\n $ref: '#/definitions/Planet',\n },\n },\n },\n required: true,\n },\n },\n },\n })\n\n expect(result.paths['/planets'].get.produces).toBeUndefined()\n })\n\n it('uses global consumes for requestBody', async () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n produces: ['application/json', 'application/xml'],\n paths: {\n '/planets': {\n get: {\n description: 'Returns all planets from the system that the user has access to',\n consumes: ['application/json', 'application/xml'],\n parameters: [\n {\n in: 'body',\n name: 'body',\n description: 'Planet object that needs to be added to the store',\n required: true,\n schema: {\n $ref: '#/definitions/Planet',\n },\n },\n ],\n },\n },\n },\n })\n\n expect(result.paths).toStrictEqual({\n '/planets': {\n get: {\n description: 'Returns all planets from the system that the user has access to',\n requestBody: {\n description: 'Planet object that needs to be added to the store',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/definitions/Planet',\n },\n },\n 'application/xml': {\n schema: {\n $ref: '#/definitions/Planet',\n },\n },\n },\n required: true,\n },\n },\n },\n })\n\n expect(result.paths['/planets'].get.produces).toBeUndefined()\n })\n\n it('migrates formData', async () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n paths: {\n '/planets': {\n get: {\n description: 'Returns all planets from the system that the user has access to',\n parameters: [\n {\n name: 'additionalMetadata',\n in: 'formData',\n description: 'Additional data to pass to server',\n required: true,\n type: 'string',\n },\n ],\n },\n },\n },\n })\n\n expect(result.paths).toStrictEqual({\n '/planets': {\n get: {\n description: 'Returns all planets from the system that the user has access to',\n requestBody: {\n content: {\n 'application/x-www-form-urlencoded': {\n schema: {\n required: ['additionalMetadata'],\n properties: {\n additionalMetadata: {\n description: 'Additional data to pass to server',\n type: 'string',\n },\n },\n type: 'object',\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths['/planets'].get.produces).toBeUndefined()\n })\n\n it('upgrades securityDefinitions from Swagger 2.0 to OpenAPI 3.0', () => {\n const input = {\n swagger: '2.0',\n securityDefinitions: {\n api_key: {\n type: 'apiKey',\n name: 'api_key',\n in: 'header',\n },\n petstore_auth: {\n type: 'oauth2',\n authorizationUrl: 'https://petstore.swagger.io/oauth/authorize',\n flow: 'implicit',\n scopes: {\n 'read:pets': 'read your pets',\n 'write:pets': 'modify pets in your account',\n },\n },\n },\n paths: {\n '/pets': {\n get: {\n summary: 'List all pets',\n security: [\n {\n petstore_auth: ['read:pets'],\n },\n ],\n },\n },\n },\n }\n\n const result = upgradeFromTwoToThree(input)\n\n // @ts-expect-error it\u2019s fine\n expect(result.components.securitySchemes).toStrictEqual({\n api_key: {\n type: 'apiKey',\n name: 'api_key',\n in: 'header',\n },\n petstore_auth: {\n type: 'oauth2',\n flows: {\n implicit: {\n authorizationUrl: 'https://petstore.swagger.io/oauth/authorize',\n scopes: {\n 'read:pets': 'read your pets',\n 'write:pets': 'modify pets in your account',\n },\n },\n },\n },\n })\n\n expect(result.securityDefinitions).toBeUndefined()\n\n // Check if the security attribute in the operation is upgraded\n expect(result.paths['/pets'].get.security).toStrictEqual([\n {\n petstore_auth: ['read:pets'],\n },\n ])\n })\n\n it('transforms parameter schemas', () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n produces: ['application/json', 'application/xml'],\n paths: {\n '/planets': {\n get: {\n description: 'Returns all planets from the system that the user has access to',\n consumes: ['application/json', 'application/xml'],\n parameters: [\n {\n in: 'header',\n name: 'x-custom-header',\n required: true,\n type: 'string',\n format: 'date-time',\n allowEmptyValue: true,\n },\n {\n in: 'query',\n name: 'size',\n required: false,\n type: 'integer',\n multipleOf: 2,\n minimum: 1,\n maximum: 100,\n },\n ],\n },\n },\n },\n })\n\n expect(result.paths['/planets'].get.parameters).toHaveLength(2)\n expect(result.paths['/planets'].get.parameters[0]).toStrictEqual({\n in: 'header',\n name: 'x-custom-header',\n required: true,\n allowEmptyValue: true,\n schema: {\n type: 'string',\n format: 'date-time',\n },\n })\n expect(result.paths['/planets'].get.parameters[1]).toStrictEqual({\n in: 'query',\n name: 'size',\n required: false,\n schema: {\n type: 'integer',\n multipleOf: 2,\n minimum: 1,\n maximum: 100,\n },\n })\n })\n\n it('transforms basic security scheme', () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n paths: {},\n securityDefinitions: {\n basic_auth: {\n type: 'basic',\n name: 'basic_auth',\n in: 'header',\n },\n },\n })\n\n // @ts-expect-error it\u2019s fine\n expect(result.components.securitySchemes.basic_auth).toStrictEqual({\n type: 'http',\n scheme: 'basic',\n })\n })\n\n it('transforms file type', () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n produces: ['image/png'],\n paths: {\n '/planets': {\n post: {\n description: 'Creates planet.',\n consumes: ['image/png'],\n parameters: [\n {\n in: 'body',\n required: true,\n schema: {\n type: 'file',\n },\n },\n ],\n },\n },\n },\n })\n\n expect(result.paths['/planets'].post.requestBody).toStrictEqual({\n required: true,\n content: {\n 'image/png': {\n schema: {\n type: 'string',\n format: 'binary',\n },\n },\n },\n })\n })\n\n it('transform response headers', () => {\n const result = upgradeFromTwoToThree({\n swagger: '2.0',\n produces: ['application/json'],\n paths: {\n '/planets': {\n get: {\n description: 'Get all planets from the system that the user has access to.',\n consumes: ['application/json'],\n responses: {\n '200': {\n description: 'A list of planets.',\n headers: {\n next: {\n description: 'link to next page',\n type: 'string',\n maxLength: 100,\n },\n },\n schema: {\n type: 'array',\n items: {\n $ref: '#/definitions/planet',\n },\n },\n },\n },\n },\n },\n },\n })\n\n expect(result.paths['/planets'].get.responses['200']).toStrictEqual({\n description: 'A list of planets.',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n $ref: '#/definitions/planet',\n },\n },\n },\n },\n headers: {\n next: {\n description: 'link to next page',\n schema: {\n type: 'string',\n maxLength: 100,\n },\n },\n },\n })\n })\n})\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,6 +1,6 @@
1
1
  import { bench, describe, expect } from "vitest";
2
2
  import { upgrade } from "./upgrade.js";
3
- import { upgradeFromTwoToThree } from "./upgradeFromTwoToThree.js";
3
+ import { upgradeFromTwoToThree } from "./upgrade-from-two-to-three.js";
4
4
  const STRIPE = await fetch(
5
5
  "https://raw.githubusercontent.com/stripe/openapi/refs/heads/master/openapi/spec3.json"
6
6
  ).then((r) => r.json());
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/upgrade.bench.ts"],
4
- "sourcesContent": ["import { bench, describe, expect } from 'vitest'\n\n// import { upgrade as upgradeOld } from './slow/upgrade'\n// import { upgradeFromTwoToThree as upgradeFromTwoToThreeOld } from './slow/upgradeFromTwoToThree'\nimport { upgrade } from './upgrade'\nimport { upgradeFromTwoToThree } from './upgradeFromTwoToThree'\n\n// Setup the test data\nconst STRIPE = await fetch(\n 'https://raw.githubusercontent.com/stripe/openapi/refs/heads/master/openapi/spec3.json',\n).then((r) => r.json())\n\nconst PETSTORE = await fetch('https://petstore.swagger.io/v2/swagger.json').then((r) => r.json())\n\ndescribe('upgrade', () => {\n describe('Petstore: Swagger 2.0 to OpenAPI 3.0', () => {\n bench('new', () => {\n expect(PETSTORE.swagger).toBe('2.0')\n\n const result = upgradeFromTwoToThree({ ...PETSTORE })\n\n expect(result.openapi).toBe('3.0.4')\n })\n\n // bench('old', () => {\n // expect(PETSTORE.swagger).toBe('2.0')\n\n // const result = upgradeFromTwoToThreeOld({ ...PETSTORE })\n\n // expect(result.openapi).toBe('3.0.4')\n // })\n })\n\n describe('Stripe: OpenAPI 3.0 to 3.1', () => {\n bench('new', () => {\n expect(STRIPE.openapi).toBe('3.0.0')\n\n const { specification } = upgrade(JSON.stringify(STRIPE))\n\n expect(specification?.openapi).toBe('3.1.1')\n })\n\n // bench('old', () => {\n // expect(STRIPE.openapi).toBe('3.0.0')\n\n // const { specification } = upgradeOld(JSON.stringify(STRIPE))\n\n // expect(specification?.openapi).toBe('3.1.1')\n // })\n })\n\n describe('Petstore: Swagger 2.0 to OpenAPI 3.1', () => {\n bench('new', () => {\n expect(PETSTORE.swagger).toBe('2.0')\n\n const { specification } = upgrade(JSON.stringify(PETSTORE))\n\n expect(specification?.openapi).toBe('3.1.1')\n })\n\n // bench('old', () => {\n // expect(PETSTORE.swagger).toBe('2.0')\n\n // const { specification } = upgradeOld(JSON.stringify(PETSTORE))\n\n // expect(specification?.openapi).toBe('3.1.1')\n // })\n })\n})\n"],
4
+ "sourcesContent": ["import { bench, describe, expect } from 'vitest'\n\n// import { upgrade as upgradeOld } from './slow/upgrade'\n// import { upgradeFromTwoToThree as upgradeFromTwoToThreeOld } from './slow/upgradeFromTwoToThree'\nimport { upgrade } from './upgrade'\nimport { upgradeFromTwoToThree } from './upgrade-from-two-to-three'\n\n// Setup the test data\nconst STRIPE = await fetch(\n 'https://raw.githubusercontent.com/stripe/openapi/refs/heads/master/openapi/spec3.json',\n).then((r) => r.json())\n\nconst PETSTORE = await fetch('https://petstore.swagger.io/v2/swagger.json').then((r) => r.json())\n\ndescribe('upgrade', () => {\n describe('Petstore: Swagger 2.0 to OpenAPI 3.0', () => {\n bench('new', () => {\n expect(PETSTORE.swagger).toBe('2.0')\n\n const result = upgradeFromTwoToThree({ ...PETSTORE })\n\n expect(result.openapi).toBe('3.0.4')\n })\n\n // bench('old', () => {\n // expect(PETSTORE.swagger).toBe('2.0')\n\n // const result = upgradeFromTwoToThreeOld({ ...PETSTORE })\n\n // expect(result.openapi).toBe('3.0.4')\n // })\n })\n\n describe('Stripe: OpenAPI 3.0 to 3.1', () => {\n bench('new', () => {\n expect(STRIPE.openapi).toBe('3.0.0')\n\n const { specification } = upgrade(JSON.stringify(STRIPE))\n\n expect(specification?.openapi).toBe('3.1.1')\n })\n\n // bench('old', () => {\n // expect(STRIPE.openapi).toBe('3.0.0')\n\n // const { specification } = upgradeOld(JSON.stringify(STRIPE))\n\n // expect(specification?.openapi).toBe('3.1.1')\n // })\n })\n\n describe('Petstore: Swagger 2.0 to OpenAPI 3.1', () => {\n bench('new', () => {\n expect(PETSTORE.swagger).toBe('2.0')\n\n const { specification } = upgrade(JSON.stringify(PETSTORE))\n\n expect(specification?.openapi).toBe('3.1.1')\n })\n\n // bench('old', () => {\n // expect(PETSTORE.swagger).toBe('2.0')\n\n // const { specification } = upgradeOld(JSON.stringify(PETSTORE))\n\n // expect(specification?.openapi).toBe('3.1.1')\n // })\n })\n})\n"],
5
5
  "mappings": "AAAA,SAAS,OAAO,UAAU,cAAc;AAIxC,SAAS,eAAe;AACxB,SAAS,6BAA6B;AAGtC,MAAM,SAAS,MAAM;AAAA,EACnB;AACF,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;AAEtB,MAAM,WAAW,MAAM,MAAM,6CAA6C,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;AAEhG,SAAS,WAAW,MAAM;AACxB,WAAS,wCAAwC,MAAM;AACrD,UAAM,OAAO,MAAM;AACjB,aAAO,SAAS,OAAO,EAAE,KAAK,KAAK;AAEnC,YAAM,SAAS,sBAAsB,EAAE,GAAG,SAAS,CAAC;AAEpD,aAAO,OAAO,OAAO,EAAE,KAAK,OAAO;AAAA,IACrC,CAAC;AAAA,EASH,CAAC;AAED,WAAS,8BAA8B,MAAM;AAC3C,UAAM,OAAO,MAAM;AACjB,aAAO,OAAO,OAAO,EAAE,KAAK,OAAO;AAEnC,YAAM,EAAE,cAAc,IAAI,QAAQ,KAAK,UAAU,MAAM,CAAC;AAExD,aAAO,eAAe,OAAO,EAAE,KAAK,OAAO;AAAA,IAC7C,CAAC;AAAA,EASH,CAAC;AAED,WAAS,wCAAwC,MAAM;AACrD,UAAM,OAAO,MAAM;AACjB,aAAO,SAAS,OAAO,EAAE,KAAK,KAAK;AAEnC,YAAM,EAAE,cAAc,IAAI,QAAQ,KAAK,UAAU,QAAQ,CAAC;AAE1D,aAAO,eAAe,OAAO,EAAE,KAAK,OAAO;AAAA,IAC7C,CAAC;AAAA,EASH,CAAC;AACH,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/utils/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAc1E;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAmBnG"}
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/utils/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAezE;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAmBnG"}
@@ -1,8 +1,8 @@
1
- import { getEntrypoint } from "./getEntrypoint.js";
2
- import { isFilesystem } from "./isFilesystem.js";
1
+ import { getEntrypoint } from "./get-entrypoint.js";
2
+ import { isFilesystem } from "./is-filesystem.js";
3
3
  import { normalize } from "./normalize.js";
4
- import { upgradeFromThreeToThreeOne } from "./upgradeFromThreeToThreeOne.js";
5
- import { upgradeFromTwoToThree } from "./upgradeFromTwoToThree.js";
4
+ import { upgradeFromThreeToThreeOne } from "./upgrade-from-three-to-three-one.js";
5
+ import { upgradeFromTwoToThree } from "./upgrade-from-two-to-three.js";
6
6
  const upgraders = [
7
7
  // Swagger 2.0 -> OpenAPI 3.0
8
8
  upgradeFromTwoToThree,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/upgrade.ts"],
4
- "sourcesContent": ["import type { OpenAPIV3_1 } from '@scalar/openapi-types'\n\nimport type { UnknownObject } from '@scalar/types/utils'\nimport type { AnyObject, Filesystem, UpgradeResult } from '../types/index'\nimport { getEntrypoint } from './getEntrypoint'\nimport { isFilesystem } from './isFilesystem'\nimport { normalize } from './normalize'\nimport { upgradeFromThreeToThreeOne } from './upgradeFromThreeToThreeOne'\nimport { upgradeFromTwoToThree } from './upgradeFromTwoToThree'\n\nconst upgraders = [\n // Swagger 2.0 -> OpenAPI 3.0\n upgradeFromTwoToThree,\n // OpenAPI 3.0 -> OpenAPI 3.1\n upgradeFromThreeToThreeOne,\n]\n\n/**\n * Upgrade specification to OpenAPI 3.1.0\n */\nexport function upgrade(value: string | AnyObject | Filesystem): UpgradeResult<OpenAPIV3_1.Document> {\n if (!value) {\n return {\n specification: null,\n version: '3.1',\n }\n }\n\n // TODO: Run upgrade over the whole filesystem\n const result = upgraders.reduce(\n (currentSpecification, upgrader) => upgrader(currentSpecification as UnknownObject),\n isFilesystem(value) ? getEntrypoint(value).specification : normalize(value),\n ) as OpenAPIV3_1.Document\n\n return {\n specification: result,\n // TODO: Make dynamic\n version: '3.1',\n } as UpgradeResult<OpenAPIV3_1.Document>\n}\n"],
4
+ "sourcesContent": ["import type { OpenAPIV3_1 } from '@scalar/openapi-types'\n\nimport type { AnyObject, Filesystem, UpgradeResult } from '@/types/index'\nimport type { UnknownObject } from '@scalar/types/utils'\nimport { getEntrypoint } from './get-entrypoint'\nimport { isFilesystem } from './is-filesystem'\nimport { normalize } from './normalize'\nimport { upgradeFromThreeToThreeOne } from './upgrade-from-three-to-three-one'\nimport { upgradeFromTwoToThree } from './upgrade-from-two-to-three'\n\nconst upgraders = [\n // Swagger 2.0 -> OpenAPI 3.0\n upgradeFromTwoToThree,\n // OpenAPI 3.0 -> OpenAPI 3.1\n upgradeFromThreeToThreeOne,\n]\n\n/**\n * Upgrade specification to OpenAPI 3.1.0\n */\nexport function upgrade(value: string | AnyObject | Filesystem): UpgradeResult<OpenAPIV3_1.Document> {\n if (!value) {\n return {\n specification: null,\n version: '3.1',\n }\n }\n\n // TODO: Run upgrade over the whole filesystem\n const result = upgraders.reduce(\n (currentSpecification, upgrader) => upgrader(currentSpecification as UnknownObject),\n isFilesystem(value) ? getEntrypoint(value).specification : normalize(value),\n ) as OpenAPIV3_1.Document\n\n return {\n specification: result,\n // TODO: Make dynamic\n version: '3.1',\n } as UpgradeResult<OpenAPIV3_1.Document>\n}\n"],
5
5
  "mappings": "AAIA,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;AAC1B,SAAS,kCAAkC;AAC3C,SAAS,6BAA6B;AAEtC,MAAM,YAAY;AAAA;AAAA,EAEhB;AAAA;AAAA,EAEA;AACF;AAKO,SAAS,QAAQ,OAA6E;AACnG,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,MACL,eAAe;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AAGA,QAAM,SAAS,UAAU;AAAA,IACvB,CAAC,sBAAsB,aAAa,SAAS,oBAAqC;AAAA,IAClF,aAAa,KAAK,IAAI,cAAc,KAAK,EAAE,gBAAgB,UAAU,KAAK;AAAA,EAC5E;AAEA,SAAO;AAAA,IACL,eAAe;AAAA;AAAA,IAEf,SAAS;AAAA,EACX;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { makeFilesystem } from "./makeFilesystem.js";
2
+ import { makeFilesystem } from "./make-filesystem.js";
3
3
  import { upgrade } from "./upgrade.js";
4
4
  describe("upgrade", () => {
5
5
  it("upgrades documents from Swagger 2.0 to OpenAPI 3.1", async () => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/upgrade.test.ts"],
4
- "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { makeFilesystem } from './makeFilesystem'\nimport { upgrade } from './upgrade'\n\ndescribe('upgrade', () => {\n it('upgrades documents from Swagger 2.0 to OpenAPI 3.1', async () => {\n const { specification } = upgrade({\n swagger: '2.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n })\n\n expect(specification.swagger).toBeUndefined()\n expect(specification.openapi).toBe('3.1.1')\n })\n\n it('changes the version to from 3.0.0 to 3.1.0', async () => {\n const { specification } = upgrade({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n })\n\n expect(specification.openapi).toBe('3.1.1')\n })\n\n it('changes the version to 3.0.3 to 3.1.0', async () => {\n const { specification } = upgrade({\n openapi: '3.0.3',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n })\n\n expect(specification.openapi).toBe('3.1.1')\n })\n\n it('works with a filesystem', async () => {\n const { specification } = upgrade(\n makeFilesystem({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n }),\n )\n\n expect(specification.openapi).toBe('3.1.1')\n })\n\n it('deals with null', async () => {\n const { specification } = upgrade(null)\n\n expect(specification).toStrictEqual(null)\n })\n})\n"],
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { makeFilesystem } from './make-filesystem'\nimport { upgrade } from './upgrade'\n\ndescribe('upgrade', () => {\n it('upgrades documents from Swagger 2.0 to OpenAPI 3.1', async () => {\n const { specification } = upgrade({\n swagger: '2.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n })\n\n expect(specification.swagger).toBeUndefined()\n expect(specification.openapi).toBe('3.1.1')\n })\n\n it('changes the version to from 3.0.0 to 3.1.0', async () => {\n const { specification } = upgrade({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n })\n\n expect(specification.openapi).toBe('3.1.1')\n })\n\n it('changes the version to 3.0.3 to 3.1.0', async () => {\n const { specification } = upgrade({\n openapi: '3.0.3',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n })\n\n expect(specification.openapi).toBe('3.1.1')\n })\n\n it('works with a filesystem', async () => {\n const { specification } = upgrade(\n makeFilesystem({\n openapi: '3.0.0',\n info: {\n title: 'Hello World',\n version: '1.0.0',\n },\n paths: {},\n }),\n )\n\n expect(specification.openapi).toBe('3.1.1')\n })\n\n it('deals with null', async () => {\n const { specification } = upgrade(null)\n\n expect(specification).toStrictEqual(null)\n })\n})\n"],
5
5
  "mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,sBAAsB;AAC/B,SAAS,eAAe;AAExB,SAAS,WAAW,MAAM;AACxB,KAAG,sDAAsD,YAAY;AACnE,UAAM,EAAE,cAAc,IAAI,QAAQ;AAAA,MAChC,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA,MACA,OAAO,CAAC;AAAA,IACV,CAAC;AAED,WAAO,cAAc,OAAO,EAAE,cAAc;AAC5C,WAAO,cAAc,OAAO,EAAE,KAAK,OAAO;AAAA,EAC5C,CAAC;AAED,KAAG,8CAA8C,YAAY;AAC3D,UAAM,EAAE,cAAc,IAAI,QAAQ;AAAA,MAChC,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA,MACA,OAAO,CAAC;AAAA,IACV,CAAC;AAED,WAAO,cAAc,OAAO,EAAE,KAAK,OAAO;AAAA,EAC5C,CAAC;AAED,KAAG,yCAAyC,YAAY;AACtD,UAAM,EAAE,cAAc,IAAI,QAAQ;AAAA,MAChC,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA,MACA,OAAO,CAAC;AAAA,IACV,CAAC;AAED,WAAO,cAAc,OAAO,EAAE,KAAK,OAAO;AAAA,EAC5C,CAAC;AAED,KAAG,2BAA2B,YAAY;AACxC,UAAM,EAAE,cAAc,IAAI;AAAA,MACxB,eAAe;AAAA,QACb,SAAS;AAAA,QACT,MAAM;AAAA,UACJ,OAAO;AAAA,UACP,SAAS;AAAA,QACX;AAAA,QACA,OAAO,CAAC;AAAA,MACV,CAAC;AAAA,IACH;AAEA,WAAO,cAAc,OAAO,EAAE,KAAK,OAAO;AAAA,EAC5C,CAAC;AAED,KAAG,mBAAmB,YAAY;AAChC,UAAM,EAAE,cAAc,IAAI,QAAQ,IAAI;AAEtC,WAAO,aAAa,EAAE,cAAc,IAAI;AAAA,EAC1C,CAAC;AACH,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/utils/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAG/F,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAA;AAEhD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,EACtC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC,CAWzB"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/utils/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAG9F,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAA;AAEhD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,EACtC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC,CAWzB"}
@@ -1,5 +1,5 @@
1
1
  import { Validator } from "../lib/Validator/Validator.js";
2
- import { makeFilesystem } from "./makeFilesystem.js";
2
+ import { makeFilesystem } from "./make-filesystem.js";
3
3
  async function validate(value, options) {
4
4
  const filesystem = makeFilesystem(value);
5
5
  const validator = new Validator();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/validate.ts"],
4
- "sourcesContent": ["import type { OpenAPI } from '@scalar/openapi-types'\n\nimport { Validator } from '../lib/Validator/Validator'\nimport type { AnyObject, Filesystem, ThrowOnErrorOption, ValidateResult } from '../types/index'\nimport { makeFilesystem } from './makeFilesystem'\n\nexport type ValidateOptions = ThrowOnErrorOption\n\n/**\n * Validates an OpenAPI document\n */\nexport async function validate(\n value: string | AnyObject | Filesystem,\n options?: ValidateOptions,\n): Promise<ValidateResult> {\n const filesystem = makeFilesystem(value)\n\n const validator = new Validator()\n const result = await validator.validate(filesystem, options)\n\n return {\n ...result,\n specification: validator.specification as OpenAPI.Document,\n version: validator.version,\n }\n}\n"],
4
+ "sourcesContent": ["import type { OpenAPI } from '@scalar/openapi-types'\n\nimport { Validator } from '@/lib/Validator/Validator'\nimport type { AnyObject, Filesystem, ThrowOnErrorOption, ValidateResult } from '@/types/index'\nimport { makeFilesystem } from './make-filesystem'\n\nexport type ValidateOptions = ThrowOnErrorOption\n\n/**\n * Validates an OpenAPI document\n */\nexport async function validate(\n value: string | AnyObject | Filesystem,\n options?: ValidateOptions,\n): Promise<ValidateResult> {\n const filesystem = makeFilesystem(value)\n\n const validator = new Validator()\n const result = await validator.validate(filesystem, options)\n\n return {\n ...result,\n specification: validator.specification as OpenAPI.Document,\n version: validator.version,\n }\n}\n"],
5
5
  "mappings": "AAEA,SAAS,iBAAiB;AAE1B,SAAS,sBAAsB;AAO/B,eAAsB,SACpB,OACA,SACyB;AACzB,QAAM,aAAa,eAAe,KAAK;AAEvC,QAAM,YAAY,IAAI,UAAU;AAChC,QAAM,SAAS,MAAM,UAAU,SAAS,YAAY,OAAO;AAE3D,SAAO;AAAA,IACL,GAAG;AAAA,IACH,eAAe,UAAU;AAAA,IACzB,SAAS,UAAU;AAAA,EACrB;AACF;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "parser",
18
18
  "typescript"
19
19
  ],
20
- "version": "0.11.1",
20
+ "version": "0.12.0",
21
21
  "engines": {
22
22
  "node": ">=20"
23
23
  },
@@ -57,12 +57,12 @@
57
57
  },
58
58
  "devDependencies": {
59
59
  "@apidevtools/swagger-parser": "^10.1.0",
60
- "@babel/code-frame": "^7.24.7",
61
60
  "@types/node": "^20.17.10",
62
61
  "glob": "^10.3.10",
63
62
  "json-to-ast": "^2.1.0",
64
63
  "just-diff": "^6.0.2",
65
64
  "tinybench": "^2.8.0",
65
+ "vite": "5.4.19",
66
66
  "@scalar/build-tooling": "0.2.0",
67
67
  "@scalar/openapi-types": "0.3.1",
68
68
  "@scalar/types": "0.2.1"
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetchUrls.d.ts","sourceRoot":"","sources":["../../../src/plugins/fetch-urls/fetchUrls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,eAAO,MAAM,6BAA6B;;CAEzC,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,CAAC,mBAAmB,CAAC,EAAE;IAC7C;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CAC3C,KAAK,UA2CL,CAAA"}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/plugins/fetch-urls/fetchUrls.ts"],
4
- "sourcesContent": ["import type { LoadPlugin } from '../../utils/load/load'\n\nexport const fetchUrlsDefaultConfiguration = {\n limit: 20,\n}\n\nexport const fetchUrls: (customConfiguration?: {\n /**\n * Limit the number of requests. Set to `false` to disable the limit.\n */\n limit?: number | false\n /**\n * Fetch function to use instead of the global fetch. Use this to intercept requests.\n */\n fetch?: (url: string) => Promise<Response>\n}) => LoadPlugin = (customConfiguration) => {\n // State\n let numberOfRequests = 0\n\n // Configuration\n const configuration = {\n ...fetchUrlsDefaultConfiguration,\n ...customConfiguration,\n }\n\n return {\n check(value?: any) {\n // Not a string\n if (typeof value !== 'string') {\n return false\n }\n\n // Not http/https\n if (!value.startsWith('http://') && !value.startsWith('https://')) {\n return false\n }\n\n return true\n },\n async get(value?: any) {\n // Limit ht enumber of requests\n if (configuration?.limit !== false && numberOfRequests >= configuration?.limit) {\n console.warn(`[fetchUrls] Maximum number of requests reeached (${configuration?.limit}), skipping request`)\n return undefined\n }\n\n try {\n numberOfRequests++\n\n const response = await (configuration?.fetch ? configuration.fetch(value) : fetch(value))\n\n return await response.text()\n } catch (error) {\n console.error('[fetchUrls]', error.message, `(${value})`)\n return undefined\n }\n },\n }\n}\n"],
5
- "mappings": "AAEO,MAAM,gCAAgC;AAAA,EAC3C,OAAO;AACT;AAEO,MAAM,YASM,CAAC,wBAAwB;AAE1C,MAAI,mBAAmB;AAGvB,QAAM,gBAAgB;AAAA,IACpB,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,SAAO;AAAA,IACL,MAAM,OAAa;AAEjB,UAAI,OAAO,UAAU,UAAU;AAC7B,eAAO;AAAA,MACT;AAGA,UAAI,CAAC,MAAM,WAAW,SAAS,KAAK,CAAC,MAAM,WAAW,UAAU,GAAG;AACjE,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,IACA,MAAM,IAAI,OAAa;AAErB,UAAI,eAAe,UAAU,SAAS,oBAAoB,eAAe,OAAO;AAC9E,gBAAQ,KAAK,oDAAoD,eAAe,KAAK,qBAAqB;AAC1G,eAAO;AAAA,MACT;AAEA,UAAI;AACF;AAEA,cAAM,WAAW,OAAO,eAAe,QAAQ,cAAc,MAAM,KAAK,IAAI,MAAM,KAAK;AAEvF,eAAO,MAAM,SAAS,KAAK;AAAA,MAC7B,SAAS,OAAO;AACd,gBAAQ,MAAM,eAAe,MAAM,SAAS,IAAI,KAAK,GAAG;AACxD,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/plugins/fetch-urls/fetchUrls.test.ts"],
4
- "sourcesContent": ["import { beforeEach, describe, expect, it, vi } from 'vitest'\n\nimport { fetchUrls } from './fetchUrls'\n\nglobal.fetch = vi.fn()\n\ndescribe('fetchUrls', async () => {\n beforeEach(() => {\n // @ts-expect-error\n global.fetch.mockReset()\n })\n\n it('returns true for an url', async () => {\n expect(fetchUrls().check('http://example.com/specification/openapi.yaml')).toBe(true)\n })\n\n it('returns false for a filename', async () => {\n expect(fetchUrls().check('openapi.yaml')).toBe(false)\n })\n\n it('returns false for a path', async () => {\n expect(fetchUrls().check('specification/openapi.yaml')).toBe(false)\n })\n\n it('returns false for an object', async () => {\n expect(fetchUrls().check({})).toBe(false)\n })\n\n it('returns false for undefinded', async () => {\n expect(fetchUrls().check()).toBe(false)\n })\n\n it('fetches the URL', async () => {\n // @ts-expect-error\n fetch.mockImplementation(async (url: string) => ({\n text: async () => {\n if (url === 'http://example.com/specification/openapi.yaml') {\n return 'OK'\n }\n\n throw new Error('Not found')\n },\n }))\n\n expect(await fetchUrls().get('http://example.com/specification/openapi.yaml')).toBe('OK')\n })\n\n it('rewrites the URL', async () => {\n // @ts-expect-error\n fetch.mockImplementation(async (url: string) => ({\n text: async () => {\n if (url === 'http://foobar.com/specification/openapi.yaml') {\n return 'OK'\n }\n throw new Error('Not found')\n },\n }))\n\n expect(\n await fetchUrls({\n fetch: (url) => fetch(url.replace('example', 'foobar')),\n }).get('http://foobar.com/specification/openapi.yaml'),\n ).toBe('OK')\n })\n})\n"],
5
- "mappings": "AAAA,SAAS,YAAY,UAAU,QAAQ,IAAI,UAAU;AAErD,SAAS,iBAAiB;AAE1B,OAAO,QAAQ,GAAG,GAAG;AAErB,SAAS,aAAa,YAAY;AAChC,aAAW,MAAM;AAEf,WAAO,MAAM,UAAU;AAAA,EACzB,CAAC;AAED,KAAG,2BAA2B,YAAY;AACxC,WAAO,UAAU,EAAE,MAAM,+CAA+C,CAAC,EAAE,KAAK,IAAI;AAAA,EACtF,CAAC;AAED,KAAG,gCAAgC,YAAY;AAC7C,WAAO,UAAU,EAAE,MAAM,cAAc,CAAC,EAAE,KAAK,KAAK;AAAA,EACtD,CAAC;AAED,KAAG,4BAA4B,YAAY;AACzC,WAAO,UAAU,EAAE,MAAM,4BAA4B,CAAC,EAAE,KAAK,KAAK;AAAA,EACpE,CAAC;AAED,KAAG,+BAA+B,YAAY;AAC5C,WAAO,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK;AAAA,EAC1C,CAAC;AAED,KAAG,gCAAgC,YAAY;AAC7C,WAAO,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,KAAK;AAAA,EACxC,CAAC;AAED,KAAG,mBAAmB,YAAY;AAEhC,UAAM,mBAAmB,OAAO,SAAiB;AAAA,MAC/C,MAAM,YAAY;AAChB,YAAI,QAAQ,iDAAiD;AAC3D,iBAAO;AAAA,QACT;AAEA,cAAM,IAAI,MAAM,WAAW;AAAA,MAC7B;AAAA,IACF,EAAE;AAEF,WAAO,MAAM,UAAU,EAAE,IAAI,+CAA+C,CAAC,EAAE,KAAK,IAAI;AAAA,EAC1F,CAAC;AAED,KAAG,oBAAoB,YAAY;AAEjC,UAAM,mBAAmB,OAAO,SAAiB;AAAA,MAC/C,MAAM,YAAY;AAChB,YAAI,QAAQ,gDAAgD;AAC1D,iBAAO;AAAA,QACT;AACA,cAAM,IAAI,MAAM,WAAW;AAAA,MAC7B;AAAA,IACF,EAAE;AAEF;AAAA,MACE,MAAM,UAAU;AAAA,QACd,OAAO,CAAC,QAAQ,MAAM,IAAI,QAAQ,WAAW,QAAQ,CAAC;AAAA,MACxD,CAAC,EAAE,IAAI,8CAA8C;AAAA,IACvD,EAAE,KAAK,IAAI;AAAA,EACb,CAAC;AACH,CAAC;",
6
- "names": []
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"readFiles.d.ts","sourceRoot":"","sources":["../../../src/plugins/read-files/readFiles.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,eAAO,MAAM,SAAS,EAAE,MAAM,UAqD7B,CAAA"}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/plugins/read-files/readFiles.ts"],
4
- "sourcesContent": ["import fs from 'node:fs'\n\nimport { ERRORS } from '../../configuration/index'\nimport { dirname, join } from '../../polyfills/path'\nimport { isJson } from '../../utils/isJson'\nimport { isYaml } from '../../utils/isYaml'\nimport type { LoadPlugin } from '../../utils/load/load'\n\nexport const readFiles: () => LoadPlugin = () => {\n return {\n check(value?: any) {\n // Not a string\n if (typeof value !== 'string') {\n return false\n }\n\n // URL\n if (value.startsWith('http://') || value.startsWith('https://')) {\n return false\n }\n\n // Line breaks\n if (value.includes('\\n')) {\n return false\n }\n\n // JSON\n if (isJson(value)) {\n return false\n }\n\n // YAML (run through YAML.parse)\n if (isYaml(value)) {\n return false\n }\n\n return true\n },\n async get(value?: any) {\n if (!fs.existsSync(value)) {\n throw new Error(ERRORS.FILE_DOES_NOT_EXIST.replace('%s', value))\n }\n\n try {\n return fs.readFileSync(value, 'utf-8')\n } catch (error) {\n console.error('[readFiles]', error)\n return false\n }\n },\n resolvePath(value: any, reference: string) {\n const dir = dirname(value)\n return join(dir, reference)\n },\n getDir(value: any) {\n return dirname(value)\n },\n getFilename(value: any) {\n return value.split('/').pop()\n },\n }\n}\n"],
5
- "mappings": "AAAA,OAAO,QAAQ;AAEf,SAAS,cAAc;AACvB,SAAS,SAAS,YAAY;AAC9B,SAAS,cAAc;AACvB,SAAS,cAAc;AAGhB,MAAM,YAA8B,MAAM;AAC/C,SAAO;AAAA,IACL,MAAM,OAAa;AAEjB,UAAI,OAAO,UAAU,UAAU;AAC7B,eAAO;AAAA,MACT;AAGA,UAAI,MAAM,WAAW,SAAS,KAAK,MAAM,WAAW,UAAU,GAAG;AAC/D,eAAO;AAAA,MACT;AAGA,UAAI,MAAM,SAAS,IAAI,GAAG;AACxB,eAAO;AAAA,MACT;AAGA,UAAI,OAAO,KAAK,GAAG;AACjB,eAAO;AAAA,MACT;AAGA,UAAI,OAAO,KAAK,GAAG;AACjB,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,IACA,MAAM,IAAI,OAAa;AACrB,UAAI,CAAC,GAAG,WAAW,KAAK,GAAG;AACzB,cAAM,IAAI,MAAM,OAAO,oBAAoB,QAAQ,MAAM,KAAK,CAAC;AAAA,MACjE;AAEA,UAAI;AACF,eAAO,GAAG,aAAa,OAAO,OAAO;AAAA,MACvC,SAAS,OAAO;AACd,gBAAQ,MAAM,eAAe,KAAK;AAClC,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,YAAY,OAAY,WAAmB;AACzC,YAAM,MAAM,QAAQ,KAAK;AACzB,aAAO,KAAK,KAAK,SAAS;AAAA,IAC5B;AAAA,IACA,OAAO,OAAY;AACjB,aAAO,QAAQ,KAAK;AAAA,IACtB;AAAA,IACA,YAAY,OAAY;AACtB,aAAO,MAAM,MAAM,GAAG,EAAE,IAAI;AAAA,IAC9B;AAAA,EACF;AACF;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/plugins/read-files/readFiles.test.ts"],
4
- "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { readFiles } from './readFiles'\n\ndescribe('readFiles', async () => {\n it('returns true for a filename', async () => {\n expect(readFiles().check('openapi.yaml')).toBe(true)\n })\n\n it('returns true for a path', async () => {\n expect(readFiles().check('../specification/openapi.yaml')).toBe(true)\n })\n\n it('returns false for an object', async () => {\n expect(readFiles().check({})).toBe(false)\n })\n\n it('returns false for undefinded', async () => {\n expect(readFiles().check()).toBe(false)\n })\n\n it('returns false for an url', async () => {\n expect(readFiles().check('http://example.com/specification/openapi.yaml')).toBe(false)\n })\n})\n"],
5
- "mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,iBAAiB;AAE1B,SAAS,aAAa,YAAY;AAChC,KAAG,+BAA+B,YAAY;AAC5C,WAAO,UAAU,EAAE,MAAM,cAAc,CAAC,EAAE,KAAK,IAAI;AAAA,EACrD,CAAC;AAED,KAAG,2BAA2B,YAAY;AACxC,WAAO,UAAU,EAAE,MAAM,+BAA+B,CAAC,EAAE,KAAK,IAAI;AAAA,EACtE,CAAC;AAED,KAAG,+BAA+B,YAAY;AAC5C,WAAO,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK;AAAA,EAC1C,CAAC;AAED,KAAG,gCAAgC,YAAY;AAC7C,WAAO,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,KAAK;AAAA,EACxC,CAAC;AAED,KAAG,4BAA4B,YAAY;AACzC,WAAO,UAAU,EAAE,MAAM,+CAA+C,CAAC,EAAE,KAAK,KAAK;AAAA,EACvF,CAAC;AACH,CAAC;",
6
- "names": []
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"escapeJsonPointer.d.ts","sourceRoot":"","sources":["../../src/utils/escapeJsonPointer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,UAE5C"}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/escapeJsonPointer.test.ts"],
4
- "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { escapeJsonPointer } from './escapeJsonPointer'\n\ndescribe('escapeJsonPointer', async () => {\n it('should escape a slash', () => {\n expect(escapeJsonPointer('application/json')).toBe('application~1json')\n })\n\n it('should escape multiple slashes', () => {\n expect(escapeJsonPointer('/api/users/{id}/reports')).toBe('~1api~1users~1{id}~1reports')\n })\n})\n"],
5
- "mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,yBAAyB;AAElC,SAAS,qBAAqB,YAAY;AACxC,KAAG,yBAAyB,MAAM;AAChC,WAAO,kBAAkB,kBAAkB,CAAC,EAAE,KAAK,mBAAmB;AAAA,EACxE,CAAC;AAED,KAAG,kCAAkC,MAAM;AACzC,WAAO,kBAAkB,yBAAyB,CAAC,EAAE,KAAK,6BAA6B;AAAA,EACzF,CAAC;AACH,CAAC;",
6
- "names": []
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"getEntrypoint.d.ts","sourceRoot":"","sources":["../../src/utils/getEntrypoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEjE;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,eAAe,GAAG,SAAS,CAElF"}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/getEntrypoint.ts"],
4
- "sourcesContent": ["import type { Filesystem, FilesystemEntry } from '../types/index'\n\n/**\n * Return just the entrypoint of the filesystem.\n */\nexport function getEntrypoint(filesystem?: Filesystem): FilesystemEntry | undefined {\n return filesystem?.find((file) => file.isEntrypoint)\n}\n"],
5
- "mappings": "AAKO,SAAS,cAAc,YAAsD;AAClF,SAAO,YAAY,KAAK,CAAC,SAAS,KAAK,YAAY;AACrD;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/getEntrypoint.test.ts"],
4
- "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { getEntrypoint } from './getEntrypoint'\nimport { makeFilesystem } from './makeFilesystem'\n\ndescribe('getEntrypoint', () => {\n it('keeps the object reference', () => {\n const result = makeFilesystem({\n foo: 'bar',\n })\n\n const entrypoint = getEntrypoint(result)\n\n // Modify the entrypoint\n entrypoint.specification.foo = 'baz'\n\n // Check whether the original was modified\n expect(result[0].specification.foo).toBe('baz')\n })\n\n it('returns undefined for an empty filesystem', () => {\n const entrypoint = getEntrypoint([])\n\n // Check whether the original was modified\n expect(entrypoint).toBe(undefined)\n })\n})\n"],
5
- "mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAE/B,SAAS,iBAAiB,MAAM;AAC9B,KAAG,8BAA8B,MAAM;AACrC,UAAM,SAAS,eAAe;AAAA,MAC5B,KAAK;AAAA,IACP,CAAC;AAED,UAAM,aAAa,cAAc,MAAM;AAGvC,eAAW,cAAc,MAAM;AAG/B,WAAO,OAAO,CAAC,EAAE,cAAc,GAAG,EAAE,KAAK,KAAK;AAAA,EAChD,CAAC;AAED,KAAG,6CAA6C,MAAM;AACpD,UAAM,aAAa,cAAc,CAAC,CAAC;AAGnC,WAAO,UAAU,EAAE,KAAK,MAAS;AAAA,EACnC,CAAC;AACH,CAAC;",
6
- "names": []
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"getListOfReferences.d.ts","sourceRoot":"","sources":["../../src/utils/getListOfReferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,SAAS,YAmB3D"}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/getListOfReferences.ts"],
4
- "sourcesContent": ["import type { AnyObject } from '../types/index'\nimport { traverse } from './traverse'\n\n/**\n * Walks through the specification and returns all references as an array.\n *\n * Warning: Doesn\u2019t return internal references.\n */\nexport function getListOfReferences(specification: AnyObject) {\n const references: string[] = []\n\n // Make sure we\u2019re dealing with an object\n if (!specification || typeof specification !== 'object') {\n return references\n }\n\n // Traverse the specification and collect all references\n traverse(specification, (value: any) => {\n if (value.$ref && typeof value.$ref === 'string' && !value.$ref.startsWith('#')) {\n references.push(value.$ref.split('#')[0])\n }\n\n return value\n })\n\n // Remove duplicates\n return [...new Set(references)]\n}\n"],
5
- "mappings": "AACA,SAAS,gBAAgB;AAOlB,SAAS,oBAAoB,eAA0B;AAC5D,QAAM,aAAuB,CAAC;AAG9B,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,UAAU;AACvD,WAAO;AAAA,EACT;AAGA,WAAS,eAAe,CAAC,UAAe;AACtC,QAAI,MAAM,QAAQ,OAAO,MAAM,SAAS,YAAY,CAAC,MAAM,KAAK,WAAW,GAAG,GAAG;AAC/E,iBAAW,KAAK,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,IAC1C;AAEA,WAAO;AAAA,EACT,CAAC;AAGD,SAAO,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC;AAChC;",
6
- "names": []
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSegmentsFromPath.d.ts","sourceRoot":"","sources":["../../src/utils/getSegmentsFromPath.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,YAW/C"}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/getSegmentsFromPath.ts"],
4
- "sourcesContent": ["import { unescapeJsonPointer } from './unescapeJsonPointer'\n\n/**\n * Translate `/paths/~1test` to `['paths', '/test']`\n */\nexport function getSegmentsFromPath(path: string) {\n return (\n // /paths/~1test\n path\n // ['', 'paths', '~1test']\n .split('/')\n // ['paths', '~test']\n .slice(1)\n // ['paths', '/test']\n .map(unescapeJsonPointer)\n )\n}\n"],
5
- "mappings": "AAAA,SAAS,2BAA2B;AAK7B,SAAS,oBAAoB,MAAc;AAChD;AAAA;AAAA,IAEE,KAEG,MAAM,GAAG,EAET,MAAM,CAAC,EAEP,IAAI,mBAAmB;AAAA;AAE9B;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/getSegmentsFromPath.test.ts"],
4
- "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { getSegmentsFromPath } from './getSegmentsFromPath'\n\ndescribe('getSegmentsFromPath', () => {\n it('returns path segments', () => {\n const result = getSegmentsFromPath('/paths/test')\n\n expect(result).toEqual(['paths', 'test'])\n })\n\n it('unsescapes slashes', () => {\n const result = getSegmentsFromPath('/paths/~1test')\n\n expect(result).toEqual(['paths', '/test'])\n })\n})\n"],
5
- "mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,2BAA2B;AAEpC,SAAS,uBAAuB,MAAM;AACpC,KAAG,yBAAyB,MAAM;AAChC,UAAM,SAAS,oBAAoB,aAAa;AAEhD,WAAO,MAAM,EAAE,QAAQ,CAAC,SAAS,MAAM,CAAC;AAAA,EAC1C,CAAC;AAED,KAAG,sBAAsB,MAAM;AAC7B,UAAM,SAAS,oBAAoB,eAAe;AAElD,WAAO,MAAM,EAAE,QAAQ,CAAC,SAAS,OAAO,CAAC;AAAA,EAC3C,CAAC;AACH,CAAC;",
6
- "names": []
7
- }
@@ -1,27 +0,0 @@
1
- export * from './dereference.js';
2
- export * from './details.js';
3
- export * from './escapeJsonPointer.js';
4
- export * from './filter.js';
5
- export * from './getEntrypoint.js';
6
- export * from './getListOfReferences.js';
7
- export * from './getSegmentsFromPath.js';
8
- export * from './isFilesystem.js';
9
- export * from './isJson.js';
10
- export * from './isObject.js';
11
- export * from './isYaml.js';
12
- export * from './load/index.js';
13
- export * from './load/load.js';
14
- export * from './normalize.js';
15
- export * from './openapi/index.js';
16
- export * from './resolveReferences.js';
17
- export * from './toJson.js';
18
- export * from './toYaml.js';
19
- export * from './transformErrors.js';
20
- export * from './traverse.js';
21
- export * from './unescapeJsonPointer.js';
22
- export * from './upgrade.js';
23
- export * from './upgradeFromThreeToThreeOne.js';
24
- export * from './upgradeFromTwoToThree.js';
25
- export * from './validate.js';
26
- export * from './transform/index.js';
27
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA"}
@@ -1,27 +0,0 @@
1
- export * from "./dereference.js";
2
- export * from "./details.js";
3
- export * from "./escapeJsonPointer.js";
4
- export * from "./filter.js";
5
- export * from "./getEntrypoint.js";
6
- export * from "./getListOfReferences.js";
7
- export * from "./getSegmentsFromPath.js";
8
- export * from "./isFilesystem.js";
9
- export * from "./isJson.js";
10
- export * from "./isObject.js";
11
- export * from "./isYaml.js";
12
- export * from "./load/index.js";
13
- export * from "./load/load.js";
14
- export * from "./normalize.js";
15
- export * from "./openapi/index.js";
16
- export * from "./resolveReferences.js";
17
- export * from "./toJson.js";
18
- export * from "./toYaml.js";
19
- export * from "./transformErrors.js";
20
- export * from "./traverse.js";
21
- export * from "./unescapeJsonPointer.js";
22
- export * from "./upgrade.js";
23
- export * from "./upgradeFromThreeToThreeOne.js";
24
- export * from "./upgradeFromTwoToThree.js";
25
- export * from "./validate.js";
26
- export * from "./transform/index.js";
27
- //# sourceMappingURL=index.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/index.ts"],
4
- "sourcesContent": ["export * from './dereference'\nexport * from './details'\nexport * from './escapeJsonPointer'\nexport * from './filter'\nexport * from './getEntrypoint'\nexport * from './getListOfReferences'\nexport * from './getSegmentsFromPath'\nexport * from './isFilesystem'\nexport * from './isJson'\nexport * from './isObject'\nexport * from './isYaml'\nexport * from './load/index'\nexport * from './load/load'\nexport * from './normalize'\nexport * from './openapi/index'\nexport * from './resolveReferences'\nexport * from './toJson'\nexport * from './toYaml'\nexport * from './transformErrors'\nexport * from './traverse'\nexport * from './unescapeJsonPointer'\nexport * from './upgrade'\nexport * from './upgradeFromThreeToThreeOne'\nexport * from './upgradeFromTwoToThree'\nexport * from './validate'\nexport * from './transform/index'\n"],
5
- "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
6
- "names": []
7
- }