@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,337 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Test for the spread operator.")
8
+ @scenarioService("/parameters/spread")
9
+ namespace Parameters.Spread;
10
+
11
+ @route("/model")
12
+ namespace Model {
13
+ @doc("This is a simple model.")
14
+ model BodyParameter {
15
+ name: string;
16
+ }
17
+
18
+ @scenario
19
+ @scenarioDoc("""
20
+ Test case for spread named model.
21
+
22
+ Should not generate request body model named `BodyParameter`.
23
+ Should generate an operation like below:
24
+ ```
25
+ spreadAsRequestBody(name: string)
26
+ ```
27
+ Note the parameter name is guessed from the model name and it may vary by language.
28
+
29
+ Expected request body:
30
+ ```json
31
+ { "name": "foo" }
32
+ ```
33
+ """)
34
+ @route("/request-body")
35
+ @put
36
+ op spreadAsRequestBody(...BodyParameter): NoContentResponse;
37
+
38
+ @doc("This is a model only with `@body` property.")
39
+ model CompositeRequestOnlyWithBody {
40
+ @body body: BodyParameter;
41
+ }
42
+
43
+ @scenario
44
+ @scenarioDoc("""
45
+ Test case for spread model only with `@body` property.
46
+
47
+ Should generate request body model named `BodyParameter`.
48
+ Should not generate model named `CompositeRequestOnlyWithBody`.
49
+ Should generate an operation like below:
50
+ ```
51
+ spreadCompositeRequestOnlyWithBody(bodyParameter: BodyParameter)
52
+ ```
53
+ Note the parameter name is guessed from the model name and it may vary by language.
54
+
55
+ Expected request body:
56
+ ```json
57
+ { "name": "foo" }
58
+ ```
59
+ """)
60
+ @route("/composite-request-only-with-body")
61
+ @put
62
+ op spreadCompositeRequestOnlyWithBody(...CompositeRequestOnlyWithBody): NoContentResponse;
63
+
64
+ @doc("This is a model without `@body` property.")
65
+ model CompositeRequestWithoutBody {
66
+ @path
67
+ name: string;
68
+
69
+ @header
70
+ testHeader: string;
71
+ }
72
+
73
+ @scenario
74
+ @scenarioDoc("""
75
+ Test case for spread model without `@body` property.
76
+
77
+ Should not generate model named `CompositeRequestOnlyWithBody`.
78
+ Should generate an operation like below:
79
+ ```
80
+ spreadCompositeRequestWithoutBody(name: string, testHeader: string)
81
+ ```
82
+
83
+ Expected path parameter: name="foo"
84
+ Expected header parameter: testHeader="bar"
85
+ """)
86
+ @route("/composite-request-without-body/{name}")
87
+ @put
88
+ op spreadCompositeRequestWithoutBody(...CompositeRequestWithoutBody): NoContentResponse;
89
+
90
+ @doc("This is a model with all http request decorator.")
91
+ model CompositeRequest {
92
+ @path
93
+ name: string;
94
+
95
+ @header
96
+ testHeader: string;
97
+
98
+ @body
99
+ body: BodyParameter;
100
+ }
101
+
102
+ @scenario
103
+ @scenarioDoc("""
104
+ Test case for spread model with all http request decorator.
105
+
106
+ Should generate request body model named `BodyParameter`.
107
+ Should not generate model named `CompositeRequest`.
108
+ Should generate an operation like below:
109
+ ```
110
+ spreadCompositeRequest(name: string, testHeader: string, bodyParameter: BodyParameter)
111
+ ```
112
+ Note the parameter name is guessed from the model name and it may vary by language.
113
+
114
+ Expected path parameter: name="foo"
115
+ Expected header parameter: testHeader="bar"
116
+ Expected request body:
117
+ ```json
118
+ { "name": "foo" }
119
+ ```
120
+ """)
121
+ @route("/composite-request/{name}")
122
+ @put
123
+ op spreadCompositeRequest(...CompositeRequest): NoContentResponse;
124
+
125
+ @doc("This is a model with non-body http request decorator.")
126
+ model CompositeRequestMix {
127
+ @path
128
+ name: string;
129
+
130
+ @header
131
+ testHeader: string;
132
+
133
+ prop: string;
134
+ }
135
+
136
+ @scenario
137
+ @scenarioDoc("""
138
+ Test case for spread model with non-body http request decorator.
139
+
140
+ Should not generate model named `CompositeRequestMix`.
141
+ Should generate an operation like below:
142
+ ```
143
+ spreadCompositeRequestMix(name: string, testHeader: string, prop: string)
144
+ ```
145
+ Note the parameter name is guessed from the model name and it may vary by language.
146
+
147
+ Expected path parameter: name="foo"
148
+ Expected header parameter: testHeader="bar"
149
+ Expected request body:
150
+ ```json
151
+ { "prop": "foo" }
152
+ ```
153
+ """)
154
+ @route("/composite-request-mix/{name}")
155
+ @put
156
+ op spreadCompositeRequestMix(...CompositeRequestMix): NoContentResponse;
157
+ }
158
+
159
+ @route("/alias")
160
+ namespace Alias {
161
+ alias BodyParameter = {
162
+ name: string;
163
+ };
164
+
165
+ @scenario
166
+ @scenarioDoc("""
167
+ Test case for spread alias.
168
+
169
+ Should not generate any model named `BodyParameter`.
170
+ Should generate an operation like:
171
+ ```
172
+ spreadAsRequestBody(name: string)
173
+ ```
174
+
175
+ Expected request body:
176
+ ```json
177
+ { "name": "foo" }
178
+ ```
179
+ """)
180
+ @route("/request-body")
181
+ @put
182
+ op spreadAsRequestBody(...BodyParameter): NoContentResponse;
183
+
184
+ model InnerModel {
185
+ name: string;
186
+ }
187
+
188
+ alias InnerModelParameter = {
189
+ @path
190
+ id: string;
191
+
192
+ ...InnerModel;
193
+
194
+ @header
195
+ `x-ms-test-header`: string;
196
+ };
197
+
198
+ @scenario
199
+ @scenarioDoc("""
200
+ Test case for spread alias.
201
+
202
+ Should not generate any model named `InnerModel`.
203
+ Should not generate any model named `InnerModelParameter`.
204
+ Should generate an operation like:
205
+ ```
206
+ spreadParameterWithInnerModel(id: string, x_ms_test_header: string, name: string)
207
+ ```
208
+ Note the parameter name is guessed from the model name and it may vary by language.
209
+
210
+ Expected path parameter: id="1"
211
+ Expected header parameter: x-ms-test-header="bar"
212
+ Expected request body:
213
+ ```json
214
+ { "name": "foo" }
215
+ ```
216
+ """)
217
+ @route("/inner-model-parameter/{id}")
218
+ @post
219
+ op spreadParameterWithInnerModel(...InnerModelParameter): NoContentResponse;
220
+
221
+ alias RequestParameter = {
222
+ @path
223
+ id: string;
224
+
225
+ @header
226
+ `x-ms-test-header`: string;
227
+
228
+ name: string;
229
+ };
230
+
231
+ @scenario
232
+ @scenarioDoc("""
233
+ Test case for spread alias with path and header parameter.
234
+
235
+ Should not generate any model named `RequestParameter`.
236
+ Should generate an operation like below:
237
+ ```
238
+ spreadAsRequestParameter(id: string, x_ms_test_header: string, name: string)
239
+ ```
240
+ Note the parameter name may be normalized and vary by language.
241
+
242
+ Expected path parameter: id="1"
243
+ Expected header parameter: x-ms-test-header="bar"
244
+ Expected request body:
245
+ ```json
246
+ { "name": "foo" }
247
+ ```
248
+ """)
249
+ @route("/request-parameter/{id}")
250
+ @put
251
+ op spreadAsRequestParameter(...RequestParameter): NoContentResponse;
252
+
253
+ alias MultipleRequestParameters = {
254
+ @path
255
+ id: string;
256
+
257
+ @header
258
+ `x-ms-test-header`: string;
259
+
260
+ /** required string */
261
+ requiredString: string;
262
+
263
+ /** optional int */
264
+ optionalInt?: int32;
265
+
266
+ /** required int */
267
+ requiredIntList: int32[];
268
+
269
+ /** optional string */
270
+ optionalStringList?: string[];
271
+ };
272
+
273
+ @scenario
274
+ @scenarioDoc("""
275
+ Test case for spread alias including 6 parameters. May handle as property bag for these parameters.
276
+
277
+ Should not generate any model named `MultipleRequestParameters`.
278
+ Since it contains both optional properties and required properties, the method signature might vary across different languages.
279
+ Note it's also acceptable if some languages handle it as property bag.
280
+
281
+ Expected path parameter: id="1"
282
+ Expected header parameter: x-ms-test-header="bar"
283
+ Expected request body:
284
+ ```json
285
+ {
286
+ "requiredString": "foo",
287
+ "optionalInt": 1,
288
+ "requiredIntList": [1, 2],
289
+ "optionalStringList": ["foo", "bar"]
290
+ }
291
+ ```
292
+ """)
293
+ @route("/multiple-parameters/{id}")
294
+ @put
295
+ op spreadWithMultipleParameters(...MultipleRequestParameters): NoContentResponse;
296
+
297
+ alias InnerAlias = {
298
+ @doc("name of the Thing")
299
+ name: string;
300
+
301
+ @doc("age of the Thing")
302
+ age: int32;
303
+ };
304
+
305
+ alias InnerAliasParameter = {
306
+ @path id: string;
307
+ ...InnerAlias;
308
+
309
+ @header
310
+ `x-ms-test-header`: string;
311
+ };
312
+
313
+ @scenario
314
+ @scenarioDoc("""
315
+ Test case for spread alias with contains another alias property as body.
316
+
317
+ Should not generate any model named `InnerAlias` and `InnerAliasParameter`.
318
+ Should generate an operation like below:
319
+ ```
320
+ spreadParameterWithInnerAlias(id: string, name: string, age: int32, x_ms_test_header: string)
321
+ ```
322
+ Note the parameter name is guessed from the model name and it may vary by language.
323
+ Expected path parameter: id="1"
324
+ Expected header parameter: x-ms-test-header="bar"
325
+ Expected request body:
326
+ ```json
327
+ {
328
+ "name": "foo",
329
+ "age": 1
330
+ }
331
+ ```
332
+ """)
333
+ @route("/inner-alias-parameter")
334
+ @doc("spread an alias with contains another alias property as body.")
335
+ @post
336
+ op spreadParameterWithInnerAlias(...InnerAliasParameter): NoContentResponse;
337
+ }
@@ -0,0 +1,165 @@
1
+ import { passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ Scenarios.Parameters_Spread_Model_spreadAsRequestBody = passOnSuccess({
6
+ uri: `/parameters/spread/model/request-body`,
7
+ method: "put",
8
+ request: {
9
+ body: {
10
+ name: "foo",
11
+ },
12
+ },
13
+ response: {
14
+ status: 204,
15
+ },
16
+ kind: "MockApiDefinition",
17
+ });
18
+
19
+ Scenarios.Parameters_Spread_Model_spreadCompositeRequestOnlyWithBody = passOnSuccess({
20
+ uri: `/parameters/spread/model/composite-request-only-with-body`,
21
+ method: "put",
22
+ request: {
23
+ body: {
24
+ name: "foo",
25
+ },
26
+ },
27
+ response: {
28
+ status: 204,
29
+ },
30
+ kind: "MockApiDefinition",
31
+ });
32
+
33
+ Scenarios.Parameters_Spread_Model_spreadCompositeRequestWithoutBody = passOnSuccess({
34
+ uri: `/parameters/spread/model/composite-request-without-body/foo`,
35
+ method: "put",
36
+ request: {
37
+ headers: {
38
+ "test-header": "bar",
39
+ },
40
+ },
41
+ response: {
42
+ status: 204,
43
+ },
44
+ kind: "MockApiDefinition",
45
+ });
46
+
47
+ Scenarios.Parameters_Spread_Model_spreadCompositeRequest = passOnSuccess({
48
+ uri: `/parameters/spread/model/composite-request/foo`,
49
+ method: "put",
50
+ request: {
51
+ body: {
52
+ name: "foo",
53
+ },
54
+ headers: {
55
+ "test-header": "bar",
56
+ },
57
+ },
58
+ response: {
59
+ status: 204,
60
+ },
61
+ kind: "MockApiDefinition",
62
+ });
63
+
64
+ Scenarios.Parameters_Spread_Model_spreadCompositeRequestMix = passOnSuccess({
65
+ uri: `/parameters/spread/model/composite-request-mix/foo`,
66
+ method: "put",
67
+ request: {
68
+ body: {
69
+ prop: "foo",
70
+ },
71
+ headers: {
72
+ "test-header": "bar",
73
+ },
74
+ },
75
+ response: {
76
+ status: 204,
77
+ },
78
+ kind: "MockApiDefinition",
79
+ });
80
+
81
+ Scenarios.Parameters_Spread_Alias_spreadAsRequestBody = passOnSuccess({
82
+ uri: `/parameters/spread/alias/request-body`,
83
+ method: "put",
84
+ request: {
85
+ body: {
86
+ name: "foo",
87
+ },
88
+ },
89
+ response: {
90
+ status: 204,
91
+ },
92
+ kind: "MockApiDefinition",
93
+ });
94
+
95
+ Scenarios.Parameters_Spread_Alias_spreadAsRequestParameter = passOnSuccess({
96
+ uri: `/parameters/spread/alias/request-parameter/1`,
97
+ method: "put",
98
+ request: {
99
+ body: {
100
+ name: "foo",
101
+ },
102
+ headers: {
103
+ "x-ms-test-header": "bar",
104
+ },
105
+ },
106
+ response: {
107
+ status: 204,
108
+ },
109
+ kind: "MockApiDefinition",
110
+ });
111
+
112
+ Scenarios.Parameters_Spread_Alias_spreadWithMultipleParameters = passOnSuccess({
113
+ uri: `/parameters/spread/alias/multiple-parameters/1`,
114
+ method: "put",
115
+ request: {
116
+ body: {
117
+ requiredString: "foo",
118
+ optionalInt: 1,
119
+ requiredIntList: [1, 2],
120
+ optionalStringList: ["foo", "bar"],
121
+ },
122
+ headers: {
123
+ "x-ms-test-header": "bar",
124
+ },
125
+ },
126
+ response: {
127
+ status: 204,
128
+ },
129
+ kind: "MockApiDefinition",
130
+ });
131
+
132
+ Scenarios.Parameters_Spread_Alias_spreadParameterWithInnerModel = passOnSuccess({
133
+ uri: `/parameters/spread/alias/inner-model-parameter/1`,
134
+ method: "post",
135
+ request: {
136
+ body: {
137
+ name: "foo",
138
+ },
139
+ headers: {
140
+ "x-ms-test-header": "bar",
141
+ },
142
+ },
143
+ response: {
144
+ status: 204,
145
+ },
146
+ kind: "MockApiDefinition",
147
+ });
148
+
149
+ Scenarios.Parameters_Spread_Alias_spreadParameterWithInnerAlias = passOnSuccess({
150
+ uri: `/parameters/spread/alias/inner-alias-parameter/1`,
151
+ method: "post",
152
+ request: {
153
+ body: {
154
+ name: "foo",
155
+ age: 1,
156
+ },
157
+ headers: {
158
+ "x-ms-test-header": "bar",
159
+ },
160
+ },
161
+ response: {
162
+ status: 204,
163
+ },
164
+ kind: "MockApiDefinition",
165
+ });
@@ -0,0 +1,61 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Test describing optionality of the request body.")
8
+ @scenarioService("/content-negotiation")
9
+ namespace Payload.ContentNegotiation;
10
+
11
+ @scenario
12
+ @scenarioDoc("""
13
+ Scenario that returns a different file encoding depending on the accept header.
14
+
15
+ - image/png return a png image
16
+ - image/jpeg return a jpeg image
17
+ """)
18
+ @route("same-body")
19
+ namespace SameBody {
20
+ model PngImage {
21
+ @header contentType: "image/png";
22
+ @body image: bytes;
23
+ }
24
+
25
+ model JpegImage {
26
+ @header contentType: "image/jpeg";
27
+ @body image: bytes;
28
+ }
29
+
30
+ @sharedRoute
31
+ op getAvatarAsPng(@header accept: "image/png"): PngImage;
32
+
33
+ @sharedRoute
34
+ op getAvatarAsJpeg(@header accept: "image/jpeg"): JpegImage;
35
+ }
36
+
37
+ @scenario
38
+ @scenarioDoc("""
39
+ Scenario that a different payload depending on the accept header.
40
+
41
+ - application/json return a png image in a Json object
42
+ - image/png return the png image
43
+ """)
44
+ @route("different-body")
45
+ namespace DifferentBody {
46
+ model PngImage {
47
+ @header contentType: "image/png";
48
+ @body image: bytes;
49
+ }
50
+
51
+ model PngImageAsJson {
52
+ @header contentType: "application/json";
53
+ content: bytes;
54
+ }
55
+
56
+ @sharedRoute
57
+ op getAvatarAsPng(@header accept: "image/png"): PngImage;
58
+
59
+ @sharedRoute
60
+ op getAvatarAsJson(@header accept: "application/json"): PngImageAsJson;
61
+ }