@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,226 @@
1
+ import {
2
+ mockapi,
3
+ MockApi,
4
+ MockRequest,
5
+ passOnSuccess,
6
+ ScenarioMockApi,
7
+ ValidationError,
8
+ withKeys,
9
+ } from "@typespec/spec-api";
10
+ import { jpgFile, pngFile } from "../../helper.js";
11
+
12
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
13
+
14
+ function checkId(req: MockRequest) {
15
+ req.expect.deepEqual(req.body.id, "123");
16
+ }
17
+
18
+ function checkAddress(req: MockRequest) {
19
+ req.expect.deepEqual(JSON.parse(req.body.address), { city: "X" });
20
+ }
21
+
22
+ function checkPreviousAddresses(req: MockRequest) {
23
+ req.expect.deepEqual(JSON.parse(req.body.previousAddresses), [{ city: "Y" }, { city: "Z" }]);
24
+ }
25
+
26
+ function checkFile(
27
+ req: MockRequest,
28
+ file: Record<string, any>,
29
+ expected: Buffer,
30
+ contentType: string = "application/octet-stream",
31
+ fileName: string | undefined = undefined,
32
+ mustCheckContentType: boolean = true,
33
+ ) {
34
+ // cadl-ranch depends on multer, which sets the mimetype to "text/plain" if this part has no content-type header
35
+ if (mustCheckContentType || file.mimetype !== "text/plain") {
36
+ req.expect.deepEqual(file.mimetype, contentType);
37
+ }
38
+ req.expect.deepEqual(file.buffer, expected);
39
+ if (fileName) {
40
+ req.expect.deepEqual(file.originalname, fileName);
41
+ }
42
+ }
43
+
44
+ function checkJpgFile(
45
+ req: MockRequest,
46
+ file: Record<string, any>,
47
+ contentType: string = "application/octet-stream",
48
+ fileName: string | undefined = undefined,
49
+ mustCheckContentType: boolean = true,
50
+ ) {
51
+ req.expect.deepEqual(file.fieldname, "profileImage");
52
+ checkFile(req, file, jpgFile, contentType, fileName, mustCheckContentType);
53
+ }
54
+
55
+ function checkOptionalContentType(req: MockRequest) {
56
+ if (req.files instanceof Array && req.files?.length > 0) {
57
+ checkJpgFile(req, req.files[0], "application/octet-stream", undefined, false);
58
+ } else {
59
+ throw new ValidationError("No profileImage found", "jpg file is expected", req.body);
60
+ }
61
+ }
62
+
63
+ function checkPngFile(req: MockRequest, file: Record<string, any>, fieldName: string = "pictures") {
64
+ req.expect.deepEqual(file.fieldname, fieldName);
65
+ checkFile(req, file, pngFile);
66
+ }
67
+
68
+ function checkProfileImage(req: MockRequest) {
69
+ if (req.files instanceof Array && req.files?.length > 0) {
70
+ checkJpgFile(req, req.files[0]);
71
+ } else {
72
+ throw new ValidationError("No profileImage found", "jpg file is expected", req.body);
73
+ }
74
+ }
75
+
76
+ function checkFileNameAndContentType(req: MockRequest) {
77
+ if (req.files instanceof Array && req.files?.length > 0) {
78
+ checkJpgFile(req, req.files[0], "image/jpg", "hello.jpg");
79
+ } else {
80
+ throw new ValidationError("No profileImage found", "jpg file is expected", req.body);
81
+ }
82
+ }
83
+
84
+ function checkAllFiles(req: MockRequest) {
85
+ if (req.files instanceof Array && req.files?.length === 3) {
86
+ for (const file of req.files) {
87
+ if (file.fieldname === "profileImage") {
88
+ checkJpgFile(req, file);
89
+ } else if (file.fieldname === "pictures") {
90
+ checkPngFile(req, file);
91
+ } else {
92
+ throw new ValidationError(
93
+ "unexpected fieldname",
94
+ "profileImage or pictures",
95
+ file.fieldname,
96
+ );
97
+ }
98
+ }
99
+ } else {
100
+ throw new ValidationError(
101
+ "Can't parse files from request",
102
+ "jpg/png files are expected",
103
+ req.body,
104
+ );
105
+ }
106
+ }
107
+ function checkPictures(req: MockRequest) {
108
+ if (req.files instanceof Array && req.files?.length === 2) {
109
+ for (const file of req.files) {
110
+ checkPngFile(req, file);
111
+ }
112
+ } else {
113
+ throw new ValidationError("No pictures found", "png files are expected", req.body);
114
+ }
115
+ }
116
+ function checkFloat(req: MockRequest) {
117
+ req.expect.deepEqual(parseFloat(req.body.temperature), 0.5);
118
+ }
119
+ function createMockApis(route: string, checkList: ((param: MockRequest) => void)[]): MockApi {
120
+ const url = `/multipart/form-data/${route}`;
121
+ return mockapi.post(url, (req) => {
122
+ for (const callback of checkList) {
123
+ callback(req);
124
+ }
125
+ return { status: 204 };
126
+ });
127
+ }
128
+
129
+ Scenarios.Payload_MultiPart_FormData_basic = passOnSuccess(
130
+ createMockApis("mixed-parts", [checkId, checkProfileImage]),
131
+ );
132
+
133
+ Scenarios.Payload_MultiPart_FormData_fileArrayAndBasic = passOnSuccess(
134
+ createMockApis("complex-parts", [checkId, checkAddress, checkAllFiles]),
135
+ );
136
+
137
+ Scenarios.Payload_MultiPart_FormData_jsonPart = passOnSuccess(
138
+ createMockApis("json-part", [checkAddress, checkProfileImage]),
139
+ );
140
+
141
+ Scenarios.Payload_MultiPart_FormData_binaryArrayParts = passOnSuccess(
142
+ createMockApis("binary-array-parts", [checkId, checkPictures]),
143
+ );
144
+
145
+ Scenarios.Payload_MultiPart_FormData_multiBinaryParts = withKeys([
146
+ "profileImage",
147
+ "profileImage,picture",
148
+ ]).pass(
149
+ mockapi.post("/multipart/form-data/multi-binary-parts", (req) => {
150
+ if (req.files instanceof Array) {
151
+ switch (req.files.length) {
152
+ case 1:
153
+ checkJpgFile(req, req.files[0]);
154
+ return { pass: "profileImage", status: 204 } as const;
155
+ case 2:
156
+ let profileImage = false;
157
+ let picture = false;
158
+ for (const file of req.files) {
159
+ if (file.fieldname === "profileImage") {
160
+ checkJpgFile(req, file);
161
+ profileImage = true;
162
+ } else if (file.fieldname === "picture") {
163
+ checkPngFile(req, file, "picture");
164
+ picture = true;
165
+ } else {
166
+ throw new ValidationError(
167
+ "unexpected fieldname",
168
+ "profileImage or picture",
169
+ file.fieldname,
170
+ );
171
+ }
172
+ }
173
+ if (!profileImage) {
174
+ throw new ValidationError("No profileImage found", "jpg file is expected", req.body);
175
+ } else if (!picture) {
176
+ throw new ValidationError("No picture found", "png file are expected", req.body);
177
+ }
178
+ return { pass: "profileImage,picture", status: 204 } as const;
179
+ default:
180
+ throw new ValidationError(
181
+ "number of files is incorrect",
182
+ "1 or 2 files are expected",
183
+ req.body,
184
+ );
185
+ }
186
+ } else {
187
+ throw new ValidationError(
188
+ "Can't parse files from request",
189
+ "jpg/png files are expected",
190
+ req.body,
191
+ );
192
+ }
193
+ }),
194
+ );
195
+
196
+ Scenarios.Payload_MultiPart_FormData_checkFileNameAndContentType = passOnSuccess(
197
+ createMockApis("check-filename-and-content-type", [checkId, checkFileNameAndContentType]),
198
+ );
199
+
200
+ Scenarios.Payload_MultiPart_FormData_anonymousModel = passOnSuccess(
201
+ createMockApis("anonymous-model", [checkProfileImage]),
202
+ );
203
+
204
+ Scenarios.Payload_MultiPart_FormData_HttpParts_ContentType_imageJpegContentType = passOnSuccess(
205
+ createMockApis("check-filename-and-specific-content-type-with-httppart", [
206
+ checkFileNameAndContentType,
207
+ ]),
208
+ );
209
+
210
+ Scenarios.Payload_MultiPart_FormData_HttpParts_ContentType_requiredContentType = passOnSuccess(
211
+ createMockApis("check-filename-and-required-content-type-with-httppart", [checkProfileImage]),
212
+ );
213
+ Scenarios.Payload_MultiPart_FormData_HttpParts_ContentType_optionalContentType = passOnSuccess(
214
+ createMockApis("file-with-http-part-optional-content-type", [checkOptionalContentType]),
215
+ );
216
+ Scenarios.Payload_MultiPart_FormData_HttpParts_jsonArrayAndFileArray = passOnSuccess(
217
+ createMockApis("complex-parts-with-httppart", [
218
+ checkId,
219
+ checkAddress,
220
+ checkPreviousAddresses,
221
+ checkAllFiles,
222
+ ]),
223
+ );
224
+ Scenarios.Payload_MultiPart_FormData_HttpParts_NonString_float = passOnSuccess(
225
+ createMockApis("non-string-float", [checkFloat]),
226
+ );
@@ -0,0 +1,312 @@
1
+ import "@typespec/http";
2
+ import "@typespec/xml";
3
+ import "@typespec/spec-lib";
4
+
5
+ using TypeSpec.Http;
6
+ using TypeSpec.Xml;
7
+ using Azure.ClientGenerator.Core;
8
+
9
+ @doc("Sends and receives bodies in XML format.")
10
+ @scenarioService("/payload/xml")
11
+ namespace Payload.Xml;
12
+
13
+ @doc("Contains fields of primitive types.")
14
+ model SimpleModel {
15
+ name: string;
16
+ age: int32;
17
+ }
18
+
19
+ @doc("Contains fields of arrays of primitive types.")
20
+ model ModelWithSimpleArrays {
21
+ colors: string[];
22
+ counts: int32[];
23
+ }
24
+
25
+ @doc("Contains an array of models.")
26
+ model ModelWithArrayOfModel {
27
+ items: SimpleModel[];
28
+ }
29
+
30
+ @doc("Contains an optional field.")
31
+ model ModelWithOptionalField {
32
+ item: string;
33
+ value?: int32;
34
+ }
35
+
36
+ @doc("Contains fields that are XML attributes.")
37
+ model ModelWithAttributes {
38
+ @attribute id1: int32;
39
+ @attribute id2: string;
40
+ enabled: boolean;
41
+ }
42
+
43
+ @doc("Contains fields of wrapped and unwrapped arrays of primitive types.")
44
+ model ModelWithUnwrappedArray {
45
+ @unwrapped colors: string[];
46
+ counts: int32[];
47
+ }
48
+
49
+ @doc("Contains fields of wrapped and unwrapped arrays of primitive types that have different XML representations.")
50
+ model ModelWithRenamedArrays {
51
+ @name("Colors") @unwrapped colors: string[];
52
+ @name("Counts") counts: int32[];
53
+ }
54
+
55
+ @doc("Contains fields of the same type that have different XML representation.")
56
+ @name("ModelWithRenamedFieldsSrc")
57
+ model ModelWithRenamedFields {
58
+ @name("InputData") inputData: SimpleModel;
59
+ @name("OutputData") outputData: SimpleModel;
60
+ }
61
+
62
+ @doc("Contains an array of models that's supposed to be sent/received as an empty XML element.")
63
+ model ModelWithEmptyArray {
64
+ items: SimpleModel[];
65
+ }
66
+
67
+ @doc("Contains an attribute and text.")
68
+ model ModelWithText {
69
+ @attribute language: string;
70
+ @unwrapped content: string;
71
+ }
72
+
73
+ @doc("Contains a dictionary of key value pairs.")
74
+ model ModelWithDictionary {
75
+ metadata: Record<string>;
76
+ }
77
+
78
+ @doc("Uses encodedName instead of Xml.Name which is functionally equivalent.")
79
+ @encodedName("application/xml", "ModelWithEncodedNamesSrc")
80
+ model ModelWithEncodedNames {
81
+ @encodedName("application/xml", "SimpleModelData") modelData: SimpleModel;
82
+ @encodedName("application/xml", "PossibleColors") colors: string[];
83
+ }
84
+
85
+ @doc("Template for XML operations")
86
+ interface XmlOperations<TModel, TDoc extends string> {
87
+ @scenario
88
+ @scenarioDoc(
89
+ """
90
+ Expected response body:
91
+ ```xml
92
+ {doc}
93
+ ```
94
+ """,
95
+ {
96
+ doc: TDoc,
97
+ }
98
+ )
99
+ @get
100
+ get(): {
101
+ @header("content-type") contentType: "application/xml";
102
+ @body body: TModel;
103
+ };
104
+
105
+ @scenario
106
+ @scenarioDoc(
107
+ """
108
+ Expected request body:
109
+ ```xml
110
+ {doc}
111
+ ```
112
+ """,
113
+ {
114
+ doc: TDoc,
115
+ }
116
+ )
117
+ @put
118
+ put(@header("content-type") contentType: "application/xml", @body input: TModel): void;
119
+ }
120
+
121
+ @doc("Operations for the SimpleModel type.")
122
+ @route("/simpleModel")
123
+ interface SimpleModelValue
124
+ extends XmlOperations<
125
+ SimpleModel,
126
+ """
127
+ <SimpleModel>
128
+ <name>foo</name>
129
+ <age>123</age>
130
+ </SimpleModel>
131
+ """
132
+ > {}
133
+
134
+ @doc("Operations for the ModelWithSimpleArrays type.")
135
+ @route("/modelWithSimpleArrays")
136
+ interface ModelWithSimpleArraysValue
137
+ extends XmlOperations<
138
+ ModelWithSimpleArrays,
139
+ """
140
+ <ModelWithSimpleArrays>
141
+ <colors>
142
+ <string>red</string>
143
+ <string>green</string>
144
+ <string>blue</string>
145
+ </colors>
146
+ <counts>
147
+ <int32>1</int32>
148
+ <int32>2</int32>
149
+ </counts>
150
+ </ModelWithSimpleArrays>
151
+ """
152
+ > {}
153
+
154
+ @doc("Operations for the ModelWithArrayOfModel type.")
155
+ @route("/modelWithArrayOfModel")
156
+ interface ModelWithArrayOfModelValue
157
+ extends XmlOperations<
158
+ ModelWithArrayOfModel,
159
+ """
160
+ <ModelWithArrayOfModel>
161
+ <items>
162
+ <SimpleModel>
163
+ <name>foo</name>
164
+ <age>123</age>
165
+ </SimpleModel>
166
+ <SimpleModel>
167
+ <name>bar</name>
168
+ <age>456</age>
169
+ </SimpleModel>
170
+ </items>
171
+ </ModelWithArrayOfModel>
172
+ """
173
+ > {}
174
+
175
+ @doc("Operations for the ModelWithOptionalField type.")
176
+ @route("/modelWithOptionalField")
177
+ interface ModelWithOptionalFieldValue
178
+ extends XmlOperations<
179
+ ModelWithOptionalField,
180
+ """
181
+ <ModelWithOptionalField>
182
+ <item>widget</item>
183
+ </ModelWithOptionalField>
184
+ """
185
+ > {}
186
+
187
+ @doc("Operations for the ModelWithAttributes type.")
188
+ @route("/modelWithAttributes")
189
+ interface ModelWithAttributesValue
190
+ extends XmlOperations<
191
+ ModelWithAttributes,
192
+ """
193
+ <ModelWithAttributes id1="123" id2="foo">
194
+ <enabled>true</enabled>
195
+ </ModelWithAttributes>
196
+ """
197
+ > {}
198
+
199
+ @doc("Operations for the ModelWithUnwrappedArray type.")
200
+ @route("/modelWithUnwrappedArray")
201
+ interface ModelWithUnwrappedArrayValue
202
+ extends XmlOperations<
203
+ ModelWithUnwrappedArray,
204
+ """
205
+ <ModelWithUnwrappedArray>
206
+ <colors>red</colors>
207
+ <colors>green</colors>
208
+ <colors>blue</colors>
209
+ <counts>
210
+ <int32>1</int32>
211
+ <int32>2</int32>
212
+ </counts>
213
+ </ModelWithUnwrappedArray>
214
+ """
215
+ > {}
216
+
217
+ @doc("Operations for the ModelWithRenamedArrays type.")
218
+ @route("/modelWithRenamedArrays")
219
+ interface ModelWithRenamedArraysValue
220
+ extends XmlOperations<
221
+ ModelWithRenamedArrays,
222
+ """
223
+ <ModelWithRenamedArrays>
224
+ <Colors>red</Colors>
225
+ <Colors>green</Colors>
226
+ <Colors>blue</Colors>
227
+ <Counts>
228
+ <int32>1</int32>
229
+ <int32>2</int32>
230
+ </Counts>
231
+ </ModelWithRenamedArrays>
232
+ """
233
+ > {}
234
+
235
+ @doc("Operations for the ModelWithRenamedFields type.")
236
+ @route("/modelWithRenamedFields")
237
+ interface ModelWithRenamedFieldsValue
238
+ extends XmlOperations<
239
+ ModelWithRenamedFields,
240
+ """
241
+ <ModelWithRenamedFieldsSrc>
242
+ <InputData>
243
+ <name>foo</name>
244
+ <age>123</age>
245
+ </InputData>
246
+ <OutputData>
247
+ <name>bar</name>
248
+ <age>456</age>
249
+ </OutputData>
250
+ </ModelWithRenamedFieldsSrc>
251
+ """
252
+ > {}
253
+
254
+ @doc("Operations for the ModelWithEmptyArray type.")
255
+ @route("/modelWithEmptyArray")
256
+ interface ModelWithEmptyArrayValue
257
+ extends XmlOperations<
258
+ ModelWithEmptyArray,
259
+ """
260
+ <ModelWithEmptyArray>
261
+ <items />
262
+ </ModelWithEmptyArray>
263
+ """
264
+ > {}
265
+
266
+ @doc("Operations for the ModelWithText type.")
267
+ @route("/modelWithText")
268
+ interface ModelWithTextValue
269
+ extends XmlOperations<
270
+ ModelWithText,
271
+ """
272
+ <ModelWithText language="foo">
273
+ This is some text.
274
+ </ModelWithText>
275
+ """
276
+ > {}
277
+
278
+ @doc("Operations for the ModelWithDictionary type.")
279
+ @route("/modelWithDictionary")
280
+ interface ModelWithDictionaryValue
281
+ extends XmlOperations<
282
+ ModelWithDictionary,
283
+ """
284
+ <ModelWithDictionary>
285
+ <metadata>
286
+ <Color>blue</Color>
287
+ <Count>123</Count>
288
+ <Enabled>false</Enabled>
289
+ </metadata>
290
+ </ModelWithDictionary>
291
+ """
292
+ > {}
293
+
294
+ @doc("Operations for the ModelWithEncodedNames type.")
295
+ @route("/modelWithEncodedNames")
296
+ interface ModelWithEncodedNamesValue
297
+ extends XmlOperations<
298
+ ModelWithEncodedNames,
299
+ """
300
+ <ModelWithEncodedNamesSrc>
301
+ <SimpleModelData>
302
+ <name>foo</name>
303
+ <age>123</age>
304
+ </SimpleModelData>
305
+ <PossibleColors>
306
+ <string>red</string>
307
+ <string>green</string>
308
+ <string>blue</string>
309
+ </PossibleColors>
310
+ </ModelWithEncodedNamesSrc>
311
+ """
312
+ > {}