@typespec/http-specs 0.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/LICENSE +21 -0
  3. package/README.md +36 -0
  4. package/assets/image.jpg +0 -0
  5. package/assets/image.png +0 -0
  6. package/dist/specs/authentication/api-key/mockapi.d.ts +3 -0
  7. package/dist/specs/authentication/api-key/mockapi.d.ts.map +1 -0
  8. package/dist/specs/authentication/api-key/mockapi.js +33 -0
  9. package/dist/specs/authentication/api-key/mockapi.js.map +1 -0
  10. package/dist/specs/authentication/http/custom/mockapi.d.ts +3 -0
  11. package/dist/specs/authentication/http/custom/mockapi.d.ts.map +1 -0
  12. package/dist/specs/authentication/http/custom/mockapi.js +33 -0
  13. package/dist/specs/authentication/http/custom/mockapi.js.map +1 -0
  14. package/dist/specs/authentication/oauth2/mockapi.d.ts +3 -0
  15. package/dist/specs/authentication/oauth2/mockapi.d.ts.map +1 -0
  16. package/dist/specs/authentication/oauth2/mockapi.js +30 -0
  17. package/dist/specs/authentication/oauth2/mockapi.js.map +1 -0
  18. package/dist/specs/authentication/union/mockapi.d.ts +3 -0
  19. package/dist/specs/authentication/union/mockapi.d.ts.map +1 -0
  20. package/dist/specs/authentication/union/mockapi.js +29 -0
  21. package/dist/specs/authentication/union/mockapi.js.map +1 -0
  22. package/dist/specs/encode/bytes/mockapi.d.ts +3 -0
  23. package/dist/specs/encode/bytes/mockapi.d.ts.map +1 -0
  24. package/dist/specs/encode/bytes/mockapi.js +167 -0
  25. package/dist/specs/encode/bytes/mockapi.js.map +1 -0
  26. package/dist/specs/encode/datetime/mockapi.d.ts +3 -0
  27. package/dist/specs/encode/datetime/mockapi.d.ts.map +1 -0
  28. package/dist/specs/encode/datetime/mockapi.js +160 -0
  29. package/dist/specs/encode/datetime/mockapi.js.map +1 -0
  30. package/dist/specs/encode/duration/mockapi.d.ts +3 -0
  31. package/dist/specs/encode/duration/mockapi.d.ts.map +1 -0
  32. package/dist/specs/encode/duration/mockapi.js +103 -0
  33. package/dist/specs/encode/duration/mockapi.js.map +1 -0
  34. package/dist/specs/encode/numeric/mockapi.d.ts +3 -0
  35. package/dist/specs/encode/numeric/mockapi.d.ts.map +1 -0
  36. package/dist/specs/encode/numeric/mockapi.js +22 -0
  37. package/dist/specs/encode/numeric/mockapi.js.map +1 -0
  38. package/dist/specs/helper.d.ts +3 -0
  39. package/dist/specs/helper.d.ts.map +1 -0
  40. package/dist/specs/helper.js +7 -0
  41. package/dist/specs/helper.js.map +1 -0
  42. package/dist/specs/parameters/basic/mockapi.d.ts +3 -0
  43. package/dist/specs/parameters/basic/mockapi.d.ts.map +1 -0
  44. package/dist/specs/parameters/basic/mockapi.js +20 -0
  45. package/dist/specs/parameters/basic/mockapi.js.map +1 -0
  46. package/dist/specs/parameters/body-optionality/mockapi.d.ts +3 -0
  47. package/dist/specs/parameters/body-optionality/mockapi.d.ts.map +1 -0
  48. package/dist/specs/parameters/body-optionality/mockapi.js +50 -0
  49. package/dist/specs/parameters/body-optionality/mockapi.js.map +1 -0
  50. package/dist/specs/parameters/collection-format/mockapi.d.ts +3 -0
  51. package/dist/specs/parameters/collection-format/mockapi.d.ts.map +1 -0
  52. package/dist/specs/parameters/collection-format/mockapi.js +76 -0
  53. package/dist/specs/parameters/collection-format/mockapi.js.map +1 -0
  54. package/dist/specs/parameters/spread/mockapi.d.ts +3 -0
  55. package/dist/specs/parameters/spread/mockapi.d.ts.map +1 -0
  56. package/dist/specs/parameters/spread/mockapi.js +155 -0
  57. package/dist/specs/parameters/spread/mockapi.js.map +1 -0
  58. package/dist/specs/payload/content-negotiation/mockapi.d.ts +3 -0
  59. package/dist/specs/payload/content-negotiation/mockapi.d.ts.map +1 -0
  60. package/dist/specs/payload/content-negotiation/mockapi.js +169 -0
  61. package/dist/specs/payload/content-negotiation/mockapi.js.map +1 -0
  62. package/dist/specs/payload/json-merge-patch/mockapi.d.ts +38 -0
  63. package/dist/specs/payload/json-merge-patch/mockapi.d.ts.map +1 -0
  64. package/dist/specs/payload/json-merge-patch/mockapi.js +90 -0
  65. package/dist/specs/payload/json-merge-patch/mockapi.js.map +1 -0
  66. package/dist/specs/payload/media-type/mockapi.d.ts +3 -0
  67. package/dist/specs/payload/media-type/mockapi.d.ts.map +1 -0
  68. package/dist/specs/payload/media-type/mockapi.js +59 -0
  69. package/dist/specs/payload/media-type/mockapi.js.map +1 -0
  70. package/dist/specs/payload/multipart/mockapi.d.ts +3 -0
  71. package/dist/specs/payload/multipart/mockapi.d.ts.map +1 -0
  72. package/dist/specs/payload/multipart/mockapi.js +323 -0
  73. package/dist/specs/payload/multipart/mockapi.js.map +1 -0
  74. package/dist/specs/payload/xml/mockapi.d.ts +15 -0
  75. package/dist/specs/payload/xml/mockapi.d.ts.map +1 -0
  76. package/dist/specs/payload/xml/mockapi.js +183 -0
  77. package/dist/specs/payload/xml/mockapi.js.map +1 -0
  78. package/dist/specs/routes/mockapi.d.ts +3 -0
  79. package/dist/specs/routes/mockapi.d.ts.map +1 -0
  80. package/dist/specs/routes/mockapi.js +94 -0
  81. package/dist/specs/routes/mockapi.js.map +1 -0
  82. package/dist/specs/serialization/encoded-name/json/mockapi.d.ts +3 -0
  83. package/dist/specs/serialization/encoded-name/json/mockapi.d.ts.map +1 -0
  84. package/dist/specs/serialization/encoded-name/json/mockapi.js +20 -0
  85. package/dist/specs/serialization/encoded-name/json/mockapi.js.map +1 -0
  86. package/dist/specs/server/endpoint/not-defined/mockapi.d.ts +3 -0
  87. package/dist/specs/server/endpoint/not-defined/mockapi.d.ts.map +1 -0
  88. package/dist/specs/server/endpoint/not-defined/mockapi.js +12 -0
  89. package/dist/specs/server/endpoint/not-defined/mockapi.js.map +1 -0
  90. package/dist/specs/server/path/multiple/mockapi.d.ts +3 -0
  91. package/dist/specs/server/path/multiple/mockapi.d.ts.map +1 -0
  92. package/dist/specs/server/path/multiple/mockapi.js +21 -0
  93. package/dist/specs/server/path/multiple/mockapi.js.map +1 -0
  94. package/dist/specs/server/path/single/mockapi.d.ts +3 -0
  95. package/dist/specs/server/path/single/mockapi.d.ts.map +1 -0
  96. package/dist/specs/server/path/single/mockapi.js +12 -0
  97. package/dist/specs/server/path/single/mockapi.js.map +1 -0
  98. package/dist/specs/server/versions/not-versioned/mockapi.d.ts +3 -0
  99. package/dist/specs/server/versions/not-versioned/mockapi.d.ts.map +1 -0
  100. package/dist/specs/server/versions/not-versioned/mockapi.js +42 -0
  101. package/dist/specs/server/versions/not-versioned/mockapi.js.map +1 -0
  102. package/dist/specs/server/versions/versioned/mockapi.d.ts +3 -0
  103. package/dist/specs/server/versions/versioned/mockapi.d.ts.map +1 -0
  104. package/dist/specs/server/versions/versioned/mockapi.js +43 -0
  105. package/dist/specs/server/versions/versioned/mockapi.js.map +1 -0
  106. package/dist/specs/special-headers/conditional-request/mockapi.d.ts +3 -0
  107. package/dist/specs/special-headers/conditional-request/mockapi.d.ts.map +1 -0
  108. package/dist/specs/special-headers/conditional-request/mockapi.js +55 -0
  109. package/dist/specs/special-headers/conditional-request/mockapi.js.map +1 -0
  110. package/dist/specs/special-headers/repeatability/mockapi.d.ts +3 -0
  111. package/dist/specs/special-headers/repeatability/mockapi.d.ts.map +1 -0
  112. package/dist/specs/special-headers/repeatability/mockapi.js +36 -0
  113. package/dist/specs/special-headers/repeatability/mockapi.js.map +1 -0
  114. package/dist/specs/special-words/dec.d.ts +22 -0
  115. package/dist/specs/special-words/dec.d.ts.map +1 -0
  116. package/dist/specs/special-words/dec.js +37 -0
  117. package/dist/specs/special-words/dec.js.map +1 -0
  118. package/dist/specs/special-words/mockapi.d.ts +3 -0
  119. package/dist/specs/special-words/mockapi.d.ts.map +1 -0
  120. package/dist/specs/special-words/mockapi.js +223 -0
  121. package/dist/specs/special-words/mockapi.js.map +1 -0
  122. package/dist/specs/type/array/mockapi.d.ts +3 -0
  123. package/dist/specs/type/array/mockapi.d.ts.map +1 -0
  124. package/dist/specs/type/array/mockapi.js +92 -0
  125. package/dist/specs/type/array/mockapi.js.map +1 -0
  126. package/dist/specs/type/dictionary/mockapi.d.ts +3 -0
  127. package/dist/specs/type/dictionary/mockapi.d.ts.map +1 -0
  128. package/dist/specs/type/dictionary/mockapi.js +91 -0
  129. package/dist/specs/type/dictionary/mockapi.js.map +1 -0
  130. package/dist/specs/type/enum/extensible/mockapi.d.ts +3 -0
  131. package/dist/specs/type/enum/extensible/mockapi.d.ts.map +1 -0
  132. package/dist/specs/type/enum/extensible/mockapi.js +39 -0
  133. package/dist/specs/type/enum/extensible/mockapi.js.map +1 -0
  134. package/dist/specs/type/enum/fixed/mockapi.d.ts +3 -0
  135. package/dist/specs/type/enum/fixed/mockapi.d.ts.map +1 -0
  136. package/dist/specs/type/enum/fixed/mockapi.js +42 -0
  137. package/dist/specs/type/enum/fixed/mockapi.js.map +1 -0
  138. package/dist/specs/type/model/empty/mockapi.d.ts +3 -0
  139. package/dist/specs/type/model/empty/mockapi.d.ts.map +1 -0
  140. package/dist/specs/type/model/empty/mockapi.js +37 -0
  141. package/dist/specs/type/model/empty/mockapi.js.map +1 -0
  142. package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.d.ts +3 -0
  143. package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.d.ts.map +1 -0
  144. package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.js +69 -0
  145. package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.js.map +1 -0
  146. package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.d.ts +3 -0
  147. package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.d.ts.map +1 -0
  148. package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.js +127 -0
  149. package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.js.map +1 -0
  150. package/dist/specs/type/model/inheritance/not-discriminated/mockapi.d.ts +3 -0
  151. package/dist/specs/type/model/inheritance/not-discriminated/mockapi.d.ts.map +1 -0
  152. package/dist/specs/type/model/inheritance/not-discriminated/mockapi.js +37 -0
  153. package/dist/specs/type/model/inheritance/not-discriminated/mockapi.js.map +1 -0
  154. package/dist/specs/type/model/inheritance/recursive/mockapi.d.ts +3 -0
  155. package/dist/specs/type/model/inheritance/recursive/mockapi.d.ts.map +1 -0
  156. package/dist/specs/type/model/inheritance/recursive/mockapi.js +40 -0
  157. package/dist/specs/type/model/inheritance/recursive/mockapi.js.map +1 -0
  158. package/dist/specs/type/model/inheritance/single-discriminator/mockapi.d.ts +3 -0
  159. package/dist/specs/type/model/inheritance/single-discriminator/mockapi.d.ts.map +1 -0
  160. package/dist/specs/type/model/inheritance/single-discriminator/mockapi.js +99 -0
  161. package/dist/specs/type/model/inheritance/single-discriminator/mockapi.js.map +1 -0
  162. package/dist/specs/type/model/templated/mockapi.d.ts +3 -0
  163. package/dist/specs/type/model/templated/mockapi.d.ts.map +1 -0
  164. package/dist/specs/type/model/templated/mockapi.js +63 -0
  165. package/dist/specs/type/model/templated/mockapi.js.map +1 -0
  166. package/dist/specs/type/model/usage/mockapi.d.ts +3 -0
  167. package/dist/specs/type/model/usage/mockapi.d.ts.map +1 -0
  168. package/dist/specs/type/model/usage/mockapi.js +41 -0
  169. package/dist/specs/type/model/usage/mockapi.js.map +1 -0
  170. package/dist/specs/type/model/visibility/mockapi.d.ts +3 -0
  171. package/dist/specs/type/model/visibility/mockapi.d.ts.map +1 -0
  172. package/dist/specs/type/model/visibility/mockapi.js +107 -0
  173. package/dist/specs/type/model/visibility/mockapi.js.map +1 -0
  174. package/dist/specs/type/property/additional-properties/mockapi.d.ts +3 -0
  175. package/dist/specs/type/property/additional-properties/mockapi.d.ts.map +1 -0
  176. package/dist/specs/type/property/additional-properties/mockapi.js +333 -0
  177. package/dist/specs/type/property/additional-properties/mockapi.js.map +1 -0
  178. package/dist/specs/type/property/nullable/mockapi.d.ts +3 -0
  179. package/dist/specs/type/property/nullable/mockapi.d.ts.map +1 -0
  180. package/dist/specs/type/property/nullable/mockapi.js +132 -0
  181. package/dist/specs/type/property/nullable/mockapi.js.map +1 -0
  182. package/dist/specs/type/property/optionality/mockapi.d.ts +3 -0
  183. package/dist/specs/type/property/optionality/mockapi.d.ts.map +1 -0
  184. package/dist/specs/type/property/optionality/mockapi.js +185 -0
  185. package/dist/specs/type/property/optionality/mockapi.js.map +1 -0
  186. package/dist/specs/type/property/value-types/mockapi.d.ts +3 -0
  187. package/dist/specs/type/property/value-types/mockapi.d.ts.map +1 -0
  188. package/dist/specs/type/property/value-types/mockapi.js +214 -0
  189. package/dist/specs/type/property/value-types/mockapi.js.map +1 -0
  190. package/dist/specs/type/scalar/mockapi.d.ts +3 -0
  191. package/dist/specs/type/scalar/mockapi.d.ts.map +1 -0
  192. package/dist/specs/type/scalar/mockapi.js +193 -0
  193. package/dist/specs/type/scalar/mockapi.js.map +1 -0
  194. package/dist/specs/type/union/mockapi.d.ts +3 -0
  195. package/dist/specs/type/union/mockapi.d.ts.map +1 -0
  196. package/dist/specs/type/union/mockapi.js +106 -0
  197. package/dist/specs/type/union/mockapi.js.map +1 -0
  198. package/dist/specs/versioning/added/mockapi.d.ts +3 -0
  199. package/dist/specs/versioning/added/mockapi.d.ts.map +1 -0
  200. package/dist/specs/versioning/added/mockapi.js +54 -0
  201. package/dist/specs/versioning/added/mockapi.js.map +1 -0
  202. package/dist/specs/versioning/madeOptional/mockapi.d.ts +3 -0
  203. package/dist/specs/versioning/madeOptional/mockapi.d.ts.map +1 -0
  204. package/dist/specs/versioning/madeOptional/mockapi.js +17 -0
  205. package/dist/specs/versioning/madeOptional/mockapi.js.map +1 -0
  206. package/dist/specs/versioning/removed/mockapi.d.ts +3 -0
  207. package/dist/specs/versioning/removed/mockapi.d.ts.map +1 -0
  208. package/dist/specs/versioning/removed/mockapi.js +19 -0
  209. package/dist/specs/versioning/removed/mockapi.js.map +1 -0
  210. package/dist/specs/versioning/renamedFrom/mockapi.d.ts +3 -0
  211. package/dist/specs/versioning/renamedFrom/mockapi.d.ts.map +1 -0
  212. package/dist/specs/versioning/renamedFrom/mockapi.js +38 -0
  213. package/dist/specs/versioning/renamedFrom/mockapi.js.map +1 -0
  214. package/dist/specs/versioning/returnTypeChangedFrom/mockapi.d.ts +3 -0
  215. package/dist/specs/versioning/returnTypeChangedFrom/mockapi.d.ts.map +1 -0
  216. package/dist/specs/versioning/returnTypeChangedFrom/mockapi.js +18 -0
  217. package/dist/specs/versioning/returnTypeChangedFrom/mockapi.js.map +1 -0
  218. package/dist/specs/versioning/typeChangedFrom/mockapi.d.ts +3 -0
  219. package/dist/specs/versioning/typeChangedFrom/mockapi.d.ts.map +1 -0
  220. package/dist/specs/versioning/typeChangedFrom/mockapi.js +21 -0
  221. package/dist/specs/versioning/typeChangedFrom/mockapi.js.map +1 -0
  222. package/package.json +55 -0
  223. package/spec-summary.md +7463 -0
  224. package/specs/README.md +3 -0
  225. package/specs/authentication/api-key/main.tsp +40 -0
  226. package/specs/authentication/api-key/mockapi.ts +35 -0
  227. package/specs/authentication/http/custom/main.tsp +40 -0
  228. package/specs/authentication/http/custom/mockapi.ts +35 -0
  229. package/specs/authentication/oauth2/main.tsp +45 -0
  230. package/specs/authentication/oauth2/mockapi.ts +32 -0
  231. package/specs/authentication/union/main.tsp +30 -0
  232. package/specs/authentication/union/mockapi.ts +31 -0
  233. package/specs/encode/bytes/main.tsp +363 -0
  234. package/specs/encode/bytes/mockapi.ts +297 -0
  235. package/specs/encode/datetime/main.tsp +339 -0
  236. package/specs/encode/datetime/mockapi.ts +274 -0
  237. package/specs/encode/duration/main.tsp +318 -0
  238. package/specs/encode/duration/mockapi.ts +191 -0
  239. package/specs/encode/numeric/main.tsp +69 -0
  240. package/specs/encode/numeric/mockapi.ts +32 -0
  241. package/specs/helper.ts +8 -0
  242. package/specs/parameters/basic/main.tsp +58 -0
  243. package/specs/parameters/basic/mockapi.ts +25 -0
  244. package/specs/parameters/body-optionality/main.tsp +61 -0
  245. package/specs/parameters/body-optionality/mockapi.ts +59 -0
  246. package/specs/parameters/collection-format/main.tsp +92 -0
  247. package/specs/parameters/collection-format/mockapi.ts +83 -0
  248. package/specs/parameters/spread/main.tsp +337 -0
  249. package/specs/parameters/spread/mockapi.ts +165 -0
  250. package/specs/payload/content-negotiation/main.tsp +61 -0
  251. package/specs/payload/content-negotiation/mockapi.ts +188 -0
  252. package/specs/payload/json-merge-patch/main.tsp +184 -0
  253. package/specs/payload/json-merge-patch/mockapi.ts +95 -0
  254. package/specs/payload/media-type/main.tsp +52 -0
  255. package/specs/payload/media-type/mockapi.ts +63 -0
  256. package/specs/payload/multipart/main.tsp +500 -0
  257. package/specs/payload/multipart/mockapi.ts +364 -0
  258. package/specs/payload/xml/main.tsp +302 -0
  259. package/specs/payload/xml/mockapi.ts +238 -0
  260. package/specs/routes/main.tsp +477 -0
  261. package/specs/routes/mockapi.ts +175 -0
  262. package/specs/scratch/.gitignore +3 -0
  263. package/specs/serialization/encoded-name/json/main.tsp +45 -0
  264. package/specs/serialization/encoded-name/json/mockapi.ts +22 -0
  265. package/specs/server/endpoint/not-defined/main.tsp +20 -0
  266. package/specs/server/endpoint/not-defined/mockapi.ts +13 -0
  267. package/specs/server/path/multiple/main.tsp +47 -0
  268. package/specs/server/path/multiple/mockapi.ts +23 -0
  269. package/specs/server/path/single/main.tsp +24 -0
  270. package/specs/server/path/single/mockapi.ts +13 -0
  271. package/specs/server/versions/not-versioned/main.tsp +40 -0
  272. package/specs/server/versions/not-versioned/mockapi.ts +51 -0
  273. package/specs/server/versions/versioned/main.tsp +64 -0
  274. package/specs/server/versions/versioned/mockapi.ts +64 -0
  275. package/specs/special-headers/conditional-request/main.tsp +89 -0
  276. package/specs/special-headers/conditional-request/mockapi.ts +59 -0
  277. package/specs/special-headers/repeatability/main.tsp +39 -0
  278. package/specs/special-headers/repeatability/mockapi.ts +47 -0
  279. package/specs/special-words/dec.js +52 -0
  280. package/specs/special-words/main.tsp +234 -0
  281. package/specs/special-words/mockapi.ts +384 -0
  282. package/specs/type/array/main.tsp +108 -0
  283. package/specs/type/array/mockapi.ts +107 -0
  284. package/specs/type/dictionary/main.tsp +101 -0
  285. package/specs/type/dictionary/mockapi.ts +103 -0
  286. package/specs/type/enum/extensible/main.tsp +65 -0
  287. package/specs/type/enum/extensible/mockapi.ts +48 -0
  288. package/specs/type/enum/fixed/main.tsp +60 -0
  289. package/specs/type/enum/fixed/mockapi.ts +44 -0
  290. package/specs/type/model/empty/main.tsp +40 -0
  291. package/specs/type/model/empty/mockapi.ts +40 -0
  292. package/specs/type/model/inheritance/enum-discriminator/main.tsp +169 -0
  293. package/specs/type/model/inheritance/enum-discriminator/mockapi.ts +89 -0
  294. package/specs/type/model/inheritance/nested-discriminator/main.tsp +224 -0
  295. package/specs/type/model/inheritance/nested-discriminator/mockapi.ts +130 -0
  296. package/specs/type/model/inheritance/not-discriminated/main.tsp +54 -0
  297. package/specs/type/model/inheritance/not-discriminated/mockapi.ts +39 -0
  298. package/specs/type/model/inheritance/recursive/main.tsp +71 -0
  299. package/specs/type/model/inheritance/recursive/mockapi.ts +41 -0
  300. package/specs/type/model/inheritance/single-discriminator/main.tsp +172 -0
  301. package/specs/type/model/inheritance/single-discriminator/mockapi.ts +103 -0
  302. package/specs/type/model/templated/main.tsp +130 -0
  303. package/specs/type/model/templated/mockapi.ts +66 -0
  304. package/specs/type/model/usage/main.tsp +49 -0
  305. package/specs/type/model/usage/mockapi.ts +45 -0
  306. package/specs/type/model/visibility/main.tsp +153 -0
  307. package/specs/type/model/visibility/mockapi.ts +108 -0
  308. package/specs/type/property/additional-properties/main.tsp +549 -0
  309. package/specs/type/property/additional-properties/mockapi.ts +464 -0
  310. package/specs/type/property/nullable/main.tsp +139 -0
  311. package/specs/type/property/nullable/mockapi.ts +187 -0
  312. package/specs/type/property/optionality/main.tsp +226 -0
  313. package/specs/type/property/optionality/mockapi.ts +296 -0
  314. package/specs/type/property/value-types/main.tsp +244 -0
  315. package/specs/type/property/value-types/mockapi.ts +300 -0
  316. package/specs/type/scalar/main.tsp +136 -0
  317. package/specs/type/scalar/mockapi.ts +199 -0
  318. package/specs/type/union/main.tsp +249 -0
  319. package/specs/type/union/mockapi.ts +130 -0
  320. package/specs/versioning/added/main.tsp +136 -0
  321. package/specs/versioning/added/mockapi.ts +57 -0
  322. package/specs/versioning/madeOptional/main.tsp +65 -0
  323. package/specs/versioning/madeOptional/mockapi.ts +18 -0
  324. package/specs/versioning/removed/main.tsp +126 -0
  325. package/specs/versioning/removed/mockapi.ts +20 -0
  326. package/specs/versioning/renamedFrom/main.tsp +112 -0
  327. package/specs/versioning/renamedFrom/mockapi.ts +40 -0
  328. package/specs/versioning/returnTypeChangedFrom/main.tsp +57 -0
  329. package/specs/versioning/returnTypeChangedFrom/mockapi.ts +19 -0
  330. package/specs/versioning/typeChangedFrom/main.tsp +71 -0
  331. package/specs/versioning/typeChangedFrom/mockapi.ts +22 -0
  332. package/temp/.tsbuildinfo +1 -0
  333. package/tsconfig.build.json +8 -0
  334. package/tsconfig.json +11 -0
  335. package/tspconfig.yaml +2 -0
@@ -0,0 +1,500 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Test for multipart")
8
+ @scenarioService("/multipart")
9
+ namespace Payload.MultiPart;
10
+
11
+ model MultiPartRequest {
12
+ id: string;
13
+ profileImage: bytes;
14
+ }
15
+
16
+ model Address {
17
+ city: string;
18
+ }
19
+
20
+ model FileSpecificContentType extends File {
21
+ filename: string;
22
+ contentType: "image/jpg";
23
+ }
24
+
25
+ model FileWithHttpPartSpecificContentTypeRequest {
26
+ profileImage: HttpPart<FileSpecificContentType>;
27
+ }
28
+
29
+ model FileRequiredMetaData extends File {
30
+ filename: string;
31
+ contentType: string;
32
+ }
33
+
34
+ model FileWithHttpPartRequiredContentTypeRequest {
35
+ profileImage: HttpPart<FileRequiredMetaData>;
36
+ }
37
+
38
+ model FileOptionalContentType extends File {
39
+ filename: string;
40
+ }
41
+
42
+ model FileWithHttpPartOptionalContentTypeRequest {
43
+ profileImage: HttpPart<FileOptionalContentType>;
44
+ }
45
+
46
+ model ComplexHttpPartsModelRequest {
47
+ id: HttpPart<string>;
48
+ address: HttpPart<Address>;
49
+ profileImage: HttpPart<FileRequiredMetaData>;
50
+ previousAddresses: HttpPart<Address[]>;
51
+ pictures: HttpPart<FileRequiredMetaData>[];
52
+ }
53
+
54
+ model ComplexPartsRequest {
55
+ id: string;
56
+ address: Address;
57
+ profileImage: bytes;
58
+ pictures: bytes[];
59
+ }
60
+
61
+ model JsonPartRequest {
62
+ address: Address;
63
+ profileImage: bytes;
64
+ }
65
+
66
+ model BinaryArrayPartsRequest {
67
+ id: string;
68
+ pictures: bytes[];
69
+ }
70
+
71
+ model MultiBinaryPartsRequest {
72
+ profileImage: bytes;
73
+ picture?: bytes;
74
+ }
75
+
76
+ @route("/form-data")
77
+ namespace FormData {
78
+ @scenario
79
+ @scenarioDoc("""
80
+ Expect request (
81
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
82
+ appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
83
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
84
+ If there are duplicated filename in same fieldName, cadl-ranch can't parse them all.
85
+ ):
86
+ ```
87
+ POST /upload HTTP/1.1
88
+ Content-Length: 428
89
+ Content-Type: multipart/form-data; boundary=abcde12345
90
+
91
+ --abcde12345
92
+ Content-Disposition: form-data; name="id"
93
+ Content-Type: text/plain
94
+
95
+ 123
96
+ --abcde12345
97
+ Content-Disposition: form-data; name="profileImage"; filename="<any-or-no-name-is-ok>"
98
+ Content-Type: application/octet-stream;
99
+
100
+ {…file content of .jpg file…}
101
+ --abcde12345--
102
+ ```
103
+ """)
104
+ @doc("Test content-type: multipart/form-data")
105
+ @post
106
+ @route("/mixed-parts")
107
+ op basic(
108
+ @header contentType: "multipart/form-data",
109
+ @body body: MultiPartRequest,
110
+ ): NoContentResponse;
111
+
112
+ @scenario
113
+ @scenarioDoc("""
114
+ Expect request (
115
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
116
+ appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
117
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
118
+ If there are duplicated filename in same fieldName, cadl-ranch can't parse them all.
119
+ ):
120
+ ```
121
+ POST /upload HTTP/1.1
122
+ Content-Length: 428
123
+ Content-Type: multipart/form-data; boundary=abcde12345
124
+
125
+ --abcde12345
126
+ Content-Disposition: form-data; name="id"
127
+ Content-Type: text/plain
128
+
129
+ 123
130
+ --abcde12345
131
+ Content-Disposition: form-data; name="address"
132
+ Content-Type: application/json
133
+
134
+ {
135
+ "city": "X"
136
+ }
137
+ --abcde12345
138
+ Content-Disposition: form-data; name="profileImage"; filename="<any-or-no-name-is-ok>"
139
+ Content-Type: application/octet-stream
140
+
141
+ {…file content of .jpg file…}
142
+ --abcde12345--
143
+ Content-Disposition: form-data; name="previousAddresses"
144
+ Content-Type: application/json
145
+
146
+ [{
147
+ "city": "Y"
148
+ },{
149
+ "city": "Z"
150
+ }]
151
+ --abcde12345
152
+ Content-Disposition: form-data; name="pictures"; filename="<any-or-no-name-is-ok>"
153
+ Content-Type: application/octet-stream
154
+
155
+ {…file content of .png file…}
156
+ --abcde12345
157
+ Content-Disposition: form-data; name="pictures"; filename="<any-or-no-name-is-ok>"
158
+ Content-Type: application/octet-stream
159
+
160
+ {…file content of .png file…}
161
+ --abcde12345--
162
+ ```
163
+ """)
164
+ @doc("Test content-type: multipart/form-data for mixed scenarios")
165
+ @post
166
+ @route("/complex-parts")
167
+ op fileArrayAndBasic(
168
+ @header contentType: "multipart/form-data",
169
+ @body body: ComplexPartsRequest,
170
+ ): NoContentResponse;
171
+
172
+ @scenario
173
+ @scenarioDoc("""
174
+ Expect request (
175
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
176
+ appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
177
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
178
+ If there are duplicated filename in same fieldName, cadl-ranch can't parse them all.
179
+ ):
180
+ ```
181
+ POST /upload HTTP/1.1
182
+ Content-Length: 428
183
+ Content-Type: multipart/form-data; boundary=abcde12345
184
+
185
+ --abcde12345
186
+ Content-Disposition: form-data; name="address"
187
+ Content-Type: application/json
188
+
189
+ {
190
+ "city": "X"
191
+ }
192
+ --abcde12345
193
+ Content-Disposition: form-data; name="profileImage"; filename="<any-or-no-name-is-ok>"
194
+ Content-Type: application/octet-stream
195
+
196
+ {…file content of .jpg file…}
197
+ --abcde12345--
198
+ ```
199
+ """)
200
+ @doc("Test content-type: multipart/form-data for scenario contains json part and binary part ")
201
+ @post
202
+ @route("/json-part")
203
+ op jsonPart(
204
+ @header contentType: "multipart/form-data",
205
+ @body body: JsonPartRequest,
206
+ ): NoContentResponse;
207
+
208
+ @scenario
209
+ @scenarioDoc("""
210
+ Expect request (
211
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
212
+ appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
213
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
214
+ If there are duplicated filename in same fieldName, cadl-ranch can't parse them all.
215
+ ):
216
+ ```
217
+ POST /upload HTTP/1.1
218
+ Content-Length: 428
219
+ Content-Type: multipart/form-data; boundary=abcde12345
220
+
221
+ --abcde12345
222
+ Content-Disposition: form-data; name="id"
223
+ Content-Type: text/plain
224
+
225
+ 123
226
+ --abcde12345
227
+ Content-Disposition: form-data; name="pictures"; filename="<any-or-no-name-is-ok>"
228
+ Content-Type: application/octet-stream
229
+
230
+ {…file content of .png file…}
231
+ --abcde12345
232
+ Content-Disposition: form-data; name="pictures"; filename="<any-or-no-name-is-ok>"
233
+ Content-Type: application/octet-stream
234
+
235
+ {…file content of .png file…}
236
+ --abcde12345--
237
+ ```
238
+ """)
239
+ @doc("Test content-type: multipart/form-data for scenario contains multi binary parts")
240
+ @post
241
+ @route("/binary-array-parts")
242
+ op binaryArrayParts(
243
+ @header contentType: "multipart/form-data",
244
+ @body body: BinaryArrayPartsRequest,
245
+ ): NoContentResponse;
246
+
247
+ @scenario
248
+ @scenarioDoc("""
249
+ Please send request twice, first time with only profileImage, second time with both profileImage and picture(
250
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
251
+ appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
252
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
253
+ If there are duplicated filename in same fieldName, cadl-ranch can't parse them all.
254
+ ):
255
+ ```
256
+ POST /upload HTTP/1.1
257
+ Content-Length: 428
258
+ Content-Type: multipart/form-data; boundary=abcde12345
259
+
260
+ --abcde12345
261
+ Content-Disposition: form-data; name="profileImage"; filename="<any-or-no-name-is-ok>"
262
+ Content-Type: application/octet-stream
263
+
264
+ {…file content of .jpg file…}
265
+ --abcde12345
266
+ Content-Disposition: form-data; name="picture"; filename="<any-or-no-name-is-ok>"
267
+ Content-Type: application/octet-stream
268
+
269
+ {…file content of .png file…}
270
+ --abcde12345--
271
+ ```
272
+ """)
273
+ @doc("Test content-type: multipart/form-data for scenario contains multi binary parts")
274
+ @post
275
+ @route("/multi-binary-parts")
276
+ op multiBinaryParts(
277
+ @header contentType: "multipart/form-data",
278
+ @body body: MultiBinaryPartsRequest,
279
+ ): NoContentResponse;
280
+
281
+ @scenario
282
+ @scenarioDoc("""
283
+ this case will check filename and content-type of file part, so expect request:
284
+ ```
285
+ POST /upload HTTP/1.1
286
+ Content-Length: 428
287
+ Content-Type: multipart/form-data; boundary=abcde12345
288
+
289
+ --abcde12345
290
+ Content-Disposition: form-data; name="id"
291
+ Content-Type: text/plain
292
+
293
+ 123
294
+ --abcde12345
295
+ Content-Disposition: form-data; name="profileImage"; filename="hello.jpg"
296
+ Content-Type: image/jpg
297
+
298
+ {…file content of .jpg file…}
299
+ --abcde12345--
300
+ ```
301
+ """)
302
+ @doc("Test content-type: multipart/form-data")
303
+ @post
304
+ @route("/check-filename-and-content-type")
305
+ op checkFileNameAndContentType(
306
+ @header contentType: "multipart/form-data",
307
+ @body body: MultiPartRequest,
308
+ ): NoContentResponse;
309
+
310
+ @scenario
311
+ @scenarioDoc("""
312
+ Expect request (
313
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.4, content-type of file part shall be labeled with
314
+ appropriate media type, cadl-ranch will check it; content-type of other parts is optional, cadl-ranch will ignore it.
315
+ - according to https://datatracker.ietf.org/doc/html/rfc7578#section-4.2, filename of file part SHOULD be supplied.
316
+ If there are duplicated filename in same filedName, cadl-ranch can't parse them all.
317
+ ):
318
+ ```
319
+ POST /multipart/form-data/anonymous-model HTTP/1.1
320
+ Content-Length: 428
321
+ Content-Type: multipart/form-data; boundary=abcde12345
322
+
323
+ --abcde12345
324
+ Content-Disposition: form-data; name="profileImage"; filename="<any-name-is-ok>"
325
+ Content-Type: application/octet-stream;
326
+
327
+ {…file content of .jpg file…}
328
+ --abcde12345--
329
+ ```
330
+ """)
331
+ @doc("Test content-type: multipart/form-data")
332
+ @post
333
+ @route("/anonymous-model")
334
+ op anonymousModel(
335
+ @header contentType: "multipart/form-data",
336
+ profileImage: MultiPartRequest.profileImage,
337
+ ): NoContentResponse;
338
+
339
+ namespace HttpParts {
340
+ namespace ContentType {
341
+ @scenario
342
+ @scenarioDoc("""
343
+ This case will check filename and specific content-type of file part, so expect request:
344
+ ```
345
+ POST /upload HTTP/1.1
346
+ Content-Length: 428
347
+ Content-Type: multipart/form-data; boundary=abcde12345
348
+
349
+ --abcde12345
350
+ Content-Disposition: form-data; name="profileImage"; filename="hello.jpg"
351
+ Content-Type: image/jpg
352
+
353
+ {…file content of .jpg file…}
354
+ --abcde12345--
355
+ ```
356
+ """)
357
+ @doc("Test content-type: multipart/form-data")
358
+ @post
359
+ @route("/check-filename-and-specific-content-type-with-httppart")
360
+ op imageJpegContentType(
361
+ @header contentType: "multipart/form-data",
362
+ @multipartBody body: FileWithHttpPartSpecificContentTypeRequest,
363
+ ): NoContentResponse;
364
+
365
+ @scenario
366
+ @scenarioDoc("""
367
+ This case will check required content-type of file part, so expect request:
368
+ ```
369
+ POST /upload HTTP/1.1
370
+ Content-Length: 428
371
+ Content-Type: multipart/form-data; boundary=abcde12345
372
+
373
+ --abcde12345
374
+ Content-Disposition: form-data; name="profileImage"; filename="<any-name-is-ok>"
375
+ Content-Type: application/octet-stream
376
+
377
+ {…file content of .jpg file…}
378
+ --abcde12345--
379
+ ```
380
+ """)
381
+ @doc("Test content-type: multipart/form-data")
382
+ @post
383
+ @route("/check-filename-and-required-content-type-with-httppart")
384
+ op requiredContentType(
385
+ @header contentType: "multipart/form-data",
386
+ @multipartBody body: FileWithHttpPartRequiredContentTypeRequest,
387
+ ): NoContentResponse;
388
+
389
+ @scenario
390
+ @scenarioDoc("""
391
+ Please send request twice, first time with no content-type and second time with content-type "application/octet-stream". Expect request:
392
+ ```
393
+ POST /upload HTTP/1.1
394
+ Content-Length: 428
395
+ Content-Type: multipart/form-data; boundary=abcde12345
396
+
397
+ --abcde12345
398
+ Content-Disposition: form-data; name="profileImage"; filename="<any-name-is-ok>"
399
+ Content-Type: application/octet-stream
400
+
401
+ {…file content of .jpg file…}
402
+ --abcde12345
403
+ ```
404
+ """)
405
+ @doc("Test content-type: multipart/form-data for optional content type")
406
+ @post
407
+ @route("/file-with-http-part-optional-content-type")
408
+ op optionalContentType(
409
+ @header contentType: "multipart/form-data",
410
+ @multipartBody body: FileWithHttpPartOptionalContentTypeRequest,
411
+ ): NoContentResponse;
412
+ }
413
+ @scenario
414
+ @scenarioDoc("""
415
+ For File part, filename will not be checked but it is necessary otherwise cadl-ranch can't parse it;
416
+ content-type will be checked with value "application/octet-stream". Expect request:
417
+ ```
418
+ POST /upload HTTP/1.1
419
+ Content-Length: 428
420
+ Content-Type: multipart/form-data; boundary=abcde12345
421
+
422
+ --abcde12345
423
+ Content-Disposition: form-data; name="id"
424
+ Content-Type: text/plain
425
+
426
+ 123
427
+ --abcde12345
428
+ Content-Disposition: form-data; name="address"
429
+ Content-Type: application/json
430
+
431
+ {
432
+ "city": "X"
433
+ }
434
+ --abcde12345
435
+ Content-Disposition: form-data; name="profileImage"; filename="<any-name-is-ok>"
436
+ Content-Type: application/octet-stream
437
+
438
+ {…file content of .jpg file…}
439
+ --abcde12345--
440
+ Content-Disposition: form-data; name="previousAddresses"
441
+ Content-Type: application/json
442
+
443
+ [{
444
+ "city": "Y"
445
+ },{
446
+ "city": "Z"
447
+ }]
448
+ --abcde12345
449
+ Content-Disposition: form-data; name="pictures"; filename="<any-name-is-ok>"
450
+ Content-Type: application/octet-stream
451
+
452
+ {…file content of .png file…}
453
+ --abcde12345
454
+ Content-Disposition: form-data; name="pictures"; filename="<any-name-is-ok>"
455
+ Content-Type: application/octet-stream
456
+
457
+ {…file content of .png file…}
458
+ --abcde12345--
459
+ ```
460
+ """)
461
+ @doc("Test content-type: multipart/form-data for mixed scenarios")
462
+ @post
463
+ @route("/complex-parts-with-httppart")
464
+ op jsonArrayAndFileArray(
465
+ @header contentType: "multipart/form-data",
466
+ @multipartBody body: ComplexHttpPartsModelRequest,
467
+ ): NoContentResponse;
468
+
469
+ namespace NonString {
470
+ @scenario
471
+ @scenarioDoc("""
472
+ Expect request:
473
+ ```
474
+ POST /upload HTTP/1.1
475
+ Content-Length: 428
476
+ Content-Type: multipart/form-data; boundary=abcde12345
477
+
478
+ --abcde12345
479
+ Content-Disposition: form-data; name="temperature"
480
+ Content-Type: text/plain
481
+
482
+ 0.5
483
+ --abcde12345
484
+ ```
485
+ """)
486
+ @doc("Test content-type: multipart/form-data for non string")
487
+ @post
488
+ @route("/non-string-float")
489
+ op float(
490
+ @header contentType: "multipart/form-data",
491
+ @multipartBody body: {
492
+ temperature: HttpPart<{
493
+ @body body: float64;
494
+ @header contentType: "text/plain";
495
+ }>;
496
+ },
497
+ ): NoContentResponse;
498
+ }
499
+ }
500
+ }