@typespec/http-specs 0.37.2

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