@autorest/typescript 6.0.0-beta.14 → 6.0.0-beta.17

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 (235) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +41 -5
  3. package/dist/src/autorestSession.d.ts +12 -4
  4. package/dist/src/autorestSession.d.ts.map +1 -1
  5. package/dist/src/autorestSession.js +3 -9
  6. package/dist/src/autorestSession.js.map +1 -1
  7. package/dist/src/conflictResolver.d.ts.map +1 -1
  8. package/dist/src/conflictResolver.js.map +1 -1
  9. package/dist/src/generators/clientFileGenerator.d.ts.map +1 -1
  10. package/dist/src/generators/clientFileGenerator.js +181 -31
  11. package/dist/src/generators/clientFileGenerator.js.map +1 -1
  12. package/dist/src/generators/indexGenerator.d.ts.map +1 -1
  13. package/dist/src/generators/indexGenerator.js +70 -9
  14. package/dist/src/generators/indexGenerator.js.map +1 -1
  15. package/dist/src/generators/modelsGenerator.d.ts.map +1 -1
  16. package/dist/src/generators/modelsGenerator.js +20 -2
  17. package/dist/src/generators/modelsGenerator.js.map +1 -1
  18. package/dist/src/generators/operationGenerator.d.ts.map +1 -1
  19. package/dist/src/generators/operationGenerator.js +10 -8
  20. package/dist/src/generators/operationGenerator.js.map +1 -1
  21. package/dist/src/generators/samples/sampleEnv.hbs +4 -0
  22. package/dist/src/generators/samples/sampleEnvGenerator.d.ts +3 -0
  23. package/dist/src/generators/samples/sampleEnvGenerator.d.ts.map +1 -0
  24. package/dist/src/generators/samples/sampleEnvGenerator.js +17 -0
  25. package/dist/src/generators/samples/sampleEnvGenerator.js.map +1 -0
  26. package/dist/src/generators/samples/sampleGenerator.d.ts +13 -0
  27. package/dist/src/generators/samples/sampleGenerator.d.ts.map +1 -0
  28. package/dist/src/generators/samples/sampleGenerator.js +43 -0
  29. package/dist/src/generators/samples/sampleGenerator.js.map +1 -0
  30. package/dist/src/generators/static/apiExtractorConfig.js +2 -2
  31. package/dist/src/generators/static/apiExtractorConfig.js.map +1 -1
  32. package/dist/src/generators/static/esLintConfigGenerator.d.ts +3 -0
  33. package/dist/src/generators/static/esLintConfigGenerator.d.ts.map +1 -0
  34. package/dist/src/generators/static/esLintConfigGenerator.js +26 -0
  35. package/dist/src/generators/static/esLintConfigGenerator.js.map +1 -0
  36. package/dist/src/generators/static/{README.md.hbs → hlcREADME.md.hbs} +23 -0
  37. package/dist/src/generators/static/karma.conf.js.hbs +141 -0
  38. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts +3 -0
  39. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts.map +1 -0
  40. package/dist/src/generators/static/karmaConfigFileGenerator.js +23 -0
  41. package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -0
  42. package/dist/src/generators/static/packageFileGenerator.d.ts.map +1 -1
  43. package/dist/src/generators/static/packageFileGenerator.js +174 -48
  44. package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
  45. package/dist/src/generators/static/readmeFileGenerator.d.ts +2 -2
  46. package/dist/src/generators/static/readmeFileGenerator.d.ts.map +1 -1
  47. package/dist/src/generators/static/readmeFileGenerator.js +35 -17
  48. package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
  49. package/dist/src/generators/static/rlcREADME.md.hbs +71 -0
  50. package/dist/src/generators/static/rollupConfigFileGenerator.d.ts.map +1 -1
  51. package/dist/src/generators/static/rollupConfigFileGenerator.js +12 -71
  52. package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
  53. package/dist/src/generators/static/samples.ts.hbs +49 -0
  54. package/dist/src/generators/static/tsConfigFileGenerator.d.ts.map +1 -1
  55. package/dist/src/generators/static/tsConfigFileGenerator.js +40 -18
  56. package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
  57. package/dist/src/generators/test/envBrowserFileGenerator.d.ts +3 -0
  58. package/dist/src/generators/test/envBrowserFileGenerator.d.ts.map +1 -0
  59. package/dist/src/generators/test/envBrowserFileGenerator.js +15 -0
  60. package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -0
  61. package/dist/src/generators/test/envFileGenerator.d.ts +3 -0
  62. package/dist/src/generators/test/envFileGenerator.d.ts.map +1 -0
  63. package/dist/src/generators/test/envFileGenerator.js +23 -0
  64. package/dist/src/generators/test/envFileGenerator.js.map +1 -0
  65. package/dist/src/generators/test/recordedClientFileGenerator.d.ts +3 -0
  66. package/dist/src/generators/test/recordedClientFileGenerator.d.ts.map +1 -0
  67. package/dist/src/generators/test/recordedClientFileGenerator.js +23 -0
  68. package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -0
  69. package/dist/src/generators/test/rlcEnv.ts.hbs +3 -0
  70. package/dist/src/generators/test/rlcRecordedClient.ts.hbs +35 -0
  71. package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +19 -0
  72. package/dist/src/generators/{static → test}/sampleTest.ts.hbs +0 -0
  73. package/dist/src/generators/test/sampleTestGenerator.d.ts.map +1 -1
  74. package/dist/src/generators/test/sampleTestGenerator.js +23 -7
  75. package/dist/src/generators/test/sampleTestGenerator.js.map +1 -1
  76. package/dist/src/generators/utils/pagingOperations.d.ts +5 -0
  77. package/dist/src/generators/utils/pagingOperations.d.ts.map +1 -1
  78. package/dist/src/generators/utils/pagingOperations.js +2 -1
  79. package/dist/src/generators/utils/pagingOperations.js.map +1 -1
  80. package/dist/src/main.d.ts +2 -2
  81. package/dist/src/main.d.ts.map +1 -1
  82. package/dist/src/main.js +3 -3
  83. package/dist/src/main.js.map +1 -1
  84. package/dist/src/models/clientDetails.d.ts +7 -0
  85. package/dist/src/models/clientDetails.d.ts.map +1 -1
  86. package/dist/src/models/modelDetails.d.ts +2 -2
  87. package/dist/src/models/modelDetails.d.ts.map +1 -1
  88. package/dist/src/models/operationDetails.d.ts +1 -0
  89. package/dist/src/models/operationDetails.d.ts.map +1 -1
  90. package/dist/src/models/sampleDetails.d.ts +22 -0
  91. package/dist/src/models/sampleDetails.d.ts.map +1 -0
  92. package/dist/src/models/sampleDetails.js +3 -0
  93. package/dist/src/models/sampleDetails.js.map +1 -0
  94. package/dist/src/restLevelClient/generateClient.d.ts +1 -1
  95. package/dist/src/restLevelClient/generateClient.d.ts.map +1 -1
  96. package/dist/src/restLevelClient/generateClient.js +81 -163
  97. package/dist/src/restLevelClient/generateClient.js.map +1 -1
  98. package/dist/src/restLevelClient/generateClientDefinition.d.ts +6 -0
  99. package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -0
  100. package/dist/src/restLevelClient/generateClientDefinition.js +231 -0
  101. package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -0
  102. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts +8 -0
  103. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts.map +1 -0
  104. package/dist/src/restLevelClient/generateMethodShortcuts.js +70 -0
  105. package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -0
  106. package/dist/src/restLevelClient/generateObjectTypes.d.ts.map +1 -1
  107. package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
  108. package/dist/src/restLevelClient/generatePagingHelper.d.ts.map +1 -1
  109. package/dist/src/restLevelClient/generatePagingHelper.js +2 -1
  110. package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -1
  111. package/dist/src/restLevelClient/generateParameterTypes.d.ts.map +1 -1
  112. package/dist/src/restLevelClient/generateParameterTypes.js +186 -36
  113. package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
  114. package/dist/src/restLevelClient/generatePollingHelper.d.ts.map +1 -1
  115. package/dist/src/restLevelClient/generatePollingHelper.js +3 -1
  116. package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -1
  117. package/dist/src/restLevelClient/generateResponseTypes.d.ts.map +1 -1
  118. package/dist/src/restLevelClient/generateResponseTypes.js +13 -7
  119. package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
  120. package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
  121. package/dist/src/restLevelClient/generateRestLevel.js +26 -4
  122. package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
  123. package/dist/src/restLevelClient/generateSchemaTypes.d.ts.map +1 -1
  124. package/dist/src/restLevelClient/generateSchemaTypes.js +5 -2
  125. package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
  126. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts +4 -0
  127. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts.map +1 -0
  128. package/dist/src/restLevelClient/generateTopLevelIndexFile.js +41 -0
  129. package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -0
  130. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts +10 -0
  131. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts.map +1 -0
  132. package/dist/src/restLevelClient/helpers/operationHelpers.js +64 -0
  133. package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -0
  134. package/dist/src/restLevelClient/interfaces.d.ts +24 -0
  135. package/dist/src/restLevelClient/interfaces.d.ts.map +1 -0
  136. package/dist/src/restLevelClient/interfaces.js +3 -0
  137. package/dist/src/restLevelClient/interfaces.js.map +1 -0
  138. package/dist/src/restLevelClient/operationHelpers.d.ts.map +1 -1
  139. package/dist/src/restLevelClient/operationHelpers.js +4 -1
  140. package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
  141. package/dist/src/restLevelClient/schemaHelpers.d.ts.map +1 -1
  142. package/dist/src/restLevelClient/schemaHelpers.js +4 -1
  143. package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
  144. package/dist/src/transforms/operationTransforms.d.ts.map +1 -1
  145. package/dist/src/transforms/operationTransforms.js +1 -0
  146. package/dist/src/transforms/operationTransforms.js.map +1 -1
  147. package/dist/src/transforms/samplesTransforms.d.ts +7 -0
  148. package/dist/src/transforms/samplesTransforms.d.ts.map +1 -0
  149. package/dist/src/transforms/samplesTransforms.js +283 -0
  150. package/dist/src/transforms/samplesTransforms.js.map +1 -0
  151. package/dist/src/transforms/transforms.d.ts +1 -2
  152. package/dist/src/transforms/transforms.d.ts.map +1 -1
  153. package/dist/src/transforms/transforms.js +4 -3
  154. package/dist/src/transforms/transforms.js.map +1 -1
  155. package/dist/src/typescriptGenerator.d.ts +2 -2
  156. package/dist/src/typescriptGenerator.d.ts.map +1 -1
  157. package/dist/src/typescriptGenerator.js +19 -8
  158. package/dist/src/typescriptGenerator.js.map +1 -1
  159. package/dist/src/utils/autorestOptions.d.ts +2 -2
  160. package/dist/src/utils/autorestOptions.d.ts.map +1 -1
  161. package/dist/src/utils/autorestOptions.js +107 -30
  162. package/dist/src/utils/autorestOptions.js.map +1 -1
  163. package/dist/src/utils/nameUtils.d.ts +6 -2
  164. package/dist/src/utils/nameUtils.d.ts.map +1 -1
  165. package/dist/src/utils/nameUtils.js +9 -5
  166. package/dist/src/utils/nameUtils.js.map +1 -1
  167. package/dist/src/utils/schemaHelpers.js +8 -3
  168. package/dist/src/utils/schemaHelpers.js.map +1 -1
  169. package/package.json +16 -10
  170. package/src/autorestSession.ts +20 -16
  171. package/src/conflictResolver.ts +0 -1
  172. package/src/generators/clientFileGenerator.ts +264 -33
  173. package/src/generators/indexGenerator.ts +78 -9
  174. package/src/generators/modelsGenerator.ts +21 -1
  175. package/src/generators/operationGenerator.ts +11 -9
  176. package/src/generators/samples/sampleEnv.hbs +4 -0
  177. package/src/generators/samples/sampleEnvGenerator.ts +14 -0
  178. package/src/generators/samples/sampleGenerator.ts +50 -0
  179. package/src/generators/static/apiExtractorConfig.ts +2 -2
  180. package/src/generators/static/esLintConfigGenerator.ts +24 -0
  181. package/src/generators/static/{README.md.hbs → hlcREADME.md.hbs} +23 -0
  182. package/src/generators/static/karma.conf.js.hbs +141 -0
  183. package/src/generators/static/karmaConfigFileGenerator.ts +20 -0
  184. package/src/generators/static/packageFileGenerator.ts +187 -48
  185. package/src/generators/static/readmeFileGenerator.ts +64 -35
  186. package/src/generators/static/rlcREADME.md.hbs +71 -0
  187. package/src/generators/static/rollupConfigFileGenerator.ts +13 -71
  188. package/src/generators/static/samples.ts.hbs +49 -0
  189. package/src/generators/static/tsConfigFileGenerator.ts +47 -20
  190. package/src/generators/test/envBrowserFileGenerator.ts +14 -0
  191. package/src/generators/test/envFileGenerator.ts +22 -0
  192. package/src/generators/test/recordedClientFileGenerator.ts +22 -0
  193. package/src/generators/test/rlcEnv.ts.hbs +3 -0
  194. package/src/generators/test/rlcRecordedClient.ts.hbs +35 -0
  195. package/src/generators/test/rlcSampleTest.spec.ts.hbs +19 -0
  196. package/src/generators/{static → test}/sampleTest.ts.hbs +0 -0
  197. package/src/generators/test/sampleTestGenerator.ts +23 -8
  198. package/src/generators/utils/pagingOperations.ts +1 -1
  199. package/src/main.ts +8 -5
  200. package/src/models/clientDetails.ts +8 -0
  201. package/src/models/modelDetails.ts +2 -2
  202. package/src/models/operationDetails.ts +1 -0
  203. package/src/models/sampleDetails.ts +22 -0
  204. package/src/restLevelClient/generateClient.ts +99 -250
  205. package/src/restLevelClient/generateClientDefinition.ts +343 -0
  206. package/src/restLevelClient/generateMethodShortcuts.ts +121 -0
  207. package/src/restLevelClient/generateObjectTypes.ts +1 -3
  208. package/src/restLevelClient/generatePagingHelper.ts +3 -2
  209. package/src/restLevelClient/generateParameterTypes.ts +295 -70
  210. package/src/restLevelClient/generatePollingHelper.ts +3 -3
  211. package/src/restLevelClient/generateResponseTypes.ts +13 -7
  212. package/src/restLevelClient/generateRestLevel.ts +32 -7
  213. package/src/restLevelClient/generateSchemaTypes.ts +5 -3
  214. package/src/restLevelClient/generateTopLevelIndexFile.ts +41 -0
  215. package/src/restLevelClient/helpers/operationHelpers.ts +93 -0
  216. package/src/restLevelClient/interfaces.ts +26 -0
  217. package/src/restLevelClient/operationHelpers.ts +8 -2
  218. package/src/restLevelClient/schemaHelpers.ts +4 -2
  219. package/src/transforms/operationTransforms.ts +1 -0
  220. package/src/transforms/samplesTransforms.ts +300 -0
  221. package/src/transforms/transforms.ts +6 -6
  222. package/src/typescriptGenerator.ts +20 -11
  223. package/src/utils/autorestOptions.ts +170 -59
  224. package/src/utils/nameUtils.ts +16 -8
  225. package/src/utils/schemaHelpers.ts +2 -2
  226. package/dist/src/generators/clientContextFileGenerator.d.ts +0 -5
  227. package/dist/src/generators/clientContextFileGenerator.d.ts.map +0 -1
  228. package/dist/src/generators/clientContextFileGenerator.js +0 -263
  229. package/dist/src/generators/clientContextFileGenerator.js.map +0 -1
  230. package/dist/src/restLevelClient/helpers/getOperationParameters.d.ts +0 -6
  231. package/dist/src/restLevelClient/helpers/getOperationParameters.d.ts.map +0 -1
  232. package/dist/src/restLevelClient/helpers/getOperationParameters.js +0 -29
  233. package/dist/src/restLevelClient/helpers/getOperationParameters.js.map +0 -1
  234. package/src/generators/clientContextFileGenerator.ts +0 -405
  235. package/src/restLevelClient/helpers/getOperationParameters.ts +0 -34
@@ -1,6 +1,6 @@
1
- import { Channel, Host } from "@autorest/extension-base";
1
+ import { Channel, AutorestExtensionHost } from "@autorest/extension-base";
2
2
  import { AutorestOptions, getHost, getSession } from "../autorestSession";
3
- import { TracingInfo } from "../models/clientDetails";
3
+ import { DependencyInfo, TracingInfo } from "../models/clientDetails";
4
4
  import { PackageDetails } from "../models/packageDetails";
5
5
  import { NameType, normalizeName } from "./nameUtils";
6
6
 
@@ -11,6 +11,7 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
11
11
  const host = getHost();
12
12
  const useCoreV2 = await getUseCoreV2(host);
13
13
  const restLevelClient = await getRestLevelClient(host);
14
+ const rlcShortcut = await getHasShortcutMethods(host);
14
15
  const azureArm = await getIsAzureArm(host);
15
16
  const addCredentials = await getAddCredentials(host);
16
17
  const credentialKeyHeaderName = await getKeyCredentialHeaderName(host);
@@ -31,7 +32,14 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
31
32
  const azureOutputDirectory = await getAzureOutputDirectoryPath(host);
32
33
  const headAsBoolean = await getHeadAsBoolean(host);
33
34
  const isTestPackage = await getIsTestPackage(host);
34
- const generateTest = await getGenerateTest(host)
35
+ const generateTest = await getGenerateTest(host);
36
+ const batch = await getBatch(host);
37
+ const multiClient = await getMultiClient(host);
38
+ const generateSample = await getGenerateSample(host);
39
+ const productDocLink = await getProductDocLink(host);
40
+ const coreHttpCompatMode = await getCoreHttpCompatMode(host);
41
+ const azureSdkForJs = await getAzureSdkForJs(host);
42
+ const dependencyInfo = await getDependencyInfo(host);
35
43
 
36
44
  return {
37
45
  azureArm,
@@ -39,6 +47,7 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
39
47
  credentialKeyHeaderName,
40
48
  credentialScopes,
41
49
  restLevelClient,
50
+ rlcShortcut,
42
51
  srcPath,
43
52
  outputPath,
44
53
  packageDetails,
@@ -56,77 +65,118 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
56
65
  headAsBoolean,
57
66
  isTestPackage,
58
67
  generateTest,
68
+ batch,
69
+ multiClient,
70
+ generateSample,
71
+ azureSdkForJs,
72
+ productDocLink,
73
+ coreHttpCompatMode,
74
+ dependencyInfo
59
75
  };
60
76
  }
61
77
 
62
- async function getHeadAsBoolean(host: Host): Promise<boolean> {
63
- const headAsBoolean = await host.GetValue("head-as-boolean");
78
+ async function getHasShortcutMethods(
79
+ host: AutorestExtensionHost
80
+ ): Promise<boolean> {
81
+ const headAsBoolean = await host.getValue("rlc-shortcut");
64
82
 
65
83
  return Boolean(headAsBoolean);
66
84
  }
67
85
 
68
- async function getIsTestPackage(host: Host): Promise<boolean> {
69
- const isTestPackage: boolean = await host.GetValue("is-test-package");
86
+ async function getHeadAsBoolean(host: AutorestExtensionHost): Promise<boolean> {
87
+ const headAsBoolean = await host.getValue("head-as-boolean");
88
+
89
+ return Boolean(headAsBoolean);
90
+ }
91
+
92
+ async function getIsTestPackage(host: AutorestExtensionHost): Promise<boolean> {
93
+ const isTestPackage = await host.getValue("is-test-package");
70
94
  return isTestPackage === null ? false : Boolean(isTestPackage);
71
95
  }
72
96
 
73
- async function getGenerateTest(host: Host): Promise<boolean> {
74
- const generateTest: boolean = await host.GetValue("generate-test");
97
+ async function getGenerateTest(host: AutorestExtensionHost): Promise<boolean> {
98
+ const generateTest = await host.getValue("generate-test");
75
99
  return generateTest === null ? false : Boolean(generateTest);
76
100
  }
77
101
 
78
- async function getSkipEnumValidation(host: Host): Promise<boolean> {
79
- const skipEnumValidation = await host.GetValue("skip-enum-validation");
102
+ async function getGenerateSample(
103
+ host: AutorestExtensionHost
104
+ ): Promise<boolean> {
105
+ const generateSample = await host.getValue("generate-sample");
106
+ return generateSample === null ? false : Boolean(generateSample);
107
+ }
108
+
109
+ async function getAzureSdkForJs(host: AutorestExtensionHost): Promise<boolean> {
110
+ const azureSdkForJs = await host.getValue("azure-sdk-for-js");
111
+ return azureSdkForJs === null ? true : Boolean(azureSdkForJs);
112
+ }
113
+
114
+ async function getSkipEnumValidation(
115
+ host: AutorestExtensionHost
116
+ ): Promise<boolean> {
117
+ const skipEnumValidation = await host.getValue("skip-enum-validation");
80
118
 
81
119
  return skipEnumValidation === true;
82
120
  }
83
121
 
84
- async function getAllowInsecureConnection(host: Host): Promise<boolean> {
85
- return (await host.GetValue("allow-insecure-connection")) || false;
122
+ async function getAllowInsecureConnection(
123
+ host: AutorestExtensionHost
124
+ ): Promise<boolean> {
125
+ return (await host.getValue("allow-insecure-connection")) || false;
86
126
  }
87
127
 
88
- async function getIgnoreNullableOnOptional(host: Host): Promise<boolean> {
128
+ async function getIgnoreNullableOnOptional(
129
+ host: AutorestExtensionHost
130
+ ): Promise<boolean> {
89
131
  const isAzureArm = await getIsAzureArm(host);
90
- return (await host.GetValue("ignore-nullable-on-optional"))
132
+ return (await host.getValue("ignore-nullable-on-optional"))
91
133
  ? true
92
134
  : isAzureArm;
93
135
  }
94
136
 
95
- async function getDisableAsyncOperators(host: Host): Promise<boolean> {
96
- return (await host.GetValue("disable-async-iterators")) === true;
137
+ async function getDisableAsyncOperators(
138
+ host: AutorestExtensionHost
139
+ ): Promise<boolean> {
140
+ return (await host.getValue("disable-async-iterators")) === true;
97
141
  }
98
142
 
99
- async function getHideClients(host: Host): Promise<boolean> {
100
- return (await host.GetValue("hide-clients")) || false;
143
+ async function getHideClients(host: AutorestExtensionHost): Promise<boolean> {
144
+ return (await host.getValue("hide-clients")) || false;
101
145
  }
102
- async function getGenerateMetadata(host: Host) {
103
- return (await host.GetValue("generate-metadata")) !== false;
146
+ async function getGenerateMetadata(host: AutorestExtensionHost) {
147
+ return (await host.getValue("generate-metadata")) !== false;
104
148
  }
105
149
 
106
- async function getLicenseHeader(host: Host): Promise<boolean> {
107
- return (await host.GetValue("license-header")) || false;
150
+ async function getLicenseHeader(host: AutorestExtensionHost): Promise<boolean> {
151
+ return (await host.getValue("license-header")) || false;
108
152
  }
109
153
 
110
- async function getTitle(host: Host): Promise<string | undefined> {
111
- return (await host.GetValue("title")) || undefined;
154
+ async function getTitle(
155
+ host: AutorestExtensionHost
156
+ ): Promise<string | undefined> {
157
+ return (await host.getValue("title")) || undefined;
112
158
  }
113
159
 
114
- async function getSrcPath(host: Host): Promise<string> {
115
- return ((await host.GetValue("source-code-folder-path")) as string) || "src";
160
+ async function getSrcPath(host: AutorestExtensionHost): Promise<string> {
161
+ return ((await host.getValue("source-code-folder-path")) as string) || "src";
116
162
  }
117
163
 
118
- async function getOutputPath(host: Host): Promise<string | undefined> {
119
- return (await host.GetValue("output-folder")) || undefined;
164
+ async function getOutputPath(
165
+ host: AutorestExtensionHost
166
+ ): Promise<string | undefined> {
167
+ return (await host.getValue("output-folder")) || undefined;
120
168
  }
121
169
 
122
170
  async function getKeyCredentialHeaderName(
123
- host: Host
171
+ host: AutorestExtensionHost
124
172
  ): Promise<string | undefined> {
125
- return (await host.GetValue("credential-key-header-name")) || undefined;
173
+ return (await host.getValue("credential-key-header-name")) || undefined;
126
174
  }
127
175
 
128
- async function getAddCredentials(host: Host): Promise<boolean> {
129
- const addCredentials = await host.GetValue("add-credentials");
176
+ async function getAddCredentials(
177
+ host: AutorestExtensionHost
178
+ ): Promise<boolean> {
179
+ const addCredentials = await host.getValue("add-credentials");
130
180
 
131
181
  // Only set addCredentials to false if explicitly set to false
132
182
  // otherwise default to true
@@ -136,34 +186,38 @@ async function getAddCredentials(host: Host): Promise<boolean> {
136
186
  return true;
137
187
  }
138
188
  }
139
- async function getIsAzureArm(host: Host): Promise<boolean> {
140
- const flag = (await host.GetValue("azure-arm")) === true;
141
- const openapi = (await host.GetValue("openapi-type")) === "arm";
189
+ async function getIsAzureArm(host: AutorestExtensionHost): Promise<boolean> {
190
+ const flag = (await host.getValue("azure-arm")) === true;
191
+ const openapi = (await host.getValue("openapi-type")) === "arm";
142
192
 
143
193
  return flag || openapi;
144
194
  }
145
195
 
146
- async function getRestLevelClient(host: Host): Promise<boolean> {
147
- return (await host.GetValue("rest-level-client")) === true;
196
+ async function getRestLevelClient(
197
+ host: AutorestExtensionHost
198
+ ): Promise<boolean> {
199
+ return (await host.getValue("rest-level-client")) === true;
148
200
  }
149
201
 
150
- async function getUseCoreV2(host: Host): Promise<boolean> {
151
- const useCoreV2Option: boolean = await host.GetValue("use-core-v2");
202
+ async function getUseCoreV2(host: AutorestExtensionHost): Promise<boolean> {
203
+ const useCoreV2Option = await host.getValue("use-core-v2");
152
204
  return useCoreV2Option === null ? true : Boolean(useCoreV2Option);
153
205
  }
154
206
 
155
- async function getTracingInfo(host: Host): Promise<TracingInfo | undefined> {
207
+ async function getTracingInfo(
208
+ host: AutorestExtensionHost
209
+ ): Promise<TracingInfo | undefined> {
156
210
  const tracing: TracingInfo | undefined =
157
- (await host.GetValue("tracing-info")) || undefined;
211
+ (await host.getValue("tracing-info")) || undefined;
158
212
 
159
213
  if (tracing && tracing.namespace && tracing.packagePrefix) {
160
214
  return tracing;
161
215
  }
162
216
 
163
- const namespace =
164
- (await host.GetValue("tracing-info.namespace")) || undefined;
165
- const packagePrefix =
166
- (await host.GetValue("tracing-info.packagePrefix")) || undefined;
217
+ const namespace: string | undefined =
218
+ (await host.getValue<string>("tracing-info.namespace")) || undefined;
219
+ const packagePrefix: string | undefined =
220
+ (await host.getValue("tracing-info.packagePrefix")) || undefined;
167
221
 
168
222
  if (packagePrefix && namespace) {
169
223
  return {
@@ -181,13 +235,17 @@ async function getTracingInfo(host: Host): Promise<TracingInfo | undefined> {
181
235
  );
182
236
  }
183
237
 
184
- async function getPackageDetails(host: Host): Promise<PackageDetails> {
238
+ async function getPackageDetails(
239
+ host: AutorestExtensionHost
240
+ ): Promise<PackageDetails> {
185
241
  const { model } = getSession();
186
242
  const name = normalizeName(model.language.default.name, NameType.File);
187
243
  // TODO: Look for an existing package.json and
188
- const packageName = (await host.GetValue("package-name")) || name;
189
- const packageNameParts = packageName.match(/(^@(.*)\/)?(.*)/);
190
- const version = (await host.GetValue("package-version")) || "1.0.0-beta.1";
244
+ const packageName: string = (await host.getValue("package-name")) || name;
245
+ const packageNameParts: RegExpMatchArray =
246
+ packageName.match(/(^@(.*)\/)?(.*)/) ?? [];
247
+ const version: string =
248
+ (await host.getValue("package-version")) || "1.0.0-beta.1";
191
249
 
192
250
  return {
193
251
  name: packageName,
@@ -199,11 +257,11 @@ async function getPackageDetails(host: Host): Promise<PackageDetails> {
199
257
  }
200
258
 
201
259
  export async function getCredentialScopes(
202
- host: Host
260
+ host: AutorestExtensionHost
203
261
  ): Promise<string[] | undefined> {
204
- const addCredentials = await host.GetValue("add-credentials");
205
- const credentialScopes = await host.GetValue("credential-scopes");
206
- const azureArm = await host.GetValue("azure-arm");
262
+ const addCredentials = await host.getValue("add-credentials");
263
+ const credentialScopes = await host.getValue("credential-scopes");
264
+ const azureArm = await host.getValue("azure-arm");
207
265
 
208
266
  if (credentialScopes && !addCredentials) {
209
267
  throw new Error(
@@ -215,7 +273,7 @@ export async function getCredentialScopes(
215
273
  if (azureArm) {
216
274
  return ["https://management.azure.com/.default"];
217
275
  } else if (addCredentials) {
218
- host.Message({
276
+ host.message({
219
277
  Channel: Channel.Warning,
220
278
  Text: `You have default credential policy BearerTokenCredentialPolicy
221
279
  but not the --credential-scopes flag set while generating non-management plane code.
@@ -233,11 +291,9 @@ export async function getCredentialScopes(
233
291
  }
234
292
 
235
293
  async function getAzureOutputDirectoryPath(
236
- host: Host
294
+ host: AutorestExtensionHost
237
295
  ): Promise<string | undefined> {
238
- const outputDirectoryPath: string | null = await host.GetValue(
239
- "outputFolderUri"
240
- );
296
+ const outputDirectoryPath = await host.getValue<string>("outputFolderUri");
241
297
  const outputDirectoryRelativePath: string | undefined = outputDirectoryPath
242
298
  ?.replace(/\/$/, "")
243
299
  .split("/")
@@ -247,3 +303,58 @@ async function getAzureOutputDirectoryPath(
247
303
  ? outputDirectoryRelativePath
248
304
  : undefined;
249
305
  }
306
+
307
+ async function getBatch(
308
+ host: AutorestExtensionHost
309
+ ): Promise<[string, any][] | undefined> {
310
+ const batch = await host.getValue<[string, any][]>("batch");
311
+ return batch;
312
+ }
313
+
314
+ async function getProductDocLink(
315
+ host: AutorestExtensionHost
316
+ ): Promise<string | undefined> {
317
+ return (await host.getValue("product-doc-link")) || undefined;
318
+ }
319
+
320
+ async function getMultiClient(host: AutorestExtensionHost): Promise<boolean> {
321
+ const multiClient = (await host.getValue("multi-client")) || undefined;
322
+ return !!multiClient;
323
+ }
324
+
325
+ async function getCoreHttpCompatMode(
326
+ host: AutorestExtensionHost
327
+ ): Promise<boolean> {
328
+ return (await host.getValue("core-http-compat-mode")) || false;
329
+ }
330
+
331
+ async function getDependencyInfo(
332
+ host: AutorestExtensionHost
333
+ ): Promise<DependencyInfo | undefined> {
334
+ const dependency: DependencyInfo | undefined =
335
+ (await host.getValue("dependency-info")) || undefined;
336
+
337
+ if (dependency && dependency.description && dependency.link) {
338
+ return dependency;
339
+ }
340
+
341
+ const link: string | undefined =
342
+ (await host.getValue<string>("dependency-info.link")) || undefined;
343
+ const description: string | undefined =
344
+ (await host.getValue("dependency-info.description")) || undefined;
345
+
346
+ if (description && link) {
347
+ return {
348
+ link,
349
+ description
350
+ };
351
+ }
352
+
353
+ if (!dependency && !description && !link) {
354
+ return undefined;
355
+ }
356
+
357
+ throw new Error(
358
+ "Invalid dependency-info. Make sure that link and description are defined"
359
+ );
360
+ }
@@ -4,7 +4,7 @@ import { Operation, OperationGroup } from "@autorest/codemodel";
4
4
  import { getLanguageMetadata } from "./languageHelpers";
5
5
  import { TypeDetails, PropertyKind } from "../models/modelDetails";
6
6
 
7
- interface ReservedName {
7
+ export interface ReservedName {
8
8
  name: string;
9
9
  reservedFor: NameType[];
10
10
  }
@@ -93,11 +93,15 @@ export enum CasingConvention {
93
93
  Camel
94
94
  }
95
95
 
96
- export function guardReservedNames(name: string, nameType: NameType): string {
96
+ export function guardReservedNames(
97
+ name: string,
98
+ nameType: NameType,
99
+ customReservedNames: ReservedName[] = []
100
+ ): string {
97
101
  const suffix = getSuffix(nameType);
98
- return ReservedModelNames.filter(r => r.reservedFor.includes(nameType)).find(
99
- r => r.name === name.toLowerCase()
100
- )
102
+ return [...ReservedModelNames, ...customReservedNames]
103
+ .filter(r => r.reservedFor.includes(nameType))
104
+ .find(r => r.name === name.toLowerCase())
101
105
  ? `${name}${suffix}`
102
106
  : name;
103
107
  }
@@ -136,12 +140,14 @@ export function normalizeTypeName({ kind, typeName }: TypeDetails) {
136
140
  export function normalizeName(
137
141
  name: string,
138
142
  nameType: NameType,
139
- shouldGuard?: boolean
143
+ shouldGuard?: boolean,
144
+ customReservedNames: ReservedName[] = [],
145
+ casingOverride?: CasingConvention
140
146
  ): string {
141
147
  if (name.startsWith("$DO_NOT_NORMALIZE$")) {
142
148
  return name.replace("$DO_NOT_NORMALIZE$", "");
143
149
  }
144
- const casingConvention = getCasingConvention(nameType);
150
+ const casingConvention = casingOverride ?? getCasingConvention(nameType);
145
151
  const sanitizedName = sanitizeName(name);
146
152
  const parts = getNameParts(sanitizedName);
147
153
  const [firstPart, ...otherParts] = parts;
@@ -153,7 +159,9 @@ export function normalizeName(
153
159
  .join("");
154
160
 
155
161
  const normalized = checkBeginning(`${normalizedFirstPart}${normalizedParts}`);
156
- return shouldGuard ? guardReservedNames(normalized, nameType) : normalized;
162
+ return shouldGuard
163
+ ? guardReservedNames(normalized, nameType, customReservedNames)
164
+ : normalized;
157
165
  }
158
166
 
159
167
  function checkBeginning(name: string): string {
@@ -68,7 +68,7 @@ export function getTypeForSchema(
68
68
  ): TypeDetails {
69
69
  let typeName: string = "";
70
70
  let usedModels: string[] = [];
71
- let defaultValue: string = "";
71
+ let defaultValue = undefined;
72
72
  let kind: PropertyKind = PropertyKind.Primitive;
73
73
  switch (schema.type) {
74
74
  case SchemaType.Any:
@@ -194,7 +194,7 @@ export function getTypeForSchema(
194
194
  usedModels,
195
195
  isConstant: schema.type === SchemaType.Constant,
196
196
  nullable: isNullable,
197
- ...(defaultValue && { defaultValue })
197
+ defaultValue
198
198
  };
199
199
  }
200
200
 
@@ -1,5 +0,0 @@
1
- import { Project } from "ts-morph";
2
- import { ClientDetails } from "../models/clientDetails";
3
- import { PackageDetails } from "../models/packageDetails";
4
- export declare function generateClientContext(clientDetails: ClientDetails, packageDetails: PackageDetails, project: Project): void;
5
- //# sourceMappingURL=clientContextFileGenerator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clientContextFileGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/clientContextFileGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,OAAO,EAMR,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO1D,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,QAmEjB"}