@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,187 @@
1
+ import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ function createServerTests(url: string, value: unknown, patchNullableProperty?: any) {
6
+ return {
7
+ get: passOnSuccess({
8
+ uri: url,
9
+ method: `get`,
10
+ request: {},
11
+ response: {
12
+ status: 200,
13
+ body: json(value),
14
+ },
15
+ kind: "MockApiDefinition",
16
+ }),
17
+ patch: passOnSuccess({
18
+ uri: url,
19
+ method: `patch`,
20
+ request: {
21
+ body: {
22
+ requiredProperty: "foo",
23
+ nullableProperty: patchNullableProperty || null,
24
+ },
25
+ headers: {
26
+ "Content-Type": "application/merge-patch+json",
27
+ },
28
+ },
29
+ response: {
30
+ status: 204,
31
+ },
32
+ kind: "MockApiDefinition",
33
+ }),
34
+ };
35
+ }
36
+
37
+ const Type_Property_Nullable_String_Null = createServerTests(
38
+ `/type/property/nullable/string/null`,
39
+ {
40
+ requiredProperty: "foo",
41
+ nullableProperty: null,
42
+ },
43
+ );
44
+ const Type_Property_Nullable_String_Non_Null = createServerTests(
45
+ `/type/property/nullable/string/non-null`,
46
+ {
47
+ requiredProperty: "foo",
48
+ nullableProperty: "hello",
49
+ },
50
+ "hello",
51
+ );
52
+
53
+ Scenarios.Type_Property_Nullable_String_getNonNull = Type_Property_Nullable_String_Non_Null.get;
54
+ Scenarios.Type_Property_Nullable_String_getNull = Type_Property_Nullable_String_Null.get;
55
+ Scenarios.Type_Property_Nullable_String_patchNonNull = Type_Property_Nullable_String_Non_Null.patch;
56
+ Scenarios.Type_Property_Nullable_String_patchNull = Type_Property_Nullable_String_Null.patch;
57
+
58
+ const Type_Property_Nullable_Bytes_Null = createServerTests(`/type/property/nullable/bytes/null`, {
59
+ requiredProperty: "foo",
60
+ nullableProperty: null,
61
+ });
62
+ const Type_Property_Nullable_Bytes_Non_Null = createServerTests(
63
+ `/type/property/nullable/bytes/non-null`,
64
+ {
65
+ requiredProperty: "foo",
66
+ nullableProperty: "aGVsbG8sIHdvcmxkIQ==",
67
+ },
68
+ "aGVsbG8sIHdvcmxkIQ==",
69
+ );
70
+ Scenarios.Type_Property_Nullable_Bytes_getNonNull = Type_Property_Nullable_Bytes_Non_Null.get;
71
+ Scenarios.Type_Property_Nullable_Bytes_getNull = Type_Property_Nullable_Bytes_Null.get;
72
+ Scenarios.Type_Property_Nullable_Bytes_patchNonNull = Type_Property_Nullable_Bytes_Non_Null.patch;
73
+ Scenarios.Type_Property_Nullable_Bytes_patchNull = Type_Property_Nullable_Bytes_Null.patch;
74
+
75
+ const Type_Property_Nullable_DateTime_Null = createServerTests(
76
+ `/type/property/nullable/datetime/null`,
77
+ {
78
+ requiredProperty: "foo",
79
+ nullableProperty: null,
80
+ },
81
+ );
82
+ const Type_Property_Nullable_DateTime_Non_Null = createServerTests(
83
+ `/type/property/nullable/datetime/non-null`,
84
+ {
85
+ requiredProperty: "foo",
86
+ nullableProperty: "2022-08-26T18:38:00Z",
87
+ },
88
+ "2022-08-26T18:38:00Z",
89
+ );
90
+ Scenarios.Type_Property_Nullable_Datetime_getNonNull = Type_Property_Nullable_DateTime_Non_Null.get;
91
+ Scenarios.Type_Property_Nullable_Datetime_getNull = Type_Property_Nullable_DateTime_Null.get;
92
+ Scenarios.Type_Property_Nullable_Datetime_patchNonNull =
93
+ Type_Property_Nullable_DateTime_Non_Null.patch;
94
+ Scenarios.Type_Property_Nullable_Datetime_patchNull = Type_Property_Nullable_DateTime_Null.patch;
95
+
96
+ const Type_Property_Nullable_Duration_Null = createServerTests(
97
+ `/type/property/nullable/duration/null`,
98
+ {
99
+ requiredProperty: "foo",
100
+ nullableProperty: null,
101
+ },
102
+ );
103
+ const Type_Property_Nullable_Duration_Non_Null = createServerTests(
104
+ `/type/property/nullable/duration/non-null`,
105
+ {
106
+ requiredProperty: "foo",
107
+ nullableProperty: "P123DT22H14M12.011S",
108
+ },
109
+ "P123DT22H14M12.011S",
110
+ );
111
+ Scenarios.Type_Property_Nullable_Duration_getNonNull = Type_Property_Nullable_Duration_Non_Null.get;
112
+ Scenarios.Type_Property_Nullable_Duration_getNull = Type_Property_Nullable_Duration_Null.get;
113
+ Scenarios.Type_Property_Nullable_Duration_patchNonNull =
114
+ Type_Property_Nullable_Duration_Non_Null.patch;
115
+ Scenarios.Type_Property_Nullable_Duration_patchNull = Type_Property_Nullable_Duration_Null.patch;
116
+
117
+ const Type_Property_Nullable_Collections_Bytes_Null = createServerTests(
118
+ `/type/property/nullable/collections/bytes/null`,
119
+ {
120
+ requiredProperty: "foo",
121
+ nullableProperty: null,
122
+ },
123
+ );
124
+ const Type_Property_Nullable_Collections_Bytes_Non_Null = createServerTests(
125
+ `/type/property/nullable/collections/bytes/non-null`,
126
+ {
127
+ requiredProperty: "foo",
128
+ nullableProperty: ["aGVsbG8sIHdvcmxkIQ==", "aGVsbG8sIHdvcmxkIQ=="],
129
+ },
130
+ ["aGVsbG8sIHdvcmxkIQ==", "aGVsbG8sIHdvcmxkIQ=="],
131
+ );
132
+ Scenarios.Type_Property_Nullable_CollectionsByte_getNonNull =
133
+ Type_Property_Nullable_Collections_Bytes_Non_Null.get;
134
+ Scenarios.Type_Property_Nullable_CollectionsByte_getNull =
135
+ Type_Property_Nullable_Collections_Bytes_Null.get;
136
+ Scenarios.Type_Property_Nullable_CollectionsByte_patchNonNull =
137
+ Type_Property_Nullable_Collections_Bytes_Non_Null.patch;
138
+ Scenarios.Type_Property_Nullable_CollectionsByte_patchNull =
139
+ Type_Property_Nullable_Collections_Bytes_Null.patch;
140
+
141
+ const Type_Property_Nullable_Collections_Model_Null = createServerTests(
142
+ `/type/property/nullable/collections/model/null`,
143
+ {
144
+ requiredProperty: "foo",
145
+ nullableProperty: null,
146
+ },
147
+ );
148
+ const Type_Property_Nullable_Collections_Model_Non_Null = createServerTests(
149
+ `/type/property/nullable/collections/model/non-null`,
150
+ {
151
+ requiredProperty: "foo",
152
+ nullableProperty: [{ property: "hello" }, { property: "world" }],
153
+ },
154
+ [{ property: "hello" }, { property: "world" }],
155
+ );
156
+ Scenarios.Type_Property_Nullable_CollectionsModel_getNonNull =
157
+ Type_Property_Nullable_Collections_Model_Non_Null.get;
158
+ Scenarios.Type_Property_Nullable_CollectionsModel_getNull =
159
+ Type_Property_Nullable_Collections_Model_Null.get;
160
+ Scenarios.Type_Property_Nullable_CollectionsModel_patchNonNull =
161
+ Type_Property_Nullable_Collections_Model_Non_Null.patch;
162
+ Scenarios.Type_Property_Nullable_CollectionsModel_patchNull =
163
+ Type_Property_Nullable_Collections_Model_Null.patch;
164
+
165
+ const Type_Property_Nullable_Collections_String_Null = createServerTests(
166
+ `/type/property/nullable/collections/string/null`,
167
+ {
168
+ requiredProperty: "foo",
169
+ nullableProperty: null,
170
+ },
171
+ );
172
+ const Type_Property_Nullable_Collections_String_Non_Null = createServerTests(
173
+ `/type/property/nullable/collections/string/non-null`,
174
+ {
175
+ requiredProperty: "foo",
176
+ nullableProperty: ["hello", "world"],
177
+ },
178
+ ["hello", "world"],
179
+ );
180
+ Scenarios.Type_Property_Nullable_CollectionsString_getNonNull =
181
+ Type_Property_Nullable_Collections_String_Non_Null.get;
182
+ Scenarios.Type_Property_Nullable_CollectionsString_getNull =
183
+ Type_Property_Nullable_Collections_String_Null.get;
184
+ Scenarios.Type_Property_Nullable_CollectionsString_patchNonNull =
185
+ Type_Property_Nullable_Collections_String_Non_Null.patch;
186
+ Scenarios.Type_Property_Nullable_CollectionsString_patchNull =
187
+ Type_Property_Nullable_Collections_String_Null.patch;
@@ -0,0 +1,226 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spector";
3
+
4
+ using Http;
5
+ using Spector;
6
+
7
+ @doc("Illustrates models with optional properties.")
8
+ @scenarioService("/type/property/optional")
9
+ namespace Type.Property.Optional;
10
+
11
+ @doc("Template type for testing models with optional property. Pass in the type of the property you are looking for")
12
+ model ModelTemplate<TProperty> {
13
+ @doc("Property")
14
+ property?: TProperty;
15
+ }
16
+
17
+ @doc("Operations associated with getting and putting models with optional properties.")
18
+ interface OperationsTemplate<
19
+ TModel,
20
+ TDoc extends valueof string,
21
+ TDefaultDoc extends valueof string = "{}"
22
+ > {
23
+ @doc("Get models that will return all properties in the model")
24
+ @scenario
25
+ @scenarioDoc("""
26
+ Expected response body:
27
+ ```json
28
+ {"property": ${TDoc}}
29
+ ```
30
+ """)
31
+ @route("/all")
32
+ @get
33
+ getAll(): TModel;
34
+
35
+ @doc("Get models that will return the default object")
36
+ @scenario
37
+ @scenarioDoc("""
38
+ Expected response body:
39
+ ```json
40
+ ${TDefaultDoc}
41
+ ```
42
+ """)
43
+ @route("/default")
44
+ @get
45
+ getDefault(): TModel;
46
+
47
+ @doc("Put a body with all properties present.")
48
+ @scenario
49
+ @scenarioDoc("""
50
+ Expected request body:
51
+ ```json
52
+ {"property": ${TDoc}}
53
+ ```
54
+ """)
55
+ @route("/all")
56
+ @put
57
+ putAll(@body body: TModel): void;
58
+
59
+ @doc("Put a body with default properties.")
60
+ @scenario
61
+ @scenarioDoc("""
62
+ Expected request body:
63
+ ```json
64
+ ${TDefaultDoc}
65
+ ```
66
+ """)
67
+ @route("/default")
68
+ @put
69
+ putDefault(@body body: TModel): void;
70
+ }
71
+
72
+ // Model with optional string property
73
+ model StringProperty is ModelTemplate<string>;
74
+ @route("/string")
75
+ interface String extends OperationsTemplate<StringProperty, "\"hello\""> {}
76
+
77
+ // Model with optional bytes property
78
+ model BytesProperty is ModelTemplate<bytes>;
79
+ @route("/bytes")
80
+ interface Bytes extends OperationsTemplate<BytesProperty, "\"aGVsbG8sIHdvcmxkIQ==\""> {}
81
+
82
+ // Model with optional datetime property
83
+ @doc("Model with a datetime property")
84
+ model DatetimeProperty is ModelTemplate<utcDateTime>;
85
+ @route("/datetime")
86
+ interface Datetime extends OperationsTemplate<DatetimeProperty, "\"2022-08-26T18:38:00Z\""> {}
87
+
88
+ // Model with optional duration property
89
+ @doc("Model with a duration property")
90
+ model DurationProperty is ModelTemplate<duration>;
91
+ @route("/duration")
92
+ interface Duration extends OperationsTemplate<DurationProperty, "\"P123DT22H14M12.011S\""> {}
93
+
94
+ // Model with optional plainDate property
95
+ @doc("Model with a plainDate property")
96
+ model PlainDateProperty is ModelTemplate<plainDate>;
97
+ @route("/plainDate")
98
+ interface PlainDate extends OperationsTemplate<PlainDateProperty, "\"2022-12-12\""> {}
99
+
100
+ // Model with optional property
101
+ @doc("Model with a plainTime property")
102
+ model PlainTimeProperty is ModelTemplate<plainTime>;
103
+ @route("/plainTime")
104
+ interface PlainTime extends OperationsTemplate<PlainTimeProperty, "\"13:06:12\""> {}
105
+
106
+ // Model with optional collection bytes property
107
+ @doc("Model with collection bytes properties")
108
+ model CollectionsByteProperty is ModelTemplate<bytes[]>;
109
+ @route("/collections/bytes")
110
+ interface CollectionsByte
111
+ extends OperationsTemplate<
112
+ CollectionsByteProperty,
113
+ "[\"aGVsbG8sIHdvcmxkIQ==\", \"aGVsbG8sIHdvcmxkIQ==\"]"
114
+ > {}
115
+
116
+ // Model with optional collection models property
117
+ @doc("Model with collection models properties")
118
+ model CollectionsModelProperty is ModelTemplate<StringProperty[]>;
119
+ @route("/collections/model")
120
+ interface CollectionsModel
121
+ extends OperationsTemplate<
122
+ CollectionsModelProperty,
123
+ "[{'property': 'hello'}, {'property': 'world'}]"
124
+ > {}
125
+
126
+ // Model with optional string literal property
127
+ @doc("Model with string literal property")
128
+ model StringLiteralProperty is ModelTemplate<"hello">;
129
+ @route("/string/literal")
130
+ interface StringLiteral extends OperationsTemplate<StringLiteralProperty, "\"hello\""> {}
131
+
132
+ // Model with optional int literal property
133
+ @doc("Model with int literal property")
134
+ model IntLiteralProperty is ModelTemplate<1>;
135
+ @route("/int/literal")
136
+ interface IntLiteral extends OperationsTemplate<IntLiteralProperty, "1"> {}
137
+
138
+ // Model with optional float literal property
139
+ @doc("Model with float literal property")
140
+ model FloatLiteralProperty is ModelTemplate<1.25>;
141
+ @route("/float/literal")
142
+ interface FloatLiteral extends OperationsTemplate<FloatLiteralProperty, "1.25"> {}
143
+
144
+ // Model with optional boolean literal property
145
+ @doc("Model with boolean literal property")
146
+ model BooleanLiteralProperty is ModelTemplate<true>;
147
+ @route("/boolean/literal")
148
+ interface BooleanLiteral extends OperationsTemplate<BooleanLiteralProperty, "true"> {}
149
+
150
+ // Model with union of string literal property
151
+ @doc("Model with union of string literal property")
152
+ model UnionStringLiteralProperty is ModelTemplate<"hello" | "world">;
153
+ @route("/union/string/literal")
154
+ interface UnionStringLiteral extends OperationsTemplate<UnionStringLiteralProperty, "\"world\""> {}
155
+
156
+ // Model with union of int literal property
157
+ @doc("Model with union of int literal property")
158
+ model UnionIntLiteralProperty is ModelTemplate<1 | 2>;
159
+ @route("/union/int/literal")
160
+ interface UnionIntLiteral extends OperationsTemplate<UnionIntLiteralProperty, "2"> {}
161
+
162
+ // Model with union of float literal property
163
+ @doc("Model with union of float literal property")
164
+ model UnionFloatLiteralProperty is ModelTemplate<1.25 | 2.375>;
165
+ @route("/union/float/literal")
166
+ interface UnionFloatLiteral extends OperationsTemplate<UnionFloatLiteralProperty, "2.375"> {}
167
+
168
+ @doc("Model with required and optional properties")
169
+ model RequiredAndOptionalProperty {
170
+ @doc("optional string property")
171
+ optionalProperty?: string;
172
+
173
+ @doc("required int property")
174
+ requiredProperty: int32;
175
+ }
176
+ @doc("Test optional and required properties")
177
+ @route("/requiredAndOptional")
178
+ interface RequiredAndOptional {
179
+ @doc("Get models that will return all properties in the model")
180
+ @scenario
181
+ @scenarioDoc("""
182
+ Expected response body:
183
+ ```json
184
+ {"optionalProperty": "hello", "requiredProperty": 42}
185
+ ```
186
+ """)
187
+ @route("/all")
188
+ @get
189
+ getAll(): RequiredAndOptionalProperty;
190
+
191
+ @doc("Get models that will return only the required properties")
192
+ @scenario
193
+ @scenarioDoc("""
194
+ Expected response body:
195
+ ```json
196
+ {"requiredProperty": 42}
197
+ ```
198
+ """)
199
+ @route("/requiredOnly")
200
+ @get
201
+ getRequiredOnly(): RequiredAndOptionalProperty;
202
+
203
+ @doc("Put a body with all properties present.")
204
+ @scenario
205
+ @scenarioDoc("""
206
+ Expected request body:
207
+ ```json
208
+ {"optionalProperty": "hello", "requiredProperty": 42}
209
+ ```
210
+ """)
211
+ @route("/all")
212
+ @put
213
+ putAll(@body body: RequiredAndOptionalProperty): void;
214
+
215
+ @doc("Put a body with only required properties.")
216
+ @scenario
217
+ @scenarioDoc("""
218
+ Expected request body:
219
+ ```json
220
+ {"requiredProperty": 42}
221
+ ```
222
+ """)
223
+ @route("/requiredOnly")
224
+ @put
225
+ putRequiredOnly(@body body: RequiredAndOptionalProperty): void;
226
+ }