@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,322 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spec-lib";
3
+
4
+ using TypeSpec.Http;
5
+ using Azure.ClientGenerator.Core;
6
+
7
+ @doc("Test for encode decorator on duration.")
8
+ @supportedBy("dpg")
9
+ @scenarioService("/encode/duration")
10
+ namespace Encode.Duration;
11
+
12
+ @operationGroup
13
+ @route("/query")
14
+ namespace Query {
15
+ @route("/default")
16
+ @scenario
17
+ @scenarioDoc("""
18
+ Test default encode for a duration parameter.
19
+ Expected query parameter `input=P40D`
20
+ """)
21
+ op default(
22
+ @query
23
+ input: duration,
24
+ ): NoContentResponse;
25
+
26
+ @route("/iso8601")
27
+ @scenario
28
+ @scenarioDoc("""
29
+ Test iso8601 encode for a duration parameter.
30
+ Expected query parameter `input=P40D`
31
+ """)
32
+ op iso8601(
33
+ @query
34
+ @encode(DurationKnownEncoding.ISO8601)
35
+ input: duration,
36
+ ): NoContentResponse;
37
+
38
+ @route("/int32-seconds")
39
+ @scenario
40
+ @scenarioDoc("""
41
+ Test int32 seconds encode for a duration parameter.
42
+ Expected query parameter `input=36`
43
+ """)
44
+ op int32Seconds(
45
+ @query
46
+ @encode(DurationKnownEncoding.seconds, int32)
47
+ input: duration,
48
+ ): NoContentResponse;
49
+
50
+ @route("/float-seconds")
51
+ @scenario
52
+ @scenarioDoc("""
53
+ Test float seconds encode for a duration parameter.
54
+ Expected query parameter `input=35.625`
55
+ """)
56
+ op floatSeconds(
57
+ @query
58
+ @encode(DurationKnownEncoding.seconds, float)
59
+ input: duration,
60
+ ): NoContentResponse;
61
+
62
+ @route("/float64-seconds")
63
+ @scenario
64
+ @scenarioDoc("""
65
+ Test float64 seconds encode for a duration parameter.
66
+ Expected query parameter `input=35.625`
67
+ """)
68
+ op float64Seconds(
69
+ @query
70
+ @encode(DurationKnownEncoding.seconds, float64)
71
+ input: duration,
72
+ ): NoContentResponse;
73
+
74
+ @encode(DurationKnownEncoding.seconds, int32)
75
+ scalar Int32Duration extends duration;
76
+
77
+ @route("/int32-seconds-array")
78
+ @scenario
79
+ @scenarioDoc("""
80
+ Test int32 seconds encode for a duration array parameter.
81
+ Expected query parameter `input=36,47`
82
+ """)
83
+ op int32SecondsArray(
84
+ #suppress "deprecated" "Deprecated in next release"
85
+ @query({
86
+ format: "csv",
87
+ })
88
+ input: Int32Duration[],
89
+ ): NoContentResponse;
90
+ }
91
+
92
+ @operationGroup
93
+ @route("/property")
94
+ namespace Property {
95
+ model DefaultDurationProperty {
96
+ value: duration;
97
+ }
98
+
99
+ model ISO8601DurationProperty {
100
+ @encode(DurationKnownEncoding.ISO8601)
101
+ value: duration;
102
+ }
103
+
104
+ model Int32SecondsDurationProperty {
105
+ @encode(DurationKnownEncoding.seconds, int32)
106
+ value: duration;
107
+ }
108
+
109
+ model FloatSecondsDurationProperty {
110
+ @encode(DurationKnownEncoding.seconds, float)
111
+ value: duration;
112
+ }
113
+
114
+ model Float64SecondsDurationProperty {
115
+ @encode(DurationKnownEncoding.seconds, float64)
116
+ value: duration;
117
+ }
118
+
119
+ @encode(DurationKnownEncoding.seconds, float32)
120
+ scalar Float32Duration extends duration;
121
+
122
+ model FloatSecondsDurationArrayProperty {
123
+ value: Float32Duration[];
124
+ }
125
+
126
+ @route("/default")
127
+ @scenario
128
+ @scenarioDoc("""
129
+ Test operation with request and response model contains a duration property with default encode.
130
+ Expected request body:
131
+ ```json
132
+ {
133
+ "value": "P40D"
134
+ }
135
+ ```
136
+ Expected response body:
137
+ ```json
138
+ {
139
+ "value": "P40D"
140
+ }
141
+ ```
142
+ """)
143
+ @post
144
+ op default(@body body: DefaultDurationProperty): DefaultDurationProperty;
145
+
146
+ @route("/iso8601")
147
+ @scenario
148
+ @scenarioDoc("""
149
+ Test operation with request and response model contains a duration property with iso8601 encode.
150
+ Expected request body:
151
+ ```json
152
+ {
153
+ "value": "P40D"
154
+ }
155
+ ```
156
+ Expected response body:
157
+ ```json
158
+ {
159
+ "value": "P40D"
160
+ }
161
+ ```
162
+ """)
163
+ @post
164
+ op iso8601(@body body: ISO8601DurationProperty): ISO8601DurationProperty;
165
+
166
+ @route("/int32-seconds")
167
+ @scenario
168
+ @scenarioDoc("""
169
+ Test operation with request and response model contains a duration property with int32 seconds encode.
170
+ Expected request body:
171
+ ```json
172
+ {
173
+ "value": 36
174
+ }
175
+ ```
176
+ Expected response body:
177
+ ```json
178
+ {
179
+ "value": 36
180
+ }
181
+ ```
182
+ """)
183
+ op int32Seconds(@body body: Int32SecondsDurationProperty): Int32SecondsDurationProperty;
184
+
185
+ @route("/float-seconds")
186
+ @scenario
187
+ @scenarioDoc("""
188
+ Test operation with request and response model contains a duration property with float seconds encode.
189
+ Expected request body:
190
+ ```json
191
+ {
192
+ "value": 35.625
193
+ }
194
+ ```
195
+ Expected response body:
196
+ ```json
197
+ {
198
+ "value": 35.625
199
+ }
200
+ ```
201
+ """)
202
+ op floatSeconds(@body body: FloatSecondsDurationProperty): FloatSecondsDurationProperty;
203
+
204
+ @route("/float64-seconds")
205
+ @scenario
206
+ @scenarioDoc("""
207
+ Test operation with request and response model contains a duration property with float64 seconds encode.
208
+ Expected request body:
209
+ ```json
210
+ {
211
+ "value": 35.625
212
+ }
213
+ ```
214
+ Expected response body:
215
+ ```json
216
+ {
217
+ "value": 35.625
218
+ }
219
+ ```
220
+ """)
221
+ op float64Seconds(@body body: Float64SecondsDurationProperty): Float64SecondsDurationProperty;
222
+
223
+ @route("/float-seconds-array")
224
+ @scenario
225
+ @scenarioDoc("""
226
+ Test operation with request and response model contains an array property which elements are duration with float seconds encode.
227
+ Expected request body:
228
+ ```json
229
+ {
230
+ "value": [35.625, 46.75]
231
+ }
232
+ ```
233
+ Expected response body:
234
+ ```json
235
+ {
236
+ "value": [35.625, 46.75]
237
+ }
238
+ ```
239
+ """)
240
+ op floatSecondsArray(
241
+ @body body: FloatSecondsDurationArrayProperty,
242
+ ): FloatSecondsDurationArrayProperty;
243
+ }
244
+
245
+ @operationGroup
246
+ @route("/header")
247
+ namespace Header {
248
+ @route("/default")
249
+ @scenario
250
+ @scenarioDoc("""
251
+ Test default encode for a duration header.
252
+ Expected header `input=P40D`
253
+ """)
254
+ op default(
255
+ @header
256
+ duration: duration,
257
+ ): NoContentResponse;
258
+
259
+ @route("/iso8601")
260
+ @scenario
261
+ @scenarioDoc("""
262
+ Test iso8601 encode for a duration header.
263
+ Expected header `duration: P40D`
264
+ """)
265
+ op iso8601(
266
+ @header
267
+ @encode(DurationKnownEncoding.ISO8601)
268
+ duration: duration,
269
+ ): NoContentResponse;
270
+
271
+ @encode(DurationKnownEncoding.ISO8601)
272
+ scalar Iso8601Duration extends duration;
273
+
274
+ @route("/iso8601-array")
275
+ @scenario
276
+ @scenarioDoc("""
277
+ Test iso8601 encode for a duration array header.
278
+ Expected header `duration: [P40D,P50D]`
279
+ """)
280
+ op iso8601Array(
281
+ @header({
282
+ format: "csv",
283
+ })
284
+ duration: Iso8601Duration[],
285
+ ): NoContentResponse;
286
+
287
+ @route("/int32-seconds")
288
+ @scenario
289
+ @scenarioDoc("""
290
+ Test int32 seconds encode for a duration header.
291
+ Expected header `duration: 36`
292
+ """)
293
+ op int32Seconds(
294
+ @header
295
+ @encode(DurationKnownEncoding.seconds, int32)
296
+ duration: duration,
297
+ ): NoContentResponse;
298
+
299
+ @route("/float-seconds")
300
+ @scenario
301
+ @scenarioDoc("""
302
+ Test float seconds encode for a duration header.
303
+ Expected header `duration: 35.625`
304
+ """)
305
+ op floatSeconds(
306
+ @header
307
+ @encode(DurationKnownEncoding.seconds, float)
308
+ duration: duration,
309
+ ): NoContentResponse;
310
+
311
+ @route("/float64-seconds")
312
+ @scenario
313
+ @scenarioDoc("""
314
+ Test float64 seconds encode for a duration header.
315
+ Expected header `duration: 35.625`
316
+ """)
317
+ op float64Seconds(
318
+ @header
319
+ @encode(DurationKnownEncoding.seconds, float64)
320
+ duration: duration,
321
+ ): NoContentResponse;
322
+ }
@@ -0,0 +1,204 @@
1
+ import {
2
+ CollectionFormat,
3
+ json,
4
+ MockRequest,
5
+ passOnSuccess,
6
+ ScenarioMockApi,
7
+ } from "@typespec/spec-api";
8
+
9
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
10
+
11
+ function createBodyServerTests(uri: string, data: any, value: any) {
12
+ return passOnSuccess({
13
+ uri,
14
+ method: "post",
15
+ request: {
16
+ body: data,
17
+ },
18
+ response: {
19
+ status: 200,
20
+ body: json(data),
21
+ },
22
+ handler: (req: MockRequest) => {
23
+ req.expect.coercedBodyEquals({ value: value });
24
+ return {
25
+ status: 200,
26
+ body: json({ value: value }),
27
+ };
28
+ },
29
+ kind: "MockApiDefinition",
30
+ });
31
+ }
32
+ Scenarios.Encode_Duration_Property_default = createBodyServerTests(
33
+ "/encode/duration/property/default",
34
+ {
35
+ value: "P40D",
36
+ },
37
+ "P40D",
38
+ );
39
+ Scenarios.Encode_Duration_Property_default = createBodyServerTests(
40
+ "/encode/duration/property/float-seconds",
41
+ {
42
+ value: 35.625,
43
+ },
44
+ 35.625,
45
+ );
46
+ Scenarios.Encode_Duration_Property_float64Seconds = createBodyServerTests(
47
+ "/encode/duration/property/float64-seconds",
48
+ {
49
+ value: 35.625,
50
+ },
51
+ 35.625,
52
+ );
53
+ Scenarios.Encode_Duration_Property_int32Seconds = createBodyServerTests(
54
+ "/encode/duration/property/int32-seconds",
55
+ {
56
+ value: 36,
57
+ },
58
+ 36,
59
+ );
60
+ Scenarios.Encode_Duration_Property_iso8601 = createBodyServerTests(
61
+ "/encode/duration/property/iso8601",
62
+ {
63
+ value: "P40D",
64
+ },
65
+ "P40D",
66
+ );
67
+ Scenarios.Encode_Duration_Property_floatSecondsArray = createBodyServerTests(
68
+ "/encode/duration/property/float-seconds-array",
69
+ {
70
+ value: [35.625, 46.75],
71
+ },
72
+ [35.625, 46.75],
73
+ );
74
+
75
+ function createQueryServerTests(
76
+ uri: string,
77
+ paramData: any,
78
+ value: any,
79
+ collectionFormat?: CollectionFormat,
80
+ ) {
81
+ return passOnSuccess({
82
+ uri,
83
+ method: "get",
84
+ request: {
85
+ params: paramData,
86
+ },
87
+ response: {
88
+ status: 204,
89
+ },
90
+ handler: (req: MockRequest) => {
91
+ req.expect.containsQueryParam("input", value, collectionFormat);
92
+ return {
93
+ status: 204,
94
+ };
95
+ },
96
+ kind: "MockApiDefinition",
97
+ });
98
+ }
99
+ Scenarios.Encode_Duration_Query_default = createQueryServerTests(
100
+ "/encode/duration/query/default",
101
+ {
102
+ input: "P40D",
103
+ },
104
+ "P40D",
105
+ );
106
+ Scenarios.Encode_Duration_Query_iso8601 = createQueryServerTests(
107
+ "/encode/duration/query/iso8601",
108
+ {
109
+ input: "P40D",
110
+ },
111
+ "P40D",
112
+ );
113
+ Scenarios.Encode_Duration_Query_int32Seconds = createQueryServerTests(
114
+ "/encode/duration/query/int32-seconds",
115
+ {
116
+ input: 36,
117
+ },
118
+ "36",
119
+ );
120
+ Scenarios.Encode_Duration_Query_int32SecondsArray = createQueryServerTests(
121
+ "/encode/duration/query/int32-seconds-array",
122
+ {
123
+ input: [36, 47].join(","),
124
+ },
125
+ ["36", "47"],
126
+ "csv",
127
+ );
128
+ Scenarios.Encode_Duration_Query_floatSeconds = createQueryServerTests(
129
+ "/encode/duration/query/float-seconds",
130
+ {
131
+ input: 35.625,
132
+ },
133
+ "35.625",
134
+ );
135
+ Scenarios.Encode_Duration_Query_float64Seconds = createQueryServerTests(
136
+ "/encode/duration/query/float64-seconds",
137
+ {
138
+ input: 35.625,
139
+ },
140
+ "35.625",
141
+ );
142
+
143
+ function createHeaderServerTests(uri: string, headersData: any, value: any) {
144
+ return passOnSuccess({
145
+ uri,
146
+ method: "get",
147
+ request: {
148
+ headers: headersData,
149
+ },
150
+ response: {
151
+ status: 204,
152
+ },
153
+ handler: (req: MockRequest) => {
154
+ req.expect.containsHeader("duration", value);
155
+ return {
156
+ status: 204,
157
+ };
158
+ },
159
+ kind: "MockApiDefinition",
160
+ });
161
+ }
162
+
163
+ Scenarios.Encode_Duration_Header_default = createHeaderServerTests(
164
+ "/encode/duration/header/default",
165
+ {
166
+ duration: "P40D",
167
+ },
168
+ "P40D",
169
+ );
170
+ Scenarios.Encode_Duration_Header_iso8601 = createHeaderServerTests(
171
+ "/encode/duration/header/iso8601",
172
+ {
173
+ duration: "P40D",
174
+ },
175
+ "P40D",
176
+ );
177
+ Scenarios.Encode_Duration_Header_int32Seconds = createHeaderServerTests(
178
+ "/encode/duration/header/int32-seconds",
179
+ {
180
+ duration: 36,
181
+ },
182
+ "36",
183
+ );
184
+ Scenarios.Encode_Duration_Header_floatSeconds = createHeaderServerTests(
185
+ "/encode/duration/header/float-seconds",
186
+ {
187
+ duration: 35.625,
188
+ },
189
+ "35.625",
190
+ );
191
+ Scenarios.Encode_Duration_Header_floatSeconds = createHeaderServerTests(
192
+ "/encode/duration/header/float64-seconds",
193
+ {
194
+ duration: 35.625,
195
+ },
196
+ "35.625",
197
+ );
198
+ Scenarios.Encode_Duration_Header_iso8601Array = createHeaderServerTests(
199
+ "/encode/duration/header/iso8601-array",
200
+ {
201
+ duration: ["P40D", "P50D"].join(","),
202
+ },
203
+ "P40D,P50D",
204
+ );
@@ -0,0 +1,71 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spec-lib";
3
+
4
+ using TypeSpec.Http;
5
+ using Azure.ClientGenerator.Core;
6
+
7
+ @doc("Test for encode decorator on integer.")
8
+ @supportedBy("dpg")
9
+ @scenarioService("/encode/numeric")
10
+ namespace Encode.Numeric;
11
+
12
+ @operationGroup
13
+ @route("/property")
14
+ namespace Property {
15
+ alias SendSafeIntAsString = SendIntAsString<safeint, "10000000000", SafeintAsStringProperty>;
16
+
17
+ @route("/safeint")
18
+ op safeintAsString is SendSafeIntAsString.sendIntAsString;
19
+
20
+ model SafeintAsStringProperty {
21
+ @encode(string)
22
+ value: safeint;
23
+ }
24
+
25
+ alias SendUint32AsString = SendIntAsString<uint32, "1", Uint32AsStringProperty>;
26
+
27
+ @route("/uint32")
28
+ op uint32AsStringOptional is SendUint32AsString.sendIntAsString;
29
+
30
+ model Uint32AsStringProperty {
31
+ @encode(string)
32
+ value?: uint32;
33
+ }
34
+
35
+ alias SendUint8AsString = SendIntAsString<uint8, "255", Uint8AsStringProperty>;
36
+
37
+ @route("/uint8")
38
+ op uint8AsString is SendUint8AsString.sendIntAsString;
39
+
40
+ model Uint8AsStringProperty {
41
+ @encode(string)
42
+ value: uint8;
43
+ }
44
+
45
+ interface SendIntAsString<IntType extends integer, StringValue extends string, Payload> {
46
+ @scenario
47
+ @scenarioDoc(
48
+ """
49
+ Test operation with request and response model contains property of {type} type with string encode.
50
+ Expected request body:
51
+ ```json
52
+ {
53
+ "value": "{value}"
54
+ }
55
+ ```
56
+ Expected response body:
57
+ ```json
58
+ {
59
+ "value": "{value}"
60
+ }
61
+ ```
62
+ """,
63
+ {
64
+ type: IntType,
65
+ value: StringValue,
66
+ }
67
+ )
68
+ @post
69
+ sendIntAsString(@body value: Payload): Payload;
70
+ }
71
+ }
@@ -0,0 +1,39 @@
1
+ import { json, MockRequest, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ function createTests(uri: string, value: any) {
6
+ return passOnSuccess({
7
+ uri,
8
+ method: "post",
9
+ request: {
10
+ body: {
11
+ value,
12
+ },
13
+ },
14
+ response: {
15
+ status: 200,
16
+ body: json({ value }),
17
+ },
18
+ handler: (req: MockRequest) => {
19
+ req.expect.coercedBodyEquals({ value });
20
+ return {
21
+ status: 200,
22
+ body: json({ value }),
23
+ };
24
+ },
25
+ kind: "MockApiDefinition",
26
+ });
27
+ }
28
+ Scenarios.Encode_Numeric_Property_safeintAsString = createTests(
29
+ "/encode/numeric/property/safeint",
30
+ "10000000000",
31
+ );
32
+ Scenarios.Encode_Numeric_Property_uint32AsStringOptional = createTests(
33
+ "/encode/numeric/property/uint32",
34
+ "1",
35
+ );
36
+ Scenarios.Encode_Numeric_Property_uint8AsString = createTests(
37
+ "/encode/numeric/property/uint8",
38
+ "255",
39
+ );
@@ -0,0 +1,8 @@
1
+ import { resolvePath } from "@typespec/compiler";
2
+ import { readFileSync } from "fs";
3
+ import { fileURLToPath } from "url";
4
+
5
+ const root = resolvePath(fileURLToPath(import.meta.url), "../../../");
6
+
7
+ export const pngFile = readFileSync(resolvePath(root, "assets/image.png"));
8
+ export const jpgFile = readFileSync(resolvePath(root, "assets/image.jpg"));
@@ -0,0 +1,61 @@
1
+ import "@typespec/http";
2
+ import "@typespec/spec-lib";
3
+
4
+ using TypeSpec.Http;
5
+ using Azure.ClientGenerator.Core;
6
+
7
+ @doc("Test for basic parameters cases.")
8
+ @supportedBy("dpg")
9
+ @scenarioService("/parameters/basic")
10
+ namespace Parameters.Basic;
11
+
12
+ @route("/explicit-body")
13
+ @operationGroup
14
+ namespace ExplicitBody {
15
+ @doc("This is a simple model.")
16
+ model User {
17
+ name: string;
18
+ }
19
+
20
+ @scenario
21
+ @scenarioDoc("""
22
+ Test case for simple explicit body.
23
+
24
+ Should generate request body model named `User`.
25
+ Should generate an operation like below:
26
+ ```
27
+ spreadAsRequestBody(bodyParameter: BodyParameter)
28
+ ```
29
+ Note the parameter name is guessed from the model name and it may vary by language.
30
+
31
+ Expected request body:
32
+ ```json
33
+ { "name": "foo" }
34
+ ```
35
+ """)
36
+ @route("/simple")
37
+ @put
38
+ op simple(@body body: User): NoContentResponse;
39
+ }
40
+
41
+ @route("/implicit-body")
42
+ @operationGroup
43
+ namespace ImplicitBody {
44
+ @scenario
45
+ @scenarioDoc("""
46
+ Test case for simple implicit body.
47
+
48
+ Should generate an operation like below:
49
+ ```
50
+ simple(name: string)
51
+ ```
52
+
53
+ Expected request body:
54
+ ```json
55
+ { "name": "foo" }
56
+ ```
57
+ """)
58
+ @route("/simple")
59
+ @put
60
+ op simple(name: string): NoContentResponse;
61
+ }