@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,39 @@
1
+ import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ const inheritanceValidBody = { name: "abc", age: 32, smart: true };
6
+
7
+ Scenarios.Type_Model_Inheritance_NotDiscriminated_postValid = passOnSuccess({
8
+ uri: "/type/model/inheritance/not-discriminated/valid",
9
+ method: "post",
10
+ request: {
11
+ body: inheritanceValidBody,
12
+ },
13
+ response: {
14
+ status: 204,
15
+ },
16
+ kind: "MockApiDefinition",
17
+ });
18
+ Scenarios.Type_Model_Inheritance_NotDiscriminated_getValid = passOnSuccess({
19
+ uri: "/type/model/inheritance/not-discriminated/valid",
20
+ method: "get",
21
+ request: {},
22
+ response: {
23
+ status: 200,
24
+ body: json(inheritanceValidBody),
25
+ },
26
+ kind: "MockApiDefinition",
27
+ });
28
+ Scenarios.Type_Model_Inheritance_NotDiscriminated_putValid = passOnSuccess({
29
+ uri: "/type/model/inheritance/not-discriminated/valid",
30
+ method: "put",
31
+ request: {
32
+ body: inheritanceValidBody,
33
+ },
34
+ response: {
35
+ status: 200,
36
+ body: json(inheritanceValidBody),
37
+ },
38
+ kind: "MockApiDefinition",
39
+ });
@@ -0,0 +1,71 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Illustrates inheritance recursion")
8
+ @scenarioService("/type/model/inheritance/recursive")
9
+ namespace Type.Model.Inheritance.Recursive;
10
+
11
+ @doc("extension")
12
+ model Extension extends Element {
13
+ level: int8;
14
+ }
15
+
16
+ @doc("element")
17
+ model Element {
18
+ extension?: Extension[];
19
+ }
20
+
21
+ @scenario
22
+ @scenarioDoc("""
23
+ Send a PUT request with the following body:
24
+ Expected input body:
25
+ ```json
26
+ {
27
+ "level": 0,
28
+ "extension": [
29
+ {
30
+ "level": 1,
31
+ "extension": [
32
+ {
33
+ "level": 2
34
+ }
35
+ ]
36
+ },
37
+ {
38
+ "level": 1
39
+ }
40
+ ]
41
+ }
42
+ ```
43
+ """)
44
+ @put
45
+ op put(@body input: Extension): void;
46
+
47
+ @scenario
48
+ @scenarioDoc("""
49
+ Send a GET request which returns the following body:
50
+ Expected response body:
51
+ ```json
52
+ {
53
+ "level": 0,
54
+ "extension": [
55
+ {
56
+ "level": 1,
57
+ "extension": [
58
+ {
59
+ "level": 2
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ "level": 1
65
+ }
66
+ ]
67
+ }
68
+ ```
69
+ """)
70
+ @get
71
+ op get(): Extension;
@@ -0,0 +1,41 @@
1
+ import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ const body = {
6
+ level: 0,
7
+ extension: [
8
+ {
9
+ level: 1,
10
+ extension: [
11
+ {
12
+ level: 2,
13
+ },
14
+ ],
15
+ },
16
+ {
17
+ level: 1,
18
+ },
19
+ ],
20
+ };
21
+ Scenarios.Type_Model_Inheritance_Recursive_put = passOnSuccess({
22
+ uri: "/type/model/inheritance/recursive",
23
+ method: "put",
24
+ request: {
25
+ body: body,
26
+ },
27
+ response: {
28
+ status: 204,
29
+ },
30
+ kind: "MockApiDefinition",
31
+ });
32
+ Scenarios.Type_Model_Inheritance_Recursive_get = passOnSuccess({
33
+ uri: "/type/model/inheritance/recursive",
34
+ method: "get",
35
+ request: {},
36
+ response: {
37
+ status: 200,
38
+ body: json(body),
39
+ },
40
+ kind: "MockApiDefinition",
41
+ });
@@ -0,0 +1,172 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Illustrates inheritance with single discriminator.")
8
+ @scenarioService("/type/model/inheritance/single-discriminator")
9
+ namespace Type.Model.Inheritance.SingleDiscriminator;
10
+
11
+ @doc("This is base model for polymorphic single level inheritance with a discriminator.")
12
+ @discriminator("kind")
13
+ model Bird {
14
+ kind: string;
15
+ wingspan: int32;
16
+ }
17
+
18
+ @doc("The second level model in polymorphic single level inheritance.")
19
+ model SeaGull extends Bird {
20
+ kind: "seagull";
21
+ }
22
+
23
+ @doc("The second level model in polymorphic single level inheritance.")
24
+ model Sparrow extends Bird {
25
+ kind: "sparrow";
26
+ }
27
+
28
+ @doc("The second level model in polymorphic single level inheritance.")
29
+ model Goose extends Bird {
30
+ kind: "goose";
31
+ }
32
+
33
+ @doc("The second level model in polymorphic single levels inheritance which contains references to other polymorphic instances.")
34
+ model Eagle extends Bird {
35
+ kind: "eagle";
36
+ friends?: Bird[];
37
+ hate?: Record<Bird>;
38
+ partner?: Bird;
39
+ }
40
+
41
+ @doc("Define a base class in the legacy way. Discriminator property is not explicitly defined in the model.")
42
+ @discriminator("kind")
43
+ model Dinosaur {
44
+ size: int32;
45
+ }
46
+
47
+ @doc("The second level legacy model in polymorphic single level inheritance.")
48
+ model TRex extends Dinosaur {
49
+ kind: "t-rex";
50
+ }
51
+
52
+ @scenario
53
+ @route("/model")
54
+ @scenarioDoc("""
55
+ Generate and receive polymorphic model in single level inheritance with 1 discriminator.
56
+ Expected response body:
57
+ ```json
58
+ {"wingspan": 1, "kind": "sparrow"}
59
+ ```
60
+ """)
61
+ @get
62
+ op getModel(): Bird;
63
+
64
+ @scenario
65
+ @route("/model")
66
+ @scenarioDoc("""
67
+ Generate and send polymorphic model in single level inheritance with 1 discriminator.
68
+ Expected input body:
69
+ ```json
70
+ {"wingspan": 1, "kind": "sparrow"}
71
+ ```
72
+ """)
73
+ @put
74
+ op putModel(@body input: Bird): NoContentResponse;
75
+
76
+ @scenario
77
+ @route("/recursivemodel")
78
+ @scenarioDoc("""
79
+ Generate and receive polymorphic models has collection and dictionary properties referring to other polymorphic models.
80
+ Expected response body:
81
+ ```json
82
+ {
83
+ "wingspan": 5,
84
+ "kind": "eagle",
85
+ "partner": {
86
+ "wingspan": 2,
87
+ "kind": "goose"
88
+ },
89
+ "friends": [
90
+ {
91
+ "wingspan": 2,
92
+ "kind": "seagull"
93
+ }
94
+ ],
95
+ "hate": {
96
+ "key3": {
97
+ "wingspan": 1,
98
+ "kind": "sparrow"
99
+ }
100
+ }
101
+ }
102
+ ```
103
+ """)
104
+ @get
105
+ op getRecursiveModel(): Bird;
106
+
107
+ @scenario
108
+ @route("/recursivemodel")
109
+ @scenarioDoc("""
110
+ Generate and send polymorphic models has collection and dictionary properties referring to other polymorphic models.
111
+ Expected input body:
112
+ ```json
113
+ {
114
+ "wingspan": 5,
115
+ "kind": "eagle",
116
+ "partner": {
117
+ "wingspan": 2,
118
+ "kind": "goose"
119
+ },
120
+ "friends": [
121
+ {
122
+ "wingspan": 2,
123
+ "kind": "seagull"
124
+ }
125
+ ],
126
+ "hate": {
127
+ "key3": {
128
+ "wingspan": 1,
129
+ "kind": "sparrow"
130
+ }
131
+ }
132
+ }
133
+ ```
134
+ """)
135
+ @put
136
+ op putRecursiveModel(@body input: Bird): NoContentResponse;
137
+
138
+ @scenario
139
+ @route("/missingdiscriminator")
140
+ @scenarioDoc("""
141
+ Get a model omitting the discriminator.
142
+ Expected response body:
143
+ ```json
144
+ {"wingspan": 1}
145
+ ```
146
+ """)
147
+ @get
148
+ op getMissingDiscriminator(): Bird;
149
+
150
+ @scenario
151
+ @route("/wrongdiscriminator")
152
+ @scenarioDoc("""
153
+ Get a model containing discriminator value never defined.
154
+ Expected response body:
155
+ ```json
156
+ {"wingspan": 1, "kind": "wrongKind" }
157
+ ```
158
+ """)
159
+ @get
160
+ op getWrongDiscriminator(): Bird;
161
+
162
+ @scenario
163
+ @route("/legacy-model")
164
+ @scenarioDoc("""
165
+ Generate and receive polymorphic model defined in legacy way.
166
+ Expected response body:
167
+ ```json
168
+ {"size": 20, "kind": "t-rex"}
169
+ ```
170
+ """)
171
+ @get
172
+ op getLegacyModel(): Dinosaur;
@@ -0,0 +1,103 @@
1
+ import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ const validPolymorphicBody = {
6
+ wingspan: 1,
7
+ kind: "sparrow",
8
+ };
9
+ const validRecursiveBody = {
10
+ wingspan: 5,
11
+ kind: "eagle",
12
+ partner: {
13
+ wingspan: 2,
14
+ kind: "goose",
15
+ },
16
+ friends: [
17
+ {
18
+ wingspan: 2,
19
+ kind: "seagull",
20
+ },
21
+ ],
22
+ hate: {
23
+ key3: {
24
+ wingspan: 1,
25
+ kind: "sparrow",
26
+ },
27
+ },
28
+ };
29
+ Scenarios.Type_Model_Inheritance_SingleDiscriminator_getModel = passOnSuccess({
30
+ uri: "/type/model/inheritance/single-discriminator/model",
31
+ method: "get",
32
+ request: {},
33
+ response: {
34
+ status: 200,
35
+ body: json(validPolymorphicBody),
36
+ },
37
+ kind: "MockApiDefinition",
38
+ });
39
+ Scenarios.Type_Model_Inheritance_SingleDiscriminator_putModel = passOnSuccess({
40
+ uri: "/type/model/inheritance/single-discriminator/model",
41
+ method: "put",
42
+ request: {
43
+ body: validPolymorphicBody,
44
+ },
45
+ response: {
46
+ status: 204,
47
+ },
48
+ kind: "MockApiDefinition",
49
+ });
50
+
51
+ Scenarios.Type_Model_Inheritance_SingleDiscriminator_getRecursiveModel = passOnSuccess({
52
+ uri: "/type/model/inheritance/single-discriminator/recursivemodel",
53
+ method: "get",
54
+ request: {},
55
+ response: {
56
+ status: 200,
57
+ body: json(validRecursiveBody),
58
+ },
59
+ kind: "MockApiDefinition",
60
+ });
61
+ Scenarios.Type_Model_Inheritance_SingleDiscriminator_putRecursiveModel = passOnSuccess({
62
+ uri: "/type/model/inheritance/single-discriminator/recursivemodel",
63
+ method: "put",
64
+ request: {
65
+ body: validRecursiveBody,
66
+ },
67
+ response: {
68
+ status: 204,
69
+ },
70
+ kind: "MockApiDefinition",
71
+ });
72
+
73
+ Scenarios.Type_Model_Inheritance_SingleDiscriminator_getMissingDiscriminator = passOnSuccess({
74
+ uri: "/type/model/inheritance/single-discriminator/missingdiscriminator",
75
+ method: "get",
76
+ request: {},
77
+ response: {
78
+ status: 200,
79
+ body: json({ wingspan: 1 }),
80
+ },
81
+ kind: "MockApiDefinition",
82
+ });
83
+
84
+ Scenarios.Type_Model_Inheritance_SingleDiscriminator_getWrongDiscriminator = passOnSuccess({
85
+ uri: "/type/model/inheritance/single-discriminator/wrongdiscriminator",
86
+ method: "get",
87
+ request: {},
88
+ response: {
89
+ status: 200,
90
+ body: json({ wingspan: 1, kind: "wrongKind" }),
91
+ },
92
+ kind: "MockApiDefinition",
93
+ });
94
+ Scenarios.Type_Model_Inheritance_SingleDiscriminator_getLegacyModel = passOnSuccess({
95
+ uri: "/type/model/inheritance/single-discriminator/legacy-model",
96
+ method: "get",
97
+ request: {},
98
+ response: {
99
+ status: 200,
100
+ body: json({ size: 20, kind: "t-rex" }),
101
+ },
102
+ kind: "MockApiDefinition",
103
+ });
@@ -0,0 +1,130 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ /**
8
+ * Illustrates the model templated cases. There is a base templated type and an instantiated type extending from it.
9
+ */
10
+ @scenarioService("/type/model/templated")
11
+ namespace Type.Model.Templated;
12
+
13
+ @friendlyName("{name}Type", T)
14
+ model NumericType<T extends numeric> {
15
+ /**
16
+ * An array of numeric values.
17
+ */
18
+ values: T[];
19
+
20
+ value: T;
21
+ }
22
+
23
+ /**
24
+ * An instantiated type representing int32 values type.
25
+ */
26
+ model Int32ValuesType extends NumericType<int32> {
27
+ /**
28
+ * The Kind of the Int32ValuesType.
29
+ */
30
+ kind: "Int32Values";
31
+ }
32
+
33
+ /**
34
+ * An instantiated type representing float32 values type.
35
+ */
36
+ model Float32ValuesType extends NumericType<float32> {
37
+ /**
38
+ * The Kind of the Float32ValuesType.
39
+ */
40
+ kind: "Float32Values";
41
+ }
42
+
43
+ @scenario
44
+ @scenarioDoc("""
45
+ Expected input body:
46
+ ```json
47
+ {
48
+ "kind": "Int32Values",
49
+ "values":
50
+ [
51
+ 1234
52
+ ],
53
+ "value": 1234
54
+ }
55
+ ```
56
+
57
+ Expected response body:
58
+ ```json
59
+ {
60
+ "values":
61
+ [
62
+ 1234
63
+ ],
64
+ "value": 1234
65
+ }
66
+ ```
67
+ """)
68
+ @route("/numericType")
69
+ @put
70
+ op numericType(@body input: NumericType<int32>): NumericType<int32>;
71
+
72
+ @scenario
73
+ @scenarioDoc("""
74
+ Expected input body:
75
+ ```json
76
+ {
77
+ "kind": "Float32Values",
78
+ "values":
79
+ [
80
+ 0.5
81
+ ],
82
+ "value": 0.5
83
+ }
84
+ ```
85
+
86
+ Expected response body:
87
+ ```json
88
+ {
89
+ "kind": "Float32Values",
90
+ "values":
91
+ [
92
+ 0.5
93
+ ],
94
+ "value": 0.5
95
+ }
96
+ ```
97
+ """)
98
+ @route("/float32ValuesType")
99
+ @put
100
+ op float32Type(@body input: Float32ValuesType): Float32ValuesType;
101
+
102
+ @scenario
103
+ @scenarioDoc("""
104
+ Expected input body:
105
+ ```json
106
+ {
107
+ "kind": "Int32Values",
108
+ "values":
109
+ [
110
+ 1234
111
+ ],
112
+ "value": 1234
113
+ }
114
+ ```
115
+
116
+ Expected response body:
117
+ ```json
118
+ {
119
+ "kind": "Int32Values",
120
+ "values":
121
+ [
122
+ 1234
123
+ ],
124
+ "value": 1234
125
+ }
126
+ ```
127
+ """)
128
+ @route("/int32ValuesType")
129
+ @put
130
+ op int32Type(@body input: Int32ValuesType): Int32ValuesType;
@@ -0,0 +1,66 @@
1
+ import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ Scenarios.Type_Model_Templated_numericType = passOnSuccess({
6
+ uri: "/type/model/templated/numericType",
7
+ method: "put",
8
+ request: {
9
+ body: {
10
+ kind: "Int32Values",
11
+ values: [1234],
12
+ value: 1234,
13
+ },
14
+ },
15
+ response: {
16
+ status: 200,
17
+ body: json({
18
+ kind: "Int32Values",
19
+ values: [1234],
20
+ value: 1234,
21
+ }),
22
+ },
23
+ kind: "MockApiDefinition",
24
+ });
25
+
26
+ Scenarios.Type_Model_Templated_float32Type = passOnSuccess({
27
+ uri: "/type/model/templated/float32ValuesType",
28
+ method: "put",
29
+ request: {
30
+ body: {
31
+ kind: "Float32Values",
32
+ values: [0.5],
33
+ value: 0.5,
34
+ },
35
+ },
36
+ response: {
37
+ status: 200,
38
+ body: json({
39
+ kind: "Float32Values",
40
+ values: [0.5],
41
+ value: 0.5,
42
+ }),
43
+ },
44
+ kind: "MockApiDefinition",
45
+ });
46
+
47
+ Scenarios.Type_Model_Templated_int32Type = passOnSuccess({
48
+ uri: "/type/model/templated/int32ValuesType",
49
+ method: "put",
50
+ request: {
51
+ body: {
52
+ kind: "Int32Values",
53
+ values: [1234],
54
+ value: 1234,
55
+ },
56
+ },
57
+ response: {
58
+ status: 200,
59
+ body: json({
60
+ kind: "Int32Values",
61
+ values: [1234],
62
+ value: 1234,
63
+ }),
64
+ },
65
+ kind: "MockApiDefinition",
66
+ });
@@ -0,0 +1,49 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ /**
8
+ * Those tests are meant to test different behavior of records if they are used as input, output or both.
9
+ * This is something that might not matter in your emitter.
10
+ *
11
+ * This is valuable if you for example only decide to create a public constructor if a model is used as input.
12
+ */
13
+ @doc("Illustrates usage of Record in different places(Operation parameters, return type or both).")
14
+ @scenarioService("/type/model/usage")
15
+ namespace Type.Model.Usage;
16
+
17
+ alias RecordBase = {
18
+ requiredProp: string;
19
+ };
20
+
21
+ @doc("Record used in operation parameters")
22
+ model InputRecord {
23
+ ...RecordBase;
24
+ }
25
+
26
+ @doc("Record used in operation return type")
27
+ model OutputRecord {
28
+ ...RecordBase;
29
+ }
30
+
31
+ @doc("Record used both as operation parameter and return type")
32
+ model InputOutputRecord {
33
+ ...RecordBase;
34
+ }
35
+
36
+ @scenario
37
+ @scenarioDoc("Send a POST request with the following body {requiredProp: \"example-value\"}")
38
+ @route("/input")
39
+ op input(@body input: InputRecord): void;
40
+
41
+ @scenario
42
+ @scenarioDoc("Send a GET request which return the following body {requiredProp: \"example-value\"}")
43
+ @route("/output")
44
+ op output(): OutputRecord;
45
+
46
+ @scenario
47
+ @scenarioDoc("Send a POST request which return the following body {requiredProp: \"example-value\"} and return the same.")
48
+ @route("/input-output")
49
+ op inputAndOutput(@body body: InputOutputRecord): InputOutputRecord;