@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,274 @@
1
+ import {
2
+ CollectionFormat,
3
+ json,
4
+ MockRequest,
5
+ passOnSuccess,
6
+ ScenarioMockApi,
7
+ validateValueFormat,
8
+ ValidationError,
9
+ } from "@typespec/spec-api";
10
+
11
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
12
+
13
+ function createQueryServerTests(
14
+ uri: string,
15
+ paramData: any,
16
+ format: "rfc7231" | "rfc3339" | undefined,
17
+ value: any,
18
+ collectionFormat?: CollectionFormat,
19
+ ) {
20
+ return passOnSuccess({
21
+ uri,
22
+ method: "get",
23
+ request: {
24
+ params: paramData,
25
+ },
26
+ response: {
27
+ status: 204,
28
+ },
29
+ handler(req: MockRequest) {
30
+ if (format) {
31
+ validateValueFormat(req.query["value"] as string, format);
32
+ if (Date.parse(req.query["value"] as string) !== Date.parse(value)) {
33
+ throw new ValidationError(`Wrong value`, value, req.query["value"]);
34
+ }
35
+ } else {
36
+ req.expect.containsQueryParam("value", value, collectionFormat);
37
+ }
38
+ return {
39
+ status: 204,
40
+ };
41
+ },
42
+ kind: "MockApiDefinition",
43
+ });
44
+ }
45
+ Scenarios.Encode_Datetime_Query_default = createQueryServerTests(
46
+ "/encode/datetime/query/default",
47
+ {
48
+ value: "2022-08-26T18:38:00.000Z",
49
+ },
50
+ "rfc3339",
51
+ "2022-08-26T18:38:00.000Z",
52
+ );
53
+ Scenarios.Encode_Datetime_Query_rfc3339 = createQueryServerTests(
54
+ "/encode/datetime/query/rfc3339",
55
+ {
56
+ value: "2022-08-26T18:38:00.000Z",
57
+ },
58
+ "rfc3339",
59
+ "2022-08-26T18:38:00.000Z",
60
+ );
61
+ Scenarios.Encode_Datetime_Query_rfc7231 = createQueryServerTests(
62
+ "/encode/datetime/query/rfc7231",
63
+ {
64
+ value: "Fri, 26 Aug 2022 14:38:00 GMT",
65
+ },
66
+ "rfc7231",
67
+ "Fri, 26 Aug 2022 14:38:00 GMT",
68
+ );
69
+ Scenarios.Encode_Datetime_Query_unixTimestamp = createQueryServerTests(
70
+ "/encode/datetime/query/unix-timestamp",
71
+ {
72
+ value: 1686566864,
73
+ },
74
+ undefined,
75
+ "1686566864",
76
+ );
77
+ Scenarios.Encode_Datetime_Query_unixTimestampArray = createQueryServerTests(
78
+ "/encode/datetime/query/unix-timestamp-array",
79
+ {
80
+ value: [1686566864, 1686734256].join(","),
81
+ },
82
+ undefined,
83
+ ["1686566864", "1686734256"],
84
+ "csv",
85
+ );
86
+ function createPropertyServerTests(
87
+ uri: string,
88
+ data: any,
89
+ format: "rfc7231" | "rfc3339" | undefined,
90
+ value: any,
91
+ ) {
92
+ return passOnSuccess({
93
+ uri,
94
+ method: "post",
95
+ request: {
96
+ body: data,
97
+ },
98
+ response: {
99
+ status: 200,
100
+ },
101
+ handler: (req: MockRequest) => {
102
+ if (format) {
103
+ validateValueFormat(req.body["value"], format);
104
+ if (Date.parse(req.body["value"]) !== Date.parse(value)) {
105
+ throw new ValidationError(`Wrong value`, value, req.body["value"]);
106
+ }
107
+ } else {
108
+ req.expect.coercedBodyEquals({ value: value });
109
+ }
110
+ return {
111
+ status: 200,
112
+ body: json({ value: value }),
113
+ };
114
+ },
115
+ kind: "MockApiDefinition",
116
+ });
117
+ }
118
+ Scenarios.Encode_Datetime_Property_default = createPropertyServerTests(
119
+ "/encode/datetime/property/default",
120
+ {
121
+ value: "2022-08-26T18:38:00.000Z",
122
+ },
123
+ "rfc3339",
124
+ "2022-08-26T18:38:00.000Z",
125
+ );
126
+ Scenarios.Encode_Datetime_Property_rfc3339 = createPropertyServerTests(
127
+ "/encode/datetime/property/rfc3339",
128
+ {
129
+ value: "2022-08-26T18:38:00.000Z",
130
+ },
131
+ "rfc3339",
132
+ "2022-08-26T18:38:00.000Z",
133
+ );
134
+ Scenarios.Encode_Datetime_Property_rfc7231 = createPropertyServerTests(
135
+ "/encode/datetime/property/rfc7231",
136
+ {
137
+ value: "Fri, 26 Aug 2022 14:38:00 GMT",
138
+ },
139
+ "rfc7231",
140
+ "Fri, 26 Aug 2022 14:38:00 GMT",
141
+ );
142
+ Scenarios.Encode_Datetime_Property_unixTimestamp = createPropertyServerTests(
143
+ "/encode/datetime/property/unix-timestamp",
144
+ {
145
+ value: 1686566864,
146
+ },
147
+ undefined,
148
+ 1686566864,
149
+ );
150
+ Scenarios.Encode_Datetime_Property_unixTimestampArray = createPropertyServerTests(
151
+ "/encode/datetime/property/unix-timestamp-array",
152
+ {
153
+ value: [1686566864, 1686734256],
154
+ },
155
+ undefined,
156
+ [1686566864, 1686734256],
157
+ );
158
+ function createHeaderServerTests(
159
+ uri: string,
160
+ data: any,
161
+ format: "rfc7231" | "rfc3339" | undefined,
162
+ value: any,
163
+ ) {
164
+ return passOnSuccess({
165
+ uri,
166
+ method: "get",
167
+ request: {
168
+ headers: data,
169
+ },
170
+ response: {
171
+ status: 204,
172
+ },
173
+ handler(req: MockRequest) {
174
+ if (format) {
175
+ validateValueFormat(req.headers["value"], format);
176
+ if (Date.parse(req.headers["value"]) !== Date.parse(value)) {
177
+ throw new ValidationError(`Wrong value`, value, req.headers["value"]);
178
+ }
179
+ } else {
180
+ req.expect.containsHeader("value", value);
181
+ }
182
+ return {
183
+ status: 204,
184
+ };
185
+ },
186
+ kind: "MockApiDefinition",
187
+ });
188
+ }
189
+ Scenarios.Encode_Datetime_Header_default = createHeaderServerTests(
190
+ "/encode/datetime/header/default",
191
+ {
192
+ value: "Fri, 26 Aug 2022 14:38:00 GMT",
193
+ },
194
+ "rfc7231",
195
+ "Fri, 26 Aug 2022 14:38:00 GMT",
196
+ );
197
+ Scenarios.Encode_Datetime_Header_rfc3339 = createHeaderServerTests(
198
+ "/encode/datetime/header/rfc3339",
199
+ {
200
+ value: "2022-08-26T18:38:00.000Z",
201
+ },
202
+ "rfc3339",
203
+ "2022-08-26T18:38:00.000Z",
204
+ );
205
+ Scenarios.Encode_Datetime_Header_rfc7231 = createHeaderServerTests(
206
+ "/encode/datetime/header/rfc7231",
207
+ {
208
+ value: "Fri, 26 Aug 2022 14:38:00 GMT",
209
+ },
210
+ "rfc7231",
211
+ "Fri, 26 Aug 2022 14:38:00 GMT",
212
+ );
213
+ Scenarios.Encode_Datetime_Header_unixTimestamp = createHeaderServerTests(
214
+ "/encode/datetime/header/unix-timestamp",
215
+ {
216
+ value: 1686566864,
217
+ },
218
+ undefined,
219
+ "1686566864",
220
+ );
221
+ Scenarios.Encode_Datetime_Header_unixTimestampArray = createHeaderServerTests(
222
+ "/encode/datetime/header/unix-timestamp-array",
223
+ {
224
+ value: [1686566864, 1686734256].join(","),
225
+ },
226
+ undefined,
227
+ "1686566864,1686734256",
228
+ );
229
+ function createResponseHeaderServerTests(uri: string, data: any, value: any) {
230
+ return passOnSuccess({
231
+ uri,
232
+ method: "get",
233
+ request: {},
234
+ response: {
235
+ status: 204,
236
+ headers: data,
237
+ },
238
+ handler: (req: MockRequest) => {
239
+ return {
240
+ status: 204,
241
+ headers: { value: value },
242
+ };
243
+ },
244
+ kind: "MockApiDefinition",
245
+ });
246
+ }
247
+ Scenarios.Encode_Datetime_ResponseHeader_default = createResponseHeaderServerTests(
248
+ "/encode/datetime/responseheader/default",
249
+ {
250
+ value: "Fri, 26 Aug 2022 14:38:00 GMT",
251
+ },
252
+ "Fri, 26 Aug 2022 14:38:00 GMT",
253
+ );
254
+ Scenarios.Encode_Datetime_ResponseHeader_rfc3339 = createResponseHeaderServerTests(
255
+ "/encode/datetime/responseheader/rfc3339",
256
+ {
257
+ value: "2022-08-26T18:38:00.000Z",
258
+ },
259
+ "2022-08-26T18:38:00.000Z",
260
+ );
261
+ Scenarios.Encode_Datetime_ResponseHeader_rfc7231 = createResponseHeaderServerTests(
262
+ "/encode/datetime/responseheader/rfc7231",
263
+ {
264
+ value: "Fri, 26 Aug 2022 14:38:00 GMT",
265
+ },
266
+ "Fri, 26 Aug 2022 14:38:00 GMT",
267
+ );
268
+ Scenarios.Encode_Datetime_ResponseHeader_unixTimestamp = createResponseHeaderServerTests(
269
+ "/encode/datetime/responseheader/unix-timestamp",
270
+ {
271
+ value: "1686566864",
272
+ },
273
+ 1686566864,
274
+ );
@@ -0,0 +1,318 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Test for encode decorator on duration.")
8
+ @scenarioService("/encode/duration")
9
+ namespace Encode.Duration;
10
+
11
+ @route("/query")
12
+ namespace Query {
13
+ @route("/default")
14
+ @scenario
15
+ @scenarioDoc("""
16
+ Test default encode for a duration parameter.
17
+ Expected query parameter `input=P40D`
18
+ """)
19
+ op default(
20
+ @query
21
+ input: duration,
22
+ ): NoContentResponse;
23
+
24
+ @route("/iso8601")
25
+ @scenario
26
+ @scenarioDoc("""
27
+ Test iso8601 encode for a duration parameter.
28
+ Expected query parameter `input=P40D`
29
+ """)
30
+ op iso8601(
31
+ @query
32
+ @encode(DurationKnownEncoding.ISO8601)
33
+ input: duration,
34
+ ): NoContentResponse;
35
+
36
+ @route("/int32-seconds")
37
+ @scenario
38
+ @scenarioDoc("""
39
+ Test int32 seconds encode for a duration parameter.
40
+ Expected query parameter `input=36`
41
+ """)
42
+ op int32Seconds(
43
+ @query
44
+ @encode(DurationKnownEncoding.seconds, int32)
45
+ input: duration,
46
+ ): NoContentResponse;
47
+
48
+ @route("/float-seconds")
49
+ @scenario
50
+ @scenarioDoc("""
51
+ Test float seconds encode for a duration parameter.
52
+ Expected query parameter `input=35.625`
53
+ """)
54
+ op floatSeconds(
55
+ @query
56
+ @encode(DurationKnownEncoding.seconds, float)
57
+ input: duration,
58
+ ): NoContentResponse;
59
+
60
+ @route("/float64-seconds")
61
+ @scenario
62
+ @scenarioDoc("""
63
+ Test float64 seconds encode for a duration parameter.
64
+ Expected query parameter `input=35.625`
65
+ """)
66
+ op float64Seconds(
67
+ @query
68
+ @encode(DurationKnownEncoding.seconds, float64)
69
+ input: duration,
70
+ ): NoContentResponse;
71
+
72
+ @encode(DurationKnownEncoding.seconds, int32)
73
+ scalar Int32Duration extends duration;
74
+
75
+ @route("/int32-seconds-array")
76
+ @scenario
77
+ @scenarioDoc("""
78
+ Test int32 seconds encode for a duration array parameter.
79
+ Expected query parameter `input=36,47`
80
+ """)
81
+ op int32SecondsArray(
82
+ #suppress "deprecated" "Deprecated in next release"
83
+ @query({
84
+ format: "csv",
85
+ })
86
+ input: Int32Duration[],
87
+ ): NoContentResponse;
88
+ }
89
+
90
+ @route("/property")
91
+ namespace Property {
92
+ model DefaultDurationProperty {
93
+ value: duration;
94
+ }
95
+
96
+ model ISO8601DurationProperty {
97
+ @encode(DurationKnownEncoding.ISO8601)
98
+ value: duration;
99
+ }
100
+
101
+ model Int32SecondsDurationProperty {
102
+ @encode(DurationKnownEncoding.seconds, int32)
103
+ value: duration;
104
+ }
105
+
106
+ model FloatSecondsDurationProperty {
107
+ @encode(DurationKnownEncoding.seconds, float)
108
+ value: duration;
109
+ }
110
+
111
+ model Float64SecondsDurationProperty {
112
+ @encode(DurationKnownEncoding.seconds, float64)
113
+ value: duration;
114
+ }
115
+
116
+ @encode(DurationKnownEncoding.seconds, float32)
117
+ scalar Float32Duration extends duration;
118
+
119
+ model FloatSecondsDurationArrayProperty {
120
+ value: Float32Duration[];
121
+ }
122
+
123
+ @route("/default")
124
+ @scenario
125
+ @scenarioDoc("""
126
+ Test operation with request and response model contains a duration property with default encode.
127
+ Expected request body:
128
+ ```json
129
+ {
130
+ "value": "P40D"
131
+ }
132
+ ```
133
+ Expected response body:
134
+ ```json
135
+ {
136
+ "value": "P40D"
137
+ }
138
+ ```
139
+ """)
140
+ @post
141
+ op default(@body body: DefaultDurationProperty): DefaultDurationProperty;
142
+
143
+ @route("/iso8601")
144
+ @scenario
145
+ @scenarioDoc("""
146
+ Test operation with request and response model contains a duration property with iso8601 encode.
147
+ Expected request body:
148
+ ```json
149
+ {
150
+ "value": "P40D"
151
+ }
152
+ ```
153
+ Expected response body:
154
+ ```json
155
+ {
156
+ "value": "P40D"
157
+ }
158
+ ```
159
+ """)
160
+ @post
161
+ op iso8601(@body body: ISO8601DurationProperty): ISO8601DurationProperty;
162
+
163
+ @route("/int32-seconds")
164
+ @scenario
165
+ @scenarioDoc("""
166
+ Test operation with request and response model contains a duration property with int32 seconds encode.
167
+ Expected request body:
168
+ ```json
169
+ {
170
+ "value": 36
171
+ }
172
+ ```
173
+ Expected response body:
174
+ ```json
175
+ {
176
+ "value": 36
177
+ }
178
+ ```
179
+ """)
180
+ op int32Seconds(@body body: Int32SecondsDurationProperty): Int32SecondsDurationProperty;
181
+
182
+ @route("/float-seconds")
183
+ @scenario
184
+ @scenarioDoc("""
185
+ Test operation with request and response model contains a duration property with float seconds encode.
186
+ Expected request body:
187
+ ```json
188
+ {
189
+ "value": 35.625
190
+ }
191
+ ```
192
+ Expected response body:
193
+ ```json
194
+ {
195
+ "value": 35.625
196
+ }
197
+ ```
198
+ """)
199
+ op floatSeconds(@body body: FloatSecondsDurationProperty): FloatSecondsDurationProperty;
200
+
201
+ @route("/float64-seconds")
202
+ @scenario
203
+ @scenarioDoc("""
204
+ Test operation with request and response model contains a duration property with float64 seconds encode.
205
+ Expected request body:
206
+ ```json
207
+ {
208
+ "value": 35.625
209
+ }
210
+ ```
211
+ Expected response body:
212
+ ```json
213
+ {
214
+ "value": 35.625
215
+ }
216
+ ```
217
+ """)
218
+ op float64Seconds(@body body: Float64SecondsDurationProperty): Float64SecondsDurationProperty;
219
+
220
+ @route("/float-seconds-array")
221
+ @scenario
222
+ @scenarioDoc("""
223
+ Test operation with request and response model contains an array property which elements are duration with float seconds encode.
224
+ Expected request body:
225
+ ```json
226
+ {
227
+ "value": [35.625, 46.75]
228
+ }
229
+ ```
230
+ Expected response body:
231
+ ```json
232
+ {
233
+ "value": [35.625, 46.75]
234
+ }
235
+ ```
236
+ """)
237
+ op floatSecondsArray(
238
+ @body body: FloatSecondsDurationArrayProperty,
239
+ ): FloatSecondsDurationArrayProperty;
240
+ }
241
+
242
+ @route("/header")
243
+ namespace Header {
244
+ @route("/default")
245
+ @scenario
246
+ @scenarioDoc("""
247
+ Test default encode for a duration header.
248
+ Expected header `input=P40D`
249
+ """)
250
+ op default(
251
+ @header
252
+ duration: duration,
253
+ ): NoContentResponse;
254
+
255
+ @route("/iso8601")
256
+ @scenario
257
+ @scenarioDoc("""
258
+ Test iso8601 encode for a duration header.
259
+ Expected header `duration: P40D`
260
+ """)
261
+ op iso8601(
262
+ @header
263
+ @encode(DurationKnownEncoding.ISO8601)
264
+ duration: duration,
265
+ ): NoContentResponse;
266
+
267
+ @encode(DurationKnownEncoding.ISO8601)
268
+ scalar Iso8601Duration extends duration;
269
+
270
+ @route("/iso8601-array")
271
+ @scenario
272
+ @scenarioDoc("""
273
+ Test iso8601 encode for a duration array header.
274
+ Expected header `duration: [P40D,P50D]`
275
+ """)
276
+ op iso8601Array(
277
+ @header({
278
+ format: "csv",
279
+ })
280
+ duration: Iso8601Duration[],
281
+ ): NoContentResponse;
282
+
283
+ @route("/int32-seconds")
284
+ @scenario
285
+ @scenarioDoc("""
286
+ Test int32 seconds encode for a duration header.
287
+ Expected header `duration: 36`
288
+ """)
289
+ op int32Seconds(
290
+ @header
291
+ @encode(DurationKnownEncoding.seconds, int32)
292
+ duration: duration,
293
+ ): NoContentResponse;
294
+
295
+ @route("/float-seconds")
296
+ @scenario
297
+ @scenarioDoc("""
298
+ Test float seconds encode for a duration header.
299
+ Expected header `duration: 35.625`
300
+ """)
301
+ op floatSeconds(
302
+ @header
303
+ @encode(DurationKnownEncoding.seconds, float)
304
+ duration: duration,
305
+ ): NoContentResponse;
306
+
307
+ @route("/float64-seconds")
308
+ @scenario
309
+ @scenarioDoc("""
310
+ Test float64 seconds encode for a duration header.
311
+ Expected header `duration: 35.625`
312
+ """)
313
+ op float64Seconds(
314
+ @header
315
+ @encode(DurationKnownEncoding.seconds, float64)
316
+ duration: duration,
317
+ ): NoContentResponse;
318
+ }