@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,191 @@
1
+ import {
2
+ CollectionFormat,
3
+ json,
4
+ MockRequest,
5
+ passOnSuccess,
6
+ ScenarioMockApi,
7
+ } from "@typespec/spec-api";
8
+
9
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
10
+
11
+ function createBodyServerTests(uri: string, data: any, value: any) {
12
+ return passOnSuccess({
13
+ uri,
14
+ method: "post",
15
+ request: {
16
+ body: data,
17
+ },
18
+ response: {
19
+ status: 200,
20
+ body: json(data),
21
+ },
22
+ kind: "MockApiDefinition",
23
+ });
24
+ }
25
+ Scenarios.Encode_Duration_Property_default = createBodyServerTests(
26
+ "/encode/duration/property/default",
27
+ {
28
+ value: "P40D",
29
+ },
30
+ "P40D",
31
+ );
32
+ Scenarios.Encode_Duration_Property_floatSeconds = createBodyServerTests(
33
+ "/encode/duration/property/float-seconds",
34
+ {
35
+ value: 35.625,
36
+ },
37
+ 35.625,
38
+ );
39
+ Scenarios.Encode_Duration_Property_float64Seconds = createBodyServerTests(
40
+ "/encode/duration/property/float64-seconds",
41
+ {
42
+ value: 35.625,
43
+ },
44
+ 35.625,
45
+ );
46
+ Scenarios.Encode_Duration_Property_int32Seconds = createBodyServerTests(
47
+ "/encode/duration/property/int32-seconds",
48
+ {
49
+ value: 36,
50
+ },
51
+ 36,
52
+ );
53
+ Scenarios.Encode_Duration_Property_iso8601 = createBodyServerTests(
54
+ "/encode/duration/property/iso8601",
55
+ {
56
+ value: "P40D",
57
+ },
58
+ "P40D",
59
+ );
60
+ Scenarios.Encode_Duration_Property_floatSecondsArray = createBodyServerTests(
61
+ "/encode/duration/property/float-seconds-array",
62
+ {
63
+ value: [35.625, 46.75],
64
+ },
65
+ [35.625, 46.75],
66
+ );
67
+
68
+ function createQueryServerTests(
69
+ uri: string,
70
+ paramData: any,
71
+ value: any,
72
+ collectionFormat?: CollectionFormat,
73
+ ) {
74
+ return passOnSuccess({
75
+ uri,
76
+ method: "get",
77
+ request: {
78
+ params: paramData,
79
+ },
80
+ response: {
81
+ status: 204,
82
+ },
83
+ handler: (req: MockRequest) => {
84
+ req.expect.containsQueryParam("input", value, collectionFormat);
85
+ return {
86
+ status: 204,
87
+ };
88
+ },
89
+ kind: "MockApiDefinition",
90
+ });
91
+ }
92
+ Scenarios.Encode_Duration_Query_default = createQueryServerTests(
93
+ "/encode/duration/query/default",
94
+ {
95
+ input: "P40D",
96
+ },
97
+ "P40D",
98
+ );
99
+ Scenarios.Encode_Duration_Query_iso8601 = createQueryServerTests(
100
+ "/encode/duration/query/iso8601",
101
+ {
102
+ input: "P40D",
103
+ },
104
+ "P40D",
105
+ );
106
+ Scenarios.Encode_Duration_Query_int32Seconds = createQueryServerTests(
107
+ "/encode/duration/query/int32-seconds",
108
+ {
109
+ input: 36,
110
+ },
111
+ "36",
112
+ );
113
+ Scenarios.Encode_Duration_Query_int32SecondsArray = createQueryServerTests(
114
+ "/encode/duration/query/int32-seconds-array",
115
+ {
116
+ input: [36, 47].join(","),
117
+ },
118
+ ["36", "47"],
119
+ "csv",
120
+ );
121
+ Scenarios.Encode_Duration_Query_floatSeconds = createQueryServerTests(
122
+ "/encode/duration/query/float-seconds",
123
+ {
124
+ input: 35.625,
125
+ },
126
+ "35.625",
127
+ );
128
+ Scenarios.Encode_Duration_Query_float64Seconds = createQueryServerTests(
129
+ "/encode/duration/query/float64-seconds",
130
+ {
131
+ input: 35.625,
132
+ },
133
+ "35.625",
134
+ );
135
+
136
+ function createHeaderServerTests(uri: string, headersData: any, value: any) {
137
+ return passOnSuccess({
138
+ uri,
139
+ method: "get",
140
+ request: {
141
+ headers: headersData,
142
+ },
143
+ response: {
144
+ status: 204,
145
+ },
146
+ kind: "MockApiDefinition",
147
+ });
148
+ }
149
+
150
+ Scenarios.Encode_Duration_Header_default = createHeaderServerTests(
151
+ "/encode/duration/header/default",
152
+ {
153
+ duration: "P40D",
154
+ },
155
+ "P40D",
156
+ );
157
+ Scenarios.Encode_Duration_Header_iso8601 = createHeaderServerTests(
158
+ "/encode/duration/header/iso8601",
159
+ {
160
+ duration: "P40D",
161
+ },
162
+ "P40D",
163
+ );
164
+ Scenarios.Encode_Duration_Header_int32Seconds = createHeaderServerTests(
165
+ "/encode/duration/header/int32-seconds",
166
+ {
167
+ duration: "36",
168
+ },
169
+ "36",
170
+ );
171
+ Scenarios.Encode_Duration_Header_floatSeconds = createHeaderServerTests(
172
+ "/encode/duration/header/float-seconds",
173
+ {
174
+ duration: "35.625",
175
+ },
176
+ "35.625",
177
+ );
178
+ Scenarios.Encode_Duration_Header_float64Seconds = createHeaderServerTests(
179
+ "/encode/duration/header/float64-seconds",
180
+ {
181
+ duration: "35.625",
182
+ },
183
+ "35.625",
184
+ );
185
+ Scenarios.Encode_Duration_Header_iso8601Array = createHeaderServerTests(
186
+ "/encode/duration/header/iso8601-array",
187
+ {
188
+ duration: ["P40D", "P50D"].join(","),
189
+ },
190
+ "P40D,P50D",
191
+ );
@@ -0,0 +1,69 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Test for encode decorator on integer.")
8
+ @scenarioService("/encode/numeric")
9
+ namespace Encode.Numeric;
10
+
11
+ @route("/property")
12
+ namespace Property {
13
+ alias SendSafeIntAsString = SendIntAsString<safeint, "10000000000", SafeintAsStringProperty>;
14
+
15
+ @route("/safeint")
16
+ op safeintAsString is SendSafeIntAsString.sendIntAsString;
17
+
18
+ model SafeintAsStringProperty {
19
+ @encode(string)
20
+ value: safeint;
21
+ }
22
+
23
+ alias SendUint32AsString = SendIntAsString<uint32, "1", Uint32AsStringProperty>;
24
+
25
+ @route("/uint32")
26
+ op uint32AsStringOptional is SendUint32AsString.sendIntAsString;
27
+
28
+ model Uint32AsStringProperty {
29
+ @encode(string)
30
+ value?: uint32;
31
+ }
32
+
33
+ alias SendUint8AsString = SendIntAsString<uint8, "255", Uint8AsStringProperty>;
34
+
35
+ @route("/uint8")
36
+ op uint8AsString is SendUint8AsString.sendIntAsString;
37
+
38
+ model Uint8AsStringProperty {
39
+ @encode(string)
40
+ value: uint8;
41
+ }
42
+
43
+ interface SendIntAsString<IntType extends integer, StringValue extends string, Payload> {
44
+ @scenario
45
+ @scenarioDoc(
46
+ """
47
+ Test operation with request and response model contains property of {type} type with string encode.
48
+ Expected request body:
49
+ ```json
50
+ {
51
+ "value": "{value}"
52
+ }
53
+ ```
54
+ Expected response body:
55
+ ```json
56
+ {
57
+ "value": "{value}"
58
+ }
59
+ ```
60
+ """,
61
+ {
62
+ type: IntType,
63
+ value: StringValue,
64
+ }
65
+ )
66
+ @post
67
+ sendIntAsString(@body value: Payload): Payload;
68
+ }
69
+ }
@@ -0,0 +1,32 @@
1
+ import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ function createTests(uri: string, value: any) {
6
+ return passOnSuccess({
7
+ uri,
8
+ method: "post",
9
+ request: {
10
+ body: {
11
+ value,
12
+ },
13
+ },
14
+ response: {
15
+ status: 200,
16
+ body: json({ value }),
17
+ },
18
+ kind: "MockApiDefinition",
19
+ });
20
+ }
21
+ Scenarios.Encode_Numeric_Property_safeintAsString = createTests(
22
+ "/encode/numeric/property/safeint",
23
+ "10000000000",
24
+ );
25
+ Scenarios.Encode_Numeric_Property_uint32AsStringOptional = createTests(
26
+ "/encode/numeric/property/uint32",
27
+ "1",
28
+ );
29
+ Scenarios.Encode_Numeric_Property_uint8AsString = createTests(
30
+ "/encode/numeric/property/uint8",
31
+ "255",
32
+ );
@@ -0,0 +1,8 @@
1
+ import { resolvePath } from "@typespec/compiler";
2
+ import { readFileSync } from "fs";
3
+ import { fileURLToPath } from "url";
4
+
5
+ const root = resolvePath(fileURLToPath(import.meta.url), "../../../");
6
+
7
+ export const pngFile = readFileSync(resolvePath(root, "assets/image.png"));
8
+ export const jpgFile = readFileSync(resolvePath(root, "assets/image.jpg"));
@@ -0,0 +1,58 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Test for basic parameters cases.")
8
+ @scenarioService("/parameters/basic")
9
+ namespace Parameters.Basic;
10
+
11
+ @route("/explicit-body")
12
+ namespace ExplicitBody {
13
+ @doc("This is a simple model.")
14
+ model User {
15
+ name: string;
16
+ }
17
+
18
+ @scenario
19
+ @scenarioDoc("""
20
+ Test case for simple explicit body.
21
+
22
+ Should generate request body model named `User`.
23
+ Should generate an operation like below:
24
+ ```
25
+ spreadAsRequestBody(bodyParameter: BodyParameter)
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("/simple")
35
+ @put
36
+ op simple(@body body: User): NoContentResponse;
37
+ }
38
+
39
+ @route("/implicit-body")
40
+ namespace ImplicitBody {
41
+ @scenario
42
+ @scenarioDoc("""
43
+ Test case for simple implicit body.
44
+
45
+ Should generate an operation like below:
46
+ ```
47
+ simple(name: string)
48
+ ```
49
+
50
+ Expected request body:
51
+ ```json
52
+ { "name": "foo" }
53
+ ```
54
+ """)
55
+ @route("/simple")
56
+ @put
57
+ op simple(name: string): NoContentResponse;
58
+ }
@@ -0,0 +1,25 @@
1
+ import { passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+ function createServerTests(uri: string) {
5
+ return passOnSuccess({
6
+ uri,
7
+ method: "put",
8
+ request: {
9
+ body: {
10
+ name: "foo",
11
+ },
12
+ },
13
+ response: {
14
+ status: 204,
15
+ },
16
+ kind: "MockApiDefinition",
17
+ });
18
+ }
19
+
20
+ Scenarios.Parameters_Basic_ExplicitBody_simple = createServerTests(
21
+ "/parameters/basic/explicit-body/simple",
22
+ );
23
+ Scenarios.Parameters_Basic_ImplicitBody_simple = createServerTests(
24
+ "/parameters/basic/implicit-body/simple",
25
+ );
@@ -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("/parameters/body-optionality")
9
+ namespace Parameters.BodyOptionality;
10
+
11
+ model BodyModel {
12
+ name: string;
13
+ }
14
+
15
+ @scenario
16
+ @scenarioDoc("""
17
+ Scenario defining how an explicit required body parameter is specified.
18
+
19
+ Expected request body:
20
+ ```json
21
+ { "name": "foo" }
22
+ ```
23
+ """)
24
+ @route("/required-explicit")
25
+ @post
26
+ op requiredExplicit(@body body: BodyModel): NoContentResponse;
27
+
28
+ @scenario
29
+ @scenarioDoc("""
30
+ Scenario defining how an explicit optional body parameter is specified.
31
+
32
+ Expected request body for `set`
33
+ ```json
34
+ { "name": "foo" }
35
+ ```
36
+
37
+ Expected no request body for `omit`
38
+ """)
39
+ @route("/optional-explicit")
40
+ namespace OptionalExplicit {
41
+ @route("/set")
42
+ @post
43
+ op set(@body body?: BodyModel): NoContentResponse;
44
+
45
+ @route("/omit")
46
+ @post
47
+ op omit(@body body?: BodyModel): NoContentResponse;
48
+ }
49
+
50
+ @scenario
51
+ @scenarioDoc("""
52
+ Scenario defining how an implicit required body parameter is specified.
53
+
54
+ Expected request body:
55
+ ```json
56
+ { "name": "foo" }
57
+ ```
58
+ """)
59
+ @route("/required-implicit")
60
+ @post
61
+ op requiredImplicit(...BodyModel): NoContentResponse;
@@ -0,0 +1,59 @@
1
+ import { MockRequest, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+ function createServerTests(uri: string, data: any) {
5
+ return passOnSuccess({
6
+ uri,
7
+ method: "post",
8
+ request: {
9
+ body: data,
10
+ },
11
+ response: {
12
+ status: 204,
13
+ },
14
+ kind: "MockApiDefinition",
15
+ });
16
+ }
17
+
18
+ Scenarios.Parameters_BodyOptionality_requiredExplicit = createServerTests(
19
+ "/parameters/body-optionality/required-explicit",
20
+ {
21
+ name: "foo",
22
+ },
23
+ );
24
+
25
+ Scenarios.Parameters_BodyOptionality_OptionalExplicit = passOnSuccess([
26
+ {
27
+ uri: "/parameters/body-optionality/optional-explicit/set",
28
+ method: "post",
29
+ request: {
30
+ body: {
31
+ name: "foo",
32
+ },
33
+ },
34
+ response: {
35
+ status: 204,
36
+ },
37
+ kind: "MockApiDefinition",
38
+ },
39
+ {
40
+ uri: "/parameters/body-optionality/optional-explicit/omit",
41
+ method: "post",
42
+ request: {},
43
+ response: {
44
+ status: 204,
45
+ },
46
+ handler: (req: MockRequest) => {
47
+ req.expect.rawBodyEquals(undefined);
48
+ return { status: 204 };
49
+ },
50
+ kind: "MockApiDefinition",
51
+ },
52
+ ]);
53
+
54
+ Scenarios.Parameters_BodyOptionality_requiredImplicit = createServerTests(
55
+ "/parameters/body-optionality/required-implicit",
56
+ {
57
+ name: "foo",
58
+ },
59
+ );
@@ -0,0 +1,92 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Test for collectionFormat.")
8
+ @scenarioService("/parameters/collection-format")
9
+ namespace Parameters.CollectionFormat;
10
+
11
+ @route("/query")
12
+ namespace Query {
13
+ @scenario
14
+ @scenarioDoc("""
15
+ This test is testing sending a multi collection format array query parameters
16
+ """)
17
+ @route("/multi")
18
+ op multi(
19
+ @doc("Possible values for colors are [blue,red,green]")
20
+ @query(#{ explode: true })
21
+ colors: string[],
22
+ ): NoContentResponse;
23
+
24
+ @scenario
25
+ @scenarioDoc("""
26
+ This test is testing sending a ssv collection format array query parameters
27
+ """)
28
+ @route("/ssv")
29
+ op ssv(
30
+ #suppress "deprecated" "Deprecated in next release"
31
+ @doc("Possible values for colors are [blue,red,green]")
32
+ @query({
33
+ format: "ssv",
34
+ })
35
+ colors: string[],
36
+ ): NoContentResponse;
37
+
38
+ @scenario
39
+ @scenarioDoc("""
40
+ This test is testing sending a tsv collection format array query parameters
41
+ """)
42
+ @route("/tsv")
43
+ op tsv(
44
+ #suppress "deprecated" "Deprecated in next release"
45
+ @doc("Possible values for colors are [blue,red,green]")
46
+ @query({
47
+ format: "tsv",
48
+ })
49
+ colors: string[],
50
+ ): NoContentResponse;
51
+
52
+ @scenario
53
+ @scenarioDoc("""
54
+ This test is testing sending a pipes collection format array query parameters
55
+ """)
56
+ @route("/pipes")
57
+ op pipes(
58
+ #suppress "deprecated" "Deprecated in next release"
59
+ @doc("Possible values for colors are [blue,red,green]")
60
+ @query({
61
+ format: "pipes",
62
+ })
63
+ colors: string[],
64
+ ): NoContentResponse;
65
+
66
+ @scenario
67
+ @scenarioDoc("""
68
+ This test is testing sending a csv collection format array query parameters
69
+ """)
70
+ @route("/csv")
71
+ op csv(
72
+ @doc("Possible values for colors are [blue,red,green]")
73
+ @query
74
+ colors: string[],
75
+ ): NoContentResponse;
76
+ }
77
+
78
+ @route("/header")
79
+ namespace Header {
80
+ @scenario
81
+ @scenarioDoc("""
82
+ This test is testing sending a csv collection format array header parameters
83
+ """)
84
+ @route("/csv")
85
+ op csv(
86
+ @doc("Possible values for colors are [blue,red,green]")
87
+ @header({
88
+ format: "csv",
89
+ })
90
+ colors: string[],
91
+ ): NoContentResponse;
92
+ }
@@ -0,0 +1,83 @@
1
+ import { MockRequest, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ const colors = ["blue", "red", "green"];
6
+
7
+ Scenarios.Parameters_CollectionFormat_Query_multi = passOnSuccess({
8
+ uri: `/parameters/collection-format/query/multi`,
9
+ method: "get",
10
+ request: {
11
+ params: { colors: ["blue", "red", "green"] },
12
+ },
13
+ response: {
14
+ status: 204,
15
+ },
16
+ handler: (req: MockRequest) => {
17
+ req.expect.containsQueryParam("colors", ["blue", "red", "green"], "multi");
18
+ return {
19
+ status: 204,
20
+ };
21
+ },
22
+ kind: "MockApiDefinition",
23
+ });
24
+
25
+ Scenarios.Parameters_CollectionFormat_Query_csv = passOnSuccess({
26
+ uri: `/parameters/collection-format/query/csv`,
27
+ method: "get",
28
+ request: {
29
+ params: { colors: colors.join(",") },
30
+ },
31
+ response: {
32
+ status: 204,
33
+ },
34
+ kind: "MockApiDefinition",
35
+ });
36
+
37
+ Scenarios.Parameters_CollectionFormat_Query_ssv = passOnSuccess({
38
+ uri: `/parameters/collection-format/query/ssv`,
39
+ method: "get",
40
+ request: {
41
+ params: { colors: colors.join(" ") },
42
+ },
43
+ response: {
44
+ status: 204,
45
+ },
46
+ kind: "MockApiDefinition",
47
+ });
48
+
49
+ Scenarios.Parameters_CollectionFormat_Query_tsv = passOnSuccess({
50
+ uri: `/parameters/collection-format/query/tsv`,
51
+ method: "get",
52
+ request: {
53
+ params: { colors: colors.join("\t") },
54
+ },
55
+ response: {
56
+ status: 204,
57
+ },
58
+ kind: "MockApiDefinition",
59
+ });
60
+
61
+ Scenarios.Parameters_CollectionFormat_Query_pipes = passOnSuccess({
62
+ uri: `/parameters/collection-format/query/pipes`,
63
+ method: "get",
64
+ request: {
65
+ params: { colors: colors.join("|") },
66
+ },
67
+ response: {
68
+ status: 204,
69
+ },
70
+ kind: "MockApiDefinition",
71
+ });
72
+
73
+ Scenarios.Parameters_CollectionFormat_Header_csv = passOnSuccess({
74
+ uri: `/parameters/collection-format/header/csv`,
75
+ method: "get",
76
+ request: {
77
+ headers: { colors: colors.join(",") },
78
+ },
79
+ response: {
80
+ status: 204,
81
+ },
82
+ kind: "MockApiDefinition",
83
+ });