@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,477 @@
1
+ import { json, MockRequest, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
2
+
3
+ export const Scenarios: Record<string, ScenarioMockApi> = {};
4
+
5
+ const recordFloatBody = {
6
+ id: 43.125,
7
+ prop: 43.125,
8
+ };
9
+ const recordModelBody = {
10
+ knownProp: { state: "ok" },
11
+ prop: { state: "ok" },
12
+ };
13
+ const recordModelArrayBody = {
14
+ knownProp: [{ state: "ok" }, { state: "ok" }],
15
+ prop: [{ state: "ok" }, { state: "ok" }],
16
+ };
17
+ const differentRecordStringBody = {
18
+ id: 43.125,
19
+ prop: "abc",
20
+ };
21
+ const differentRecordFloatBody = {
22
+ name: "abc",
23
+ prop: 43.125,
24
+ };
25
+ const differentRecordModelBody = {
26
+ knownProp: "abc",
27
+ prop: { state: "ok" },
28
+ };
29
+ const differentRecordModelArrayBody = {
30
+ knownProp: "abc",
31
+ prop: [{ state: "ok" }, { state: "ok" }],
32
+ };
33
+ const extendsModelSpreadStringBody = {
34
+ id: 43.125,
35
+ prop: "abc",
36
+ derivedProp: "abc",
37
+ };
38
+ const extendsModelSpreadFloatBody = {
39
+ name: "abc",
40
+ prop: 43.125,
41
+ derivedProp: 43.125,
42
+ };
43
+ const extendsModelSpreadModelBody = {
44
+ knownProp: "abc",
45
+ prop: { state: "ok" },
46
+ derivedProp: { state: "ok" },
47
+ };
48
+ const extendsModelSpreadModelArrayBody = {
49
+ knownProp: "abc",
50
+ prop: [{ state: "ok" }, { state: "ok" }],
51
+ derivedProp: [{ state: "ok" }, { state: "ok" }],
52
+ };
53
+ const multipleSpreadBody = {
54
+ flag: true,
55
+ prop1: "abc",
56
+ prop2: 43.125,
57
+ };
58
+ const recordUnionBody = multipleSpreadBody;
59
+ const recordDiscriminatedUnionBody = {
60
+ name: "abc",
61
+ prop1: {
62
+ kind: "kind0",
63
+ fooProp: "abc",
64
+ },
65
+ prop2: {
66
+ kind: "kind1",
67
+ start: "2021-01-01T00:00:00Z",
68
+ end: "2021-01-02T00:00:00Z",
69
+ },
70
+ };
71
+ const recordNonDiscriminatedUnion2Body = {
72
+ name: "abc",
73
+ prop1: {
74
+ kind: "kind1",
75
+ start: "2021-01-01T00:00:00Z",
76
+ },
77
+ prop2: {
78
+ kind: "kind1",
79
+ start: "2021-01-01T00:00:00Z",
80
+ end: "2021-01-02T00:00:00Z",
81
+ },
82
+ };
83
+ const recordNonDiscriminatedUnion3Body = {
84
+ name: "abc",
85
+ prop1: [
86
+ {
87
+ kind: "kind1",
88
+ start: "2021-01-01T00:00:00Z",
89
+ },
90
+ {
91
+ kind: "kind1",
92
+ start: "2021-01-01T00:00:00Z",
93
+ },
94
+ ],
95
+ prop2: {
96
+ kind: "kind1",
97
+ start: "2021-01-01T00:00:00Z",
98
+ end: "2021-01-02T00:00:00Z",
99
+ },
100
+ };
101
+ function createServerTests(url: string, value: any) {
102
+ return {
103
+ get: passOnSuccess({
104
+ uri: url,
105
+ method: `get`,
106
+ request: {},
107
+ response: {
108
+ status: 200,
109
+ body: json(value),
110
+ },
111
+ handler: (req: MockRequest) => {
112
+ return {
113
+ status: 200,
114
+ body: json(value),
115
+ };
116
+ },
117
+ kind: "MockApiDefinition",
118
+ }),
119
+ put: passOnSuccess({
120
+ uri: url,
121
+ method: `put`,
122
+ request: {
123
+ body: value,
124
+ },
125
+ response: {
126
+ status: 204,
127
+ },
128
+ handler: (req: MockRequest) => {
129
+ const expectedBody = JSON.parse(JSON.stringify(value));
130
+ req.expect.coercedBodyEquals(expectedBody);
131
+ return {
132
+ status: 204,
133
+ };
134
+ },
135
+ kind: "MockApiDefinition",
136
+ }),
137
+ };
138
+ }
139
+
140
+ const Type_Property_Additional_Properties_Extends_Record_Unknown = createServerTests(
141
+ `/type/property/additionalProperties/extendsRecordUnknown`,
142
+ {
143
+ name: "ExtendsUnknownAdditionalProperties",
144
+ prop1: 32,
145
+ prop2: true,
146
+ prop3: "abc",
147
+ },
148
+ );
149
+ Scenarios.Type_Property_AdditionalProperties_ExtendsUnknown_get =
150
+ Type_Property_Additional_Properties_Extends_Record_Unknown.get;
151
+ Scenarios.Type_Property_AdditionalProperties_ExtendsUnknown_put =
152
+ Type_Property_Additional_Properties_Extends_Record_Unknown.put;
153
+
154
+ const Type_Property_Additional_Properties_Extends_Record_Unknown_Derived = createServerTests(
155
+ `/type/property/additionalProperties/extendsRecordUnknownDerived`,
156
+ {
157
+ name: "ExtendsUnknownAdditionalProperties",
158
+ index: 314,
159
+ age: 2.71875,
160
+ prop1: 32,
161
+ prop2: true,
162
+ prop3: "abc",
163
+ },
164
+ );
165
+ Scenarios.Type_Property_AdditionalProperties_ExtendsUnknownDerived_get =
166
+ Type_Property_Additional_Properties_Extends_Record_Unknown_Derived.get;
167
+ Scenarios.Type_Property_AdditionalProperties_ExtendsUnknownDerived_put =
168
+ Type_Property_Additional_Properties_Extends_Record_Unknown_Derived.put;
169
+
170
+ const Type_Property_Additional_Properties_Extends_Unknown_Discriminated = createServerTests(
171
+ `/type/property/additionalProperties/extendsUnknownDiscriminated`,
172
+ {
173
+ kind: "derived",
174
+ name: "Derived",
175
+ index: 314,
176
+ age: 2.71875,
177
+ prop1: 32,
178
+ prop2: true,
179
+ prop3: "abc",
180
+ },
181
+ );
182
+ Scenarios.Type_Property_AdditionalProperties_ExtendsUnknownDiscriminated_get =
183
+ Type_Property_Additional_Properties_Extends_Unknown_Discriminated.get;
184
+ Scenarios.Type_Property_AdditionalProperties_ExtendsUnknownDiscriminated_put =
185
+ Type_Property_Additional_Properties_Extends_Unknown_Discriminated.put;
186
+
187
+ const Type_Property_Additional_Properties_Is_Record_Unknown = createServerTests(
188
+ `/type/property/additionalProperties/isRecordUnknown`,
189
+ {
190
+ name: "IsUnknownAdditionalProperties",
191
+ prop1: 32,
192
+ prop2: true,
193
+ prop3: "abc",
194
+ },
195
+ );
196
+ Scenarios.Type_Property_AdditionalProperties_IsUnknown_get =
197
+ Type_Property_Additional_Properties_Is_Record_Unknown.get;
198
+ Scenarios.Type_Property_AdditionalProperties_IsUnknown_put =
199
+ Type_Property_Additional_Properties_Is_Record_Unknown.put;
200
+
201
+ const Type_Property_Additional_Properties_Is_Record_Unknown_Derived = createServerTests(
202
+ `/type/property/additionalProperties/isRecordUnknownDerived`,
203
+ {
204
+ name: "IsUnknownAdditionalProperties",
205
+ index: 314,
206
+ age: 2.71875,
207
+ prop1: 32,
208
+ prop2: true,
209
+ prop3: "abc",
210
+ },
211
+ );
212
+ Scenarios.Type_Property_AdditionalProperties_IsUnknownDerived_get =
213
+ Type_Property_Additional_Properties_Is_Record_Unknown_Derived.get;
214
+ Scenarios.Type_Property_AdditionalProperties_IsUnknownDerived_put =
215
+ Type_Property_Additional_Properties_Is_Record_Unknown_Derived.put;
216
+
217
+ const Type_Property_Additional_Properties_Is_Unknown_Discriminated = createServerTests(
218
+ `/type/property/additionalProperties/isUnknownDiscriminated`,
219
+ {
220
+ kind: "derived",
221
+ name: "Derived",
222
+ index: 314,
223
+ age: 2.71875,
224
+ prop1: 32,
225
+ prop2: true,
226
+ prop3: "abc",
227
+ },
228
+ );
229
+ Scenarios.Type_Property_AdditionalProperties_IsUnknownDiscriminated_get =
230
+ Type_Property_Additional_Properties_Is_Unknown_Discriminated.get;
231
+ Scenarios.Type_Property_AdditionalProperties_IsUnknownDiscriminated_put =
232
+ Type_Property_Additional_Properties_Is_Unknown_Discriminated.put;
233
+
234
+ const Type_Property_Additional_Properties_Extends_Record_String = createServerTests(
235
+ `/type/property/additionalProperties/extendsRecordString`,
236
+ {
237
+ name: "ExtendsStringAdditionalProperties",
238
+ prop: "abc",
239
+ },
240
+ );
241
+ Scenarios.Type_Property_AdditionalProperties_ExtendsString_get =
242
+ Type_Property_Additional_Properties_Extends_Record_String.get;
243
+ Scenarios.Type_Property_AdditionalProperties_ExtendsString_put =
244
+ Type_Property_Additional_Properties_Extends_Record_String.put;
245
+
246
+ const Type_Property_Additional_Properties_Is_Record_String = createServerTests(
247
+ `/type/property/additionalProperties/isRecordstring`,
248
+ {
249
+ name: "IsStringAdditionalProperties",
250
+ prop: "abc",
251
+ },
252
+ );
253
+ Scenarios.Type_Property_AdditionalProperties_IsString_get =
254
+ Type_Property_Additional_Properties_Is_Record_String.get;
255
+ Scenarios.Type_Property_AdditionalProperties_IsString_put =
256
+ Type_Property_Additional_Properties_Is_Record_String.put;
257
+
258
+ const Type_Property_Additional_Properties_Extends_Record_Float = createServerTests(
259
+ `/type/property/additionalProperties/extendsRecordFloat`,
260
+ recordFloatBody,
261
+ );
262
+ Scenarios.Type_Property_AdditionalProperties_ExtendsFloat_get =
263
+ Type_Property_Additional_Properties_Extends_Record_Float.get;
264
+ Scenarios.Type_Property_AdditionalProperties_ExtendsFloat_put =
265
+ Type_Property_Additional_Properties_Extends_Record_Float.put;
266
+
267
+ const Type_Property_Additional_Properties_Is_Record_Float = createServerTests(
268
+ `/type/property/additionalProperties/isRecordFloat`,
269
+ recordFloatBody,
270
+ );
271
+ Scenarios.Type_Property_AdditionalProperties_IsFloat_get =
272
+ Type_Property_Additional_Properties_Is_Record_Float.get;
273
+ Scenarios.Type_Property_AdditionalProperties_IsFloat_put =
274
+ Type_Property_Additional_Properties_Is_Record_Float.put;
275
+
276
+ const Type_Property_Additional_Properties_Extends_Record_Model = createServerTests(
277
+ `/type/property/additionalProperties/extendsRecordModel`,
278
+ recordModelBody,
279
+ );
280
+ Scenarios.Type_Property_AdditionalProperties_ExtendsModel_get =
281
+ Type_Property_Additional_Properties_Extends_Record_Model.get;
282
+ Scenarios.Type_Property_AdditionalProperties_ExtendsModel_put =
283
+ Type_Property_Additional_Properties_Extends_Record_Model.put;
284
+
285
+ const Type_Property_Additional_Properties_Is_Record_Model = createServerTests(
286
+ `/type/property/additionalProperties/isRecordModel`,
287
+ recordModelBody,
288
+ );
289
+ Scenarios.Type_Property_AdditionalProperties_IsModel_get =
290
+ Type_Property_Additional_Properties_Is_Record_Model.get;
291
+ Scenarios.Type_Property_AdditionalProperties_IsModel_put =
292
+ Type_Property_Additional_Properties_Is_Record_Model.put;
293
+
294
+ const Type_Property_Additional_Properties_Extends_Record_Model_Array = createServerTests(
295
+ `/type/property/additionalProperties/extendsRecordModelArray`,
296
+ recordModelArrayBody,
297
+ );
298
+ Scenarios.Type_Property_AdditionalProperties_ExtendsModelArray_get =
299
+ Type_Property_Additional_Properties_Extends_Record_Model_Array.get;
300
+ Scenarios.Type_Property_AdditionalProperties_ExtendsModelArray_put =
301
+ Type_Property_Additional_Properties_Extends_Record_Model_Array.put;
302
+
303
+ const Type_Property_Additional_Properties_Is_Record_Model_Array = createServerTests(
304
+ `/type/property/additionalProperties/isRecordModelArray`,
305
+ recordModelArrayBody,
306
+ );
307
+ Scenarios.Type_Property_AdditionalProperties_IsModelArray_get =
308
+ Type_Property_Additional_Properties_Is_Record_Model_Array.get;
309
+ Scenarios.Type_Property_AdditionalProperties_IsModelArray_put =
310
+ Type_Property_Additional_Properties_Is_Record_Model_Array.put;
311
+
312
+ const Type_Property_Additional_Properties_Spread_Record_String = createServerTests(
313
+ `/type/property/additionalProperties/spreadRecordString`,
314
+ {
315
+ name: "SpreadSpringRecord",
316
+ prop: "abc",
317
+ },
318
+ );
319
+ Scenarios.Type_Property_AdditionalProperties_SpreadString_get =
320
+ Type_Property_Additional_Properties_Spread_Record_String.get;
321
+ Scenarios.Type_Property_AdditionalProperties_SpreadString_put =
322
+ Type_Property_Additional_Properties_Spread_Record_String.put;
323
+
324
+ const Type_Property_Additional_Properties_Spread_Record_Float = createServerTests(
325
+ `/type/property/additionalProperties/spreadRecordFloat`,
326
+ recordFloatBody,
327
+ );
328
+ Scenarios.Type_Property_AdditionalProperties_SpreadFloat_get =
329
+ Type_Property_Additional_Properties_Spread_Record_Float.get;
330
+ Scenarios.Type_Property_AdditionalProperties_SpreadFloat_put =
331
+ Type_Property_Additional_Properties_Spread_Record_Float.put;
332
+
333
+ const Type_Property_Additional_Properties_Spread_Record_Model = createServerTests(
334
+ `/type/property/additionalProperties/spreadRecordModel`,
335
+ recordModelBody,
336
+ );
337
+ Scenarios.Type_Property_AdditionalProperties_SpreadModel_get =
338
+ Type_Property_Additional_Properties_Spread_Record_Model.get;
339
+ Scenarios.Type_Property_AdditionalProperties_SpreadModel_put =
340
+ Type_Property_Additional_Properties_Spread_Record_Model.put;
341
+
342
+ const Type_Property_Additional_Properties_Spread_Record_Model_Array = createServerTests(
343
+ `/type/property/additionalProperties/spreadRecordModelArray`,
344
+ recordModelArrayBody,
345
+ );
346
+ Scenarios.Type_Property_AdditionalProperties_SpreadModelArray_get =
347
+ Type_Property_Additional_Properties_Spread_Record_Model_Array.get;
348
+ Scenarios.Type_Property_AdditionalProperties_SpreadModelArray_put =
349
+ Type_Property_Additional_Properties_Spread_Record_Model_Array.put;
350
+
351
+ const Type_Property_Additional_Properties_Spread_Different_Record_String = createServerTests(
352
+ `/type/property/additionalProperties/spreadDifferentRecordString`,
353
+ differentRecordStringBody,
354
+ );
355
+ Scenarios.Type_Property_AdditionalProperties_SpreadDifferentString_get =
356
+ Type_Property_Additional_Properties_Spread_Different_Record_String.get;
357
+ Scenarios.Type_Property_AdditionalProperties_SpreadDifferentString_put =
358
+ Type_Property_Additional_Properties_Spread_Different_Record_String.put;
359
+
360
+ const Type_Property_Additional_Properties_Spread_Different_Record_Float = createServerTests(
361
+ `/type/property/additionalProperties/spreadDifferentRecordFloat`,
362
+ differentRecordFloatBody,
363
+ );
364
+ Scenarios.Type_Property_AdditionalProperties_SpreadDifferentFloat_get =
365
+ Type_Property_Additional_Properties_Spread_Different_Record_Float.get;
366
+ Scenarios.Type_Property_AdditionalProperties_SpreadDifferentFloat_put =
367
+ Type_Property_Additional_Properties_Spread_Different_Record_Float.put;
368
+
369
+ const Type_Property_Additional_Properties_Spread_Different_Record_Model = createServerTests(
370
+ `/type/property/additionalProperties/spreadDifferentRecordModel`,
371
+ differentRecordModelBody,
372
+ );
373
+ Scenarios.Type_Property_AdditionalProperties_SpreadDifferentModel_get =
374
+ Type_Property_Additional_Properties_Spread_Different_Record_Model.get;
375
+ Scenarios.Type_Property_AdditionalProperties_SpreadDifferentModel_put =
376
+ Type_Property_Additional_Properties_Spread_Different_Record_Model.put;
377
+
378
+ const Type_Property_Additional_Properties_Spread_Different_Record_Model_Array = createServerTests(
379
+ `/type/property/additionalProperties/spreadDifferentRecordModelArray`,
380
+ differentRecordModelArrayBody,
381
+ );
382
+ Scenarios.Type_Property_AdditionalProperties_SpreadDifferentModelArray_get =
383
+ Type_Property_Additional_Properties_Spread_Different_Record_Model_Array.get;
384
+ Scenarios.Type_Property_AdditionalProperties_SpreadDifferentModelArray_put =
385
+ Type_Property_Additional_Properties_Spread_Different_Record_Model_Array.put;
386
+
387
+ const Type_Property_Additional_Properties_Extends_Different_Spread_String = createServerTests(
388
+ `/type/property/additionalProperties/extendsDifferentSpreadString`,
389
+ extendsModelSpreadStringBody,
390
+ );
391
+ Scenarios.Type_Property_AdditionalProperties_ExtendsDifferentSpreadString_get =
392
+ Type_Property_Additional_Properties_Extends_Different_Spread_String.get;
393
+ Scenarios.Type_Property_AdditionalProperties_ExtendsDifferentSpreadString_put =
394
+ Type_Property_Additional_Properties_Extends_Different_Spread_String.put;
395
+
396
+ const Type_Property_Additional_Properties_Extends_Different_Spread_Float = createServerTests(
397
+ `/type/property/additionalProperties/extendsDifferentSpreadFloat`,
398
+ extendsModelSpreadFloatBody,
399
+ );
400
+ Scenarios.Type_Property_AdditionalProperties_ExtendsDifferentSpreadFloat_get =
401
+ Type_Property_Additional_Properties_Extends_Different_Spread_Float.get;
402
+ Scenarios.Type_Property_AdditionalProperties_ExtendsDifferentSpreadFloat_put =
403
+ Type_Property_Additional_Properties_Extends_Different_Spread_Float.put;
404
+
405
+ const Type_Property_Additional_Properties_Extends_Different_Spread_Model = createServerTests(
406
+ `/type/property/additionalProperties/extendsDifferentSpreadModel`,
407
+ extendsModelSpreadModelBody,
408
+ );
409
+ Scenarios.Type_Property_AdditionalProperties_ExtendsDifferentSpreadModel_get =
410
+ Type_Property_Additional_Properties_Extends_Different_Spread_Model.get;
411
+ Scenarios.Type_Property_AdditionalProperties_ExtendsDifferentSpreadModel_put =
412
+ Type_Property_Additional_Properties_Extends_Different_Spread_Model.put;
413
+
414
+ const Type_Property_Additional_Properties_Extends_Different_Spread_Model_Array = createServerTests(
415
+ `/type/property/additionalProperties/extendsDifferentSpreadModelArray`,
416
+ extendsModelSpreadModelArrayBody,
417
+ );
418
+ Scenarios.Type_Property_AdditionalProperties_ExtendsDifferentSpreadModelArray_get =
419
+ Type_Property_Additional_Properties_Extends_Different_Spread_Model_Array.get;
420
+ Scenarios.Type_Property_AdditionalProperties_ExtendsDifferentSpreadModelArray_put =
421
+ Type_Property_Additional_Properties_Extends_Different_Spread_Model_Array.put;
422
+
423
+ const Type_Property_Additional_Properties_Multiple_Spread_Record = createServerTests(
424
+ `/type/property/additionalProperties/multipleSpreadRecord`,
425
+ multipleSpreadBody,
426
+ );
427
+ Scenarios.Type_Property_AdditionalProperties_MultipleSpread_get =
428
+ Type_Property_Additional_Properties_Multiple_Spread_Record.get;
429
+ Scenarios.Type_Property_AdditionalProperties_MultipleSpread_put =
430
+ Type_Property_Additional_Properties_Multiple_Spread_Record.put;
431
+
432
+ const Type_Property_Additional_Properties_Spread_Record_Union = createServerTests(
433
+ `/type/property/additionalProperties/spreadRecordUnion`,
434
+ recordUnionBody,
435
+ );
436
+ Scenarios.Type_Property_AdditionalProperties_SpreadRecordUnion_get =
437
+ Type_Property_Additional_Properties_Spread_Record_Union.get;
438
+ Scenarios.Type_Property_AdditionalProperties_SpreadRecordUnion_put =
439
+ Type_Property_Additional_Properties_Spread_Record_Union.put;
440
+
441
+ const Type_Property_Additional_Properties_Spread_Record_Discriminated_Union = createServerTests(
442
+ `/type/property/additionalProperties/spreadRecordDiscriminatedUnion`,
443
+ recordDiscriminatedUnionBody,
444
+ );
445
+ Scenarios.Type_Property_AdditionalProperties_SpreadRecordDiscriminatedUnion_get =
446
+ Type_Property_Additional_Properties_Spread_Record_Discriminated_Union.get;
447
+ Scenarios.Type_Property_AdditionalProperties_SpreadRecordDiscriminatedUnion_put =
448
+ Type_Property_Additional_Properties_Spread_Record_Discriminated_Union.put;
449
+
450
+ const Type_Property_Additional_Properties_Spread_Record_Non_Discriminated_Union = createServerTests(
451
+ `/type/property/additionalProperties/spreadRecordNonDiscriminatedUnion`,
452
+ recordDiscriminatedUnionBody,
453
+ );
454
+ Scenarios.Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion_get =
455
+ Type_Property_Additional_Properties_Spread_Record_Non_Discriminated_Union.get;
456
+ Scenarios.Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion_put =
457
+ Type_Property_Additional_Properties_Spread_Record_Non_Discriminated_Union.put;
458
+
459
+ const Type_Property_Additional_Properties_Spread_Record_Non_Discriminated_Union2 =
460
+ createServerTests(
461
+ `/type/property/additionalProperties/spreadRecordNonDiscriminatedUnion2`,
462
+ recordNonDiscriminatedUnion2Body,
463
+ );
464
+ Scenarios.Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion2_get =
465
+ Type_Property_Additional_Properties_Spread_Record_Non_Discriminated_Union2.get;
466
+ Scenarios.Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion2_put =
467
+ Type_Property_Additional_Properties_Spread_Record_Non_Discriminated_Union2.put;
468
+
469
+ const Type_Property_Additional_Properties_Spread_Record_Non_Discriminated_Union3 =
470
+ createServerTests(
471
+ `/type/property/additionalProperties/spreadRecordNonDiscriminatedUnion3`,
472
+ recordNonDiscriminatedUnion3Body,
473
+ );
474
+ Scenarios.Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion3_get =
475
+ Type_Property_Additional_Properties_Spread_Record_Non_Discriminated_Union3.get;
476
+ Scenarios.Type_Property_AdditionalProperties_SpreadRecordNonDiscriminatedUnion3_put =
477
+ Type_Property_Additional_Properties_Spread_Record_Non_Discriminated_Union3.put;
@@ -0,0 +1,21 @@
1
+ import "./main.tsp";
2
+
3
+ using Azure.ClientGenerator.Core;
4
+
5
+ @@convenientAPI(Type.Property.Nullable.String.patchNonNull, false, "csharp");
6
+ @@convenientAPI(Type.Property.Nullable.String.patchNull, false, "csharp");
7
+
8
+ @@convenientAPI(Type.Property.Nullable.Bytes.patchNonNull, false, "csharp");
9
+ @@convenientAPI(Type.Property.Nullable.Bytes.patchNull, false, "csharp");
10
+
11
+ @@convenientAPI(Type.Property.Nullable.Datetime.patchNonNull, false, "csharp");
12
+ @@convenientAPI(Type.Property.Nullable.Datetime.patchNull, false, "csharp");
13
+
14
+ @@convenientAPI(Type.Property.Nullable.Duration.patchNonNull, false, "csharp");
15
+ @@convenientAPI(Type.Property.Nullable.Duration.patchNull, false, "csharp");
16
+
17
+ @@convenientAPI(Type.Property.Nullable.CollectionsByte.patchNonNull, false, "csharp");
18
+ @@convenientAPI(Type.Property.Nullable.CollectionsByte.patchNull, false, "csharp");
19
+
20
+ @@convenientAPI(Type.Property.Nullable.CollectionsModel.patchNonNull, false, "csharp");
21
+ @@convenientAPI(Type.Property.Nullable.CollectionsModel.patchNull, false, "csharp");
@@ -0,0 +1,162 @@
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 nullable properties.")
8
+ @scenarioService("/type/property/nullable")
9
+ namespace Type.Property.Nullable;
10
+
11
+ @doc("Template type for testing models with nullable property. Pass in the type of the property you are looking for")
12
+ model ModelTemplate<TProperty> {
13
+ @doc("Required property")
14
+ requiredProperty: string;
15
+
16
+ @doc("Property")
17
+ nullableProperty: TProperty | null;
18
+ }
19
+
20
+ @doc("Operations associated with getting and putting models with nullable properties.")
21
+ interface OperationsTemplate<TModel, TDoc extends string, TDefaultDoc extends string = "null"> {
22
+ @doc("Get models that will return all properties in the model")
23
+ @scenario
24
+ @scenarioDoc(
25
+ """
26
+ Expected response body:
27
+ ```json
28
+ { "requiredProperty": "foo", "nullableProperty": {allDoc}}
29
+ ```
30
+ """,
31
+ {
32
+ allDoc: TDoc,
33
+ }
34
+ )
35
+ @route("/non-null")
36
+ @get
37
+ getNonNull(): TModel;
38
+
39
+ @doc("Get models that will return the default object")
40
+ @scenario
41
+ @scenarioDoc(
42
+ """
43
+ Expected response body:
44
+ ```json
45
+ { "requiredProperty": "foo", "nullableProperty": {defaultDoc}}
46
+ ```
47
+ """,
48
+ {
49
+ defaultDoc: TDefaultDoc,
50
+ }
51
+ )
52
+ @route("/null")
53
+ @get
54
+ getNull(): TModel;
55
+
56
+ @doc("Put a body with all properties present.")
57
+ @scenario
58
+ @scenarioDoc(
59
+ """
60
+ Expected request body:
61
+ ```json
62
+ { "requiredProperty": "foo", "nullableProperty": {allDoc}}
63
+ ```
64
+ """,
65
+ {
66
+ allDoc: TDoc,
67
+ }
68
+ )
69
+ @route("/non-null")
70
+ @patch
71
+ patchNonNull(
72
+ @doc("content-type is application/merge-patch+json")
73
+ @header("Content-Type")
74
+ contentType: "application/merge-patch+json",
75
+
76
+ @body body: TModel,
77
+ ): void;
78
+
79
+ @doc("Put a body with default properties.")
80
+ @scenario
81
+ @scenarioDoc(
82
+ """
83
+ Expected request body:
84
+ ```json
85
+ { "requiredProperty": "foo", "nullableProperty": {defaultDoc}}
86
+ ```
87
+ """,
88
+ {
89
+ defaultDoc: TDefaultDoc,
90
+ }
91
+ )
92
+ @route("/null")
93
+ @patch
94
+ patchNull(
95
+ @doc("content-type is application/merge-patch+json")
96
+ @header("Content-Type")
97
+ contentType: "application/merge-patch+json",
98
+
99
+ @body body: TModel,
100
+ ): void;
101
+ }
102
+
103
+ // Model with nullable string property
104
+ model StringProperty is ModelTemplate<string>;
105
+ @route("/string")
106
+ @operationGroup
107
+ interface String extends OperationsTemplate<StringProperty, "hello"> {}
108
+
109
+ // Model with nullable bytes property
110
+ model BytesProperty is ModelTemplate<bytes>;
111
+ @route("/bytes")
112
+ @operationGroup
113
+ interface Bytes extends OperationsTemplate<BytesProperty, "aGVsbG8sIHdvcmxkIQ=="> {}
114
+
115
+ // Model with nullable datetime property
116
+ @doc("Model with a datetime property")
117
+ model DatetimeProperty is ModelTemplate<utcDateTime>;
118
+ @route("/datetime")
119
+ @operationGroup
120
+ interface Datetime extends OperationsTemplate<DatetimeProperty, "2022-08-26T18:38:00Z"> {}
121
+
122
+ // Model with nullable duration property
123
+ @doc("Model with a duration property")
124
+ model DurationProperty is ModelTemplate<duration>;
125
+ @route("/duration")
126
+ @operationGroup
127
+ interface Duration extends OperationsTemplate<DurationProperty, "P123DT22H14M12.011S"> {}
128
+
129
+ // Model with nullable collection bytes property
130
+ @doc("Model with collection bytes properties")
131
+ model CollectionsByteProperty is ModelTemplate<bytes[]>;
132
+ @route("/collections/bytes")
133
+ @operationGroup
134
+ interface CollectionsByte
135
+ extends OperationsTemplate<
136
+ CollectionsByteProperty,
137
+ "[aGVsbG8sIHdvcmxkIQ==, aGVsbG8sIHdvcmxkIQ==]"
138
+ > {}
139
+
140
+ // Model with nullable collection models property
141
+ @doc("Inner model used in collections model property")
142
+ model InnerModel {
143
+ @doc("Inner model property")
144
+ property: string;
145
+ }
146
+ @doc("Model with collection models properties")
147
+ model CollectionsModelProperty is ModelTemplate<InnerModel[]>;
148
+ @route("/collections/model")
149
+ @operationGroup
150
+ interface CollectionsModel
151
+ extends OperationsTemplate<
152
+ CollectionsModelProperty,
153
+ "[{'property': 'hello'}, {'property': 'world'}]"
154
+ > {}
155
+
156
+ // Model with nullable collection string property
157
+ @doc("Model with collection string properties")
158
+ model CollectionsStringProperty is ModelTemplate<string[]>;
159
+ @route("/collections/string")
160
+ @operationGroup
161
+ interface CollectionsString
162
+ extends OperationsTemplate<CollectionsStringProperty, "['hello', 'world']"> {}