@typespec/http-specs 0.37.2

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 (334) 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 +45 -0
  9. package/dist/specs/authentication/api-key/mockapi.js.map +1 -0
  10. package/dist/specs/authentication/commonapi.d.ts +9 -0
  11. package/dist/specs/authentication/commonapi.d.ts.map +1 -0
  12. package/dist/specs/authentication/commonapi.js +19 -0
  13. package/dist/specs/authentication/commonapi.js.map +1 -0
  14. package/dist/specs/authentication/http/custom/mockapi.d.ts +3 -0
  15. package/dist/specs/authentication/http/custom/mockapi.d.ts.map +1 -0
  16. package/dist/specs/authentication/http/custom/mockapi.js +45 -0
  17. package/dist/specs/authentication/http/custom/mockapi.js.map +1 -0
  18. package/dist/specs/authentication/oauth2/mockapi.d.ts +3 -0
  19. package/dist/specs/authentication/oauth2/mockapi.d.ts.map +1 -0
  20. package/dist/specs/authentication/oauth2/mockapi.js +42 -0
  21. package/dist/specs/authentication/oauth2/mockapi.js.map +1 -0
  22. package/dist/specs/authentication/union/mockapi.d.ts +3 -0
  23. package/dist/specs/authentication/union/mockapi.d.ts.map +1 -0
  24. package/dist/specs/authentication/union/mockapi.js +37 -0
  25. package/dist/specs/authentication/union/mockapi.js.map +1 -0
  26. package/dist/specs/encode/bytes/mockapi.d.ts +3 -0
  27. package/dist/specs/encode/bytes/mockapi.d.ts.map +1 -0
  28. package/dist/specs/encode/bytes/mockapi.js +179 -0
  29. package/dist/specs/encode/bytes/mockapi.js.map +1 -0
  30. package/dist/specs/encode/datetime/mockapi.d.ts +3 -0
  31. package/dist/specs/encode/datetime/mockapi.d.ts.map +1 -0
  32. package/dist/specs/encode/datetime/mockapi.js +160 -0
  33. package/dist/specs/encode/datetime/mockapi.js.map +1 -0
  34. package/dist/specs/encode/duration/mockapi.d.ts +3 -0
  35. package/dist/specs/encode/duration/mockapi.d.ts.map +1 -0
  36. package/dist/specs/encode/duration/mockapi.js +116 -0
  37. package/dist/specs/encode/duration/mockapi.js.map +1 -0
  38. package/dist/specs/encode/numeric/mockapi.d.ts +3 -0
  39. package/dist/specs/encode/numeric/mockapi.d.ts.map +1 -0
  40. package/dist/specs/encode/numeric/mockapi.js +29 -0
  41. package/dist/specs/encode/numeric/mockapi.js.map +1 -0
  42. package/dist/specs/helper.d.ts +3 -0
  43. package/dist/specs/helper.d.ts.map +1 -0
  44. package/dist/specs/helper.js +7 -0
  45. package/dist/specs/helper.js.map +1 -0
  46. package/dist/specs/parameters/basic/mockapi.d.ts +3 -0
  47. package/dist/specs/parameters/basic/mockapi.d.ts.map +1 -0
  48. package/dist/specs/parameters/basic/mockapi.js +24 -0
  49. package/dist/specs/parameters/basic/mockapi.js.map +1 -0
  50. package/dist/specs/parameters/body-optionality/mockapi.d.ts +3 -0
  51. package/dist/specs/parameters/body-optionality/mockapi.d.ts.map +1 -0
  52. package/dist/specs/parameters/body-optionality/mockapi.js +62 -0
  53. package/dist/specs/parameters/body-optionality/mockapi.js.map +1 -0
  54. package/dist/specs/parameters/collection-format/mockapi.d.ts +3 -0
  55. package/dist/specs/parameters/collection-format/mockapi.d.ts.map +1 -0
  56. package/dist/specs/parameters/collection-format/mockapi.js +106 -0
  57. package/dist/specs/parameters/collection-format/mockapi.js.map +1 -0
  58. package/dist/specs/parameters/spread/mockapi.d.ts +3 -0
  59. package/dist/specs/parameters/spread/mockapi.d.ts.map +1 -0
  60. package/dist/specs/parameters/spread/mockapi.js +206 -0
  61. package/dist/specs/parameters/spread/mockapi.js.map +1 -0
  62. package/dist/specs/payload/json-merge-patch/mockapi.d.ts +40 -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 +141 -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 +84 -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 +153 -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 +189 -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 +63 -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 +32 -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 +15 -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 +27 -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 +15 -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 +46 -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 +47 -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 +79 -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 +246 -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 +104 -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 +103 -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 +46 -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 +53 -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 +48 -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 +79 -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 +147 -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 +47 -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 +47 -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 +122 -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 +99 -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 +52 -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 +138 -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 +346 -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 +147 -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 +197 -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 +213 -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 +274 -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 +113 -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 +76 -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 +24 -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 +26 -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 +53 -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 +25 -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 +29 -0
  221. package/dist/specs/versioning/typeChangedFrom/mockapi.js.map +1 -0
  222. package/package.json +53 -0
  223. package/specs/README.md +3 -0
  224. package/specs/authentication/api-key/main.tsp +39 -0
  225. package/specs/authentication/api-key/mockapi.ts +47 -0
  226. package/specs/authentication/commonapi.ts +43 -0
  227. package/specs/authentication/http/custom/main.tsp +39 -0
  228. package/specs/authentication/http/custom/mockapi.ts +47 -0
  229. package/specs/authentication/oauth2/main.tsp +44 -0
  230. package/specs/authentication/oauth2/mockapi.ts +44 -0
  231. package/specs/authentication/union/main.tsp +29 -0
  232. package/specs/authentication/union/mockapi.ts +39 -0
  233. package/specs/encode/bytes/main.tsp +369 -0
  234. package/specs/encode/bytes/mockapi.ts +309 -0
  235. package/specs/encode/datetime/main.tsp +344 -0
  236. package/specs/encode/datetime/mockapi.ts +274 -0
  237. package/specs/encode/duration/main.tsp +322 -0
  238. package/specs/encode/duration/mockapi.ts +204 -0
  239. package/specs/encode/numeric/main.tsp +71 -0
  240. package/specs/encode/numeric/mockapi.ts +39 -0
  241. package/specs/helper.ts +8 -0
  242. package/specs/parameters/basic/main.tsp +61 -0
  243. package/specs/parameters/basic/mockapi.ts +29 -0
  244. package/specs/parameters/body-optionality/main.tsp +63 -0
  245. package/specs/parameters/body-optionality/mockapi.ts +71 -0
  246. package/specs/parameters/collection-format/main.tsp +95 -0
  247. package/specs/parameters/collection-format/mockapi.ts +113 -0
  248. package/specs/parameters/spread/main.tsp +340 -0
  249. package/specs/parameters/spread/mockapi.ts +216 -0
  250. package/specs/payload/json-merge-patch/main.tsp +183 -0
  251. package/specs/payload/json-merge-patch/mockapi.ts +146 -0
  252. package/specs/payload/media-type/main.tsp +54 -0
  253. package/specs/payload/media-type/mockapi.ts +88 -0
  254. package/specs/payload/multipart/main.tsp +499 -0
  255. package/specs/payload/multipart/mockapi.ts +226 -0
  256. package/specs/payload/xml/main.tsp +312 -0
  257. package/specs/payload/xml/mockapi.ts +244 -0
  258. package/specs/routes/main.tsp +476 -0
  259. package/specs/routes/mockapi.ts +158 -0
  260. package/specs/scratch/.gitignore +3 -0
  261. package/specs/serialization/encoded-name/json/main.tsp +45 -0
  262. package/specs/serialization/encoded-name/json/mockapi.ts +34 -0
  263. package/specs/server/endpoint/not-defined/main.tsp +19 -0
  264. package/specs/server/endpoint/not-defined/mockapi.ts +16 -0
  265. package/specs/server/path/multiple/main.tsp +46 -0
  266. package/specs/server/path/multiple/mockapi.ts +29 -0
  267. package/specs/server/path/single/main.tsp +23 -0
  268. package/specs/server/path/single/mockapi.ts +16 -0
  269. package/specs/server/versions/not-versioned/main.tsp +39 -0
  270. package/specs/server/versions/not-versioned/mockapi.ts +55 -0
  271. package/specs/server/versions/versioned/main.tsp +65 -0
  272. package/specs/server/versions/versioned/mockapi.ts +68 -0
  273. package/specs/special-headers/conditional-request/main.tsp +89 -0
  274. package/specs/special-headers/conditional-request/mockapi.ts +83 -0
  275. package/specs/special-headers/repeatability/main.tsp +39 -0
  276. package/specs/special-headers/repeatability/mockapi.ts +47 -0
  277. package/specs/special-words/dec.js +52 -0
  278. package/specs/special-words/main.tsp +238 -0
  279. package/specs/special-words/mockapi.ts +407 -0
  280. package/specs/type/array/main.tsp +132 -0
  281. package/specs/type/array/mockapi.ts +119 -0
  282. package/specs/type/dictionary/main.tsp +122 -0
  283. package/specs/type/dictionary/mockapi.ts +115 -0
  284. package/specs/type/enum/extensible/main.tsp +64 -0
  285. package/specs/type/enum/extensible/mockapi.ts +55 -0
  286. package/specs/type/enum/fixed/main.tsp +60 -0
  287. package/specs/type/enum/fixed/mockapi.ts +55 -0
  288. package/specs/type/model/empty/main.tsp +39 -0
  289. package/specs/type/model/empty/mockapi.ts +51 -0
  290. package/specs/type/model/inheritance/enum-discriminator/main.tsp +169 -0
  291. package/specs/type/model/inheritance/enum-discriminator/mockapi.ts +99 -0
  292. package/specs/type/model/inheritance/nested-discriminator/main.tsp +223 -0
  293. package/specs/type/model/inheritance/nested-discriminator/mockapi.ts +150 -0
  294. package/specs/type/model/inheritance/not-discriminated/main.tsp +53 -0
  295. package/specs/type/model/inheritance/not-discriminated/mockapi.ts +49 -0
  296. package/specs/type/model/inheritance/recursive/main.tsp +70 -0
  297. package/specs/type/model/inheritance/recursive/mockapi.ts +48 -0
  298. package/specs/type/model/inheritance/single-discriminator/main.tsp +171 -0
  299. package/specs/type/model/inheritance/single-discriminator/mockapi.ts +126 -0
  300. package/specs/type/model/templated/main.tsp +130 -0
  301. package/specs/type/model/templated/mockapi.ts +102 -0
  302. package/specs/type/model/usage/main.tsp +48 -0
  303. package/specs/type/model/usage/mockapi.ts +56 -0
  304. package/specs/type/model/visibility/main.tsp +152 -0
  305. package/specs/type/model/visibility/mockapi.ts +139 -0
  306. package/specs/type/property/additional-properties/main.tsp +591 -0
  307. package/specs/type/property/additional-properties/mockapi.ts +477 -0
  308. package/specs/type/property/nullable/client.tsp +21 -0
  309. package/specs/type/property/nullable/main.tsp +162 -0
  310. package/specs/type/property/nullable/mockapi.ts +202 -0
  311. package/specs/type/property/optionality/main.tsp +258 -0
  312. package/specs/type/property/optionality/mockapi.ts +308 -0
  313. package/specs/type/property/value-types/main.tsp +285 -0
  314. package/specs/type/property/value-types/mockapi.ts +297 -0
  315. package/specs/type/scalar/main.tsp +164 -0
  316. package/specs/type/scalar/mockapi.ts +280 -0
  317. package/specs/type/union/main.tsp +262 -0
  318. package/specs/type/union/mockapi.ts +137 -0
  319. package/specs/versioning/added/main.tsp +135 -0
  320. package/specs/versioning/added/mockapi.ts +79 -0
  321. package/specs/versioning/madeOptional/main.tsp +64 -0
  322. package/specs/versioning/madeOptional/mockapi.ts +25 -0
  323. package/specs/versioning/removed/main.tsp +125 -0
  324. package/specs/versioning/removed/mockapi.ts +27 -0
  325. package/specs/versioning/renamedFrom/main.tsp +111 -0
  326. package/specs/versioning/renamedFrom/mockapi.ts +55 -0
  327. package/specs/versioning/returnTypeChangedFrom/main.tsp +56 -0
  328. package/specs/versioning/returnTypeChangedFrom/mockapi.ts +26 -0
  329. package/specs/versioning/typeChangedFrom/main.tsp +70 -0
  330. package/specs/versioning/typeChangedFrom/mockapi.ts +30 -0
  331. package/temp/.tsbuildinfo +1 -0
  332. package/tsconfig.build.json +9 -0
  333. package/tsconfig.json +11 -0
  334. package/tspconfig.yaml +2 -0
@@ -0,0 +1,202 @@
1
+ import { json, MockRequest, 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
+ handler: (req: MockRequest) => {
16
+ return {
17
+ status: 200,
18
+ body: json(value),
19
+ };
20
+ },
21
+ kind: "MockApiDefinition",
22
+ }),
23
+ patch: passOnSuccess({
24
+ uri: url,
25
+ method: `patch`,
26
+ request: {
27
+ body: {
28
+ requiredProperty: "foo",
29
+ nullableProperty: patchNullableProperty || null,
30
+ },
31
+ headers: {
32
+ "Content-Type": "application/merge-patch+json",
33
+ },
34
+ },
35
+ response: {
36
+ status: 204,
37
+ },
38
+ handler: (req: MockRequest) => {
39
+ req.expect.bodyEquals({
40
+ requiredProperty: "foo",
41
+ nullableProperty: patchNullableProperty || null,
42
+ });
43
+ return {
44
+ status: 204,
45
+ };
46
+ },
47
+ kind: "MockApiDefinition",
48
+ }),
49
+ };
50
+ }
51
+
52
+ const Type_Property_Nullable_String_Null = createServerTests(
53
+ `/type/property/nullable/string/null`,
54
+ {
55
+ requiredProperty: "foo",
56
+ nullableProperty: null,
57
+ },
58
+ );
59
+ const Type_Property_Nullable_String_Non_Null = createServerTests(
60
+ `/type/property/nullable/string/non-null`,
61
+ {
62
+ requiredProperty: "foo",
63
+ nullableProperty: "hello",
64
+ },
65
+ "hello",
66
+ );
67
+
68
+ Scenarios.Type_Property_Nullable_String_getNonNull = Type_Property_Nullable_String_Non_Null.get;
69
+ Scenarios.Type_Property_Nullable_String_getNull = Type_Property_Nullable_String_Null.get;
70
+ Scenarios.Type_Property_Nullable_String_patchNonNull = Type_Property_Nullable_String_Non_Null.patch;
71
+ Scenarios.Type_Property_Nullable_String_patchNull = Type_Property_Nullable_String_Null.patch;
72
+
73
+ const Type_Property_Nullable_Bytes_Null = createServerTests(`/type/property/nullable/bytes/null`, {
74
+ requiredProperty: "foo",
75
+ nullableProperty: null,
76
+ });
77
+ const Type_Property_Nullable_Bytes_Non_Null = createServerTests(
78
+ `/type/property/nullable/bytes/non-null`,
79
+ {
80
+ requiredProperty: "foo",
81
+ nullableProperty: "aGVsbG8sIHdvcmxkIQ==",
82
+ },
83
+ "aGVsbG8sIHdvcmxkIQ==",
84
+ );
85
+ Scenarios.Type_Property_Nullable_Bytes_getNonNull = Type_Property_Nullable_Bytes_Non_Null.get;
86
+ Scenarios.Type_Property_Nullable_Bytes_getNull = Type_Property_Nullable_Bytes_Null.get;
87
+ Scenarios.Type_Property_Nullable_Bytes_patchNonNull = Type_Property_Nullable_Bytes_Non_Null.patch;
88
+ Scenarios.Type_Property_Nullable_Bytes_patchNull = Type_Property_Nullable_Bytes_Null.patch;
89
+
90
+ const Type_Property_Nullable_DateTime_Null = createServerTests(
91
+ `/type/property/nullable/datetime/null`,
92
+ {
93
+ requiredProperty: "foo",
94
+ nullableProperty: null,
95
+ },
96
+ );
97
+ const Type_Property_Nullable_DateTime_Non_Null = createServerTests(
98
+ `/type/property/nullable/datetime/non-null`,
99
+ {
100
+ requiredProperty: "foo",
101
+ nullableProperty: "2022-08-26T18:38:00Z",
102
+ },
103
+ "2022-08-26T18:38:00Z",
104
+ );
105
+ Scenarios.Type_Property_Nullable_Datetime_getNonNull = Type_Property_Nullable_DateTime_Non_Null.get;
106
+ Scenarios.Type_Property_Nullable_Datetime_getNull = Type_Property_Nullable_DateTime_Null.get;
107
+ Scenarios.Type_Property_Nullable_Datetime_patchNonNull =
108
+ Type_Property_Nullable_DateTime_Non_Null.patch;
109
+ Scenarios.Type_Property_Nullable_Datetime_patchNull = Type_Property_Nullable_DateTime_Null.patch;
110
+
111
+ const Type_Property_Nullable_Duration_Null = createServerTests(
112
+ `/type/property/nullable/duration/null`,
113
+ {
114
+ requiredProperty: "foo",
115
+ nullableProperty: null,
116
+ },
117
+ );
118
+ const Type_Property_Nullable_Duration_Non_Null = createServerTests(
119
+ `/type/property/nullable/duration/non-null`,
120
+ {
121
+ requiredProperty: "foo",
122
+ nullableProperty: "P123DT22H14M12.011S",
123
+ },
124
+ "P123DT22H14M12.011S",
125
+ );
126
+ Scenarios.Type_Property_Nullable_Duration_getNonNull = Type_Property_Nullable_Duration_Non_Null.get;
127
+ Scenarios.Type_Property_Nullable_Duration_getNull = Type_Property_Nullable_Duration_Null.get;
128
+ Scenarios.Type_Property_Nullable_Duration_patchNonNull =
129
+ Type_Property_Nullable_Duration_Non_Null.patch;
130
+ Scenarios.Type_Property_Nullable_Duration_patchNull = Type_Property_Nullable_Duration_Null.patch;
131
+
132
+ const Type_Property_Nullable_Collections_Bytes_Null = createServerTests(
133
+ `/type/property/nullable/collections/bytes/null`,
134
+ {
135
+ requiredProperty: "foo",
136
+ nullableProperty: null,
137
+ },
138
+ );
139
+ const Type_Property_Nullable_Collections_Bytes_Non_Null = createServerTests(
140
+ `/type/property/nullable/collections/bytes/non-null`,
141
+ {
142
+ requiredProperty: "foo",
143
+ nullableProperty: ["aGVsbG8sIHdvcmxkIQ==", "aGVsbG8sIHdvcmxkIQ=="],
144
+ },
145
+ ["aGVsbG8sIHdvcmxkIQ==", "aGVsbG8sIHdvcmxkIQ=="],
146
+ );
147
+ Scenarios.Type_Property_Nullable_CollectionsByte_getNonNull =
148
+ Type_Property_Nullable_Collections_Bytes_Non_Null.get;
149
+ Scenarios.Type_Property_Nullable_CollectionsByte_getNull =
150
+ Type_Property_Nullable_Collections_Bytes_Null.get;
151
+ Scenarios.Type_Property_Nullable_CollectionsByte_patchNonNull =
152
+ Type_Property_Nullable_Collections_Bytes_Non_Null.patch;
153
+ Scenarios.Type_Property_Nullable_CollectionsByte_patchNull =
154
+ Type_Property_Nullable_Collections_Bytes_Null.patch;
155
+
156
+ const Type_Property_Nullable_Collections_Model_Null = createServerTests(
157
+ `/type/property/nullable/collections/model/null`,
158
+ {
159
+ requiredProperty: "foo",
160
+ nullableProperty: null,
161
+ },
162
+ );
163
+ const Type_Property_Nullable_Collections_Model_Non_Null = createServerTests(
164
+ `/type/property/nullable/collections/model/non-null`,
165
+ {
166
+ requiredProperty: "foo",
167
+ nullableProperty: [{ property: "hello" }, { property: "world" }],
168
+ },
169
+ [{ property: "hello" }, { property: "world" }],
170
+ );
171
+ Scenarios.Type_Property_Nullable_CollectionsModel_getNonNull =
172
+ Type_Property_Nullable_Collections_Model_Non_Null.get;
173
+ Scenarios.Type_Property_Nullable_CollectionsModel_getNull =
174
+ Type_Property_Nullable_Collections_Model_Null.get;
175
+ Scenarios.Type_Property_Nullable_CollectionsModel_patchNonNull =
176
+ Type_Property_Nullable_Collections_Model_Non_Null.patch;
177
+ Scenarios.Type_Property_Nullable_CollectionsModel_patchNull =
178
+ Type_Property_Nullable_Collections_Model_Null.patch;
179
+
180
+ const Type_Property_Nullable_Collections_String_Null = createServerTests(
181
+ `/type/property/nullable/collections/string/null`,
182
+ {
183
+ requiredProperty: "foo",
184
+ nullableProperty: null,
185
+ },
186
+ );
187
+ const Type_Property_Nullable_Collections_String_Non_Null = createServerTests(
188
+ `/type/property/nullable/collections/string/non-null`,
189
+ {
190
+ requiredProperty: "foo",
191
+ nullableProperty: ["hello", "world"],
192
+ },
193
+ ["hello", "world"],
194
+ );
195
+ Scenarios.Type_Property_Nullable_CollectionsString_getNonNull =
196
+ Type_Property_Nullable_Collections_String_Non_Null.get;
197
+ Scenarios.Type_Property_Nullable_CollectionsString_getNull =
198
+ Type_Property_Nullable_Collections_String_Null.get;
199
+ Scenarios.Type_Property_Nullable_CollectionsString_patchNonNull =
200
+ Type_Property_Nullable_Collections_String_Non_Null.patch;
201
+ Scenarios.Type_Property_Nullable_CollectionsString_patchNull =
202
+ Type_Property_Nullable_Collections_String_Null.patch;
@@ -0,0 +1,258 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spec-lib";
3
+
4
+ using TypeSpec.Http;
5
+ using Azure.ClientGenerator.Core;
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<TModel, TDoc extends string, TDefaultDoc extends string = "{}"> {
19
+ @doc("Get models that will return all properties in the model")
20
+ @scenario
21
+ @scenarioDoc(
22
+ """
23
+ Expected response body:
24
+ ```json
25
+ {"property": {allDoc}}
26
+ ```
27
+ """,
28
+ {
29
+ allDoc: TDoc,
30
+ }
31
+ )
32
+ @route("/all")
33
+ @get
34
+ getAll(): TModel;
35
+
36
+ @doc("Get models that will return the default object")
37
+ @scenario
38
+ @scenarioDoc(
39
+ """
40
+ Expected response body:
41
+ ```json
42
+ {defaultDoc}
43
+ ```
44
+ """,
45
+ {
46
+ defaultDoc: TDefaultDoc,
47
+ }
48
+ )
49
+ @route("/default")
50
+ @get
51
+ getDefault(): TModel;
52
+
53
+ @doc("Put a body with all properties present.")
54
+ @scenario
55
+ @scenarioDoc(
56
+ """
57
+ Expected request body:
58
+ ```json
59
+ {"property": {allDoc}}
60
+ ```
61
+ """,
62
+ {
63
+ allDoc: TDoc,
64
+ }
65
+ )
66
+ @route("/all")
67
+ @put
68
+ putAll(@body body: TModel): void;
69
+
70
+ @doc("Put a body with default properties.")
71
+ @scenario
72
+ @scenarioDoc(
73
+ """
74
+ Expected request body:
75
+ ```json
76
+ {defaultDoc}
77
+ ```
78
+ """,
79
+ {
80
+ defaultDoc: TDefaultDoc,
81
+ }
82
+ )
83
+ @route("/default")
84
+ @put
85
+ putDefault(@body body: TModel): void;
86
+ }
87
+
88
+ // Model with optional string property
89
+ model StringProperty is ModelTemplate<string>;
90
+ @route("/string")
91
+ @operationGroup
92
+ interface String extends OperationsTemplate<StringProperty, "\"hello\""> {}
93
+
94
+ // Model with optional bytes property
95
+ model BytesProperty is ModelTemplate<bytes>;
96
+ @route("/bytes")
97
+ @operationGroup
98
+ interface Bytes extends OperationsTemplate<BytesProperty, "\"aGVsbG8sIHdvcmxkIQ==\""> {}
99
+
100
+ // Model with optional datetime property
101
+ @doc("Model with a datetime property")
102
+ model DatetimeProperty is ModelTemplate<utcDateTime>;
103
+ @route("/datetime")
104
+ @operationGroup
105
+ interface Datetime extends OperationsTemplate<DatetimeProperty, "\"2022-08-26T18:38:00Z\""> {}
106
+
107
+ // Model with optional duration property
108
+ @doc("Model with a duration property")
109
+ model DurationProperty is ModelTemplate<duration>;
110
+ @route("/duration")
111
+ @operationGroup
112
+ interface Duration extends OperationsTemplate<DurationProperty, "\"P123DT22H14M12.011S\""> {}
113
+
114
+ // Model with optional plainDate property
115
+ @doc("Model with a plainDate property")
116
+ model PlainDateProperty is ModelTemplate<plainDate>;
117
+ @route("/plainDate")
118
+ @operationGroup
119
+ interface PlainDate extends OperationsTemplate<PlainDateProperty, "\"2022-12-12\""> {}
120
+
121
+ // Model with optional property
122
+ @doc("Model with a plainTime property")
123
+ model PlainTimeProperty is ModelTemplate<plainTime>;
124
+ @route("/plainTime")
125
+ @operationGroup
126
+ interface PlainTime extends OperationsTemplate<PlainTimeProperty, "\"13:06:12\""> {}
127
+
128
+ // Model with optional collection bytes property
129
+ @doc("Model with collection bytes properties")
130
+ model CollectionsByteProperty is ModelTemplate<bytes[]>;
131
+ @route("/collections/bytes")
132
+ @operationGroup
133
+ interface CollectionsByte
134
+ extends OperationsTemplate<
135
+ CollectionsByteProperty,
136
+ "[\"aGVsbG8sIHdvcmxkIQ==\", \"aGVsbG8sIHdvcmxkIQ==\"]"
137
+ > {}
138
+
139
+ // Model with optional collection models property
140
+ @doc("Model with collection models properties")
141
+ model CollectionsModelProperty is ModelTemplate<StringProperty[]>;
142
+ @route("/collections/model")
143
+ @operationGroup
144
+ interface CollectionsModel
145
+ extends OperationsTemplate<
146
+ CollectionsModelProperty,
147
+ "[{'property': 'hello'}, {'property': 'world'}]"
148
+ > {}
149
+
150
+ // Model with optional string literal property
151
+ @doc("Model with string literal property")
152
+ model StringLiteralProperty is ModelTemplate<"hello">;
153
+ @route("/string/literal")
154
+ @operationGroup
155
+ interface StringLiteral extends OperationsTemplate<StringLiteralProperty, "\"hello\""> {}
156
+
157
+ // Model with optional int literal property
158
+ @doc("Model with int literal property")
159
+ model IntLiteralProperty is ModelTemplate<1>;
160
+ @route("/int/literal")
161
+ @operationGroup
162
+ interface IntLiteral extends OperationsTemplate<IntLiteralProperty, "1"> {}
163
+
164
+ // Model with optional float literal property
165
+ @doc("Model with float literal property")
166
+ model FloatLiteralProperty is ModelTemplate<1.25>;
167
+ @route("/float/literal")
168
+ @operationGroup
169
+ interface FloatLiteral extends OperationsTemplate<FloatLiteralProperty, "1.25"> {}
170
+
171
+ // Model with optional boolean literal property
172
+ @doc("Model with boolean literal property")
173
+ model BooleanLiteralProperty is ModelTemplate<true>;
174
+ @route("/boolean/literal")
175
+ @operationGroup
176
+ interface BooleanLiteral extends OperationsTemplate<BooleanLiteralProperty, "true"> {}
177
+
178
+ // Model with union of string literal property
179
+ @doc("Model with union of string literal property")
180
+ model UnionStringLiteralProperty is ModelTemplate<"hello" | "world">;
181
+ @route("/union/string/literal")
182
+ @operationGroup
183
+ interface UnionStringLiteral extends OperationsTemplate<UnionStringLiteralProperty, "\"world\""> {}
184
+
185
+ // Model with union of int literal property
186
+ @doc("Model with union of int literal property")
187
+ model UnionIntLiteralProperty is ModelTemplate<1 | 2>;
188
+ @route("/union/int/literal")
189
+ @operationGroup
190
+ interface UnionIntLiteral extends OperationsTemplate<UnionIntLiteralProperty, "2"> {}
191
+
192
+ // Model with union of float literal property
193
+ @doc("Model with union of float literal property")
194
+ model UnionFloatLiteralProperty is ModelTemplate<1.25 | 2.375>;
195
+ @route("/union/float/literal")
196
+ @operationGroup
197
+ interface UnionFloatLiteral extends OperationsTemplate<UnionFloatLiteralProperty, "2.375"> {}
198
+
199
+ @doc("Model with required and optional properties")
200
+ model RequiredAndOptionalProperty {
201
+ @doc("optional string property")
202
+ optionalProperty?: string;
203
+
204
+ @doc("required int property")
205
+ requiredProperty: int32;
206
+ }
207
+ @doc("Test optional and required properties")
208
+ @route("/requiredAndOptional")
209
+ @operationGroup
210
+ interface RequiredAndOptional {
211
+ @doc("Get models that will return all properties in the model")
212
+ @scenario
213
+ @scenarioDoc("""
214
+ Expected response body:
215
+ ```json
216
+ {"optionalProperty": "hello", "requiredProperty": 42}
217
+ ```
218
+ """)
219
+ @route("/all")
220
+ @get
221
+ getAll(): RequiredAndOptionalProperty;
222
+
223
+ @doc("Get models that will return only the required properties")
224
+ @scenario
225
+ @scenarioDoc("""
226
+ Expected response body:
227
+ ```json
228
+ {"requiredProperty": 42}
229
+ ```
230
+ """)
231
+ @route("/requiredOnly")
232
+ @get
233
+ getRequiredOnly(): RequiredAndOptionalProperty;
234
+
235
+ @doc("Put a body with all properties present.")
236
+ @scenario
237
+ @scenarioDoc("""
238
+ Expected request body:
239
+ ```json
240
+ {"optionalProperty": "hello", "requiredProperty": 42}
241
+ ```
242
+ """)
243
+ @route("/all")
244
+ @put
245
+ putAll(@body body: RequiredAndOptionalProperty): void;
246
+
247
+ @doc("Put a body with only required properties.")
248
+ @scenario
249
+ @scenarioDoc("""
250
+ Expected request body:
251
+ ```json
252
+ {"requiredProperty": 42}
253
+ ```
254
+ """)
255
+ @route("/requiredOnly")
256
+ @put
257
+ putRequiredOnly(@body body: RequiredAndOptionalProperty): void;
258
+ }