@azure-tools/typespec-ts 0.11.0 → 0.12.0-alpha.20230501.1

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 (412) hide show
  1. package/.rush/temp/package-deps_build.json +265 -152
  2. package/.rush/temp/shrinkwrap-deps.json +58 -54
  3. package/CHANGELOG.md +4 -0
  4. package/CONTRIBUTING.md +5 -2
  5. package/README.md +3 -3
  6. package/dist/src/casingUtils.d.ts +4 -0
  7. package/dist/src/casingUtils.d.ts.map +1 -0
  8. package/dist/src/casingUtils.js +39 -0
  9. package/dist/src/casingUtils.js.map +1 -0
  10. package/dist/src/emitUtil.js +7 -1
  11. package/dist/src/emitUtil.js.map +1 -1
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +41 -9
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/lib.d.ts.map +1 -1
  16. package/dist/src/lib.js +2 -1
  17. package/dist/src/lib.js.map +1 -1
  18. package/dist/src/modelUtils.d.ts +22 -1
  19. package/dist/src/modelUtils.d.ts.map +1 -1
  20. package/dist/src/modelUtils.js +105 -13
  21. package/dist/src/modelUtils.js.map +1 -1
  22. package/dist/src/modular/buildApiIndex.d.ts +3 -0
  23. package/dist/src/modular/buildApiIndex.d.ts.map +1 -0
  24. package/dist/src/modular/buildApiIndex.js +12 -0
  25. package/dist/src/modular/buildApiIndex.js.map +1 -0
  26. package/dist/src/modular/buildClassicalClient.d.ts +4 -0
  27. package/dist/src/modular/buildClassicalClient.d.ts.map +1 -0
  28. package/dist/src/modular/buildClassicalClient.js +112 -0
  29. package/dist/src/modular/buildClassicalClient.js.map +1 -0
  30. package/dist/src/modular/buildClientContext.d.ts +7 -0
  31. package/dist/src/modular/buildClientContext.d.ts.map +1 -0
  32. package/dist/src/modular/buildClientContext.js +72 -0
  33. package/dist/src/modular/buildClientContext.js.map +1 -0
  34. package/dist/src/modular/buildCodeModel.d.ts +14 -0
  35. package/dist/src/modular/buildCodeModel.d.ts.map +1 -0
  36. package/dist/src/modular/buildCodeModel.js +1110 -0
  37. package/dist/src/modular/buildCodeModel.js.map +1 -0
  38. package/dist/src/modular/buildOperations.d.ts +13 -0
  39. package/dist/src/modular/buildOperations.d.ts.map +1 -0
  40. package/dist/src/modular/buildOperations.js +70 -0
  41. package/dist/src/modular/buildOperations.js.map +1 -0
  42. package/dist/src/modular/buildProjectFiles.d.ts +5 -0
  43. package/dist/src/modular/buildProjectFiles.d.ts.map +1 -0
  44. package/dist/src/modular/buildProjectFiles.js +182 -0
  45. package/dist/src/modular/buildProjectFiles.js.map +1 -0
  46. package/dist/src/modular/buildRootIndex.d.ts +4 -0
  47. package/dist/src/modular/buildRootIndex.d.ts.map +1 -0
  48. package/dist/src/modular/buildRootIndex.js +66 -0
  49. package/dist/src/modular/buildRootIndex.js.map +1 -0
  50. package/dist/src/modular/buildSharedTypes.d.ts +6 -0
  51. package/dist/src/modular/buildSharedTypes.d.ts.map +1 -0
  52. package/dist/src/modular/buildSharedTypes.js +33 -0
  53. package/dist/src/modular/buildSharedTypes.js.map +1 -0
  54. package/dist/src/modular/emitModels.d.ts +7 -0
  55. package/dist/src/modular/emitModels.d.ts.map +1 -0
  56. package/dist/src/modular/emitModels.js +63 -0
  57. package/dist/src/modular/emitModels.js.map +1 -0
  58. package/dist/src/modular/helpers/clientHelpers.d.ts +4 -0
  59. package/dist/src/modular/helpers/clientHelpers.d.ts.map +1 -0
  60. package/dist/src/modular/helpers/clientHelpers.js +31 -0
  61. package/dist/src/modular/helpers/clientHelpers.js.map +1 -0
  62. package/dist/src/modular/helpers/credentialHelpers.d.ts +7 -0
  63. package/dist/src/modular/helpers/credentialHelpers.d.ts.map +1 -0
  64. package/dist/src/modular/helpers/credentialHelpers.js +32 -0
  65. package/dist/src/modular/helpers/credentialHelpers.js.map +1 -0
  66. package/dist/src/modular/helpers/namingHelpers.d.ts +3 -0
  67. package/dist/src/modular/helpers/namingHelpers.d.ts.map +1 -0
  68. package/dist/src/modular/helpers/namingHelpers.js +4 -0
  69. package/dist/src/modular/helpers/namingHelpers.js.map +1 -0
  70. package/dist/src/modular/helpers/operationHelpers.d.ts +8 -0
  71. package/dist/src/modular/helpers/operationHelpers.d.ts.map +1 -0
  72. package/dist/src/modular/helpers/operationHelpers.js +274 -0
  73. package/dist/src/modular/helpers/operationHelpers.js.map +1 -0
  74. package/dist/src/modular/helpers/parameterHelpers.d.ts +3 -0
  75. package/dist/src/modular/helpers/parameterHelpers.d.ts.map +1 -0
  76. package/dist/src/modular/helpers/parameterHelpers.js +16 -0
  77. package/dist/src/modular/helpers/parameterHelpers.js.map +1 -0
  78. package/dist/src/modular/helpers/typeHelpers.d.ts +16 -0
  79. package/dist/src/modular/helpers/typeHelpers.d.ts.map +1 -0
  80. package/dist/src/modular/helpers/typeHelpers.js +92 -0
  81. package/dist/src/modular/helpers/typeHelpers.js.map +1 -0
  82. package/dist/src/modular/interfaces.d.ts +10 -0
  83. package/dist/src/modular/interfaces.d.ts.map +1 -0
  84. package/dist/src/modular/interfaces.js +2 -0
  85. package/dist/src/modular/interfaces.js.map +1 -0
  86. package/dist/src/modular/modularCodeModel.d.ts +121 -0
  87. package/dist/src/modular/modularCodeModel.d.ts.map +1 -0
  88. package/dist/src/modular/modularCodeModel.js +2 -0
  89. package/dist/src/modular/modularCodeModel.js.map +1 -0
  90. package/dist/src/operationUtil.d.ts +30 -4
  91. package/dist/src/operationUtil.d.ts.map +1 -1
  92. package/dist/src/operationUtil.js +77 -18
  93. package/dist/src/operationUtil.js.map +1 -1
  94. package/dist/src/transform/transform.d.ts +4 -6
  95. package/dist/src/transform/transform.d.ts.map +1 -1
  96. package/dist/src/transform/transform.js +17 -58
  97. package/dist/src/transform/transform.js.map +1 -1
  98. package/dist/src/transform/transformApiVersionInfo.d.ts +5 -0
  99. package/dist/src/transform/transformApiVersionInfo.d.ts.map +1 -0
  100. package/dist/src/transform/transformApiVersionInfo.js +64 -0
  101. package/dist/src/transform/transformApiVersionInfo.js.map +1 -0
  102. package/dist/src/transform/transformHelperFunctionDetails.d.ts +6 -0
  103. package/dist/src/transform/transformHelperFunctionDetails.d.ts.map +1 -0
  104. package/dist/src/transform/{transformAnnotationDetails.js → transformHelperFunctionDetails.js} +2 -2
  105. package/dist/src/transform/transformHelperFunctionDetails.js.map +1 -0
  106. package/dist/src/transform/transformParameters.d.ts +2 -2
  107. package/dist/src/transform/transformParameters.d.ts.map +1 -1
  108. package/dist/src/transform/transformParameters.js +20 -7
  109. package/dist/src/transform/transformParameters.js.map +1 -1
  110. package/dist/src/transform/transformPaths.d.ts +2 -2
  111. package/dist/src/transform/transformPaths.d.ts.map +1 -1
  112. package/dist/src/transform/transformPaths.js +15 -7
  113. package/dist/src/transform/transformPaths.js.map +1 -1
  114. package/dist/src/transform/transformResponses.d.ts +2 -2
  115. package/dist/src/transform/transformResponses.d.ts.map +1 -1
  116. package/dist/src/transform/transformResponses.js +23 -2
  117. package/dist/src/transform/transformResponses.js.map +1 -1
  118. package/dist/src/transform/transformSchemas.d.ts +2 -2
  119. package/dist/src/transform/transformSchemas.d.ts.map +1 -1
  120. package/dist/src/transform/transformSchemas.js +10 -22
  121. package/dist/src/transform/transformSchemas.js.map +1 -1
  122. package/dist/src/transform/transfromRLCOptions.d.ts +2 -2
  123. package/dist/src/transform/transfromRLCOptions.js +1 -1
  124. package/dist/src/transform/transfromRLCOptions.js.map +1 -1
  125. package/dist/tsconfig.tsbuildinfo +1 -1
  126. package/package.json +27 -19
  127. package/src/casingUtils.ts +48 -0
  128. package/src/emitUtil.ts +9 -4
  129. package/src/index.ts +53 -10
  130. package/src/lib.ts +2 -1
  131. package/src/modelUtils.ts +137 -14
  132. package/src/modular/buildApiIndex.ts +13 -0
  133. package/src/modular/buildClassicalClient.ts +147 -0
  134. package/src/modular/buildClientContext.ts +104 -0
  135. package/src/modular/buildCodeModel.ts +1449 -0
  136. package/src/modular/buildOperations.ts +95 -0
  137. package/src/modular/buildProjectFiles.ts +219 -0
  138. package/src/modular/buildRootIndex.ts +94 -0
  139. package/src/modular/buildSharedTypes.ts +40 -0
  140. package/src/modular/emitModels.ts +72 -0
  141. package/src/modular/helpers/clientHelpers.ts +38 -0
  142. package/src/modular/helpers/credentialHelpers.ts +40 -0
  143. package/src/modular/helpers/namingHelpers.ts +5 -0
  144. package/src/modular/helpers/operationHelpers.ts +418 -0
  145. package/src/modular/helpers/parameterHelpers.ts +17 -0
  146. package/src/modular/helpers/typeHelpers.ts +106 -0
  147. package/src/modular/interfaces.ts +10 -0
  148. package/src/modular/modularCodeModel.ts +151 -0
  149. package/src/modular/static/karma.conf.cjs +120 -0
  150. package/src/modular/static/rollup.test.config.js +67 -0
  151. package/src/modular/static/scripts/renameOutput.mjs +17 -0
  152. package/src/operationUtil.ts +119 -31
  153. package/src/transform/transform.ts +33 -96
  154. package/src/transform/transformApiVersionInfo.ts +108 -0
  155. package/src/transform/{transformAnnotationDetails.ts → transformHelperFunctionDetails.ts} +11 -11
  156. package/src/transform/transformParameters.ts +30 -14
  157. package/src/transform/transformPaths.ts +29 -19
  158. package/src/transform/transformResponses.ts +50 -8
  159. package/src/transform/transformSchemas.ts +20 -28
  160. package/src/transform/transfromRLCOptions.ts +3 -3
  161. package/test/commands/cadl-ranch-list.ts +53 -20
  162. package/test/commands/gen-cadl-ranch.ts +6 -2
  163. package/test/commands/run.ts +3 -13
  164. package/test/integration/arrayItemTypes.spec.ts +6 -3
  165. package/test/integration/azurecore.spec.ts +130 -0
  166. package/test/integration/collectionFormat.spec.ts +118 -0
  167. package/test/integration/dictionary.spec.ts +6 -2
  168. package/test/integration/extensibleEnums.spec.ts +8 -8
  169. package/test/integration/fixedEnums.spec.ts +7 -7
  170. package/test/integration/generated/arrays/itemTypes/src/clientDefinitions.ts +33 -18
  171. package/test/integration/generated/arrays/itemTypes/src/parameters.ts +8 -0
  172. package/test/integration/generated/arrays/itemTypes/src/responses.ts +11 -0
  173. package/test/integration/generated/arrays/itemTypes/tspconfig.yaml +5 -2
  174. package/test/integration/generated/authentication/apiKey/package.json +2 -2
  175. package/test/integration/generated/authentication/apiKey/tspconfig.yaml +5 -2
  176. package/test/integration/generated/authentication/oauth2/tspconfig.yaml +5 -2
  177. package/test/integration/generated/authentication/union/tspconfig.yaml +5 -2
  178. package/test/integration/generated/{resiliency/devDriven → azure/core}/README.md +7 -7
  179. package/test/integration/generated/{lro/lroBasic → azure/core}/api-extractor.json +1 -1
  180. package/test/integration/generated/{resiliency/devDriven → azure/core}/package.json +6 -6
  181. package/test/integration/generated/azure/core/src/azureCoreClient.ts +31 -0
  182. package/test/integration/generated/azure/core/src/clientDefinitions.ts +108 -0
  183. package/test/integration/generated/{resiliency/devDriven → azure/core}/src/index.ts +4 -3
  184. package/test/integration/generated/azure/core/src/isUnexpected.ts +178 -0
  185. package/test/integration/generated/azure/core/src/models.ts +18 -0
  186. package/test/integration/generated/azure/core/src/outputModels.ts +32 -0
  187. package/test/integration/generated/{resiliency/devDriven → azure/core}/src/paginateHelper.ts +55 -5
  188. package/test/integration/generated/azure/core/src/parameters.ts +68 -0
  189. package/test/integration/generated/azure/core/src/responses.ts +158 -0
  190. package/test/integration/generated/azure/core/src/serializeHelper.ts +16 -0
  191. package/test/integration/generated/azure/core/tspconfig.yaml +15 -0
  192. package/test/integration/generated/azure/core-traits/README.md +56 -0
  193. package/test/integration/generated/azure/core-traits/api-extractor.json +18 -0
  194. package/test/integration/generated/azure/core-traits/package.json +80 -0
  195. package/test/integration/generated/azure/core-traits/src/azureCoreTraitsClient.ts +31 -0
  196. package/test/integration/generated/azure/core-traits/src/clientDefinitions.ts +22 -0
  197. package/test/integration/generated/azure/core-traits/src/index.ts +13 -0
  198. package/test/integration/generated/{resiliency/devDriven → azure/core-traits}/src/isUnexpected.ts +6 -26
  199. package/test/integration/generated/azure/core-traits/src/outputModels.ts +10 -0
  200. package/test/integration/generated/azure/core-traits/src/parameters.ts +26 -0
  201. package/test/integration/generated/azure/core-traits/src/responses.ts +32 -0
  202. package/test/integration/generated/azure/core-traits/tspconfig.yaml +15 -0
  203. package/test/integration/generated/dictionary/package.json +2 -2
  204. package/test/integration/generated/dictionary/src/clientDefinitions.ts +35 -20
  205. package/test/integration/generated/dictionary/src/parameters.ts +8 -0
  206. package/test/integration/generated/dictionary/src/responses.ts +11 -0
  207. package/test/integration/generated/dictionary/tspconfig.yaml +5 -2
  208. package/test/integration/generated/enums/extensible/README.md +3 -3
  209. package/test/integration/generated/enums/extensible/package.json +2 -2
  210. package/test/integration/generated/enums/extensible/src/clientDefinitions.ts +5 -5
  211. package/test/integration/generated/enums/extensible/src/index.ts +3 -3
  212. package/test/integration/generated/enums/extensible/src/{enumsExtensible.ts → typeEnumExtensible.ts} +4 -4
  213. package/test/integration/generated/enums/extensible/tspconfig.yaml +5 -2
  214. package/test/integration/generated/enums/fixed/README.md +3 -3
  215. package/test/integration/generated/enums/fixed/package.json +2 -2
  216. package/test/integration/generated/enums/fixed/src/clientDefinitions.ts +5 -5
  217. package/test/integration/generated/enums/fixed/src/index.ts +3 -3
  218. package/test/integration/generated/enums/fixed/src/{enumsFixed.ts → typeEnumFixed.ts} +4 -4
  219. package/test/integration/generated/enums/fixed/tspconfig.yaml +5 -2
  220. package/test/integration/generated/hello/package.json +2 -2
  221. package/test/integration/generated/hello/tspconfig.yaml +5 -2
  222. package/test/integration/generated/internal/src/clientDefinitions.ts +27 -0
  223. package/test/integration/generated/internal/src/index.ts +13 -0
  224. package/test/integration/generated/{lro/lroBasic/src/azureLro.ts → internal/src/internalClient.ts} +5 -5
  225. package/test/integration/generated/internal/src/models.ts +8 -0
  226. package/test/integration/generated/internal/src/outputModels.ts +13 -0
  227. package/test/integration/generated/internal/src/parameters.ts +21 -0
  228. package/test/integration/generated/internal/src/responses.ts +20 -0
  229. package/test/integration/generated/internal/tspconfig.yaml +14 -0
  230. package/test/integration/generated/lro/lroCore/.eslintrc.json +11 -0
  231. package/test/integration/generated/lro/lroCore/README.md +56 -0
  232. package/test/integration/generated/{resiliency/devDriven → lro/lroCore}/api-extractor.json +1 -1
  233. package/test/integration/generated/lro/{lroBasic → lroCore}/package.json +6 -6
  234. package/test/integration/generated/lro/lroCore/rollup.config.js +118 -0
  235. package/test/integration/generated/lro/lroCore/src/clientDefinitions.ts +54 -0
  236. package/test/integration/generated/lro/lroCore/src/index.ts +15 -0
  237. package/test/integration/generated/lro/lroCore/src/isUnexpected.ts +135 -0
  238. package/test/integration/generated/lro/lroCore/src/models.ts +8 -0
  239. package/test/integration/generated/lro/lroCore/src/outputModels.ts +50 -0
  240. package/test/integration/generated/lro/lroCore/src/parameters.ts +25 -0
  241. package/test/integration/generated/lro/{lroBasic → lroCore}/src/pollingHelper.ts +38 -0
  242. package/test/integration/generated/lro/lroCore/src/responses.ts +109 -0
  243. package/test/integration/generated/lro/lroCore/src/specsAzureCoreLroStandard.ts +31 -0
  244. package/test/integration/generated/lro/lroCore/tsconfig.json +25 -0
  245. package/test/integration/generated/lro/lroCore/tspconfig.yaml +14 -0
  246. package/test/integration/generated/lro/lroRPC/.eslintrc.json +11 -0
  247. package/test/integration/generated/lro/{lroBasic → lroRPC}/README.md +7 -7
  248. package/test/integration/generated/lro/lroRPC/api-extractor.json +18 -0
  249. package/test/integration/generated/lro/lroRPC/package.json +82 -0
  250. package/test/integration/generated/lro/lroRPC/rollup.config.js +118 -0
  251. package/test/integration/generated/lro/lroRPC/src/clientDefinitions.ts +79 -0
  252. package/test/integration/generated/lro/lroRPC/src/index.ts +15 -0
  253. package/test/integration/generated/lro/lroRPC/src/isUnexpected.ts +153 -0
  254. package/test/integration/generated/lro/lroRPC/src/models.ts +8 -0
  255. package/test/integration/generated/lro/lroRPC/src/outputModels.ts +40 -0
  256. package/test/integration/generated/lro/lroRPC/src/parameters.ts +20 -0
  257. package/test/integration/generated/lro/lroRPC/src/pollingHelper.ts +127 -0
  258. package/test/integration/generated/lro/lroRPC/src/responses.ts +124 -0
  259. package/test/integration/generated/lro/lroRPC/src/specsAzureCoreLroRpc.ts +31 -0
  260. package/test/integration/generated/lro/lroRPC/tsconfig.json +25 -0
  261. package/test/integration/generated/lro/lroRPC/tspconfig.yaml +14 -0
  262. package/test/integration/generated/models/inheritance/README.md +3 -3
  263. package/test/integration/generated/models/inheritance/package.json +2 -2
  264. package/test/integration/generated/models/inheritance/src/clientDefinitions.ts +13 -11
  265. package/test/integration/generated/models/inheritance/src/index.ts +3 -3
  266. package/test/integration/generated/models/inheritance/src/{modelsInheritance.ts → typeModelInheritance.ts} +4 -4
  267. package/test/integration/generated/models/inheritance/tspconfig.yaml +5 -2
  268. package/test/integration/generated/models/propertyNullable/.eslintrc.json +11 -0
  269. package/test/integration/generated/models/propertyNullable/README.md +56 -0
  270. package/test/integration/generated/models/propertyNullable/api-extractor.json +18 -0
  271. package/test/integration/generated/models/propertyNullable/package.json +80 -0
  272. package/test/integration/generated/models/propertyNullable/rollup.config.js +118 -0
  273. package/test/integration/generated/models/propertyNullable/src/clientDefinitions.ts +227 -0
  274. package/test/integration/generated/models/propertyNullable/src/index.ts +13 -0
  275. package/test/integration/generated/models/propertyNullable/src/models.ts +56 -0
  276. package/test/integration/generated/models/propertyNullable/src/outputModels.ts +56 -0
  277. package/test/integration/generated/models/propertyNullable/src/parameters.ts +197 -0
  278. package/test/integration/generated/models/propertyNullable/src/responses.ts +144 -0
  279. package/test/integration/generated/{resiliency/devDriven/src/resiliencyDevDriven.ts → models/propertyNullable/src/typePropertyNullable.ts} +5 -5
  280. package/test/integration/generated/models/propertyNullable/tsconfig.json +25 -0
  281. package/test/integration/generated/models/propertyNullable/tspconfig.yaml +14 -0
  282. package/test/integration/generated/models/propertyOptional/README.md +3 -3
  283. package/test/integration/generated/models/propertyOptional/package.json +2 -2
  284. package/test/integration/generated/models/propertyOptional/src/clientDefinitions.ts +47 -47
  285. package/test/integration/generated/models/propertyOptional/src/index.ts +3 -3
  286. package/test/integration/generated/models/propertyOptional/src/parameters.ts +7 -6
  287. package/test/integration/generated/models/propertyOptional/src/responses.ts +4 -4
  288. package/test/integration/generated/models/propertyOptional/src/{modelsPropertyOptional.ts → typePropertyOptional.ts} +4 -4
  289. package/test/integration/generated/models/propertyOptional/tspconfig.yaml +5 -2
  290. package/test/integration/generated/models/propertyTypes/README.md +3 -3
  291. package/test/integration/generated/models/propertyTypes/package.json +2 -2
  292. package/test/integration/generated/models/propertyTypes/src/clientDefinitions.ts +55 -47
  293. package/test/integration/generated/models/propertyTypes/src/index.ts +3 -3
  294. package/test/integration/generated/models/propertyTypes/src/parameters.ts +8 -6
  295. package/test/integration/generated/models/propertyTypes/src/responses.ts +4 -4
  296. package/test/integration/generated/models/propertyTypes/src/{modelsPropertyTypes.ts → typePropertyValueTypes.ts} +4 -4
  297. package/test/integration/generated/models/propertyTypes/tspconfig.yaml +5 -2
  298. package/test/integration/generated/models/usage/README.md +3 -3
  299. package/test/integration/generated/models/usage/package.json +2 -2
  300. package/test/integration/generated/models/usage/src/clientDefinitions.ts +7 -7
  301. package/test/integration/generated/models/usage/src/index.ts +3 -3
  302. package/test/integration/generated/models/usage/src/{modelsUsage.ts → typeModelUsage.ts} +4 -4
  303. package/test/integration/generated/models/usage/tspconfig.yaml +5 -2
  304. package/test/integration/generated/models/visibility/README.md +3 -3
  305. package/test/integration/generated/models/visibility/package.json +2 -2
  306. package/test/integration/generated/models/visibility/src/clientDefinitions.ts +3 -3
  307. package/test/integration/generated/models/visibility/src/index.ts +3 -3
  308. package/test/integration/generated/models/visibility/src/{modelsVisibilityAutomatic.ts → typeModelVisibility.ts} +4 -4
  309. package/test/integration/generated/models/visibility/tspconfig.yaml +5 -2
  310. package/test/integration/generated/parameters/collection-format/src/clientDefinitions.ts +63 -0
  311. package/test/integration/generated/parameters/collection-format/src/collectionFormatClient.ts +31 -0
  312. package/test/integration/generated/parameters/collection-format/src/index.ts +12 -0
  313. package/test/integration/generated/parameters/collection-format/src/parameters.ts +71 -0
  314. package/test/integration/generated/parameters/collection-format/src/responses.ts +34 -0
  315. package/test/integration/generated/parameters/collection-format/src/serializeHelper.ts +28 -0
  316. package/test/integration/generated/parameters/collection-format/tspconfig.yaml +14 -0
  317. package/test/integration/generated/parameters/spread/src/clientDefinitions.ts +61 -0
  318. package/test/integration/generated/{lro/lroBasic → parameters/spread}/src/index.ts +4 -4
  319. package/test/integration/generated/parameters/spread/src/models.ts +7 -0
  320. package/test/integration/generated/parameters/spread/src/parameters.ts +61 -0
  321. package/test/integration/generated/parameters/spread/src/parametersSpread.ts +31 -0
  322. package/test/integration/generated/parameters/spread/src/responses.ts +25 -0
  323. package/test/integration/generated/parameters/spread/tspconfig.yaml +12 -0
  324. package/test/integration/generated/projection/src/clientDefinitions.ts +71 -0
  325. package/test/integration/generated/projection/src/index.ts +12 -0
  326. package/test/integration/generated/projection/src/models.ts +22 -0
  327. package/test/integration/generated/projection/src/parameters.ts +48 -0
  328. package/test/integration/generated/projection/src/projectionClient.ts +31 -0
  329. package/test/integration/generated/projection/src/responses.ts +34 -0
  330. package/test/integration/generated/projection/tspconfig.yaml +14 -0
  331. package/test/integration/generated/resiliency/srvDriven1/README.md +4 -4
  332. package/test/integration/generated/resiliency/srvDriven1/package.json +2 -2
  333. package/test/integration/generated/resiliency/srvDriven1/src/clientDefinitions.ts +25 -49
  334. package/test/integration/generated/resiliency/srvDriven1/src/index.ts +3 -5
  335. package/test/integration/generated/resiliency/srvDriven1/src/parameters.ts +11 -32
  336. package/test/integration/generated/resiliency/srvDriven1/src/responses.ts +9 -24
  337. package/test/integration/generated/resiliency/srvDriven1/src/serviceDrivenOldClient.ts +39 -0
  338. package/test/integration/generated/resiliency/srvDriven1/tspconfig.yaml +6 -2
  339. package/test/integration/generated/resiliency/srvDriven2/README.md +13 -4
  340. package/test/integration/generated/resiliency/srvDriven2/package.json +2 -2
  341. package/test/integration/generated/resiliency/srvDriven2/src/clientDefinitions.ts +32 -68
  342. package/test/integration/generated/resiliency/srvDriven2/src/index.ts +3 -5
  343. package/test/integration/generated/resiliency/srvDriven2/src/parameters.ts +19 -42
  344. package/test/integration/generated/resiliency/srvDriven2/src/responses.ts +10 -31
  345. package/test/integration/generated/resiliency/srvDriven2/src/serviceDrivenNewClient.ts +39 -0
  346. package/test/integration/generated/resiliency/srvDriven2/tspconfig.yaml +6 -2
  347. package/test/integration/generated/server/path/multiple/src/clientDefinitions.ts +35 -0
  348. package/test/integration/generated/server/path/multiple/src/index.ts +11 -0
  349. package/test/integration/generated/server/path/multiple/src/multipleParamInServerPathClient.ts +39 -0
  350. package/test/integration/generated/server/path/multiple/src/parameters.ts +7 -0
  351. package/test/integration/generated/server/path/multiple/src/responses.ts +14 -0
  352. package/test/integration/generated/server/path/multiple/tspconfig.yaml +14 -0
  353. package/test/integration/generated/server/path/single/src/clientDefinitions.ts +19 -0
  354. package/test/integration/generated/server/path/single/src/index.ts +11 -0
  355. package/test/integration/generated/server/path/single/src/parameters.ts +6 -0
  356. package/test/integration/generated/server/path/single/src/responses.ts +9 -0
  357. package/test/integration/generated/server/path/single/src/singleParamInServerPathClient.ts +34 -0
  358. package/test/integration/generated/server/path/single/tspconfig.yaml +14 -0
  359. package/test/integration/generated/specialWords/tspconfig.yaml +5 -2
  360. package/test/integration/generated/unions/src/clientDefinitions.ts +8 -8
  361. package/test/integration/generated/unions/tspconfig.yaml +5 -2
  362. package/test/integration/internal.spec.ts +43 -0
  363. package/test/integration/lroCore.spec.ts +89 -0
  364. package/test/integration/modelInheritance.spec.ts +13 -13
  365. package/test/integration/modelPropertyNullable.spec.ts +115 -0
  366. package/test/integration/modelPropertyOptional.spec.ts +32 -32
  367. package/test/integration/modelPropertyType.spec.ts +6 -6
  368. package/test/integration/modelUsage.spec.ts +7 -7
  369. package/test/integration/projection.spec.ts +102 -0
  370. package/test/integration/resiliencyDpgCustomization.spec.ts +69 -35
  371. package/test/integration/server.spec.ts +59 -0
  372. package/test/integration/spreadParameters.spec.ts +82 -0
  373. package/test/integration/unions.spec.ts +4 -4
  374. package/test/unit/apiVersion.spec.ts +388 -0
  375. package/test/unit/clientFactoryGenerator.spec.ts +0 -131
  376. package/test/unit/modelsGenerator.spec.ts +2 -2
  377. package/test/unit/parametersGenerator.spec.ts +1 -1
  378. package/test/unit/responsesGenerator.spec.ts +1 -1
  379. package/test/unit/util/emitUtil.ts +6 -5
  380. package/test/unit/util/testUtil.ts +3 -3
  381. package/dist/src/transform/transformAnnotationDetails.d.ts +0 -6
  382. package/dist/src/transform/transformAnnotationDetails.d.ts.map +0 -1
  383. package/dist/src/transform/transformAnnotationDetails.js.map +0 -1
  384. package/dist/src/transform/transformApiVersionParam.d.ts +0 -5
  385. package/dist/src/transform/transformApiVersionParam.d.ts.map +0 -1
  386. package/dist/src/transform/transformApiVersionParam.js +0 -76
  387. package/dist/src/transform/transformApiVersionParam.js.map +0 -1
  388. package/src/transform/transformApiVersionParam.ts +0 -104
  389. package/test/integration/generated/lro/lroBasic/src/clientDefinitions.ts +0 -37
  390. package/test/integration/generated/lro/lroBasic/src/parameters.ts +0 -8
  391. package/test/integration/generated/lro/lroBasic/src/responses.ts +0 -22
  392. package/test/integration/generated/lro/lroBasic/tspconfig.yaml +0 -11
  393. package/test/integration/generated/resiliency/devDriven/src/clientDefinitions.ts +0 -75
  394. package/test/integration/generated/resiliency/devDriven/src/models.ts +0 -8
  395. package/test/integration/generated/resiliency/devDriven/src/outputModels.ts +0 -25
  396. package/test/integration/generated/resiliency/devDriven/src/parameters.ts +0 -17
  397. package/test/integration/generated/resiliency/devDriven/src/responses.ts +0 -62
  398. package/test/integration/generated/resiliency/devDriven/tspconfig.yaml +0 -11
  399. package/test/integration/generated/resiliency/srvDriven1/src/models.ts +0 -6
  400. package/test/integration/generated/resiliency/srvDriven1/src/outputModels.ts +0 -6
  401. package/test/integration/generated/resiliency/srvDriven1/src/resiliencyServiceDriven1.ts +0 -31
  402. package/test/integration/generated/resiliency/srvDriven2/src/models.ts +0 -6
  403. package/test/integration/generated/resiliency/srvDriven2/src/outputModels.ts +0 -6
  404. package/test/integration/generated/resiliency/srvDriven2/src/resiliencyServiceDriven2.ts +0 -31
  405. package/test/integration/helloWorld.spec.ts +0 -20
  406. package/test/integration/lroBasic.spec.ts +0 -25
  407. /package/test/integration/generated/{resiliency/devDriven → azure/core}/.eslintrc.json +0 -0
  408. /package/test/integration/generated/{resiliency/devDriven → azure/core}/rollup.config.js +0 -0
  409. /package/test/integration/generated/{resiliency/devDriven → azure/core}/tsconfig.json +0 -0
  410. /package/test/integration/generated/{lro/lroBasic → azure/core-traits}/.eslintrc.json +0 -0
  411. /package/test/integration/generated/{lro/lroBasic → azure/core-traits}/rollup.config.js +0 -0
  412. /package/test/integration/generated/{lro/lroBasic → azure/core-traits}/tsconfig.json +0 -0
@@ -0,0 +1,82 @@
1
+ import ParametersSpreadClientFactory, {
2
+ ParametersSpreadClient
3
+ } from "./generated/parameters/spread/src/index.js";
4
+ import { assert } from "chai";
5
+ describe("HelloClient Rest Client", () => {
6
+ let client: ParametersSpreadClient;
7
+
8
+ beforeEach(() => {
9
+ client = ParametersSpreadClientFactory({ allowInsecureConnection: true });
10
+ });
11
+
12
+ it("should spread named model", async () => {
13
+ try {
14
+ const result = await client
15
+ .path("/parameters/spread/model/request-body")
16
+ .put({
17
+ body: {
18
+ name: "foo"
19
+ }
20
+ });
21
+ assert.strictEqual(result.status, "204");
22
+ } catch (err) {
23
+ assert.fail(err as string);
24
+ }
25
+ });
26
+
27
+ it("should spread alias with only body param", async () => {
28
+ try {
29
+ const result = await client
30
+ .path("/parameters/spread/alias/request-body")
31
+ .put({
32
+ body: {
33
+ name: "foo"
34
+ }
35
+ });
36
+ assert.strictEqual(result.status, "204");
37
+ } catch (err) {
38
+ assert.fail(err as string);
39
+ }
40
+ });
41
+
42
+ it("should spread alias with mixed params", async () => {
43
+ try {
44
+ const result = await client
45
+ .path("/parameters/spread/alias/request-parameter/{id}", "1")
46
+ .put({
47
+ body: {
48
+ name: "foo"
49
+ },
50
+ headers: {
51
+ "x-ms-test-header": "bar"
52
+ }
53
+ });
54
+ assert.strictEqual(result.status, "204");
55
+ } catch (err) {
56
+ assert.fail(err as string);
57
+ }
58
+ });
59
+
60
+ it("should spread alias with more than 5 params", async () => {
61
+ try {
62
+ const result = await client
63
+ .path("/parameters/spread/alias/multiple-parameters/{id}", "1")
64
+ .put({
65
+ body: {
66
+ prop1: "foo1",
67
+ prop2: "foo2",
68
+ prop3: "foo3",
69
+ prop4: "foo4",
70
+ prop5: "foo5",
71
+ prop6: "foo6"
72
+ },
73
+ headers: {
74
+ "x-ms-test-header": "bar"
75
+ }
76
+ });
77
+ assert.strictEqual(result.status, "204");
78
+ } catch (err) {
79
+ assert.fail(err as string);
80
+ }
81
+ });
82
+ });
@@ -11,7 +11,7 @@ describe("UnionsClient Rest Client", () => {
11
11
 
12
12
  it("should post input simple number union", async () => {
13
13
  try {
14
- const result = await client.path("/unions/int").post({
14
+ const result = await client.path("/type/union/int").post({
15
15
  body: {
16
16
  simpleUnion: 1
17
17
  }
@@ -24,7 +24,7 @@ describe("UnionsClient Rest Client", () => {
24
24
 
25
25
  it("should post simple number array union", async () => {
26
26
  try {
27
- const result = await client.path("/unions/int-array").post({
27
+ const result = await client.path("/type/union/int-array").post({
28
28
  body: {
29
29
  simpleUnion: [1, 2]
30
30
  }
@@ -37,7 +37,7 @@ describe("UnionsClient Rest Client", () => {
37
37
 
38
38
  it("should post named union model1", async () => {
39
39
  try {
40
- const result = await client.path("/unions/model1").post({
40
+ const result = await client.path("/type/union/model1").post({
41
41
  body: {
42
42
  namedUnion: {
43
43
  name: "model1",
@@ -53,7 +53,7 @@ describe("UnionsClient Rest Client", () => {
53
53
 
54
54
  it("should post named union model2", async () => {
55
55
  try {
56
- const result = await client.path("/unions/model2").post({
56
+ const result = await client.path("/type/union/model2").post({
57
57
  body: {
58
58
  namedUnion: {
59
59
  name: "model2",
@@ -0,0 +1,388 @@
1
+ import { assert } from "chai";
2
+ import { emitClientFactoryFromCadl } from "./util/emitUtil.js";
3
+ import { assertEqualContent } from "./util/testUtil.js";
4
+
5
+ interface DefinitionOptions {
6
+ "@service"?: boolean;
7
+ "@versioned"?: boolean;
8
+ crossVersion?: boolean;
9
+ }
10
+
11
+ const buildDefaultDefinition = (options: DefinitionOptions) => {
12
+ const serviceDefault = !options["@service"]
13
+ ? ``
14
+ : `version: "2022-05-15-preview"`;
15
+ const versionDef = !options["@versioned"]
16
+ ? ``
17
+ : `
18
+ @versioned(Versions)`;
19
+ return `
20
+ ${versionDef}
21
+ @server(
22
+ "{Endpoint}/language",
23
+ "Language Service",
24
+ {
25
+ Endpoint: Endpoint
26
+ }
27
+ )
28
+ @service({
29
+ title: "PetStoreClient",
30
+ ${serviceDefault}
31
+ })
32
+ namespace PetStore;
33
+ @doc("The endpoint to use.")
34
+ scalar Endpoint extends string;
35
+
36
+ enum Versions {
37
+ v2022_05_15_preview: "2022-05-15-preview"
38
+ }
39
+ `;
40
+ };
41
+
42
+ const buildQueryDefinition = (options: DefinitionOptions) => {
43
+ const crossVersionDef = options.crossVersion
44
+ ? `
45
+ enum VersionEnum {
46
+ v1,
47
+ v2,
48
+ }
49
+ model ApiVersion3Parameter {
50
+ @query
51
+ "api-version": VersionEnum;
52
+ }
53
+ @route("/baz")
54
+ op baz(...ApiVersion3Parameter): string;
55
+
56
+ model ApiVersion2Parameter {
57
+ @query
58
+ "api-version": "v1.1";
59
+ }
60
+ @route("/bar")
61
+ op bar(...ApiVersion2Parameter): string;`
62
+ : ``;
63
+ return `${buildDefaultDefinition(options)}
64
+ model ApiVersionParameter {
65
+ @query
66
+ "api-version": string;
67
+ }
68
+ @route("/foo")
69
+ op foo(...ApiVersionParameter): string;
70
+ ${crossVersionDef}
71
+ `;
72
+ };
73
+
74
+ const buildPathDefinition = (options: DefinitionOptions) => {
75
+ const serviceDefault = !options["@service"]
76
+ ? ``
77
+ : `version: "2022-05-15-preview"`;
78
+ const versionDef = !options["@versioned"]
79
+ ? ``
80
+ : `
81
+ @versioned(Versions)`;
82
+ return `
83
+ ${versionDef}
84
+ @server(
85
+ "{Endpoint}/anomalydetector/{apiVersion}",
86
+ "Language Service",
87
+ {
88
+ Endpoint: Endpoint,
89
+ @doc("Api Version")
90
+ @path
91
+ apiVersion: Versions,
92
+ }
93
+ )
94
+ @service({
95
+ title: "PetStoreClient",
96
+ ${serviceDefault}
97
+ })
98
+ namespace PetStore;
99
+ @doc("The endpoint to use.")
100
+ scalar Endpoint extends string;
101
+
102
+ enum Versions {
103
+ v2022_05_15_preview: "2022-05-15-preview"
104
+ }
105
+ `;
106
+ };
107
+
108
+ const buildMixedDefinition = (options: DefinitionOptions) => {
109
+ const crossVersionDef = options.crossVersion
110
+ ? `
111
+ model ApiVersion2Parameter {
112
+ @query
113
+ "api-version": "v1.1";
114
+ }
115
+ op foo(...ApiVersion2Parameter): string;`
116
+ : ``;
117
+ return `${buildPathDefinition(options)}
118
+ model ApiVersionParameter {
119
+ @query
120
+ "api-version": string;
121
+ }
122
+ op test(...ApiVersionParameter): string;
123
+ ${crossVersionDef}
124
+ `;
125
+ };
126
+
127
+ const buildDefaultReturn = (hasDefault: boolean) => {
128
+ const defaultDef = !hasDefault
129
+ ? ``
130
+ : `options.apiVersion = options.apiVersion ?? "2022-05-15-preview";`;
131
+ return `
132
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
133
+ import { testClient } from "./clientDefinitions";
134
+
135
+ /**
136
+ * Initialize a new instance of \`testClient\`
137
+ * @param endpoint type: string, The endpoint to use.
138
+ * @param options type: ClientOptions, the parameter for all optional parameters
139
+ */
140
+ export default function createClient(
141
+ endpoint: string,
142
+ options: ClientOptions = {}
143
+ ): testClient {
144
+ const baseUrl = options.baseUrl ?? \`\${endpoint}/language\`;
145
+ ${defaultDef}
146
+
147
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
148
+ const userAgentPrefix =
149
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
150
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
151
+ : \`\${userAgentInfo}\`;
152
+ options = {
153
+ ...options,
154
+ userAgentOptions: {
155
+ userAgentPrefix,
156
+ },
157
+ };
158
+
159
+ const client = getClient(baseUrl, options) as testClient;
160
+
161
+ return client;
162
+ }`;
163
+ };
164
+
165
+ const buildPathReturn_WithDefault = () => {
166
+ return `
167
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
168
+ import { testClient } from "./clientDefinitions";
169
+
170
+ export interface testClientOptions extends ClientOptions {
171
+ apiVersion?: string;
172
+ }
173
+
174
+ /**
175
+ * Initialize a new instance of \`testClient\`
176
+ * @param endpoint type: string, The endpoint to use.
177
+ * @param options type: testClientOptions, the parameter for all optional parameters
178
+ */
179
+ export default function createClient(
180
+ endpoint: string,
181
+ options: testClientOptions = {}
182
+ ): testClient {
183
+ const apiVersion = options.apiVersion ?? "2022-05-15-preview";
184
+ const baseUrl = options.baseUrl ?? \`\${endpoint}/anomalydetector/\${apiVersion}\`;
185
+
186
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
187
+ const userAgentPrefix =
188
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
189
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
190
+ : \`\${userAgentInfo}\`;
191
+ options = {
192
+ ...options,
193
+ userAgentOptions: {
194
+ userAgentPrefix,
195
+ },
196
+ };
197
+
198
+ const client = getClient(baseUrl, options) as testClient;
199
+
200
+ return client;
201
+ }`;
202
+ };
203
+
204
+ const buildPathReturn_WithoutDefault = () => {
205
+ return `
206
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
207
+ import { testClient } from "./clientDefinitions";
208
+
209
+ /**
210
+ * Initialize a new instance of \`testClient\`
211
+ * @param endpoint type: string, The endpoint to use.
212
+ * @param apiVersion type: string, Api Version Possible values: 2022-05-15-preview
213
+ * @param options type: ClientOptions, the parameter for all optional parameters
214
+ */
215
+ export default function createClient(
216
+ endpoint: string,
217
+ apiVersion: string,
218
+ options: ClientOptions = {}
219
+ ): testClient {
220
+ const baseUrl = options.baseUrl ?? \`\${endpoint}/anomalydetector/\${apiVersion}\`;
221
+
222
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
223
+ const userAgentPrefix =
224
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
225
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
226
+ : \`\${userAgentInfo}\`;
227
+ options = {
228
+ ...options,
229
+ userAgentOptions: {
230
+ userAgentPrefix,
231
+ },
232
+ };
233
+
234
+ const client = getClient(baseUrl, options) as testClient;
235
+
236
+ return client;
237
+ }`;
238
+ };
239
+
240
+ describe("api-version", () => {
241
+ describe("defined in query position", () => {
242
+ describe("with default value", () => {
243
+ it("in @serivce", async () => {
244
+ const def = buildQueryDefinition({
245
+ "@service": true
246
+ });
247
+ const expectedRes = buildDefaultReturn(true);
248
+ const models = await emitClientFactoryFromCadl(def);
249
+ assert.ok(models);
250
+ assertEqualContent(models!.content, expectedRes);
251
+ });
252
+ it("in @versioned", async () => {
253
+ const def = buildQueryDefinition({
254
+ "@versioned": true
255
+ });
256
+ const expectedRes = buildDefaultReturn(true);
257
+ const models = await emitClientFactoryFromCadl(def);
258
+ assert.ok(models);
259
+ assertEqualContent(models!.content, expectedRes);
260
+ });
261
+ });
262
+ describe("without default value", () => {
263
+ it("due to cross version", async () => {
264
+ const def = buildQueryDefinition({
265
+ "@service": true,
266
+ "@versioned": false,
267
+ crossVersion: true
268
+ });
269
+ const expectedRes = buildDefaultReturn(false);
270
+ const models = await emitClientFactoryFromCadl(def);
271
+ assert.ok(models);
272
+ assertEqualContent(models!.content, expectedRes);
273
+ });
274
+ it("no @service or @versioned", async () => {
275
+ const def = buildQueryDefinition({
276
+ "@service": false,
277
+ "@versioned": false
278
+ });
279
+ const expectedRes = buildDefaultReturn(false);
280
+ const models = await emitClientFactoryFromCadl(def);
281
+ assert.ok(models);
282
+ assertEqualContent(models!.content, expectedRes);
283
+ });
284
+ });
285
+ });
286
+ describe("defined in url path", () => {
287
+ describe("with default value", () => {
288
+ it("in @serivce", async () => {
289
+ const def = buildPathDefinition({
290
+ "@service": true
291
+ });
292
+ const expectedRes = buildPathReturn_WithDefault();
293
+ const models = await emitClientFactoryFromCadl(def);
294
+ assert.ok(models);
295
+ assertEqualContent(models!.content, expectedRes);
296
+ });
297
+ it("in @versioned", async () => {
298
+ const def = buildPathDefinition({
299
+ "@versioned": true
300
+ });
301
+ const expectedRes = buildPathReturn_WithDefault();
302
+ const models = await emitClientFactoryFromCadl(def);
303
+ assert.ok(models);
304
+ assertEqualContent(models!.content, expectedRes);
305
+ });
306
+ });
307
+ describe("without default value", () => {
308
+ it("no @service or @versioned", async () => {
309
+ const def = buildPathDefinition({
310
+ "@service": false,
311
+ "@versioned": false
312
+ });
313
+ const expectedRes = buildPathReturn_WithoutDefault();
314
+ const models = await emitClientFactoryFromCadl(def);
315
+ assert.ok(models);
316
+ assertEqualContent(models!.content, expectedRes);
317
+ });
318
+ });
319
+ });
320
+ describe("defined in both positions[path preferred]", () => {
321
+ describe("with default value", () => {
322
+ it("in @serivce", async () => {
323
+ const def = buildMixedDefinition({
324
+ "@service": true
325
+ });
326
+ const expectedRes = buildPathReturn_WithDefault();
327
+ const models = await emitClientFactoryFromCadl(def);
328
+ assert.ok(models);
329
+ assertEqualContent(models!.content, expectedRes);
330
+ });
331
+ it("in @versioned", async () => {
332
+ const def = buildMixedDefinition({
333
+ "@versioned": true
334
+ });
335
+ const expectedRes = buildPathReturn_WithDefault();
336
+ const models = await emitClientFactoryFromCadl(def);
337
+ assert.ok(models);
338
+ assertEqualContent(models!.content, expectedRes);
339
+ });
340
+ });
341
+ describe("without default value", () => {
342
+ it("no @service or @versioned", async () => {
343
+ const def = buildMixedDefinition({
344
+ "@service": false,
345
+ "@versioned": false
346
+ });
347
+ const expectedRes = buildPathReturn_WithoutDefault();
348
+ const models = await emitClientFactoryFromCadl(def);
349
+ assert.ok(models);
350
+ assertEqualContent(models!.content, expectedRes);
351
+ });
352
+ });
353
+ });
354
+ describe("without definition", () => {
355
+ describe("with default value", () => {
356
+ it("in @serivce", async () => {
357
+ const def = buildDefaultDefinition({
358
+ "@service": true
359
+ });
360
+ const expectedRes = buildDefaultReturn(true);
361
+ const models = await emitClientFactoryFromCadl(def);
362
+ assert.ok(models);
363
+ assertEqualContent(models!.content, expectedRes);
364
+ });
365
+ it("in @versioned", async () => {
366
+ const def = buildDefaultDefinition({
367
+ "@versioned": true
368
+ });
369
+ const expectedRes = buildDefaultReturn(true);
370
+ const models = await emitClientFactoryFromCadl(def);
371
+ assert.ok(models);
372
+ assertEqualContent(models!.content, expectedRes);
373
+ });
374
+ });
375
+ describe("without default value", () => {
376
+ it("no @service or @versioned", async () => {
377
+ const def = buildDefaultDefinition({
378
+ "@service": false,
379
+ "@versioned": false
380
+ });
381
+ const expectedRes = buildDefaultReturn(false);
382
+ const models = await emitClientFactoryFromCadl(def);
383
+ assert.ok(models);
384
+ assertEqualContent(models!.content, expectedRes);
385
+ });
386
+ });
387
+ });
388
+ });
@@ -227,137 +227,6 @@ describe("Client Factory generation", () => {
227
227
  });
228
228
  });
229
229
 
230
- describe("should handle apiVersion correctly", () => {
231
- describe("apiVersion as query parameter", () => {
232
- it("should set the default value in options", async () => {
233
- const models = await emitClientFactoryFromCadl(`
234
- @server(
235
- "{Endpoint}/language",
236
- "Language Service",
237
- {
238
- Endpoint: Endpoint
239
- }
240
- )
241
- @service({
242
- title: "PetStoreClient",
243
- version: "2022-05-15-preview",
244
- })
245
- namespace PetStore;
246
- @doc("The endpoint to use.")
247
- scalar Endpoint extends string;
248
- `);
249
- assert.ok(models);
250
- assertEqualContent(
251
- models!.content,
252
- `
253
- import { getClient, ClientOptions } from "@azure-rest/core-client";
254
- import { testClient } from "./clientDefinitions";
255
-
256
- /**
257
- * Initialize a new instance of \`testClient\`
258
- * @param endpoint type: string, The endpoint to use.
259
- * @param options type: ClientOptions, the parameter for all optional parameters
260
- */
261
- export default function createClient(
262
- endpoint: string,
263
- options: ClientOptions = {}
264
- ): testClient {
265
- const baseUrl = options.baseUrl ?? \`\${endpoint}/language\`;
266
- options.apiVersion = options.apiVersion ?? "2022-05-15-preview";
267
-
268
- const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
269
- const userAgentPrefix =
270
- options.userAgentOptions && options.userAgentOptions.userAgentPrefix
271
- ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
272
- : \`\${userAgentInfo}\`;
273
- options = {
274
- ...options,
275
- userAgentOptions: {
276
- userAgentPrefix,
277
- },
278
- };
279
-
280
- const client = getClient(baseUrl, options) as testClient;
281
-
282
- return client;
283
- }
284
- `
285
- );
286
- });
287
- });
288
- describe("apiVersion as path parameter", () => {
289
- it("should set the default value in customized options", async () => {
290
- const models = await emitClientFactoryFromCadl(`
291
- @versioned(Versions)
292
- @server(
293
- "{Endpoint}/anomalydetector/{ApiVersion}",
294
- "Language Service",
295
- {
296
- Endpoint: Endpoint,
297
- @doc("Api Version")
298
- @path
299
- ApiVersion: APIVersion,
300
- }
301
- )
302
- @service({
303
- title: "PetStoreClient"
304
- })
305
- namespace PetStore;
306
- @doc("The endpoint to use.")
307
- scalar Endpoint extends string;
308
-
309
- enum Versions {
310
- v1_1: "v1.1",
311
- }
312
- @knownValues(Versions)
313
- scalar APIVersion extends string;
314
- `);
315
- assert.ok(models);
316
- assertEqualContent(
317
- models!.content,
318
- `
319
- import { getClient, ClientOptions } from "@azure-rest/core-client";
320
- import { testClient } from "./clientDefinitions";
321
-
322
- export interface testClientOptions extends ClientOptions {
323
- apiVersion?: string;
324
- }
325
-
326
- /**
327
- * Initialize a new instance of \`testClient\`
328
- * @param endpoint type: string, The endpoint to use.
329
- * @param options type: testClientOptions, the parameter for all optional parameters
330
- */
331
- export default function createClient(
332
- endpoint: string,
333
- options: testClientOptions = {}
334
- ): testClient {
335
- const apiVersion = options.apiVersion ?? "v1.1";
336
- const baseUrl = options.baseUrl ?? \`\${endpoint}/anomalydetector/\${apiVersion}\`;
337
-
338
- const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
339
- const userAgentPrefix =
340
- options.userAgentOptions && options.userAgentOptions.userAgentPrefix
341
- ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
342
- : \`\${userAgentInfo}\`;
343
- options = {
344
- ...options,
345
- userAgentOptions: {
346
- userAgentPrefix,
347
- },
348
- };
349
-
350
- const client = getClient(baseUrl, options) as testClient;
351
-
352
- return client;
353
- }
354
- `
355
- );
356
- });
357
- });
358
- describe("mixed apiVersion in path & query parameter", () => {});
359
- });
360
-
361
230
  describe("should handle no @server definition", () => {
362
231
  it("should set default endpoint parameter when no @server", async () => {
363
232
  const models = await emitClientFactoryFromCadl(`
@@ -737,10 +737,10 @@ describe("Input/output model type", () => {
737
737
  outputType
738
738
  });
739
739
  });
740
- it("should handle zonedDateTime -> string in output model & `Date | string` in input model", async () => {
740
+ it("should handle utcDateTime -> string in output model & `Date | string` in input model", async () => {
741
741
  const inputType = "Date | string";
742
742
  const outputType = "string";
743
- await verifyPropertyType("zonedDateTime", inputType, {
743
+ await verifyPropertyType("utcDateTime", inputType, {
744
744
  outputType
745
745
  });
746
746
  });
@@ -448,7 +448,7 @@ describe("Parameters.ts", () => {
448
448
 
449
449
  it("datetime array request generation", async () => {
450
450
  const parameters = await emitParameterFromCadl(`
451
- @post op read(@body body: zonedDateTime[]): void;
451
+ @post op read(@body body: utcDateTime[]): void;
452
452
  `);
453
453
  assert.ok(parameters);
454
454
  assertEqualContent(
@@ -375,7 +375,7 @@ describe("Responses.ts", () => {
375
375
 
376
376
  it("verify datetime array from responses", async () => {
377
377
  const responses = await emitResponsesFromCadl(`
378
- @get op read(): zonedDateTime[];
378
+ @get op read(): utcDateTime[];
379
379
  `);
380
380
  assert.ok(responses);
381
381
  assertEqualContent(