@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/entities/spec/parameters.test.ts"],
4
+ "sourcesContent": ["import { oasParameterSchema } from '@/entities/spec/parameters'\nimport { describe, expect, it } from 'vitest'\nimport { z } from 'zod'\n\ndescribe('oasParameterSchema', () => {\n it('should validate a parameter with a correct example', () => {\n const validParameterWithExample = {\n in: 'query',\n name: 'limit',\n example: 10,\n }\n\n expect(() => oasParameterSchema.parse(validParameterWithExample)).not.toThrow()\n })\n\n it('should validate examples as a record with correct structure', () => {\n const validExamples = {\n milkyWay: {\n value: 'Milky Way',\n summary: 'Our galaxy',\n },\n andromeda: {\n value: 'Andromeda',\n summary: 'Nearest major galaxy',\n },\n }\n\n const validParameter = {\n in: 'query',\n name: 'galaxy',\n examples: validExamples,\n }\n\n expect(() => oasParameterSchema.parse(validParameter)).not.toThrow()\n })\n\n it('should fail validation if examples have incorrect structure', () => {\n const invalidExamples = {\n milkyWay: {\n value: 'Milky Way',\n // Summary is optional, so this should not cause a failure\n },\n andromeda: 'This should be an object, not a string',\n }\n\n const invalidParameter = {\n in: 'query',\n name: 'galaxy',\n examples: invalidExamples,\n }\n\n expect(() => oasParameterSchema.parse(invalidParameter)).toThrow(z.ZodError)\n })\n\n it('should validate examples as an array', () => {\n const validParameter = {\n in: 'query',\n name: 'galaxy',\n examples: ['Milky Way', 'Andromeda'],\n }\n\n expect(() => oasParameterSchema.parse(validParameter)).not.toThrow()\n })\n\n it('should validate examples with a single array item', () => {\n const validParameter = {\n in: 'query',\n name: 'galaxy',\n examples: ['Milky Way'],\n }\n\n expect(() => oasParameterSchema.parse(validParameter)).not.toThrow()\n })\n\n it('should validate with an empty array of examples', () => {\n const validParameter = {\n in: 'query',\n name: 'galaxy',\n examples: [],\n }\n\n expect(() => oasParameterSchema.parse(validParameter)).not.toThrow()\n })\n})\n"],
5
+ "mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,UAAU,QAAQ,UAAU;AACrC,SAAS,SAAS;AAElB,SAAS,sBAAsB,MAAM;AACnC,KAAG,sDAAsD,MAAM;AAC7D,UAAM,4BAA4B;AAAA,MAChC,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAEA,WAAO,MAAM,mBAAmB,MAAM,yBAAyB,CAAC,EAAE,IAAI,QAAQ;AAAA,EAChF,CAAC;AAED,KAAG,+DAA+D,MAAM;AACtE,UAAM,gBAAgB;AAAA,MACpB,UAAU;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,QACT,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF;AAEA,UAAM,iBAAiB;AAAA,MACrB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAEA,WAAO,MAAM,mBAAmB,MAAM,cAAc,CAAC,EAAE,IAAI,QAAQ;AAAA,EACrE,CAAC;AAED,KAAG,+DAA+D,MAAM;AACtE,UAAM,kBAAkB;AAAA,MACtB,UAAU;AAAA,QACR,OAAO;AAAA;AAAA,MAET;AAAA,MACA,WAAW;AAAA,IACb;AAEA,UAAM,mBAAmB;AAAA,MACvB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAEA,WAAO,MAAM,mBAAmB,MAAM,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ;AAAA,EAC7E,CAAC;AAED,KAAG,wCAAwC,MAAM;AAC/C,UAAM,iBAAiB;AAAA,MACrB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,UAAU,CAAC,aAAa,WAAW;AAAA,IACrC;AAEA,WAAO,MAAM,mBAAmB,MAAM,cAAc,CAAC,EAAE,IAAI,QAAQ;AAAA,EACrE,CAAC;AAED,KAAG,qDAAqD,MAAM;AAC5D,UAAM,iBAAiB;AAAA,MACrB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,UAAU,CAAC,WAAW;AAAA,IACxB;AAEA,WAAO,MAAM,mBAAmB,MAAM,cAAc,CAAC,EAAE,IAAI,QAAQ;AAAA,EACrE,CAAC;AAED,KAAG,mDAAmD,MAAM;AAC1D,UAAM,iBAAiB;AAAA,MACrB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,UAAU,CAAC;AAAA,IACb;AAEA,WAAO,MAAM,mBAAmB,MAAM,cAAc,CAAC,EAAE,IAAI,QAAQ;AAAA,EACrE,CAAC;AACH,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,637 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { operationSchema } from "./operation.js";
3
+ import {
4
+ convertExampleToXScalar,
5
+ createExampleFromRequest,
6
+ createParamInstance,
7
+ parameterArrayToObject,
8
+ requestExampleSchema
9
+ } from "./request-examples.js";
10
+ describe("createParamInstance", () => {
11
+ it("works with schema enum type number", () => {
12
+ const result = createParamInstance({
13
+ in: "path",
14
+ name: "foo",
15
+ required: true,
16
+ deprecated: false,
17
+ schema: {
18
+ default: 1.2,
19
+ type: "number",
20
+ enum: [1.2, 2.1, 3]
21
+ }
22
+ });
23
+ expect(result).toEqual({
24
+ key: "foo",
25
+ value: "1.2",
26
+ enabled: true,
27
+ description: void 0,
28
+ required: true,
29
+ enum: ["1.2", "2.1", "3"],
30
+ type: "number",
31
+ default: 1.2
32
+ });
33
+ });
34
+ it("works with schema enum type string", () => {
35
+ const result = createParamInstance({
36
+ in: "path",
37
+ name: "foo",
38
+ required: true,
39
+ deprecated: false,
40
+ schema: {
41
+ default: "foo",
42
+ type: "string",
43
+ enum: ["foo", "bar"]
44
+ }
45
+ });
46
+ expect(result).toEqual({
47
+ key: "foo",
48
+ value: "foo",
49
+ enabled: true,
50
+ description: void 0,
51
+ required: true,
52
+ enum: ["foo", "bar"],
53
+ type: "string",
54
+ default: "foo"
55
+ });
56
+ });
57
+ it("works with schema enum type integer", () => {
58
+ const result = createParamInstance({
59
+ in: "query",
60
+ name: "foo",
61
+ required: true,
62
+ deprecated: false,
63
+ schema: {
64
+ default: 1,
65
+ type: "integer",
66
+ enum: [1, 2, 3]
67
+ }
68
+ });
69
+ expect(result).toEqual({
70
+ key: "foo",
71
+ value: "1",
72
+ enabled: true,
73
+ description: void 0,
74
+ required: true,
75
+ enum: ["1", "2", "3"],
76
+ type: "integer",
77
+ default: 1
78
+ });
79
+ });
80
+ it("works with schema enum type boolean", () => {
81
+ const result = createParamInstance({
82
+ in: "query",
83
+ name: "foo",
84
+ required: true,
85
+ deprecated: false,
86
+ schema: {
87
+ default: false,
88
+ type: "boolean",
89
+ enum: [true, false]
90
+ }
91
+ });
92
+ expect(result).toEqual({
93
+ key: "foo",
94
+ value: "false",
95
+ enabled: true,
96
+ description: void 0,
97
+ required: true,
98
+ enum: ["true", "false"],
99
+ type: "boolean",
100
+ default: false
101
+ });
102
+ });
103
+ it("works with schema examples type number", () => {
104
+ const result = createParamInstance({
105
+ in: "path",
106
+ name: "foo",
107
+ required: true,
108
+ deprecated: false,
109
+ schema: {
110
+ default: 1.2,
111
+ type: "number",
112
+ examples: [1.2, 2.1, 3]
113
+ }
114
+ });
115
+ expect(result).toEqual({
116
+ key: "foo",
117
+ value: "1.2",
118
+ enabled: true,
119
+ description: void 0,
120
+ required: true,
121
+ examples: ["1.2", "2.1", "3"],
122
+ type: "number",
123
+ default: 1.2
124
+ });
125
+ });
126
+ it("works with schema examples type string", () => {
127
+ const result = createParamInstance({
128
+ in: "query",
129
+ name: "foo",
130
+ required: true,
131
+ deprecated: false,
132
+ schema: {
133
+ default: false,
134
+ type: "boolean",
135
+ examples: ["foo", "bar"]
136
+ }
137
+ });
138
+ expect(result).toEqual({
139
+ key: "foo",
140
+ value: "false",
141
+ enabled: true,
142
+ description: void 0,
143
+ required: true,
144
+ type: "boolean",
145
+ default: false,
146
+ examples: ["foo", "bar"]
147
+ });
148
+ });
149
+ it("works with schema examples type integer", () => {
150
+ const result = createParamInstance({
151
+ in: "query",
152
+ name: "foo",
153
+ required: true,
154
+ deprecated: false,
155
+ schema: {
156
+ default: 1,
157
+ type: "integer",
158
+ examples: [1, 2, 3]
159
+ }
160
+ });
161
+ expect(result).toEqual({
162
+ key: "foo",
163
+ value: "1",
164
+ enabled: true,
165
+ description: void 0,
166
+ required: true,
167
+ examples: ["1", "2", "3"],
168
+ type: "integer",
169
+ default: 1
170
+ });
171
+ });
172
+ it("works with schema examples type boolean", () => {
173
+ const result = createParamInstance({
174
+ in: "query",
175
+ name: "foo",
176
+ required: true,
177
+ deprecated: false,
178
+ schema: {
179
+ default: false,
180
+ type: "boolean",
181
+ examples: [true, false]
182
+ }
183
+ });
184
+ expect(result).toEqual({
185
+ key: "foo",
186
+ value: "false",
187
+ enabled: true,
188
+ description: void 0,
189
+ required: true,
190
+ examples: ["true", "false"],
191
+ type: "boolean",
192
+ default: false
193
+ });
194
+ });
195
+ it("works with array of types", () => {
196
+ const result = createParamInstance({
197
+ in: "path",
198
+ name: "foo",
199
+ required: true,
200
+ deprecated: false,
201
+ schema: {
202
+ type: ["string", "null"]
203
+ }
204
+ });
205
+ expect(result).toEqual({
206
+ key: "foo",
207
+ enabled: true,
208
+ enum: void 0,
209
+ examples: void 0,
210
+ description: void 0,
211
+ required: true,
212
+ type: "string",
213
+ nullable: true,
214
+ value: ""
215
+ });
216
+ });
217
+ it("works with content examples", () => {
218
+ const result = createParamInstance({
219
+ in: "query",
220
+ name: "foo",
221
+ required: false,
222
+ deprecated: false,
223
+ content: {
224
+ "application/json": {
225
+ schema: { type: "integer", maximum: 50 },
226
+ examples: {
227
+ zero: { value: 0 },
228
+ max: { value: 50 }
229
+ }
230
+ }
231
+ }
232
+ });
233
+ expect(result).toEqual({
234
+ key: "foo",
235
+ value: "0",
236
+ enabled: false,
237
+ description: void 0,
238
+ required: false
239
+ });
240
+ });
241
+ it("works with content example", () => {
242
+ const result = createParamInstance({
243
+ in: "query",
244
+ name: "foo",
245
+ required: false,
246
+ deprecated: false,
247
+ content: {
248
+ "application/json": {
249
+ schema: { type: "integer" },
250
+ example: 42
251
+ }
252
+ }
253
+ });
254
+ expect(result).toEqual({
255
+ key: "foo",
256
+ value: "42",
257
+ enabled: false,
258
+ description: void 0,
259
+ required: false
260
+ });
261
+ });
262
+ it("works with parameter example", () => {
263
+ const result = createParamInstance({
264
+ in: "query",
265
+ name: "foo",
266
+ required: false,
267
+ deprecated: false,
268
+ example: 42,
269
+ schema: {
270
+ type: "integer",
271
+ example: 1
272
+ }
273
+ });
274
+ expect(result).toEqual({
275
+ key: "foo",
276
+ value: "42",
277
+ enabled: false,
278
+ description: void 0,
279
+ required: false,
280
+ type: "integer"
281
+ });
282
+ });
283
+ });
284
+ describe("parameterArrayToObject", () => {
285
+ it("converts array of parameters to key-value object", () => {
286
+ const params = [
287
+ { key: "foo", value: "bar", enabled: true },
288
+ { key: "hello", value: "world", enabled: false }
289
+ ];
290
+ const result = parameterArrayToObject(params);
291
+ expect(result).toEqual({
292
+ foo: "bar",
293
+ hello: "world"
294
+ });
295
+ });
296
+ it("handles empty array", () => {
297
+ const result = parameterArrayToObject([]);
298
+ expect(result).toEqual({});
299
+ });
300
+ });
301
+ describe("convertExampleToXScalar", () => {
302
+ it("converts raw JSON body", () => {
303
+ const example = requestExampleSchema.parse({
304
+ uid: "test-uid",
305
+ requestUid: "req-uid",
306
+ body: {
307
+ activeBody: "raw",
308
+ raw: {
309
+ encoding: "json",
310
+ value: '{"test": true}'
311
+ }
312
+ },
313
+ parameters: {
314
+ path: [{ key: "id", value: "123", enabled: true }],
315
+ headers: [{ key: "Accept", value: "*/*", enabled: true }]
316
+ }
317
+ });
318
+ const result = convertExampleToXScalar(example);
319
+ expect(result).toEqual({
320
+ body: {
321
+ encoding: "application/json",
322
+ content: '{"test": true}'
323
+ },
324
+ parameters: {
325
+ path: { id: "123" },
326
+ headers: { Accept: "*/*" }
327
+ }
328
+ });
329
+ });
330
+ it("converts form data body", () => {
331
+ const example = requestExampleSchema.parse({
332
+ uid: "test-uid",
333
+ requestUid: "req-uid",
334
+ body: {
335
+ activeBody: "formData",
336
+ formData: {
337
+ encoding: "form-data",
338
+ value: [
339
+ { key: "field1", value: "value1", enabled: true },
340
+ {
341
+ key: "file1",
342
+ value: "test.txt",
343
+ file: new Blob(["test content"], { type: "text/plain" }),
344
+ enabled: true
345
+ }
346
+ ]
347
+ }
348
+ }
349
+ });
350
+ const result = convertExampleToXScalar(example);
351
+ expect(result).toEqual({
352
+ body: {
353
+ encoding: "multipart/form-data",
354
+ content: {
355
+ field1: { type: "string", value: "value1" },
356
+ file1: { type: "file", file: null }
357
+ }
358
+ },
359
+ parameters: {
360
+ headers: {
361
+ Accept: "*/*"
362
+ }
363
+ }
364
+ });
365
+ });
366
+ it("converts binary body", () => {
367
+ const example = requestExampleSchema.parse({
368
+ uid: "test-uid",
369
+ requestUid: "req-uid",
370
+ body: {
371
+ activeBody: "binary",
372
+ binary: new Blob(["test"])
373
+ }
374
+ });
375
+ const result = convertExampleToXScalar(example);
376
+ expect(result).toEqual({
377
+ body: {
378
+ encoding: "binary",
379
+ content: "",
380
+ file: null
381
+ },
382
+ parameters: {
383
+ headers: {
384
+ Accept: "*/*"
385
+ }
386
+ }
387
+ });
388
+ });
389
+ });
390
+ describe("createExampleFromRequest", () => {
391
+ it("creates example with JSON request body", () => {
392
+ const operation = operationSchema.parse({
393
+ uid: "request-1",
394
+ path: "/test",
395
+ parameters: [
396
+ {
397
+ in: "path",
398
+ name: "id",
399
+ required: true,
400
+ deprecated: false,
401
+ schema: { type: "string", default: "123" }
402
+ }
403
+ ],
404
+ requestBody: {
405
+ content: {
406
+ "application/json": {
407
+ schema: {},
408
+ example: '{"test": true}'
409
+ }
410
+ }
411
+ }
412
+ });
413
+ const result = createExampleFromRequest(operation, "Test Example");
414
+ expect(result).toMatchObject({
415
+ requestUid: "request-1",
416
+ name: "Test Example",
417
+ body: {
418
+ activeBody: "raw",
419
+ raw: {
420
+ encoding: "json",
421
+ value: '{"test": true}'
422
+ }
423
+ },
424
+ parameters: {
425
+ path: [
426
+ {
427
+ key: "id",
428
+ value: "123",
429
+ enabled: true,
430
+ required: true
431
+ }
432
+ ],
433
+ headers: [
434
+ { key: "Accept", value: "*/*", enabled: true },
435
+ { key: "Content-Type", value: "application/json", enabled: true }
436
+ ],
437
+ query: [],
438
+ cookies: []
439
+ }
440
+ });
441
+ });
442
+ it("does not overwrite the content-type header if it exists", () => {
443
+ const operation = operationSchema.parse({
444
+ uid: "request-1",
445
+ path: "/test",
446
+ parameters: [
447
+ {
448
+ in: "path",
449
+ name: "id",
450
+ required: true,
451
+ deprecated: false,
452
+ schema: { type: "string", default: "123" }
453
+ },
454
+ {
455
+ in: "header",
456
+ name: "Content-Type",
457
+ required: true,
458
+ deprecated: false,
459
+ schema: { type: "string", default: "application/testing" }
460
+ }
461
+ ],
462
+ requestBody: {
463
+ content: {
464
+ "application/json": {
465
+ schema: {},
466
+ example: '{"test": true}'
467
+ }
468
+ }
469
+ }
470
+ });
471
+ const result = createExampleFromRequest(operation, "Test Example");
472
+ expect(result).toMatchObject({
473
+ requestUid: "request-1",
474
+ name: "Test Example",
475
+ body: {
476
+ activeBody: "raw",
477
+ raw: {
478
+ encoding: "json",
479
+ value: '{"test": true}'
480
+ }
481
+ },
482
+ parameters: {
483
+ path: [
484
+ {
485
+ key: "id",
486
+ value: "123",
487
+ enabled: true,
488
+ required: true
489
+ }
490
+ ],
491
+ headers: [{ key: "Content-Type", value: "application/testing", enabled: true }],
492
+ query: [],
493
+ cookies: []
494
+ }
495
+ });
496
+ });
497
+ it("creates example with form-data request body", () => {
498
+ const operation = operationSchema.parse({
499
+ uid: "request-1",
500
+ path: "/test",
501
+ parameters: [],
502
+ requestBody: {
503
+ content: {
504
+ "multipart/form-data": {
505
+ schema: {
506
+ type: "object",
507
+ properties: {
508
+ image: {
509
+ type: "string",
510
+ format: "binary",
511
+ description: "The pet's image file"
512
+ },
513
+ additionalImages: {
514
+ type: "array",
515
+ items: {
516
+ type: "string",
517
+ format: "binary"
518
+ },
519
+ description: "Additional pet images"
520
+ },
521
+ metadata: {
522
+ type: "object",
523
+ properties: {
524
+ caption: {
525
+ type: "string"
526
+ },
527
+ tags: {
528
+ type: "array",
529
+ items: {
530
+ type: "string"
531
+ }
532
+ }
533
+ }
534
+ }
535
+ }
536
+ }
537
+ }
538
+ }
539
+ }
540
+ });
541
+ const result = createExampleFromRequest(operation, "Form Example");
542
+ expect(result).toMatchObject({
543
+ requestUid: "request-1",
544
+ name: "Form Example",
545
+ body: {
546
+ activeBody: "formData",
547
+ formData: {
548
+ encoding: "form-data",
549
+ value: [
550
+ { key: "image", value: "", enabled: true },
551
+ { key: "additionalImages[0]", value: "", enabled: true },
552
+ { key: "metadata[caption]", value: "", enabled: true },
553
+ { key: "metadata[tags][0]", value: "", enabled: true }
554
+ ]
555
+ }
556
+ },
557
+ parameters: {
558
+ headers: [
559
+ { key: "Accept", value: "*/*", enabled: true },
560
+ { key: "Content-Type", value: "multipart/form-data", enabled: true }
561
+ ],
562
+ path: [],
563
+ query: [],
564
+ cookies: []
565
+ }
566
+ });
567
+ });
568
+ });
569
+ describe("createExampleFromRequest with default body when Content-Type header is exists", () => {
570
+ it.each([
571
+ { contentType: "application/json", defaultBody: { activeBody: "raw", raw: { encoding: "json", value: "{}" } } },
572
+ { contentType: "application/xml", defaultBody: { activeBody: "raw", raw: { encoding: "xml", value: "" } } },
573
+ { contentType: "application/octet-stream", defaultBody: { activeBody: "binary", binary: void 0 } },
574
+ {
575
+ contentType: "application/x-www-form-urlencoded",
576
+ defaultBody: { activeBody: "formData", formData: { encoding: "urlencoded", value: [] } }
577
+ },
578
+ {
579
+ contentType: "multipart/form-data",
580
+ defaultBody: { activeBody: "formData", formData: { encoding: "form-data", value: [] } }
581
+ }
582
+ ])("when Content-Type header is $contentType", ({ contentType, defaultBody }) => {
583
+ const operation = operationSchema.parse({
584
+ uid: "request-1",
585
+ path: "/test",
586
+ parameters: [
587
+ {
588
+ in: "header",
589
+ name: "Content-Type",
590
+ required: true,
591
+ deprecated: false,
592
+ schema: { type: "string", default: contentType }
593
+ }
594
+ ]
595
+ });
596
+ const result = createExampleFromRequest(operation, "Test Example");
597
+ expect(result).toMatchObject({
598
+ requestUid: "request-1",
599
+ name: "Test Example",
600
+ body: defaultBody,
601
+ parameters: {
602
+ headers: [{ key: "Content-Type", value: contentType, enabled: true }],
603
+ query: [],
604
+ cookies: []
605
+ }
606
+ });
607
+ });
608
+ it("when Content-Type header is not exists", () => {
609
+ const operation = operationSchema.parse({
610
+ uid: "request-1",
611
+ path: "/test",
612
+ parameters: [
613
+ {
614
+ in: "header",
615
+ name: "Content-Type",
616
+ required: true,
617
+ deprecated: false,
618
+ schema: { type: "string" }
619
+ }
620
+ ]
621
+ });
622
+ const result = createExampleFromRequest(operation, "Test Example");
623
+ expect(result).toMatchObject({
624
+ requestUid: "request-1",
625
+ name: "Test Example",
626
+ body: {
627
+ activeBody: "raw"
628
+ },
629
+ parameters: {
630
+ headers: [{ key: "Content-Type", value: "", enabled: true }],
631
+ query: [],
632
+ cookies: []
633
+ }
634
+ });
635
+ });
636
+ });
637
+ //# sourceMappingURL=request-example.test.js.map