@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/request-examples.ts"],
4
+ "sourcesContent": ["import { schemaModel } from '@/helpers/schema-model'\nimport { getServerVariableExamples } from '@/spec-getters/get-server-variable-examples'\nimport { keysOf } from '@scalar/object-utils/arrays'\nimport { type ENTITY_BRANDS, nanoidSchema } from '@scalar/types/utils'\nimport { z } from 'zod'\n\nimport { isDefined } from '@/helpers/is-defined'\nimport { getObjectKeys } from '@/helpers/object'\n\nimport { getRequestBodyFromOperation } from '@/spec-getters/get-request-body-from-operation'\nimport type { RequestParameter, ParameterContent } from './parameters'\nimport type { Request } from './requests'\nimport type { Server } from './server'\n\n// ---------------------------------------------------------------------------\n// Example Parameters\n\n/**\n * TODO: Deprecate this.\n *\n * The request schema should be stored in the request and any\n * parameters should be validated against that\n */\nexport const requestExampleParametersSchema = z\n .object({\n key: z.string().default(''),\n value: z.coerce.string().default(''),\n enabled: z.boolean().default(true),\n file: z.any().optional(),\n description: z.string().optional(),\n required: z.boolean().optional(),\n enum: z.array(z.string()).optional(),\n examples: z.array(z.any()).optional(),\n type: z\n .union([\n // 'string'\n z.string(),\n // ['string', 'null']\n z.array(z.string()),\n ])\n .optional(),\n format: z.string().optional(),\n minimum: z.number().optional(),\n maximum: z.number().optional(),\n default: z.any().optional(),\n nullable: z.boolean().optional(),\n })\n // set nullable: to true if type is ['string', 'null']\n .transform((_data) => {\n const data = { ..._data }\n\n // type: ['string', 'null'] -> nullable: true\n if (Array.isArray(data.type) && data.type.includes('null')) {\n data.nullable = true\n }\n\n // Hey, if it's just one value and 'null', we can make it a string and ditch the 'null'.\n if (Array.isArray(data.type) && data.type.length === 2 && data.type.includes('null')) {\n data.type = data.type.find((item) => item !== 'null')\n }\n\n return data\n })\n\n/** Convert the array of parameters to an object keyed by the parameter name */\nexport const parameterArrayToObject = (params: RequestExampleParameter[]) =>\n params.reduce<Record<string, string>>((map, param) => {\n map[param.key] = param.value\n return map\n }, {})\n\n/** Request examples - formerly known as instances - are \"children\" of requests */\nexport type RequestExampleParameter = z.infer<typeof requestExampleParametersSchema>\n\nexport const xScalarFileValueSchema = z\n .object({\n url: z.string(),\n base64: z.string().optional(),\n })\n .nullable()\n\n/**\n * When files are required for an example we provide the options\n * to provide a public URL or a base64 encoded string\n */\nexport type XScalarFileValue = z.infer<typeof xScalarFileValueSchema>\n\n/**\n * Schema for the OAS serialization of request example parameters\n *\n * File values can be optionally fetched on import OR inserted as a base64 encoded string\n */\nexport const xScalarFormDataValue = z.union([\n z.object({\n type: z.literal('string'),\n value: z.string(),\n }),\n z.object({\n type: z.literal('file'),\n file: xScalarFileValueSchema,\n }),\n])\n\nexport type XScalarFormDataValue = z.infer<typeof xScalarFormDataValue>\n\n// ---------------------------------------------------------------------------\n// Example Body\n\n/**\n * Possible encodings for example request bodies when using text formats\n *\n * TODO: This list may not be comprehensive enough\n */\nexport const exampleRequestBodyEncoding = ['json', 'text', 'html', 'javascript', 'xml', 'yaml', 'edn'] as const\n\nexport type BodyEncoding = (typeof exampleRequestBodyEncoding)[number]\n\nexport const exampleBodyMime = [\n 'application/json',\n 'text/plain',\n 'text/html',\n 'application/javascript',\n 'application/xml',\n 'application/yaml',\n 'application/edn',\n 'application/octet-stream',\n 'application/x-www-form-urlencoded',\n 'multipart/form-data',\n /** Used for direct files */\n 'binary',\n] as const\n\nexport type BodyMime = (typeof exampleBodyMime)[number]\n\nconst contentMapping: Record<BodyEncoding, BodyMime> = {\n json: 'application/json',\n text: 'text/plain',\n html: 'text/html',\n javascript: 'application/javascript',\n xml: 'application/xml',\n yaml: 'application/yaml',\n edn: 'application/edn',\n} as const\n\n/**\n * TODO: Migrate away from this layout to the format used in the extension\n *\n * If a user changes the encoding of the body we expect the content to change as well\n */\nexport const exampleRequestBodySchema = z.object({\n raw: z\n .object({\n encoding: z.enum(exampleRequestBodyEncoding),\n value: z.string().default(''),\n mimeType: z.string().optional(),\n })\n .optional(),\n formData: z\n .object({\n encoding: z.union([z.literal('form-data'), z.literal('urlencoded')]).default('form-data'),\n value: requestExampleParametersSchema.array().default([]),\n })\n .optional(),\n binary: z.instanceof(Blob).optional(),\n activeBody: z.union([z.literal('raw'), z.literal('formData'), z.literal('binary')]).default('raw'),\n})\n\nexport type ExampleRequestBody = z.infer<typeof exampleRequestBodySchema>\n\n/** Schema for the OAS serialization of request example bodies */\nexport const xScalarExampleBodySchema = z.object({\n encoding: z.enum(exampleBodyMime),\n /**\n * Body content as an object with a separately specified encoding or a simple pre-encoded string value\n *\n * Ideally we would convert any objects into the proper encoding on import\n */\n content: z.union([z.record(z.string(), z.any()), z.string()]),\n /** When the encoding is `binary` this will be used to link to the file */\n file: xScalarFileValueSchema.optional(),\n})\n\nexport type XScalarExampleBody = z.infer<typeof xScalarExampleBodySchema>\n\n// ---------------------------------------------------------------------------\n// Example Schema\n\nexport const requestExampleSchema = z.object({\n uid: nanoidSchema.brand<ENTITY_BRANDS['EXAMPLE']>(),\n type: z.literal('requestExample').optional().default('requestExample'),\n requestUid: z.string().brand<ENTITY_BRANDS['OPERATION']>().optional(),\n name: z.string().optional().default('Name'),\n body: exampleRequestBodySchema.optional().default({}),\n parameters: z\n .object({\n path: requestExampleParametersSchema.array().default([]),\n query: requestExampleParametersSchema.array().default([]),\n headers: requestExampleParametersSchema.array().default([{ key: 'Accept', value: '*/*', enabled: true }]),\n cookies: requestExampleParametersSchema.array().default([]),\n })\n .optional()\n .default({}),\n /** TODO: Should this be deprecated? */\n serverVariables: z.record(z.string(), z.array(z.string())).optional(),\n})\n\nexport type RequestExample = z.infer<typeof requestExampleSchema>\n\n/** For OAS serialization we just store the simple key/value pairs */\nconst xScalarExampleParameterSchema = z.record(z.string(), z.string()).optional()\n\n/** Schema for the OAS serialization of request examples */\nexport const xScalarExampleSchema = z.object({\n /** TODO: Should this be required? */\n name: z.string().optional(),\n body: xScalarExampleBodySchema.optional(),\n parameters: z.object({\n path: xScalarExampleParameterSchema,\n query: xScalarExampleParameterSchema,\n headers: xScalarExampleParameterSchema,\n cookies: xScalarExampleParameterSchema,\n }),\n})\n\nexport type XScalarExample = z.infer<typeof xScalarExampleSchema>\n\n/**\n * Convert a request example to the xScalar serialized format\n *\n * TODO: The base format should be migrated to align MUCH closer to the serialized format\n */\nexport function convertExampleToXScalar(example: RequestExample) {\n const active = example.body?.activeBody\n\n const xScalarBody: XScalarExampleBody = {\n encoding: 'text/plain',\n content: '',\n }\n\n if (example.body?.activeBody === 'binary') {\n xScalarBody.encoding = 'binary'\n // TODO: Need to allow users to set these properties\n xScalarBody.file = null\n }\n\n if (active === 'formData' && example.body?.[active]) {\n const body = example.body[active]\n xScalarBody.encoding = body.encoding === 'form-data' ? 'multipart/form-data' : 'application/x-www-form-urlencoded'\n\n // TODO: Need to allow users to set these properties\n xScalarBody.content = body.value.reduce<Record<string, XScalarFormDataValue>>((map, param) => {\n /** TODO: We need to ensure only file or value is set */\n map[param.key] = param.file\n ? {\n type: 'file',\n file: null,\n }\n : {\n type: 'string',\n value: param.value,\n }\n return map\n }, {})\n }\n\n if (example.body?.activeBody === 'raw') {\n xScalarBody.encoding = contentMapping[example.body.raw?.encoding ?? 'text'] ?? 'text/plain'\n\n xScalarBody.content = example.body.raw?.value ?? ''\n }\n\n const parameters: XScalarExample['parameters'] = {}\n\n keysOf(example.parameters ?? {}).forEach((key) => {\n if (example.parameters?.[key].length) {\n parameters[key] = parameterArrayToObject(example.parameters[key])\n }\n })\n\n return xScalarExampleSchema.parse({\n /** Only add the body if we have content or the body should be a file */\n body: xScalarBody.content || xScalarBody.encoding === 'binary' ? xScalarBody : undefined,\n parameters,\n })\n}\n\n// ---------------------------------------------------------------------------\n// Example Helpers\n\n/** Create new instance parameter from a request parameter */\nexport function createParamInstance(param: RequestParameter) {\n const schema = param.schema as any\n\n const firstExample = (() => {\n if (param.examples && !Array.isArray(param.examples) && getObjectKeys(param.examples).length > 0) {\n const exampleValues = Object.entries(param.examples).map(([_, example]) => {\n // returns the external value if it exists\n if (example.externalValue) {\n return example.externalValue\n }\n\n // returns the value if it exists and is defined\n // e.g. { examples: { foo: { value: 'bar' } } } would return ['bar']\n return example.value\n })\n\n // returns the first example as selected value along other examples\n return { value: exampleValues[0], examples: exampleValues }\n }\n\n // param example e.g. { example: 'foo' }\n if (isDefined(param.example)) {\n return { value: param.example }\n }\n\n // param examples e.g. { examples: ['foo', 'bar'] }\n if (Array.isArray(param.examples) && param.examples.length > 0) {\n return { value: param.examples[0] }\n }\n\n // schema example e.g. { example: 'foo' } while being discouraged\n // see https://spec.openapis.org/oas/v3.1.1.html#fixed-fields-20\n if (isDefined(schema?.example)) {\n return { value: schema.example }\n }\n\n // schema examples e.g. { examples: ['foo', 'bar'] }\n if (Array.isArray(schema?.examples) && schema.examples.length > 0) {\n // For boolean type, default to false when using schema examples\n if (schema?.type === 'boolean') {\n return { value: schema.default ?? false }\n }\n return { value: schema.examples[0] }\n }\n\n // content examples e.g. { content: { 'application/json': { examples: { foo: { value: 'bar' } } } } }\n if (param.content) {\n const firstContentType = getObjectKeys(param.content)[0]\n if (firstContentType) {\n const content = (param.content as ParameterContent)[firstContentType]\n if (content?.examples) {\n const firstExampleKey = Object.keys(content.examples)[0]\n if (firstExampleKey) {\n const example = content.examples[firstExampleKey]\n if (isDefined(example?.value)) {\n return { value: example.value }\n }\n }\n }\n // content example e.g. { example: 'foo' }\n if (isDefined(content?.example)) {\n return { value: content.example }\n }\n }\n }\n\n return null\n })() as null | { value: any; examples?: string[] }\n\n /**\n * TODO:\n * - Need better value defaulting here\n * - Need to handle non-string parameters much better\n * - Need to handle unions/array values for schema\n */\n const value = String(firstExample?.value ?? schema?.default ?? '')\n\n // Handle non-string enums and enums within items for array types\n const parseEnum = (() => {\n if (schema?.enum && schema?.type !== 'string') {\n return schema.enum?.map(String)\n }\n\n if (schema?.items?.enum && schema?.type === 'array') {\n return schema.items.enum.map(String)\n }\n\n return schema?.enum\n })()\n\n // Handle parameter examples\n const examples =\n firstExample?.examples ||\n (schema?.examples && schema?.type !== 'string' ? schema.examples?.map(String) : schema?.examples)\n\n // safe parse the example\n const example = schemaModel(\n {\n ...schema,\n key: param.name,\n value,\n description: param.description,\n required: param.required,\n /** Initialized all required properties to enabled */\n enabled: !!param.required,\n enum: parseEnum,\n examples,\n },\n requestExampleParametersSchema,\n false,\n )\n\n if (!example) {\n console.warn(`Example at ${param.name} is invalid.`)\n return requestExampleParametersSchema.parse({})\n }\n\n return example\n}\n\n/**\n * Create new request example from a request\n * Iterates the name of the example if provided\n */\nexport function createExampleFromRequest(request: Request, name: string, server?: Server): RequestExample {\n // ---------------------------------------------------------------------------\n // Populate all parameters with an example value\n const parameters: Record<'path' | 'cookie' | 'header' | 'query' | 'headers', RequestExampleParameter[]> = {\n path: [],\n query: [],\n cookie: [],\n // deprecated TODO: add zod transform to remove\n header: [],\n headers: [{ key: 'Accept', value: '*/*', enabled: true }],\n }\n\n // Populated the separated params\n request.parameters?.forEach((p) => parameters[p.in].push(createParamInstance(p)))\n\n // TODO: add zod transform to remove header and only support headers\n if (parameters.header.length > 0) {\n parameters.headers = parameters.header\n parameters.header = []\n }\n\n // Get content type header\n const contentTypeHeader = parameters.headers.find((h) => h.key.toLowerCase() === 'content-type')\n\n // ---------------------------------------------------------------------------\n // Handle request body defaulting for various content type encodings\n const body: ExampleRequestBody = {\n activeBody: 'raw',\n }\n\n // If we have a request body or a content type header\n if (request.requestBody || contentTypeHeader?.value) {\n const requestBody = getRequestBodyFromOperation({\n path: request.path,\n information: {\n requestBody: request.requestBody,\n },\n })\n\n const contentType = request.requestBody ? requestBody?.mimeType : contentTypeHeader?.value\n\n // Handle JSON and JSON-like mimetypes\n if (contentType?.includes('/json') || contentType?.endsWith('+json')) {\n body.activeBody = 'raw'\n body.raw = {\n encoding: 'json',\n mimeType: contentType,\n value: requestBody?.text ?? JSON.stringify({}),\n }\n }\n\n if (contentType === 'application/xml') {\n body.activeBody = 'raw'\n body.raw = {\n encoding: 'xml',\n value: requestBody?.text ?? '',\n }\n }\n\n /**\n * TODO: Are we loading example files from somewhere based on the spec?\n * How are we handling the body values\n */\n if (contentType === 'application/octet-stream') {\n body.activeBody = 'binary'\n body.binary = undefined\n }\n\n if (contentType === 'application/x-www-form-urlencoded' || contentType === 'multipart/form-data') {\n body.activeBody = 'formData'\n body.formData = {\n encoding: contentType === 'application/x-www-form-urlencoded' ? 'urlencoded' : 'form-data',\n value: (requestBody?.params || []).map((param) => ({\n key: param.name,\n value: param.value || '',\n enabled: true,\n })),\n }\n }\n\n // Add the content-type header if it doesn't exist\n if (requestBody?.mimeType && !contentTypeHeader) {\n parameters.headers.push({\n key: 'Content-Type',\n value: requestBody.mimeType,\n enabled: true,\n })\n }\n }\n\n const serverVariables = server ? getServerVariableExamples(server) : {}\n\n // safe parse the example\n const example = schemaModel(\n {\n requestUid: request.uid,\n parameters,\n name,\n body,\n serverVariables,\n },\n requestExampleSchema,\n false,\n )\n\n if (!example) {\n console.warn(`Example at ${request.uid} is invalid.`)\n return requestExampleSchema.parse({})\n }\n return example\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["example"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { XScalarStability } from '@scalar/types';
3
- import { type RequestExample } from './request-examples.ts';
3
+ import { type RequestExample } from './request-examples.js';
4
4
  export declare const requestMethods: readonly ["connect", "delete", "get", "head", "options", "patch", "post", "put", "trace"];
5
5
  export type RequestMethod = (typeof requestMethods)[number];
6
6
  /** A single set of populated values for a sent request */
@@ -537,11 +537,11 @@ export declare const requestSchema: z.ZodObject<z.objectUtil.extendShape<z.objec
537
537
  }>, "many">>>;
538
538
  'x-code-samples': z.ZodCatch<z.ZodOptional<z.ZodArray<z.ZodObject<{
539
539
  lang: z.ZodCatch<z.ZodOptional<z.ZodString>>;
540
- label: z.ZodCatch<z.ZodOptional<z.ZodString>>;
540
+ label: z.ZodCatch<z.ZodOptional<z.ZodString /** Time in ms the request took */>>;
541
541
  source: z.ZodString;
542
542
  }, "strip", z.ZodTypeAny, {
543
543
  source: string;
544
- label?: string | undefined;
544
+ label? /** The response method */: string | undefined;
545
545
  lang?: string | undefined;
546
546
  }, {
547
547
  source: string;
@@ -549,14 +549,12 @@ export declare const requestSchema: z.ZodObject<z.objectUtil.extendShape<z.objec
549
549
  lang?: unknown;
550
550
  }>, "many">>>;
551
551
  'x-custom-examples': z.ZodCatch<z.ZodOptional<z.ZodArray<z.ZodObject<{
552
- lang: z.ZodCatch<
552
+ lang:
553
553
  /** A stream reader for a streamable response body */
554
- z.ZodOptional<z.ZodString>>;
554
+ z.ZodCatch<z.ZodOptional<z.ZodString>>;
555
555
  label: z.ZodCatch<z.ZodOptional<z.ZodString>>;
556
556
  source: z.ZodString;
557
- }, "strip", z.
558
- /** A single request/response set to save to the history stack */
559
- ZodTypeAny, {
557
+ }, "strip", z.ZodTypeAny, {
560
558
  source: string;
561
559
  label?: string | undefined;
562
560
  lang?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../../src/entities/spec/requests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../../src/entities/spec/requests.ts"],"names":[],"mappings":"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"}
@@ -1,108 +1,87 @@
1
- import { selectedSecuritySchemeUidSchema } from '../shared/utility.js';
2
- import { nanoidSchema } from '@scalar/types/utils';
3
- import { z } from 'zod';
4
- import { XCodeSamplesSchema } from '@scalar/openapi-types/schemas/extensions';
5
- import { XScalarStability } from '@scalar/types';
6
- import { oasSecurityRequirementSchema } from '@scalar/types/entities';
7
- import { oasParameterSchema } from './parameters.js';
8
- import { xScalarExampleSchema } from './request-examples.js';
9
- import { oasExternalDocumentationSchema } from './spec-objects.js';
10
-
11
- const requestMethods = ['connect', 'delete', 'get', 'head', 'options', 'patch', 'post', 'put', 'trace'];
1
+ import { selectedSecuritySchemeUidSchema } from "../../entities/shared/utility.js";
2
+ import { nanoidSchema } from "@scalar/types/utils";
3
+ import { z } from "zod";
4
+ import { XCodeSamplesSchema } from "@scalar/openapi-types/schemas/extensions";
5
+ import { XScalarStability } from "@scalar/types";
6
+ import { oasSecurityRequirementSchema } from "@scalar/types/entities";
7
+ import { oasParameterSchema } from "./parameters.js";
8
+ import { xScalarExampleSchema } from "./request-examples.js";
9
+ import { oasExternalDocumentationSchema } from "./spec-objects.js";
10
+ const requestMethods = ["connect", "delete", "get", "head", "options", "patch", "post", "put", "trace"];
12
11
  const requestBodySchema = z.any();
13
- /** Open API Compliant Request Validator */
14
12
  const oasRequestSchema = z.object({
15
- /**
16
- * A list of tags for API documentation control. Tags can be used for logical
17
- * grouping of operations by resources or any other qualifier.
18
- *
19
- * These tags are the openapi spec tag names, not uids
20
- */
21
- 'tags': z.string().array().optional(),
22
- /** A short summary of what the operation does. */
23
- 'summary': z.string().optional(),
24
- /** A verbose explanation of the operation behavior. CommonMark syntax MAY be used for rich text representation. */
25
- 'description': z.string().optional(),
26
- /**
27
- * Unique string used to identify the operation. The id MUST be unique among all operations described in the API.
28
- * The operationId value is case-sensitive. Tools and libraries MAY use the operationId to uniquely identify an
29
- * operation, therefore, it is RECOMMENDED to follow bin common programming naming conventions./
30
- */
31
- 'operationId': z.string().optional(),
32
- /**
33
- * A declaration of which security mechanisms can be used across the API. The list of
34
- * values includes alternative security requirement objects that can be used. Only
35
- * one of the security requirement objects need to be satisfied to authorize a request.
36
- * Individual operations can override this definition. To make security optional, an empty
37
- * security requirement ({}) can be included in the array.
38
- */
39
- 'security': z.array(oasSecurityRequirementSchema).optional(),
40
- /**
41
- * The request body applicable for this operation. The requestBody is fully supported in HTTP methods where the
42
- * HTTP 1.1 specification [RFC7231] has explicitly defined semantics for request bodies. In other cases where the
43
- * HTTP spec is vague (such as GET, HEAD and DELETE), requestBody is permitted but does not have well-defined
44
- * semantics and SHOULD be avoided if possible.
45
- */
46
- 'requestBody': requestBodySchema.optional(),
47
- /**
48
- * Request parameters
49
- */
50
- 'parameters': oasParameterSchema.array().optional(),
51
- /**
52
- * External documentation object
53
- */
54
- 'externalDocs': oasExternalDocumentationSchema.optional(),
55
- 'deprecated': z.boolean().optional(),
56
- /** Response formats */
57
- 'responses': z.record(z.string(), z.any()).optional(),
58
- /** xScalar examples */
59
- 'x-scalar-examples': z.record(z.string(), xScalarExampleSchema).optional(),
60
- /** Hide operations */
61
- 'x-internal': z.boolean().optional(),
62
- 'x-scalar-ignore': z.boolean().optional(),
13
+ /**
14
+ * A list of tags for API documentation control. Tags can be used for logical
15
+ * grouping of operations by resources or any other qualifier.
16
+ *
17
+ * These tags are the openapi spec tag names, not uids
18
+ */
19
+ "tags": z.string().array().optional(),
20
+ /** A short summary of what the operation does. */
21
+ "summary": z.string().optional(),
22
+ /** A verbose explanation of the operation behavior. CommonMark syntax MAY be used for rich text representation. */
23
+ "description": z.string().optional(),
24
+ /**
25
+ * Unique string used to identify the operation. The id MUST be unique among all operations described in the API.
26
+ * The operationId value is case-sensitive. Tools and libraries MAY use the operationId to uniquely identify an
27
+ * operation, therefore, it is RECOMMENDED to follow bin common programming naming conventions./
28
+ */
29
+ "operationId": z.string().optional(),
30
+ /**
31
+ * A declaration of which security mechanisms can be used across the API. The list of
32
+ * values includes alternative security requirement objects that can be used. Only
33
+ * one of the security requirement objects need to be satisfied to authorize a request.
34
+ * Individual operations can override this definition. To make security optional, an empty
35
+ * security requirement ({}) can be included in the array.
36
+ */
37
+ "security": z.array(oasSecurityRequirementSchema).optional(),
38
+ /**
39
+ * The request body applicable for this operation. The requestBody is fully supported in HTTP methods where the
40
+ * HTTP 1.1 specification [RFC7231] has explicitly defined semantics for request bodies. In other cases where the
41
+ * HTTP spec is vague (such as GET, HEAD and DELETE), requestBody is permitted but does not have well-defined
42
+ * semantics and SHOULD be avoided if possible.
43
+ */
44
+ "requestBody": requestBodySchema.optional(),
45
+ /**
46
+ * Request parameters
47
+ */
48
+ "parameters": oasParameterSchema.array().optional(),
49
+ /**
50
+ * External documentation object
51
+ */
52
+ "externalDocs": oasExternalDocumentationSchema.optional(),
53
+ "deprecated": z.boolean().optional(),
54
+ /** Response formats */
55
+ "responses": z.record(z.string(), z.any()).optional(),
56
+ /** xScalar examples */
57
+ "x-scalar-examples": z.record(z.string(), xScalarExampleSchema).optional(),
58
+ /** Hide operations */
59
+ "x-internal": z.boolean().optional(),
60
+ "x-scalar-ignore": z.boolean().optional()
63
61
  });
64
- /**
65
- * An OpenAPI extension to indicate the stability of the operation
66
- *
67
- * @example
68
- * ```yaml
69
- * x-scalar-stability: deprecated
70
- * ```
71
- */
72
62
  const ScalarStabilitySchema = z.object({
73
- 'x-scalar-stability': z
74
- .enum([XScalarStability.Deprecated, XScalarStability.Experimental, XScalarStability.Stable])
75
- .optional()
76
- .catch(undefined),
63
+ "x-scalar-stability": z.enum([XScalarStability.Deprecated, XScalarStability.Experimental, XScalarStability.Stable]).optional().catch(void 0)
77
64
  });
78
- /**
79
- * Extended properties added to the spec definition for client usage
80
- *
81
- * WARNING: DO NOT ADD PROPERTIES THAT SHARE A NAME WITH OAS OPERATION ENTITIES
82
- *
83
- * This object is directly converted to a spec operation during saving
84
- */
85
65
  const extendedRequestSchema = z.object({
86
- type: z.literal('request').optional().default('request'),
87
- uid: nanoidSchema.brand(),
88
- /** Path Key */
89
- path: z.string().optional().default(''),
90
- /** Request Method */
91
- method: z.enum(requestMethods).default('get'),
92
- /** List of server UIDs specific to the request */
93
- servers: z.string().brand().array().default([]),
94
- /** The currently selected server */
95
- selectedServerUid: z.string().brand().optional().nullable().default(null),
96
- /** List of example UIDs associated with the request */
97
- examples: z.string().brand().array().default([]),
98
- /** List of security scheme UIDs associated with the request */
99
- selectedSecuritySchemeUids: selectedSecuritySchemeUidSchema,
66
+ type: z.literal("request").optional().default("request"),
67
+ uid: nanoidSchema.brand(),
68
+ /** Path Key */
69
+ path: z.string().optional().default(""),
70
+ /** Request Method */
71
+ method: z.enum(requestMethods).default("get"),
72
+ /** List of server UIDs specific to the request */
73
+ servers: z.string().brand().array().default([]),
74
+ /** The currently selected server */
75
+ selectedServerUid: z.string().brand().optional().nullable().default(null),
76
+ /** List of example UIDs associated with the request */
77
+ examples: z.string().brand().array().default([]),
78
+ /** List of security scheme UIDs associated with the request */
79
+ selectedSecuritySchemeUids: selectedSecuritySchemeUidSchema
100
80
  });
101
- /** Unified request schema for client usage */
102
- const requestSchema = oasRequestSchema
103
- .omit({ 'x-scalar-examples': true })
104
- .merge(XCodeSamplesSchema)
105
- .merge(ScalarStabilitySchema)
106
- .merge(extendedRequestSchema);
107
-
108
- export { oasRequestSchema, requestMethods, requestSchema };
81
+ const requestSchema = oasRequestSchema.omit({ "x-scalar-examples": true }).merge(XCodeSamplesSchema).merge(ScalarStabilitySchema).merge(extendedRequestSchema);
82
+ export {
83
+ oasRequestSchema,
84
+ requestMethods,
85
+ requestSchema
86
+ };
87
+ //# sourceMappingURL=requests.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/entities/spec/requests.ts"],
4
+ "sourcesContent": ["import { selectedSecuritySchemeUidSchema } from '@/entities/shared/utility'\nimport { type ENTITY_BRANDS, nanoidSchema } from '@scalar/types/utils'\nimport { type ZodSchema, z } from 'zod'\n\nimport { XCodeSamplesSchema } from '@scalar/openapi-types/schemas/extensions'\nimport { XScalarStability } from '@scalar/types'\nimport { oasSecurityRequirementSchema } from '@scalar/types/entities'\nimport { oasParameterSchema } from './parameters'\nimport { type RequestExample, xScalarExampleSchema } from './request-examples'\nimport { oasExternalDocumentationSchema } from './spec-objects'\n\nexport const requestMethods = ['connect', 'delete', 'get', 'head', 'options', 'patch', 'post', 'put', 'trace'] as const\n\nexport type RequestMethod = (typeof requestMethods)[number]\n\n/** A single set of populated values for a sent request */\nexport type ResponseInstance = Omit<Response, 'headers'> & {\n /** Store headers as an object to match what we had with axios */\n headers: Record<string, string>\n /** Keys of headers which set cookies */\n cookieHeaderKeys: string[]\n /** Time in ms the request took */\n duration: number\n /** The response status */\n status: number\n /** The response method */\n method: RequestMethod\n /** The request path */\n path: string\n} & (\n | {\n /** The response data */\n data: string | Blob\n /** The response size in bytes */\n size: number\n }\n | {\n /** A stream reader for a streamable response body */\n reader: ReadableStreamDefaultReader<Uint8Array>\n }\n )\n\n/** A single request/response set to save to the history stack */\nexport type RequestEvent = {\n request: RequestExample\n response: ResponseInstance\n timestamp: number\n}\n\n// TODO: Type body definitions\ntype RequestBody = object\nconst requestBodySchema = z.any() satisfies ZodSchema<RequestBody>\n\n/** Open API Compliant Request Validator */\nexport const oasRequestSchema = z.object({\n /**\n * A list of tags for API documentation control. Tags can be used for logical\n * grouping of operations by resources or any other qualifier.\n *\n * These tags are the openapi spec tag names, not uids\n */\n 'tags': z.string().array().optional(),\n /** A short summary of what the operation does. */\n 'summary': z.string().optional(),\n /** A verbose explanation of the operation behavior. CommonMark syntax MAY be used for rich text representation. */\n 'description': z.string().optional(),\n /**\n * Unique string used to identify the operation. The id MUST be unique among all operations described in the API.\n * The operationId value is case-sensitive. Tools and libraries MAY use the operationId to uniquely identify an\n * operation, therefore, it is RECOMMENDED to follow bin common programming naming conventions./\n */\n 'operationId': z.string().optional(),\n /**\n * A declaration of which security mechanisms can be used across the API. The list of\n * values includes alternative security requirement objects that can be used. Only\n * one of the security requirement objects need to be satisfied to authorize a request.\n * Individual operations can override this definition. To make security optional, an empty\n * security requirement ({}) can be included in the array.\n */\n 'security': z.array(oasSecurityRequirementSchema).optional(),\n /**\n * The request body applicable for this operation. The requestBody is fully supported in HTTP methods where the\n * HTTP 1.1 specification [RFC7231] has explicitly defined semantics for request bodies. In other cases where the\n * HTTP spec is vague (such as GET, HEAD and DELETE), requestBody is permitted but does not have well-defined\n * semantics and SHOULD be avoided if possible.\n */\n 'requestBody': requestBodySchema.optional(),\n /**\n * Request parameters\n */\n 'parameters': oasParameterSchema.array().optional(),\n /**\n * External documentation object\n */\n 'externalDocs': oasExternalDocumentationSchema.optional(),\n 'deprecated': z.boolean().optional(),\n /** Response formats */\n 'responses': z.record(z.string(), z.any()).optional(),\n /** xScalar examples */\n 'x-scalar-examples': z.record(z.string(), xScalarExampleSchema).optional(),\n /** Hide operations */\n 'x-internal': z.boolean().optional(),\n 'x-scalar-ignore': z.boolean().optional(),\n})\n\n/**\n * An OpenAPI extension to indicate the stability of the operation\n *\n * @example\n * ```yaml\n * x-scalar-stability: deprecated\n * ```\n */\nconst ScalarStabilitySchema = z.object({\n 'x-scalar-stability': z\n .enum([XScalarStability.Deprecated, XScalarStability.Experimental, XScalarStability.Stable])\n .optional()\n .catch(undefined),\n})\n\n/**\n * Extended properties added to the spec definition for client usage\n *\n * WARNING: DO NOT ADD PROPERTIES THAT SHARE A NAME WITH OAS OPERATION ENTITIES\n *\n * This object is directly converted to a spec operation during saving\n */\nconst extendedRequestSchema = z.object({\n type: z.literal('request').optional().default('request'),\n uid: nanoidSchema.brand<ENTITY_BRANDS['OPERATION']>(),\n /** Path Key */\n path: z.string().optional().default(''),\n /** Request Method */\n method: z.enum(requestMethods).default('get'),\n /** List of server UIDs specific to the request */\n servers: z.string().brand<ENTITY_BRANDS['SERVER']>().array().default([]),\n /** The currently selected server */\n selectedServerUid: z.string().brand<ENTITY_BRANDS['SERVER']>().optional().nullable().default(null),\n /** List of example UIDs associated with the request */\n examples: z.string().brand<ENTITY_BRANDS['EXAMPLE']>().array().default([]),\n /** List of security scheme UIDs associated with the request */\n selectedSecuritySchemeUids: selectedSecuritySchemeUidSchema,\n})\n\n/** Unified request schema for client usage */\nexport const requestSchema = oasRequestSchema\n .omit({ 'x-scalar-examples': true })\n .merge(XCodeSamplesSchema)\n .merge(ScalarStabilitySchema)\n .merge(extendedRequestSchema)\n\nexport type Request = z.infer<typeof requestSchema>\nexport type RequestPayload = z.input<typeof requestSchema>\n"],
5
+ "mappings": "AAAA,SAAS,uCAAuC;AAChD,SAA6B,oBAAoB;AACjD,SAAyB,SAAS;AAElC,SAAS,0BAA0B;AACnC,SAAS,wBAAwB;AACjC,SAAS,oCAAoC;AAC7C,SAAS,0BAA0B;AACnC,SAA8B,4BAA4B;AAC1D,SAAS,sCAAsC;AAExC,MAAM,iBAAiB,CAAC,WAAW,UAAU,OAAO,QAAQ,WAAW,SAAS,QAAQ,OAAO,OAAO;AAwC7G,MAAM,oBAAoB,EAAE,IAAI;AAGzB,MAAM,mBAAmB,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOvC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS;AAAA;AAAA,EAEpC,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnC,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnC,YAAY,EAAE,MAAM,4BAA4B,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO3D,eAAe,kBAAkB,SAAS;AAAA;AAAA;AAAA;AAAA,EAI1C,cAAc,mBAAmB,MAAM,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,EAIlD,gBAAgB,+BAA+B,SAAS;AAAA,EACxD,cAAc,EAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EAEnC,aAAa,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAEpD,qBAAqB,EAAE,OAAO,EAAE,OAAO,GAAG,oBAAoB,EAAE,SAAS;AAAA;AAAA,EAEzE,cAAc,EAAE,QAAQ,EAAE,SAAS;AAAA,EACnC,mBAAmB,EAAE,QAAQ,EAAE,SAAS;AAC1C,CAAC;AAUD,MAAM,wBAAwB,EAAE,OAAO;AAAA,EACrC,sBAAsB,EACnB,KAAK,CAAC,iBAAiB,YAAY,iBAAiB,cAAc,iBAAiB,MAAM,CAAC,EAC1F,SAAS,EACT,MAAM,MAAS;AACpB,CAAC;AASD,MAAM,wBAAwB,EAAE,OAAO;AAAA,EACrC,MAAM,EAAE,QAAQ,SAAS,EAAE,SAAS,EAAE,QAAQ,SAAS;AAAA,EACvD,KAAK,aAAa,MAAkC;AAAA;AAAA,EAEpD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;AAAA;AAAA,EAEtC,QAAQ,EAAE,KAAK,cAAc,EAAE,QAAQ,KAAK;AAAA;AAAA,EAE5C,SAAS,EAAE,OAAO,EAAE,MAA+B,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAAA;AAAA,EAEvE,mBAAmB,EAAE,OAAO,EAAE,MAA+B,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,IAAI;AAAA;AAAA,EAEjG,UAAU,EAAE,OAAO,EAAE,MAAgC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAAA;AAAA,EAEzE,4BAA4B;AAC9B,CAAC;AAGM,MAAM,gBAAgB,iBAC1B,KAAK,EAAE,qBAAqB,KAAK,CAAC,EAClC,MAAM,kBAAkB,EACxB,MAAM,qBAAqB,EAC3B,MAAM,qBAAqB;",
6
+ "names": []
7
+ }
@@ -1,70 +1,54 @@
1
- import { nanoidSchema } from '@scalar/types/utils';
2
- import { z } from 'zod';
3
-
4
- /**
5
- * Server Variable Object
6
- *
7
- * An object representing a Server Variable for server URL template substitution.
8
- *
9
- * @see https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#server-variable-object
10
- */
1
+ import { nanoidSchema } from "@scalar/types/utils";
2
+ import { z } from "zod";
11
3
  const oasServerVariableSchema = z.object({
12
- /**
13
- * An enumeration of string values to be used if the substitution options are from a limited set. The array MUST NOT be empty.
14
- */
15
- enum: z.array(z.string()).optional(),
16
- /**
17
- * REQUIRED. The default value to use for substitution, which SHALL be sent if an alternate value is not supplied.
18
- * Note this behavior is different than the Schema Object's treatment of default values, because in those cases
19
- * parameter values are optional. If the enum is defined, the value MUST exist in the enum's values.
20
- */
21
- default: z.string().optional(),
22
- /**
23
- * An optional description for the server variable. CommonMark syntax MAY be used for rich text representation.
24
- */
25
- description: z.string().optional(),
4
+ /**
5
+ * An enumeration of string values to be used if the substitution options are from a limited set. The array MUST NOT be empty.
6
+ */
7
+ enum: z.array(z.string()).optional(),
8
+ /**
9
+ * REQUIRED. The default value to use for substitution, which SHALL be sent if an alternate value is not supplied.
10
+ * Note this behavior is different than the Schema Object's treatment of default values, because in those cases
11
+ * parameter values are optional. If the enum is defined, the value MUST exist in the enum's values.
12
+ */
13
+ default: z.string().optional(),
14
+ /**
15
+ * An optional description for the server variable. CommonMark syntax MAY be used for rich text representation.
16
+ */
17
+ description: z.string().optional()
26
18
  });
27
- /** Extended schema for server variables */
28
- const extendedServerVariableSchema = oasServerVariableSchema
29
- .extend({
30
- /** The value of the variable */
31
- value: z.string().optional(),
32
- })
33
- .refine((data) => {
34
- // Set default to the first enum value if invalid
35
- if (Array.isArray(data.enum) && !data.enum.includes(data.default ?? '') && data.enum.length > 0) {
36
- data.default = data.enum[0];
37
- }
38
- if (Array.isArray(data.enum) && data.enum.length === 0) {
39
- delete data.enum;
40
- }
41
- // Always return true since we’ve modified the data to be valid
42
- return true;
19
+ const extendedServerVariableSchema = oasServerVariableSchema.extend({
20
+ /** The value of the variable */
21
+ value: z.string().optional()
22
+ }).refine((data) => {
23
+ if (Array.isArray(data.enum) && !data.enum.includes(data.default ?? "") && data.enum.length > 0) {
24
+ data.default = data.enum[0];
25
+ }
26
+ if (Array.isArray(data.enum) && data.enum.length === 0) {
27
+ delete data.enum;
28
+ }
29
+ return true;
43
30
  });
44
- /**
45
- * Server Object
46
- *
47
- * An object representing a Server.
48
- *
49
- * @see https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#server-object
50
- */
51
31
  const oasServerSchema = z.object({
52
- /**
53
- * REQUIRED. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that
54
- * the host location is relative to the location where the OpenAPI document is being served. Variable substitutions
55
- * will be made when a variable is named in {brackets}.
56
- */
57
- url: z.string(),
58
- /**
59
- * An optional string describing the host designated by the URL. CommonMark syntax MAY be used for rich text
60
- * representation.
61
- */
62
- description: z.string().optional(),
63
- /** A map between a variable name and its value. The value is used for substitution in the server's URL template. */
64
- variables: z.record(z.string(), extendedServerVariableSchema).optional(),
32
+ /**
33
+ * REQUIRED. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that
34
+ * the host location is relative to the location where the OpenAPI document is being served. Variable substitutions
35
+ * will be made when a variable is named in {brackets}.
36
+ */
37
+ url: z.string(),
38
+ /**
39
+ * An optional string describing the host designated by the URL. CommonMark syntax MAY be used for rich text
40
+ * representation.
41
+ */
42
+ description: z.string().optional(),
43
+ /** A map between a variable name and its value. The value is used for substitution in the server's URL template. */
44
+ variables: z.record(z.string(), extendedServerVariableSchema).optional()
65
45
  });
66
46
  const serverSchema = oasServerSchema.extend({
67
- uid: nanoidSchema.brand(),
47
+ uid: nanoidSchema.brand()
68
48
  });
69
-
70
- export { oasServerSchema, oasServerVariableSchema, serverSchema };
49
+ export {
50
+ oasServerSchema,
51
+ oasServerVariableSchema,
52
+ serverSchema
53
+ };
54
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/entities/spec/server.ts"],
4
+ "sourcesContent": ["import { type ENTITY_BRANDS, nanoidSchema } from '@scalar/types/utils'\nimport { z } from 'zod'\n\n/**\n * Server Variable Object\n *\n * An object representing a Server Variable for server URL template substitution.\n *\n * @see https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#server-variable-object\n */\nexport const oasServerVariableSchema = z.object({\n /**\n * An enumeration of string values to be used if the substitution options are from a limited set. The array MUST NOT be empty.\n */\n enum: z.array(z.string()).optional(),\n /**\n * REQUIRED. The default value to use for substitution, which SHALL be sent if an alternate value is not supplied.\n * Note this behavior is different than the Schema Object's treatment of default values, because in those cases\n * parameter values are optional. If the enum is defined, the value MUST exist in the enum's values.\n */\n default: z.string().optional(),\n /**\n * An optional description for the server variable. CommonMark syntax MAY be used for rich text representation.\n */\n description: z.string().optional(),\n})\n\n/** Extended schema for server variables */\nconst extendedServerVariableSchema = oasServerVariableSchema\n .extend({\n /** The value of the variable */\n value: z.string().optional(),\n })\n .refine((data) => {\n // Set default to the first enum value if invalid\n if (Array.isArray(data.enum) && !data.enum.includes(data.default ?? '') && data.enum.length > 0) {\n data.default = data.enum[0]\n }\n\n if (Array.isArray(data.enum) && data.enum.length === 0) {\n delete data.enum\n }\n\n // Always return true since we\u2019ve modified the data to be valid\n return true\n })\n\n/**\n * Server Object\n *\n * An object representing a Server.\n *\n * @see https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#server-object\n */\nexport const oasServerSchema = z.object({\n /**\n * REQUIRED. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that\n * the host location is relative to the location where the OpenAPI document is being served. Variable substitutions\n * will be made when a variable is named in {brackets}.\n */\n url: z.string(),\n /**\n * An optional string describing the host designated by the URL. CommonMark syntax MAY be used for rich text\n * representation.\n */\n description: z.string().optional(),\n /** A map between a variable name and its value. The value is used for substitution in the server's URL template. */\n variables: z.record(z.string(), extendedServerVariableSchema).optional(),\n})\n\nexport const serverSchema = oasServerSchema.extend({\n uid: nanoidSchema.brand<ENTITY_BRANDS['SERVER']>(),\n})\n\nexport type Server = z.infer<typeof serverSchema>\nexport type ServerPayload = z.input<typeof serverSchema>\n"],
5
+ "mappings": "AAAA,SAA6B,oBAAoB;AACjD,SAAS,SAAS;AASX,MAAM,0BAA0B,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA,EAI9C,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnC,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA,EAI7B,aAAa,EAAE,OAAO,EAAE,SAAS;AACnC,CAAC;AAGD,MAAM,+BAA+B,wBAClC,OAAO;AAAA;AAAA,EAEN,OAAO,EAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,OAAO,CAAC,SAAS;AAEhB,MAAI,MAAM,QAAQ,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,KAAK,WAAW,EAAE,KAAK,KAAK,KAAK,SAAS,GAAG;AAC/F,SAAK,UAAU,KAAK,KAAK,CAAC;AAAA,EAC5B;AAEA,MAAI,MAAM,QAAQ,KAAK,IAAI,KAAK,KAAK,KAAK,WAAW,GAAG;AACtD,WAAO,KAAK;AAAA,EACd;AAGA,SAAO;AACT,CAAC;AASI,MAAM,kBAAkB,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtC,KAAK,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKd,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEjC,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,4BAA4B,EAAE,SAAS;AACzE,CAAC;AAEM,MAAM,eAAe,gBAAgB,OAAO;AAAA,EACjD,KAAK,aAAa,MAA+B;AACnD,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,120 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { serverSchema } from "./server.js";
3
+ describe("serverSchema", () => {
4
+ it("validates valid server object", () => {
5
+ const server = { url: "https://api.example.com" };
6
+ expect(serverSchema.parse(server)).toMatchObject(server);
7
+ });
8
+ it("validates server with description", () => {
9
+ const server = {
10
+ url: "https://api.example.com",
11
+ description: "Production API"
12
+ };
13
+ expect(serverSchema.parse(server)).toMatchObject(server);
14
+ });
15
+ it("validates server with variables", () => {
16
+ const server = {
17
+ url: "https://{username}.example.com",
18
+ variables: {
19
+ username: {
20
+ default: "demo"
21
+ }
22
+ }
23
+ };
24
+ expect(serverSchema.parse(server)).toMatchObject(server);
25
+ });
26
+ it("validates server with enum variables", () => {
27
+ const server = {
28
+ url: "https://{environment}.example.com",
29
+ variables: {
30
+ environment: {
31
+ enum: ["dev", "staging", "prod"],
32
+ default: "dev",
33
+ description: "Environment selection"
34
+ },
35
+ username: {
36
+ // invalid enum
37
+ enum: [],
38
+ default: "demo",
39
+ description: "Username selection"
40
+ },
41
+ version: {
42
+ enum: ["v1", "v2"],
43
+ description: "Version selection"
44
+ }
45
+ }
46
+ };
47
+ expect(serverSchema.parse(server)).toStrictEqual({
48
+ uid: expect.any(String),
49
+ url: "https://{environment}.example.com",
50
+ variables: {
51
+ environment: {
52
+ enum: ["dev", "staging", "prod"],
53
+ // kept
54
+ default: "dev",
55
+ description: "Environment selection"
56
+ },
57
+ username: {
58
+ // enum omitted
59
+ default: "demo",
60
+ description: "Username selection"
61
+ },
62
+ version: {
63
+ enum: ["v1", "v2"],
64
+ // added
65
+ default: "v1",
66
+ description: "Version selection"
67
+ }
68
+ }
69
+ });
70
+ });
71
+ it("fails when URL is missing", () => {
72
+ const server = {};
73
+ expect(() => serverSchema.parse(server)).toThrow();
74
+ });
75
+ it("fails when variable default is not in enum", () => {
76
+ const server = {
77
+ url: "https://{environment}.example.com",
78
+ variables: {
79
+ environment: {
80
+ enum: ["dev", "staging", "prod"],
81
+ default: "invalid",
82
+ description: "Environment selection"
83
+ }
84
+ }
85
+ };
86
+ expect(serverSchema.parse(server)).toMatchObject({
87
+ url: "https://{environment}.example.com",
88
+ variables: {
89
+ environment: {
90
+ enum: ["dev", "staging", "prod"],
91
+ default: "dev",
92
+ description: "Environment selection"
93
+ }
94
+ }
95
+ });
96
+ });
97
+ it("validates server with relative URL", () => {
98
+ const server = {
99
+ url: "/api/v1",
100
+ description: "Relative URL"
101
+ };
102
+ expect(serverSchema.parse(server)).toMatchObject(server);
103
+ });
104
+ it("validates server with multiple variables", () => {
105
+ const server = {
106
+ url: "https://{username}.{domain}.com",
107
+ variables: {
108
+ username: {
109
+ default: "demo"
110
+ },
111
+ domain: {
112
+ enum: ["example", "test"],
113
+ default: "example"
114
+ }
115
+ }
116
+ };
117
+ expect(serverSchema.parse(server)).toMatchObject(server);
118
+ });
119
+ });
120
+ //# sourceMappingURL=server.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/entities/spec/server.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { serverSchema } from './server'\n\ndescribe('serverSchema', () => {\n it('validates valid server object', () => {\n const server = { url: 'https://api.example.com' }\n expect(serverSchema.parse(server)).toMatchObject(server)\n })\n\n it('validates server with description', () => {\n const server = {\n url: 'https://api.example.com',\n description: 'Production API',\n }\n expect(serverSchema.parse(server)).toMatchObject(server)\n })\n\n it('validates server with variables', () => {\n const server = {\n url: 'https://{username}.example.com',\n variables: {\n username: {\n default: 'demo',\n },\n },\n }\n expect(serverSchema.parse(server)).toMatchObject(server)\n })\n\n it('validates server with enum variables', () => {\n const server = {\n url: 'https://{environment}.example.com',\n variables: {\n environment: {\n enum: ['dev', 'staging', 'prod'],\n default: 'dev',\n description: 'Environment selection',\n },\n username: {\n // invalid enum\n enum: [],\n default: 'demo',\n description: 'Username selection',\n },\n version: {\n enum: ['v1', 'v2'],\n description: 'Version selection',\n },\n },\n }\n\n expect(serverSchema.parse(server)).toStrictEqual({\n uid: expect.any(String),\n url: 'https://{environment}.example.com',\n variables: {\n environment: {\n enum: ['dev', 'staging', 'prod'],\n // kept\n default: 'dev',\n description: 'Environment selection',\n },\n username: {\n // enum omitted\n default: 'demo',\n description: 'Username selection',\n },\n version: {\n enum: ['v1', 'v2'],\n // added\n default: 'v1',\n description: 'Version selection',\n },\n },\n })\n })\n\n it('fails when URL is missing', () => {\n const server = {}\n expect(() => serverSchema.parse(server)).toThrow()\n })\n\n it('fails when variable default is not in enum', () => {\n const server = {\n url: 'https://{environment}.example.com',\n variables: {\n environment: {\n enum: ['dev', 'staging', 'prod'],\n default: 'invalid',\n description: 'Environment selection',\n },\n },\n }\n\n expect(serverSchema.parse(server)).toMatchObject({\n url: 'https://{environment}.example.com',\n variables: {\n environment: {\n enum: ['dev', 'staging', 'prod'],\n default: 'dev',\n description: 'Environment selection',\n },\n },\n })\n })\n\n it('validates server with relative URL', () => {\n const server = {\n url: '/api/v1',\n description: 'Relative URL',\n }\n expect(serverSchema.parse(server)).toMatchObject(server)\n })\n\n it('validates server with multiple variables', () => {\n const server = {\n url: 'https://{username}.{domain}.com',\n variables: {\n username: {\n default: 'demo',\n },\n domain: {\n enum: ['example', 'test'],\n default: 'example',\n },\n },\n }\n expect(serverSchema.parse(server)).toMatchObject(server)\n })\n})\n"],
5
+ "mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,oBAAoB;AAE7B,SAAS,gBAAgB,MAAM;AAC7B,KAAG,iCAAiC,MAAM;AACxC,UAAM,SAAS,EAAE,KAAK,0BAA0B;AAChD,WAAO,aAAa,MAAM,MAAM,CAAC,EAAE,cAAc,MAAM;AAAA,EACzD,CAAC;AAED,KAAG,qCAAqC,MAAM;AAC5C,UAAM,SAAS;AAAA,MACb,KAAK;AAAA,MACL,aAAa;AAAA,IACf;AACA,WAAO,aAAa,MAAM,MAAM,CAAC,EAAE,cAAc,MAAM;AAAA,EACzD,CAAC;AAED,KAAG,mCAAmC,MAAM;AAC1C,UAAM,SAAS;AAAA,MACb,KAAK;AAAA,MACL,WAAW;AAAA,QACT,UAAU;AAAA,UACR,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AACA,WAAO,aAAa,MAAM,MAAM,CAAC,EAAE,cAAc,MAAM;AAAA,EACzD,CAAC;AAED,KAAG,wCAAwC,MAAM;AAC/C,UAAM,SAAS;AAAA,MACb,KAAK;AAAA,MACL,WAAW;AAAA,QACT,aAAa;AAAA,UACX,MAAM,CAAC,OAAO,WAAW,MAAM;AAAA,UAC/B,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,UAAU;AAAA;AAAA,UAER,MAAM,CAAC;AAAA,UACP,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,SAAS;AAAA,UACP,MAAM,CAAC,MAAM,IAAI;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAEA,WAAO,aAAa,MAAM,MAAM,CAAC,EAAE,cAAc;AAAA,MAC/C,KAAK,OAAO,IAAI,MAAM;AAAA,MACtB,KAAK;AAAA,MACL,WAAW;AAAA,QACT,aAAa;AAAA,UACX,MAAM,CAAC,OAAO,WAAW,MAAM;AAAA;AAAA,UAE/B,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,UAAU;AAAA;AAAA,UAER,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,QACA,SAAS;AAAA,UACP,MAAM,CAAC,MAAM,IAAI;AAAA;AAAA,UAEjB,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,KAAG,6BAA6B,MAAM;AACpC,UAAM,SAAS,CAAC;AAChB,WAAO,MAAM,aAAa,MAAM,MAAM,CAAC,EAAE,QAAQ;AAAA,EACnD,CAAC;AAED,KAAG,8CAA8C,MAAM;AACrD,UAAM,SAAS;AAAA,MACb,KAAK;AAAA,MACL,WAAW;AAAA,QACT,aAAa;AAAA,UACX,MAAM,CAAC,OAAO,WAAW,MAAM;AAAA,UAC/B,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAEA,WAAO,aAAa,MAAM,MAAM,CAAC,EAAE,cAAc;AAAA,MAC/C,KAAK;AAAA,MACL,WAAW;AAAA,QACT,aAAa;AAAA,UACX,MAAM,CAAC,OAAO,WAAW,MAAM;AAAA,UAC/B,SAAS;AAAA,UACT,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,KAAG,sCAAsC,MAAM;AAC7C,UAAM,SAAS;AAAA,MACb,KAAK;AAAA,MACL,aAAa;AAAA,IACf;AACA,WAAO,aAAa,MAAM,MAAM,CAAC,EAAE,cAAc,MAAM;AAAA,EACzD,CAAC;AAED,KAAG,4CAA4C,MAAM;AACnD,UAAM,SAAS;AAAA,MACb,KAAK;AAAA,MACL,WAAW;AAAA,QACT,UAAU;AAAA,UACR,SAAS;AAAA,QACX;AAAA,QACA,QAAQ;AAAA,UACN,MAAM,CAAC,WAAW,MAAM;AAAA,UACxB,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AACA,WAAO,aAAa,MAAM,MAAM,CAAC,EAAE,cAAc,MAAM;AAAA,EACzD,CAAC;AACH,CAAC;",
6
+ "names": []
7
+ }