@scalar/oas-utils 0.2.140 → 0.2.141

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 (280) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/entities/cookie/cookie.js +14 -13
  3. package/dist/entities/cookie/cookie.js.map +7 -0
  4. package/dist/entities/cookie/index.d.ts +1 -1
  5. package/dist/entities/cookie/index.d.ts.map +1 -1
  6. package/dist/entities/cookie/index.js +5 -1
  7. package/dist/entities/cookie/index.js.map +7 -0
  8. package/dist/entities/environment/environment.js +10 -9
  9. package/dist/entities/environment/environment.js.map +7 -0
  10. package/dist/entities/environment/index.d.ts +1 -1
  11. package/dist/entities/environment/index.d.ts.map +1 -1
  12. package/dist/entities/environment/index.js +5 -1
  13. package/dist/entities/environment/index.js.map +7 -0
  14. package/dist/entities/hotkeys/hotkeys.js +109 -116
  15. package/dist/entities/hotkeys/hotkeys.js.map +7 -0
  16. package/dist/entities/hotkeys/index.d.ts +1 -1
  17. package/dist/entities/hotkeys/index.d.ts.map +1 -1
  18. package/dist/entities/hotkeys/index.js +6 -1
  19. package/dist/entities/hotkeys/index.js.map +7 -0
  20. package/dist/entities/shared/index.d.ts +1 -1
  21. package/dist/entities/shared/index.d.ts.map +1 -1
  22. package/dist/entities/shared/index.js +7 -1
  23. package/dist/entities/shared/index.js.map +7 -0
  24. package/dist/entities/shared/utility.js +9 -12
  25. package/dist/entities/shared/utility.js.map +7 -0
  26. package/dist/entities/spec/collection.d.ts.map +1 -1
  27. package/dist/entities/spec/collection.js +91 -94
  28. package/dist/entities/spec/collection.js.map +7 -0
  29. package/dist/entities/spec/index.d.ts +8 -8
  30. package/dist/entities/spec/index.d.ts.map +1 -1
  31. package/dist/entities/spec/index.js +59 -9
  32. package/dist/entities/spec/index.js.map +7 -0
  33. package/dist/entities/spec/operation.d.ts +1 -1
  34. package/dist/entities/spec/operation.d.ts.map +1 -1
  35. package/dist/entities/spec/operation.js +5 -8
  36. package/dist/entities/spec/operation.js.map +7 -0
  37. package/dist/entities/spec/operation.test.js +43 -0
  38. package/dist/entities/spec/operation.test.js.map +7 -0
  39. package/dist/entities/spec/parameters.d.ts +1 -1
  40. package/dist/entities/spec/parameters.d.ts.map +1 -1
  41. package/dist/entities/spec/parameters.js +40 -38
  42. package/dist/entities/spec/parameters.js.map +7 -0
  43. package/dist/entities/spec/parameters.test.js +71 -0
  44. package/dist/entities/spec/parameters.test.js.map +7 -0
  45. package/dist/entities/spec/request-example.test.js +637 -0
  46. package/dist/entities/spec/request-example.test.js.map +7 -0
  47. package/dist/entities/spec/request-examples.d.ts +3 -3
  48. package/dist/entities/spec/request-examples.d.ts.map +1 -1
  49. package/dist/entities/spec/request-examples.js +323 -338
  50. package/dist/entities/spec/request-examples.js.map +7 -0
  51. package/dist/entities/spec/requests.d.ts +6 -8
  52. package/dist/entities/spec/requests.d.ts.map +1 -1
  53. package/dist/entities/spec/requests.js +80 -101
  54. package/dist/entities/spec/requests.js.map +7 -0
  55. package/dist/entities/spec/server.js +47 -63
  56. package/dist/entities/spec/server.js.map +7 -0
  57. package/dist/entities/spec/server.test.js +120 -0
  58. package/dist/entities/spec/server.test.js.map +7 -0
  59. package/dist/entities/spec/spec-objects.d.ts.map +1 -1
  60. package/dist/entities/spec/spec-objects.js +77 -121
  61. package/dist/entities/spec/spec-objects.js.map +7 -0
  62. package/dist/entities/spec/spec-objects.test.js +205 -0
  63. package/dist/entities/spec/spec-objects.test.js.map +7 -0
  64. package/dist/entities/spec/x-scalar-environments.js +21 -18
  65. package/dist/entities/spec/x-scalar-environments.js.map +7 -0
  66. package/dist/entities/spec/x-scalar-environments.test.js +11 -0
  67. package/dist/entities/spec/x-scalar-environments.test.js.map +7 -0
  68. package/dist/entities/spec/x-scalar-secrets.js +8 -6
  69. package/dist/entities/spec/x-scalar-secrets.js.map +7 -0
  70. package/dist/entities/spec/x-scalar-secrets.test.js +11 -0
  71. package/dist/entities/spec/x-scalar-secrets.test.js.map +7 -0
  72. package/dist/entities/workspace/index.d.ts +1 -1
  73. package/dist/entities/workspace/index.d.ts.map +1 -1
  74. package/dist/entities/workspace/index.js +7 -1
  75. package/dist/entities/workspace/index.js.map +7 -0
  76. package/dist/entities/workspace/workspace.js +46 -50
  77. package/dist/entities/workspace/workspace.js.map +7 -0
  78. package/dist/helpers/create-hash.js +15 -18
  79. package/dist/helpers/create-hash.js.map +7 -0
  80. package/dist/helpers/ensure-protocol.js +9 -10
  81. package/dist/helpers/ensure-protocol.js.map +7 -0
  82. package/dist/helpers/ensure-protocol.test.js +70 -0
  83. package/dist/helpers/ensure-protocol.test.js.map +7 -0
  84. package/dist/helpers/fetch-document.js +24 -32
  85. package/dist/helpers/fetch-document.js.map +7 -0
  86. package/dist/helpers/fetch-document.test.js +63 -0
  87. package/dist/helpers/fetch-document.test.js.map +7 -0
  88. package/dist/helpers/fetch-with-proxy-fallback.js +20 -28
  89. package/dist/helpers/fetch-with-proxy-fallback.js.map +7 -0
  90. package/dist/helpers/find-variables.d.ts +1 -1
  91. package/dist/helpers/find-variables.d.ts.map +1 -1
  92. package/dist/helpers/find-variables.js +6 -8
  93. package/dist/helpers/find-variables.js.map +7 -0
  94. package/dist/helpers/find-variables.test.js +20 -0
  95. package/dist/helpers/find-variables.test.js.map +7 -0
  96. package/dist/helpers/http-methods.d.ts +1 -1
  97. package/dist/helpers/http-methods.d.ts.map +1 -1
  98. package/dist/helpers/http-methods.js +60 -66
  99. package/dist/helpers/http-methods.js.map +7 -0
  100. package/dist/helpers/http-status-codes.js +319 -317
  101. package/dist/helpers/http-status-codes.js.map +7 -0
  102. package/dist/helpers/index.d.ts +27 -27
  103. package/dist/helpers/index.d.ts.map +1 -1
  104. package/dist/helpers/index.js +73 -27
  105. package/dist/helpers/index.js.map +7 -0
  106. package/dist/helpers/is-defined.js +5 -14
  107. package/dist/helpers/is-defined.js.map +7 -0
  108. package/dist/helpers/is-defined.test.js +37 -0
  109. package/dist/helpers/is-defined.test.js.map +7 -0
  110. package/dist/helpers/is-local-url.js +11 -16
  111. package/dist/helpers/is-local-url.js.map +7 -0
  112. package/dist/helpers/is-local-url.test.js +40 -0
  113. package/dist/helpers/is-local-url.test.js.map +7 -0
  114. package/dist/helpers/is-valid-url.js +9 -18
  115. package/dist/helpers/is-valid-url.js.map +7 -0
  116. package/dist/helpers/is-valid-url.test.js +17 -0
  117. package/dist/helpers/is-valid-url.test.js.map +7 -0
  118. package/dist/helpers/iterate-title.js +11 -15
  119. package/dist/helpers/iterate-title.js.map +7 -0
  120. package/dist/helpers/json2xml.js +40 -47
  121. package/dist/helpers/json2xml.js.map +7 -0
  122. package/dist/helpers/json2xml.test.js +19 -0
  123. package/dist/helpers/json2xml.test.js.map +7 -0
  124. package/dist/helpers/local-storage.js +13 -15
  125. package/dist/helpers/local-storage.js.map +7 -0
  126. package/dist/helpers/make-url-absolute.js +11 -17
  127. package/dist/helpers/make-url-absolute.js.map +7 -0
  128. package/dist/helpers/make-url-absolute.test.js +61 -0
  129. package/dist/helpers/make-url-absolute.test.js.map +7 -0
  130. package/dist/helpers/merge-urls.js +50 -75
  131. package/dist/helpers/merge-urls.js.map +7 -0
  132. package/dist/helpers/merge-urls.test.js +339 -0
  133. package/dist/helpers/merge-urls.test.js.map +7 -0
  134. package/dist/helpers/normalize-mime-type-object.js +21 -31
  135. package/dist/helpers/normalize-mime-type-object.js.map +7 -0
  136. package/dist/helpers/normalize-mime-type-object.test.js +53 -0
  137. package/dist/helpers/normalize-mime-type-object.test.js.map +7 -0
  138. package/dist/helpers/normalize-mime-type.js +8 -18
  139. package/dist/helpers/normalize-mime-type.js.map +7 -0
  140. package/dist/helpers/normalize-mime-type.test.js +33 -0
  141. package/dist/helpers/normalize-mime-type.test.js.map +7 -0
  142. package/dist/helpers/object.js +12 -18
  143. package/dist/helpers/object.js.map +7 -0
  144. package/dist/helpers/omit-undefined-values.js +17 -19
  145. package/dist/helpers/omit-undefined-values.js.map +7 -0
  146. package/dist/helpers/omit-undefined-values.test.js +89 -0
  147. package/dist/helpers/omit-undefined-values.test.js.map +7 -0
  148. package/dist/helpers/parse.js +71 -83
  149. package/dist/helpers/parse.js.map +7 -0
  150. package/dist/helpers/parse.test.js +45 -0
  151. package/dist/helpers/parse.test.js.map +7 -0
  152. package/dist/helpers/pretty-print-json.js +31 -35
  153. package/dist/helpers/pretty-print-json.js.map +7 -0
  154. package/dist/helpers/pretty-print-json.test.js +28 -0
  155. package/dist/helpers/pretty-print-json.test.js.map +7 -0
  156. package/dist/helpers/redirect-to-proxy.js +46 -83
  157. package/dist/helpers/redirect-to-proxy.js.map +7 -0
  158. package/dist/helpers/redirect-to-proxy.test.js +54 -0
  159. package/dist/helpers/redirect-to-proxy.test.js.map +7 -0
  160. package/dist/helpers/regex-helpers.js +11 -9
  161. package/dist/helpers/regex-helpers.js.map +7 -0
  162. package/dist/helpers/regex-helpers.test.js +154 -0
  163. package/dist/helpers/regex-helpers.test.js.map +7 -0
  164. package/dist/helpers/replace-variables.js +13 -16
  165. package/dist/helpers/replace-variables.js.map +7 -0
  166. package/dist/helpers/replace-variables.test.js +30 -0
  167. package/dist/helpers/replace-variables.test.js.map +7 -0
  168. package/dist/helpers/schema-model.js +15 -14
  169. package/dist/helpers/schema-model.js.map +7 -0
  170. package/dist/helpers/security/get-schemes.d.ts +1 -1
  171. package/dist/helpers/security/get-schemes.d.ts.map +1 -1
  172. package/dist/helpers/security/get-schemes.js +7 -9
  173. package/dist/helpers/security/get-schemes.js.map +7 -0
  174. package/dist/helpers/security/get-schemes.test.js +71 -0
  175. package/dist/helpers/security/get-schemes.test.js.map +7 -0
  176. package/dist/helpers/security/has-token.js +18 -19
  177. package/dist/helpers/security/has-token.js.map +7 -0
  178. package/dist/helpers/security/has-token.test.js +157 -0
  179. package/dist/helpers/security/has-token.test.js.map +7 -0
  180. package/dist/helpers/security/index.d.ts +2 -2
  181. package/dist/helpers/security/index.d.ts.map +1 -1
  182. package/dist/helpers/security/index.js +7 -2
  183. package/dist/helpers/security/index.js.map +7 -0
  184. package/dist/helpers/should-ignore-entity.d.ts +2 -2
  185. package/dist/helpers/should-ignore-entity.d.ts.map +1 -1
  186. package/dist/helpers/should-ignore-entity.js +5 -6
  187. package/dist/helpers/should-ignore-entity.js.map +7 -0
  188. package/dist/helpers/ssr-state.js +6 -6
  189. package/dist/helpers/ssr-state.js.map +7 -0
  190. package/dist/helpers/string.js +6 -18
  191. package/dist/helpers/string.js.map +7 -0
  192. package/dist/migrations/data-version.js +7 -17
  193. package/dist/migrations/data-version.js.map +7 -0
  194. package/dist/migrations/generate-types.js +56 -0
  195. package/dist/migrations/generate-types.js.map +7 -0
  196. package/dist/migrations/index.d.ts +3 -3
  197. package/dist/migrations/index.d.ts.map +1 -1
  198. package/dist/migrations/index.js +10 -3
  199. package/dist/migrations/index.js.map +7 -0
  200. package/dist/migrations/local-storage.d.ts +1 -1
  201. package/dist/migrations/local-storage.d.ts.map +1 -1
  202. package/dist/migrations/local-storage.js +27 -32
  203. package/dist/migrations/local-storage.js.map +7 -0
  204. package/dist/migrations/migrator.d.ts +1 -1
  205. package/dist/migrations/migrator.d.ts.map +1 -1
  206. package/dist/migrations/migrator.js +51 -58
  207. package/dist/migrations/migrator.js.map +7 -0
  208. package/dist/migrations/semver.js +23 -25
  209. package/dist/migrations/semver.js.map +7 -0
  210. package/dist/migrations/semver.test.js +21 -0
  211. package/dist/migrations/semver.test.js.map +7 -0
  212. package/dist/migrations/v-0.0.0/types.generated.js +1 -0
  213. package/dist/migrations/v-0.0.0/types.generated.js.map +7 -0
  214. package/dist/migrations/v-2.1.0/migration.d.ts +2 -2
  215. package/dist/migrations/v-2.1.0/migration.d.ts.map +1 -1
  216. package/dist/migrations/v-2.1.0/migration.js +256 -273
  217. package/dist/migrations/v-2.1.0/migration.js.map +7 -0
  218. package/dist/migrations/v-2.1.0/types.generated.js +1 -0
  219. package/dist/migrations/v-2.1.0/types.generated.js.map +7 -0
  220. package/dist/migrations/v-2.2.0/migration.d.ts +2 -2
  221. package/dist/migrations/v-2.2.0/migration.d.ts.map +1 -1
  222. package/dist/migrations/v-2.2.0/migration.js +95 -100
  223. package/dist/migrations/v-2.2.0/migration.js.map +7 -0
  224. package/dist/migrations/v-2.2.0/types.generated.js +1 -0
  225. package/dist/migrations/v-2.2.0/types.generated.js.map +7 -0
  226. package/dist/migrations/v-2.3.0/migration.d.ts +2 -2
  227. package/dist/migrations/v-2.3.0/migration.d.ts.map +1 -1
  228. package/dist/migrations/v-2.3.0/migration.js +47 -46
  229. package/dist/migrations/v-2.3.0/migration.js.map +7 -0
  230. package/dist/migrations/v-2.3.0/types.generated.js +1 -0
  231. package/dist/migrations/v-2.3.0/types.generated.js.map +7 -0
  232. package/dist/migrations/v-2.4.0/migration.d.ts +2 -2
  233. package/dist/migrations/v-2.4.0/migration.d.ts.map +1 -1
  234. package/dist/migrations/v-2.4.0/migration.js +24 -26
  235. package/dist/migrations/v-2.4.0/migration.js.map +7 -0
  236. package/dist/migrations/v-2.4.0/migration.test.js +90 -0
  237. package/dist/migrations/v-2.4.0/migration.test.js.map +7 -0
  238. package/dist/migrations/v-2.4.0/types.generated.js +1 -0
  239. package/dist/migrations/v-2.4.0/types.generated.js.map +7 -0
  240. package/dist/migrations/v-2.5.0/migration.d.ts +2 -2
  241. package/dist/migrations/v-2.5.0/migration.d.ts.map +1 -1
  242. package/dist/migrations/v-2.5.0/migration.js +135 -119
  243. package/dist/migrations/v-2.5.0/migration.js.map +7 -0
  244. package/dist/migrations/v-2.5.0/migration.test.js +108 -0
  245. package/dist/migrations/v-2.5.0/migration.test.js.map +7 -0
  246. package/dist/migrations/v-2.5.0/types.generated.d.ts +8 -8
  247. package/dist/migrations/v-2.5.0/types.generated.d.ts.map +1 -1
  248. package/dist/migrations/v-2.5.0/types.generated.js +1 -0
  249. package/dist/migrations/v-2.5.0/types.generated.js.map +7 -0
  250. package/dist/spec-getters/get-example-from-schema.js +206 -268
  251. package/dist/spec-getters/get-example-from-schema.js.map +7 -0
  252. package/dist/spec-getters/get-example-from-schema.test.js +1092 -0
  253. package/dist/spec-getters/get-example-from-schema.test.js.map +7 -0
  254. package/dist/spec-getters/get-parameters-from-operation.js +22 -42
  255. package/dist/spec-getters/get-parameters-from-operation.js.map +7 -0
  256. package/dist/spec-getters/get-parameters-from-operation.test.js +178 -0
  257. package/dist/spec-getters/get-parameters-from-operation.test.js.map +7 -0
  258. package/dist/spec-getters/get-request-body-from-operation.js +110 -162
  259. package/dist/spec-getters/get-request-body-from-operation.js.map +7 -0
  260. package/dist/spec-getters/get-request-body-from-operation.test.js +289 -0
  261. package/dist/spec-getters/get-request-body-from-operation.test.js.map +7 -0
  262. package/dist/spec-getters/get-server-variable-examples.d.ts +1 -1
  263. package/dist/spec-getters/get-server-variable-examples.d.ts.map +1 -1
  264. package/dist/spec-getters/get-server-variable-examples.js +12 -11
  265. package/dist/spec-getters/get-server-variable-examples.js.map +7 -0
  266. package/dist/spec-getters/index.d.ts +4 -4
  267. package/dist/spec-getters/index.d.ts.map +1 -1
  268. package/dist/spec-getters/index.js +11 -4
  269. package/dist/spec-getters/index.js.map +7 -0
  270. package/dist/transforms/import-spec.d.ts +6 -6
  271. package/dist/transforms/import-spec.d.ts.map +1 -1
  272. package/dist/transforms/import-spec.js +313 -425
  273. package/dist/transforms/import-spec.js.map +7 -0
  274. package/dist/transforms/import-spec.test.js +1124 -0
  275. package/dist/transforms/import-spec.test.js.map +7 -0
  276. package/dist/transforms/index.d.ts +1 -1
  277. package/dist/transforms/index.d.ts.map +1 -1
  278. package/dist/transforms/index.js +7 -1
  279. package/dist/transforms/index.js.map +7 -0
  280. package/package.json +9 -10
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/spec-getters/get-example-from-schema.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { getExampleFromSchema } from './get-example-from-schema'\n\ndescribe('getExampleFromSchema', () => {\n it('sets example values', () => {\n expect(\n getExampleFromSchema({\n example: 10,\n }),\n ).toMatchObject(10)\n })\n\n it('uses first example, if multiple are configured', () => {\n expect(\n getExampleFromSchema({\n examples: [10],\n }),\n ).toMatchObject(10)\n })\n\n it('takes the first enum as example', () => {\n expect(\n getExampleFromSchema({\n enum: ['available', 'pending', 'sold'],\n }),\n ).toBe('available')\n })\n\n it('uses empty quotes as a fallback for strings', () => {\n expect(\n getExampleFromSchema({\n type: 'string',\n }),\n ).toBe('')\n })\n\n it('only includes required attributes and attributes with example values', () => {\n expect(\n getExampleFromSchema(\n {\n type: 'object',\n required: ['first_name'],\n properties: {\n first_name: {\n type: 'string',\n },\n last_name: {\n type: 'string',\n required: true,\n },\n position: {\n type: 'string',\n examples: ['Developer'],\n },\n description: {\n type: 'string',\n example: 'A developer',\n },\n age: {\n type: 'number',\n },\n },\n },\n {\n omitEmptyAndOptionalProperties: true,\n },\n ),\n ).toStrictEqual({\n first_name: '',\n last_name: '',\n position: 'Developer',\n description: 'A developer',\n })\n })\n\n it('includes every available attributes', () => {\n expect(\n getExampleFromSchema(\n {\n type: 'object',\n required: ['first_name'],\n properties: {\n first_name: {\n type: 'string',\n },\n last_name: {\n type: 'string',\n required: true,\n },\n position: {\n type: 'string',\n examples: ['Developer'],\n },\n description: {\n type: 'string',\n example: 'A developer',\n },\n age: {\n type: 'number',\n },\n },\n },\n {\n omitEmptyAndOptionalProperties: false,\n },\n ),\n ).toStrictEqual({\n first_name: '',\n last_name: '',\n position: 'Developer',\n description: 'A developer',\n age: 1,\n })\n })\n\n it('uses example value for first type in non-null union types', () => {\n expect(\n getExampleFromSchema({\n type: ['string', 'number'],\n }),\n ).toBe('')\n })\n\n it('uses null for nullable union types', () => {\n expect(\n getExampleFromSchema({\n type: ['string', 'null'],\n }),\n ).toBeNull()\n })\n\n it('sets example values', () => {\n expect(\n getExampleFromSchema({\n example: 10,\n }),\n ).toMatchObject(10)\n })\n\n it('goes through properties recursively with objects', () => {\n expect(\n getExampleFromSchema({\n type: 'object',\n properties: {\n category: {\n type: 'object',\n properties: {\n id: {\n example: 1,\n },\n name: {\n example: 'Dogs',\n },\n attributes: {\n type: 'object',\n properties: {\n size: {\n enum: ['small', 'medium', 'large'],\n },\n },\n },\n },\n },\n },\n }),\n ).toMatchObject({\n category: {\n id: 1,\n name: 'Dogs',\n attributes: {\n size: 'small',\n },\n },\n })\n })\n\n it('goes through properties recursively with arrays', () => {\n expect(\n getExampleFromSchema({\n type: 'object',\n properties: {\n tags: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: {\n example: 1,\n },\n },\n },\n },\n },\n }),\n ).toMatchObject({\n tags: [\n {\n id: 1,\n },\n ],\n })\n })\n\n it('uses empty [] as a fallback for arrays', () => {\n expect(\n getExampleFromSchema({\n type: 'object',\n properties: {\n title: {\n type: 'array',\n },\n },\n }),\n ).toMatchObject({\n title: [],\n })\n })\n\n it('uses given fallback for strings', () => {\n expect(\n getExampleFromSchema(\n {\n type: 'string',\n },\n {\n emptyString: '\u2026',\n },\n ),\n ).toBe('\u2026')\n })\n\n it('returns emails as an example value', () => {\n const result = getExampleFromSchema(\n {\n type: 'string',\n format: 'email',\n },\n {\n emptyString: '\u2026',\n },\n )\n\n function isEmail(text: string) {\n return !!text.match(/^.+@.+\\..+$/)\n }\n\n expect(isEmail(result)).toBe(true)\n })\n\n it('uses variables as an example value', () => {\n expect(\n getExampleFromSchema(\n {\n 'type': 'string',\n 'x-variable': 'id',\n },\n {\n variables: {\n id: 'foobar',\n },\n },\n ),\n ).toBe('foobar')\n })\n\n it('uses true as a fallback for booleans', () => {\n expect(\n getExampleFromSchema({\n type: 'boolean',\n }),\n ).toMatchObject(true)\n })\n\n it('uses 1 as a fallback for integers', () => {\n expect(\n getExampleFromSchema({\n type: 'integer',\n }),\n ).toMatchObject(1)\n })\n\n it('returns an array if the schema type is array', () => {\n expect(\n getExampleFromSchema({\n type: 'array',\n }),\n ).toMatchObject([])\n })\n\n it('uses array example values', () => {\n expect(\n getExampleFromSchema({\n type: 'array',\n example: ['foobar'],\n items: {\n type: 'string',\n },\n }),\n ).toMatchObject(['foobar'])\n })\n\n it('uses specified object as array default', () => {\n expect(\n getExampleFromSchema({\n type: 'array',\n items: {\n type: 'object',\n properties: {\n foo: {\n type: 'number',\n },\n bar: {\n type: 'string',\n },\n },\n },\n }),\n ).toMatchObject([\n {\n foo: 1,\n bar: '',\n },\n ])\n })\n\n it('uses the first example in object anyOf', () => {\n expect(\n getExampleFromSchema({\n type: 'object',\n anyOf: [\n {\n type: 'object',\n properties: {\n foo: { type: 'number' },\n },\n },\n {\n type: 'object',\n properties: {\n bar: { type: 'string' },\n },\n },\n ],\n }),\n ).toMatchObject({ foo: 1 })\n })\n\n it('uses the first example in object oneOf', () => {\n expect(\n getExampleFromSchema({\n type: 'object',\n oneOf: [\n {\n type: 'object',\n properties: {\n foo: { type: 'number' },\n },\n },\n {\n type: 'object',\n properties: {\n bar: { type: 'string' },\n },\n },\n ],\n }),\n ).toMatchObject({ foo: 1 })\n })\n\n it('uses the first example in object anyOf when type is not defined', () => {\n expect(\n getExampleFromSchema({\n anyOf: [\n {\n type: 'object',\n properties: {\n foo: { type: 'number' },\n },\n },\n {\n type: 'object',\n properties: {\n bar: { type: 'string' },\n },\n },\n ],\n }),\n ).toMatchObject({ foo: 1 })\n })\n\n it('uses the first example in object oneOf when type is not defined', () => {\n expect(\n getExampleFromSchema({\n oneOf: [\n {\n type: 'object',\n properties: {\n foo: { type: 'number' },\n },\n },\n {\n type: 'object',\n properties: {\n bar: { type: 'string' },\n },\n },\n ],\n }),\n ).toMatchObject({ foo: 1 })\n })\n\n it('uses all examples in object allOf', () => {\n expect(\n getExampleFromSchema({\n allOf: [\n {\n type: 'object',\n properties: {\n foo: { type: 'number' },\n },\n },\n {\n type: 'object',\n properties: {\n bar: { type: 'string' },\n },\n },\n ],\n }),\n ).toMatchObject({ foo: 1, bar: '' })\n })\n\n it('merges allOf items in arrays', () => {\n expect(\n getExampleFromSchema({\n type: 'array',\n items: {\n allOf: [\n {\n type: 'object',\n properties: {\n foobar: { type: 'string' },\n foo: { type: 'number' },\n },\n },\n {\n type: 'object',\n properties: {\n bar: { type: 'string' },\n },\n },\n ],\n },\n }),\n ).toMatchObject([{ foobar: '', foo: 1, bar: '' }])\n })\n\n it('handles array items with allOf containing objects', () => {\n expect(\n getExampleFromSchema({\n type: 'array',\n items: {\n allOf: [\n {\n type: 'object',\n properties: {\n id: { type: 'number', example: 1 },\n },\n },\n {\n type: 'object',\n properties: {\n name: { type: 'string', example: 'test' },\n },\n },\n ],\n },\n }),\n ).toMatchObject([\n {\n id: 1,\n name: 'test',\n },\n ])\n })\n\n it('uses the first example in array anyOf', () => {\n expect(\n getExampleFromSchema({\n type: 'array',\n items: {\n anyOf: [\n {\n type: 'string',\n example: 'foobar',\n },\n {\n type: 'string',\n example: 'barfoo',\n },\n ],\n },\n }),\n ).toMatchObject(['foobar'])\n })\n\n it('uses one example in array oneOf', () => {\n expect(\n getExampleFromSchema({\n type: 'array',\n items: {\n oneOf: [\n {\n type: 'string',\n example: 'foobar',\n },\n {\n type: 'string',\n example: 'barfoo',\n },\n ],\n },\n }),\n ).toMatchObject(['foobar'])\n })\n\n it('uses all examples in array allOf', () => {\n expect(\n getExampleFromSchema({\n type: 'array',\n items: {\n allOf: [\n {\n type: 'string',\n example: 'foobar',\n },\n {\n type: 'string',\n example: 'barfoo',\n },\n ],\n },\n }),\n ).toMatchObject(['foobar', 'barfoo'])\n })\n\n it('uses the default value', () => {\n const schema = {\n type: 'string',\n default: 'BAD_REQUEST_EXCEPTION',\n }\n\n expect(getExampleFromSchema(schema)).toBe('BAD_REQUEST_EXCEPTION')\n })\n\n it('uses 1 as the default for a number', () => {\n expect(\n getExampleFromSchema({\n type: 'number',\n }),\n ).toMatchObject(1)\n })\n\n it('uses min as the default for a number', () => {\n expect(\n getExampleFromSchema({\n type: 'number',\n min: 200,\n }),\n ).toMatchObject(200)\n })\n\n it('returns plaintext', () => {\n expect(\n getExampleFromSchema({\n type: 'string',\n example: 'foobar',\n }),\n ).toEqual('foobar')\n })\n\n it('converts a whole schema to an example response', () => {\n const schema = {\n required: ['name', 'photoUrls'],\n type: 'object',\n properties: {\n id: {\n type: 'integer',\n format: 'int64',\n example: 10,\n },\n name: {\n type: 'string',\n example: 'doggie',\n },\n category: {\n type: 'object',\n properties: {\n id: {\n type: 'integer',\n format: 'int64',\n example: 1,\n },\n name: {\n type: 'string',\n example: 'Dogs',\n },\n },\n xml: {\n name: 'category',\n },\n },\n photoUrls: {\n type: 'array',\n xml: {\n wrapped: true,\n },\n items: {\n type: 'string',\n xml: {\n name: 'photoUrl',\n },\n },\n },\n tags: {\n type: 'array',\n xml: {\n wrapped: true,\n },\n items: {\n type: 'object',\n properties: {\n id: {\n type: 'integer',\n format: 'int64',\n },\n name: {\n type: 'string',\n },\n },\n xml: {\n name: 'tag',\n },\n },\n },\n status: {\n type: 'string',\n description: 'pet status in the store',\n enum: ['available', 'pending', 'sold'],\n },\n },\n xml: {\n name: 'pet',\n },\n }\n\n expect(getExampleFromSchema(schema)).toMatchObject({\n id: 10,\n name: 'doggie',\n category: {\n id: 1,\n name: 'Dogs',\n },\n photoUrls: [''],\n tags: [\n {\n id: 1,\n name: '',\n },\n ],\n status: 'available',\n })\n })\n\n it('outputs XML', () => {\n expect(\n getExampleFromSchema(\n {\n type: 'object',\n properties: {\n id: {\n example: 1,\n xml: {\n name: 'foo',\n },\n },\n },\n },\n { xml: true },\n ),\n ).toMatchObject({\n foo: 1,\n })\n })\n\n it('add XML wrappers where needed', () => {\n expect(\n getExampleFromSchema(\n {\n type: 'object',\n properties: {\n photoUrls: {\n type: 'array',\n xml: {\n wrapped: true,\n },\n items: {\n type: 'string',\n example: 'https://example.com',\n xml: {\n name: 'photoUrl',\n },\n },\n },\n },\n },\n { xml: true },\n ),\n ).toMatchObject({\n photoUrls: [{ photoUrl: 'https://example.com' }],\n })\n })\n\n it('doesn\u2019t wrap items when not needed', () => {\n expect(\n getExampleFromSchema(\n {\n type: 'object',\n properties: {\n photoUrls: {\n type: 'array',\n items: {\n type: 'string',\n example: 'https://example.com',\n xml: {\n name: 'photoUrl',\n },\n },\n },\n },\n },\n { xml: true },\n ),\n ).toMatchObject({\n photoUrls: ['https://example.com'],\n })\n })\n\n it('use the first item of oneOf', () => {\n expect(\n getExampleFromSchema({\n oneOf: [\n {\n maxLength: 255,\n type: 'string',\n },\n {\n type: 'null',\n },\n ],\n }),\n ).toBe('')\n })\n\n it('works with allOf', () => {\n expect(\n getExampleFromSchema({\n allOf: [\n {\n type: 'string',\n },\n ],\n }),\n ).toBe('')\n })\n\n it('uses all schemas in allOf', () => {\n expect(\n getExampleFromSchema({\n allOf: [\n {\n type: 'object',\n properties: {\n id: {\n example: 10,\n },\n },\n },\n {\n type: 'object',\n properties: {\n title: {\n example: 'Foobar',\n },\n },\n },\n ],\n }),\n ).toMatchObject({\n id: 10,\n title: 'Foobar',\n })\n })\n\n it('returns null for unknown types', () => {\n expect(\n getExampleFromSchema({\n type: 'fantasy',\n }),\n ).toBe(null)\n })\n\n it('returns readOnly attributes by default', () => {\n expect(\n getExampleFromSchema({\n example: 'foobar',\n readOnly: true,\n }),\n ).toBe('foobar')\n })\n\n it('returns readOnly attributes in read mode', () => {\n expect(\n getExampleFromSchema(\n {\n example: 'foobar',\n readOnly: true,\n },\n {\n mode: 'read',\n },\n ),\n ).toBe('foobar')\n })\n\n it('doesn\u2019t return readOnly attributes in write mode', () => {\n expect(\n getExampleFromSchema(\n {\n example: 'foobar',\n readOnly: true,\n },\n {\n mode: 'write',\n },\n ),\n ).toBe(undefined)\n })\n\n it('returns writeOnly attributes by default', () => {\n expect(\n getExampleFromSchema({\n example: 'foobar',\n writeOnly: true,\n }),\n ).toBe('foobar')\n })\n\n it('returns writeOnly attributes in write mode', () => {\n expect(\n getExampleFromSchema(\n {\n example: 'foobar',\n writeOnly: true,\n },\n {\n mode: 'write',\n },\n ),\n ).toBe('foobar')\n })\n\n it('doesn\u2019t return writeOnly attributes in read mode', () => {\n expect(\n getExampleFromSchema(\n {\n example: 'foobar',\n writeOnly: true,\n },\n {\n mode: 'read',\n },\n ),\n ).toBe(undefined)\n })\n\n it('allows any additonalProperty', () => {\n expect(\n getExampleFromSchema({\n type: 'object',\n additionalProperties: {},\n }),\n ).toMatchObject({\n ANY_ADDITIONAL_PROPERTY: 'anything',\n })\n\n expect(\n getExampleFromSchema({\n type: 'object',\n additionalProperties: true,\n }),\n ).toMatchObject({\n ANY_ADDITIONAL_PROPERTY: 'anything',\n })\n })\n\n it('adds an additionalProperty with specific types', () => {\n expect(\n getExampleFromSchema({\n type: 'object',\n additionalProperties: {\n type: 'integer',\n },\n }),\n ).toMatchObject({\n ANY_ADDITIONAL_PROPERTY: 1,\n })\n\n expect(\n getExampleFromSchema({\n type: 'object',\n additionalProperties: {\n type: 'boolean',\n },\n }),\n ).toMatchObject({\n ANY_ADDITIONAL_PROPERTY: true,\n })\n\n expect(\n getExampleFromSchema({\n type: 'object',\n additionalProperties: {\n type: 'boolean',\n default: false,\n },\n }),\n ).toMatchObject({\n ANY_ADDITIONAL_PROPERTY: false,\n })\n\n expect(\n getExampleFromSchema({\n type: 'object',\n additionalProperties: {\n type: 'string',\n },\n }),\n ).toMatchObject({\n ANY_ADDITIONAL_PROPERTY: '',\n })\n\n expect(\n getExampleFromSchema({\n type: 'object',\n additionalProperties: {\n type: 'object',\n properties: {\n foo: {\n type: 'string',\n },\n },\n },\n }),\n ).toMatchObject({\n ANY_ADDITIONAL_PROPERTY: {\n foo: '',\n },\n })\n })\n\n it('works with anyOf', () => {\n expect(\n getExampleFromSchema({\n title: 'Foo',\n type: 'object',\n anyOf: [\n {\n type: 'object',\n required: ['a'],\n properties: {\n a: {\n type: 'integer',\n format: 'int32',\n },\n },\n },\n {\n type: 'object',\n required: ['b'],\n properties: {\n b: {\n type: 'string',\n },\n },\n },\n ],\n required: ['c'],\n properties: {\n c: {\n type: 'boolean',\n },\n },\n }),\n ).toStrictEqual({\n a: 1,\n c: true,\n })\n })\n\n it('handles patternProperties', () => {\n expect(\n getExampleFromSchema({\n type: 'object',\n patternProperties: {\n '^(.*)$': {\n type: 'object',\n properties: {\n dataId: {\n type: 'string',\n },\n link: {\n anyOf: [\n {\n format: 'uri',\n type: 'string',\n example: 'https://example.com',\n },\n {\n type: 'null',\n },\n ],\n },\n },\n required: ['dataId', 'link'],\n },\n },\n }),\n ).toStrictEqual({\n '^(.*)$': {\n dataId: '',\n link: 'https://example.com',\n },\n })\n })\n\n describe('circular references', () => {\n it('deals with circular references', () => {\n const schema = {\n type: 'object',\n properties: {\n foobar: {},\n },\n }\n\n // Create a circular reference\n schema.properties.foobar = schema\n\n // 10 levels deep, that\u2019s enough. It should return null then.\n expect(getExampleFromSchema(schema)).toStrictEqual({\n foobar: {\n foobar: {\n foobar: {\n foobar: {\n foobar: {\n foobar: '[Circular Reference]',\n },\n },\n },\n },\n },\n })\n })\n\n it('deals with circular references that expand horizontally', () => {\n const schema = {\n type: 'object',\n properties: {\n a: {},\n b: {},\n c: {},\n d: {},\n e: {},\n f: {},\n g: {},\n h: {},\n i: {},\n j: {},\n k: {},\n l: {},\n m: {},\n n: {},\n o: {},\n p: {},\n q: {},\n r: {},\n s: {},\n t: {},\n u: {},\n v: {},\n w: {},\n x: {},\n y: {},\n z: {},\n },\n }\n\n // Create a circular reference for each property\n schema.properties.a = schema\n schema.properties.b = schema\n schema.properties.c = schema\n schema.properties.d = schema\n schema.properties.e = schema\n schema.properties.f = schema\n schema.properties.g = schema\n schema.properties.h = schema\n schema.properties.i = schema\n schema.properties.j = schema\n schema.properties.k = schema\n schema.properties.l = schema\n schema.properties.m = schema\n schema.properties.n = schema\n schema.properties.o = schema\n schema.properties.p = schema\n schema.properties.q = schema\n schema.properties.r = schema\n schema.properties.s = schema\n schema.properties.t = schema\n schema.properties.u = schema\n schema.properties.v = schema\n schema.properties.w = schema\n schema.properties.x = schema\n schema.properties.y = schema\n schema.properties.z = schema\n\n const example = getExampleFromSchema(schema)\n expect(example).toBeInstanceOf(Object)\n expect(Object.keys(example).length).toBe(26)\n })\n })\n\n it('omits deprecated properties', () => {\n expect(\n getExampleFromSchema({\n type: 'object',\n properties: {\n name: {\n type: 'string',\n example: 'test',\n },\n oldField: {\n type: 'string',\n example: 'should not appear',\n deprecated: true,\n },\n },\n }),\n ).toStrictEqual({\n name: 'test',\n })\n })\n})\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,44 +1,24 @@
1
- import { getExampleFromSchema } from './get-example-from-schema.js';
2
-
3
- /**
4
- * Get the query parameters from an operation.
5
- *
6
- * Example: [ { name: 'foobar', value: '' } ]
7
- *
8
- * - OpenAPI 3.x: Possible values are “query”, “header”, “path” or “cookie”.
9
- * - Swagger 2.0: Possible values are "query", "header", "path", "formData" or "body".
10
- */
1
+ import { getExampleFromSchema } from "./get-example-from-schema.js";
11
2
  function getParametersFromOperation(operation, where, requiredOnly = true) {
12
- const parameters = [...(operation.pathParameters || []), ...(operation.information?.parameters || [])];
13
- const params = parameters
14
- // query, path, header, cookie?
15
- .filter((parameter) => parameter.in === where)
16
- // don’t add optional parameters
17
- .filter((parameter) => (requiredOnly && parameter.required) || !requiredOnly)
18
- // transform them
19
- .map((parameter) => ({
20
- name: parameter.name,
21
- description: parameter.description ?? null,
22
- value: parameter.example
23
- ? parameter.example
24
- : parameter.schema
25
- ? getExampleFromSchema(parameter.schema, { mode: 'write' })
26
- : '',
27
- required: parameter.required ?? false,
28
- enabled: parameter.required ?? false,
29
- }));
30
- return params.sort((a, b) => {
31
- // Move a up if a is required and b is not
32
- if (a.required && !b.required) {
33
- return -1;
34
- }
35
- // Move b up if b is required and a is not
36
- if (!a.required && b.required) {
37
- return 1;
38
- }
39
- // Keep original order if both have the same required status
40
- return 0;
41
- });
3
+ const parameters = [...operation.pathParameters || [], ...operation.information?.parameters || []];
4
+ const params = parameters.filter((parameter) => parameter.in === where).filter((parameter) => requiredOnly && parameter.required || !requiredOnly).map((parameter) => ({
5
+ name: parameter.name,
6
+ description: parameter.description ?? null,
7
+ value: parameter.example ? parameter.example : parameter.schema ? getExampleFromSchema(parameter.schema, { mode: "write" }) : "",
8
+ required: parameter.required ?? false,
9
+ enabled: parameter.required ?? false
10
+ }));
11
+ return params.sort((a, b) => {
12
+ if (a.required && !b.required) {
13
+ return -1;
14
+ }
15
+ if (!a.required && b.required) {
16
+ return 1;
17
+ }
18
+ return 0;
19
+ });
42
20
  }
43
-
44
- export { getParametersFromOperation };
21
+ export {
22
+ getParametersFromOperation
23
+ };
24
+ //# sourceMappingURL=get-parameters-from-operation.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/spec-getters/get-parameters-from-operation.ts"],
4
+ "sourcesContent": ["import type { BaseParameter, TransformedOperation } from '@scalar/types/legacy'\n\nimport { getExampleFromSchema } from './get-example-from-schema'\n\n/**\n * Get the query parameters from an operation.\n *\n * Example: [ { name: 'foobar', value: '' } ]\n *\n * - OpenAPI 3.x: Possible values are \u201Cquery\u201D, \u201Cheader\u201D, \u201Cpath\u201D or \u201Ccookie\u201D.\n * - Swagger 2.0: Possible values are \"query\", \"header\", \"path\", \"formData\" or \"body\".\n */\nexport function getParametersFromOperation(\n operation: Omit<TransformedOperation, 'httpVerb'>,\n where: 'query' | 'header' | 'path' | 'cookie' | 'formData' | 'body',\n requiredOnly: boolean = true,\n): BaseParameter[] {\n const parameters = [...(operation.pathParameters || []), ...(operation.information?.parameters || [])]\n\n const params = parameters\n // query, path, header, cookie?\n .filter((parameter) => parameter.in === where)\n // don\u2019t add optional parameters\n .filter((parameter) => (requiredOnly && parameter.required) || !requiredOnly)\n // transform them\n .map((parameter) => ({\n name: parameter.name,\n description: parameter.description ?? null,\n value: parameter.example\n ? parameter.example\n : parameter.schema\n ? getExampleFromSchema(parameter.schema, { mode: 'write' })\n : '',\n required: parameter.required ?? false,\n enabled: parameter.required ?? false,\n }))\n\n return params.sort((a, b) => {\n // Move a up if a is required and b is not\n if (a.required && !b.required) {\n return -1\n }\n // Move b up if b is required and a is not\n if (!a.required && b.required) {\n return 1\n }\n // Keep original order if both have the same required status\n return 0\n })\n}\n"],
5
+ "mappings": "AAEA,SAAS,4BAA4B;AAU9B,SAAS,2BACd,WACA,OACA,eAAwB,MACP;AACjB,QAAM,aAAa,CAAC,GAAI,UAAU,kBAAkB,CAAC,GAAI,GAAI,UAAU,aAAa,cAAc,CAAC,CAAE;AAErG,QAAM,SAAS,WAEZ,OAAO,CAAC,cAAc,UAAU,OAAO,KAAK,EAE5C,OAAO,CAAC,cAAe,gBAAgB,UAAU,YAAa,CAAC,YAAY,EAE3E,IAAI,CAAC,eAAe;AAAA,IACnB,MAAM,UAAU;AAAA,IAChB,aAAa,UAAU,eAAe;AAAA,IACtC,OAAO,UAAU,UACb,UAAU,UACV,UAAU,SACR,qBAAqB,UAAU,QAAQ,EAAE,MAAM,QAAQ,CAAC,IACxD;AAAA,IACN,UAAU,UAAU,YAAY;AAAA,IAChC,SAAS,UAAU,YAAY;AAAA,EACjC,EAAE;AAEJ,SAAO,OAAO,KAAK,CAAC,GAAG,MAAM;AAE3B,QAAI,EAAE,YAAY,CAAC,EAAE,UAAU;AAC7B,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,EAAE,YAAY,EAAE,UAAU;AAC7B,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,178 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { getParametersFromOperation } from "./get-parameters-from-operation.js";
3
+ describe("getParametersFromOperation", () => {
4
+ it("operation query parameters", () => {
5
+ const request = getParametersFromOperation(
6
+ {
7
+ path: "/foobar",
8
+ information: {
9
+ parameters: [
10
+ {
11
+ in: "query",
12
+ name: "api_key",
13
+ required: true
14
+ }
15
+ ]
16
+ }
17
+ },
18
+ "query"
19
+ );
20
+ expect(request).toMatchObject([
21
+ {
22
+ name: "api_key",
23
+ value: ""
24
+ }
25
+ ]);
26
+ });
27
+ it("path query parameters", () => {
28
+ const request = getParametersFromOperation(
29
+ {
30
+ path: "/foobar",
31
+ pathParameters: [
32
+ {
33
+ in: "query",
34
+ name: "api_key",
35
+ required: true
36
+ }
37
+ ]
38
+ },
39
+ "query"
40
+ );
41
+ expect(request).toMatchObject([
42
+ {
43
+ name: "api_key",
44
+ value: ""
45
+ }
46
+ ]);
47
+ });
48
+ it("path + operation query parameters", () => {
49
+ const request = getParametersFromOperation(
50
+ {
51
+ path: "/foobar",
52
+ operationId: "foobar",
53
+ name: "foobar",
54
+ description: "",
55
+ pathParameters: [
56
+ {
57
+ in: "query",
58
+ name: "foo",
59
+ required: true
60
+ }
61
+ ],
62
+ information: {
63
+ parameters: [
64
+ {
65
+ in: "query",
66
+ name: "bar",
67
+ required: true
68
+ }
69
+ ]
70
+ }
71
+ },
72
+ "query"
73
+ );
74
+ expect(request).toMatchObject([
75
+ {
76
+ name: "foo",
77
+ value: ""
78
+ },
79
+ {
80
+ name: "bar",
81
+ value: ""
82
+ }
83
+ ]);
84
+ });
85
+ it("parameters with `required` and `description`", () => {
86
+ const request = getParametersFromOperation(
87
+ {
88
+ path: "/foobar",
89
+ pathParameters: [
90
+ {
91
+ name: "api_token",
92
+ in: "query",
93
+ description: "Your API token",
94
+ required: true
95
+ }
96
+ ],
97
+ information: {
98
+ parameters: [
99
+ {
100
+ name: "id",
101
+ in: "query",
102
+ description: "A Query Parameter"
103
+ }
104
+ ]
105
+ }
106
+ },
107
+ "query"
108
+ );
109
+ expect(request).toStrictEqual([
110
+ {
111
+ name: "api_token",
112
+ value: "",
113
+ description: "Your API token",
114
+ required: true,
115
+ enabled: true
116
+ }
117
+ ]);
118
+ });
119
+ it("parameters use example", () => {
120
+ const request = getParametersFromOperation(
121
+ {
122
+ path: "/foobar",
123
+ information: {
124
+ parameters: [
125
+ {
126
+ name: "id",
127
+ in: "query",
128
+ example: 123,
129
+ required: true
130
+ }
131
+ ]
132
+ }
133
+ },
134
+ "query"
135
+ );
136
+ expect(request).toStrictEqual([
137
+ {
138
+ name: "id",
139
+ description: null,
140
+ value: 123,
141
+ required: true,
142
+ enabled: true
143
+ }
144
+ ]);
145
+ });
146
+ it("path parameters", () => {
147
+ const request = getParametersFromOperation(
148
+ {
149
+ path: "/pet/{petId}",
150
+ information: {
151
+ parameters: [
152
+ {
153
+ name: "petId",
154
+ in: "path",
155
+ description: "Pet id to delete",
156
+ required: true,
157
+ schema: {
158
+ type: "integer",
159
+ format: "int64"
160
+ }
161
+ }
162
+ ]
163
+ }
164
+ },
165
+ "path"
166
+ );
167
+ expect(request).toStrictEqual([
168
+ {
169
+ name: "petId",
170
+ description: "Pet id to delete",
171
+ value: 1,
172
+ required: true,
173
+ enabled: true
174
+ }
175
+ ]);
176
+ });
177
+ });
178
+ //# sourceMappingURL=get-parameters-from-operation.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/spec-getters/get-parameters-from-operation.test.ts"],
4
+ "sourcesContent": ["import type { TransformedOperation } from '@scalar/types/legacy'\nimport { describe, expect, it } from 'vitest'\n\nimport { getParametersFromOperation } from './get-parameters-from-operation'\n\ndescribe('getParametersFromOperation', () => {\n it('operation query parameters', () => {\n const request = getParametersFromOperation(\n {\n path: '/foobar',\n information: {\n parameters: [\n {\n in: 'query',\n name: 'api_key',\n required: true,\n },\n ],\n },\n },\n 'query',\n )\n\n expect(request).toMatchObject([\n {\n name: 'api_key',\n value: '',\n },\n ])\n })\n\n it('path query parameters', () => {\n const request = getParametersFromOperation(\n {\n path: '/foobar',\n pathParameters: [\n {\n in: 'query',\n name: 'api_key',\n required: true,\n },\n ],\n },\n 'query',\n )\n\n expect(request).toMatchObject([\n {\n name: 'api_key',\n value: '',\n },\n ])\n })\n\n it('path + operation query parameters', () => {\n const request = getParametersFromOperation(\n {\n path: '/foobar',\n operationId: 'foobar',\n name: 'foobar',\n description: '',\n pathParameters: [\n {\n in: 'query',\n name: 'foo',\n required: true,\n },\n ],\n information: {\n parameters: [\n {\n in: 'query',\n name: 'bar',\n required: true,\n },\n ],\n },\n },\n 'query',\n )\n\n expect(request).toMatchObject([\n {\n name: 'foo',\n value: '',\n },\n {\n name: 'bar',\n value: '',\n },\n ])\n })\n\n it('parameters with `required` and `description`', () => {\n const request = getParametersFromOperation(\n {\n path: '/foobar',\n pathParameters: [\n {\n name: 'api_token',\n in: 'query',\n description: 'Your API token',\n required: true,\n },\n ],\n information: {\n parameters: [\n {\n name: 'id',\n in: 'query',\n description: 'A Query Parameter',\n },\n ],\n },\n } as TransformedOperation,\n 'query',\n )\n\n expect(request).toStrictEqual([\n {\n name: 'api_token',\n value: '',\n description: 'Your API token',\n required: true,\n enabled: true,\n },\n ])\n })\n\n it('parameters use example', () => {\n const request = getParametersFromOperation(\n {\n path: '/foobar',\n information: {\n parameters: [\n {\n name: 'id',\n in: 'query',\n example: 123,\n required: true,\n },\n ],\n },\n } as TransformedOperation,\n 'query',\n )\n\n expect(request).toStrictEqual([\n {\n name: 'id',\n description: null,\n value: 123,\n required: true,\n enabled: true,\n },\n ])\n })\n\n it('path parameters', () => {\n const request = getParametersFromOperation(\n {\n path: '/pet/{petId}',\n information: {\n parameters: [\n {\n name: 'petId',\n in: 'path',\n description: 'Pet id to delete',\n required: true,\n schema: {\n type: 'integer',\n format: 'int64',\n },\n },\n ],\n },\n } as TransformedOperation,\n 'path',\n )\n\n expect(request).toStrictEqual([\n {\n name: 'petId',\n description: 'Pet id to delete',\n value: 1,\n required: true,\n enabled: true,\n },\n ])\n })\n})\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }