@autorest/typescript 6.0.0-beta.15 → 6.0.0-beta.16

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 (219) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +37 -3
  3. package/dist/src/autorestSession.d.ts +8 -3
  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.js +6 -6
  19. package/dist/src/generators/operationGenerator.js.map +1 -1
  20. package/dist/src/generators/samples/sampleEnv.hbs +4 -0
  21. package/dist/src/generators/samples/sampleEnvGenerator.d.ts +3 -0
  22. package/dist/src/generators/samples/sampleEnvGenerator.d.ts.map +1 -0
  23. package/dist/src/generators/samples/sampleEnvGenerator.js +17 -0
  24. package/dist/src/generators/samples/sampleEnvGenerator.js.map +1 -0
  25. package/dist/src/generators/samples/sampleGenerator.d.ts +13 -0
  26. package/dist/src/generators/samples/sampleGenerator.d.ts.map +1 -0
  27. package/dist/src/generators/samples/sampleGenerator.js +43 -0
  28. package/dist/src/generators/samples/sampleGenerator.js.map +1 -0
  29. package/dist/src/generators/static/README.md.hbs +19 -0
  30. package/dist/src/generators/static/karma.conf.js.hbs +141 -0
  31. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts +3 -0
  32. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts.map +1 -0
  33. package/dist/src/generators/static/karmaConfigFileGenerator.js +23 -0
  34. package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -0
  35. package/dist/src/generators/static/packageFileGenerator.d.ts.map +1 -1
  36. package/dist/src/generators/static/packageFileGenerator.js +90 -14
  37. package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
  38. package/dist/src/generators/static/rollupConfigFileGenerator.d.ts.map +1 -1
  39. package/dist/src/generators/static/rollupConfigFileGenerator.js +7 -70
  40. package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
  41. package/dist/src/generators/static/samples.ts.hbs +49 -0
  42. package/dist/src/generators/static/tsConfigFileGenerator.d.ts.map +1 -1
  43. package/dist/src/generators/static/tsConfigFileGenerator.js +9 -10
  44. package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
  45. package/dist/src/generators/test/envBrowserFileGenerator.d.ts +3 -0
  46. package/dist/src/generators/test/envBrowserFileGenerator.d.ts.map +1 -0
  47. package/dist/src/generators/test/envBrowserFileGenerator.js +15 -0
  48. package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -0
  49. package/dist/src/generators/test/envFileGenerator.d.ts +3 -0
  50. package/dist/src/generators/test/envFileGenerator.d.ts.map +1 -0
  51. package/dist/src/generators/test/envFileGenerator.js +23 -0
  52. package/dist/src/generators/test/envFileGenerator.js.map +1 -0
  53. package/dist/src/generators/test/recordedClientFileGenerator.d.ts +3 -0
  54. package/dist/src/generators/test/recordedClientFileGenerator.d.ts.map +1 -0
  55. package/dist/src/generators/test/recordedClientFileGenerator.js +23 -0
  56. package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -0
  57. package/dist/src/generators/test/rlcEnv.ts.hbs +3 -0
  58. package/dist/src/generators/test/rlcRecordedClient.ts.hbs +35 -0
  59. package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +19 -0
  60. package/dist/src/generators/{static → test}/sampleTest.ts.hbs +0 -0
  61. package/dist/src/generators/test/sampleTestGenerator.d.ts.map +1 -1
  62. package/dist/src/generators/test/sampleTestGenerator.js +23 -7
  63. package/dist/src/generators/test/sampleTestGenerator.js.map +1 -1
  64. package/dist/src/generators/utils/pagingOperations.d.ts +5 -0
  65. package/dist/src/generators/utils/pagingOperations.d.ts.map +1 -1
  66. package/dist/src/generators/utils/pagingOperations.js +2 -1
  67. package/dist/src/generators/utils/pagingOperations.js.map +1 -1
  68. package/dist/src/main.d.ts +2 -2
  69. package/dist/src/main.d.ts.map +1 -1
  70. package/dist/src/main.js +3 -3
  71. package/dist/src/main.js.map +1 -1
  72. package/dist/src/models/clientDetails.d.ts +3 -0
  73. package/dist/src/models/clientDetails.d.ts.map +1 -1
  74. package/dist/src/models/modelDetails.d.ts +2 -2
  75. package/dist/src/models/modelDetails.d.ts.map +1 -1
  76. package/dist/src/models/operationDetails.d.ts +1 -0
  77. package/dist/src/models/operationDetails.d.ts.map +1 -1
  78. package/dist/src/models/sampleDetails.d.ts +22 -0
  79. package/dist/src/models/sampleDetails.d.ts.map +1 -0
  80. package/dist/src/models/sampleDetails.js +3 -0
  81. package/dist/src/models/sampleDetails.js.map +1 -0
  82. package/dist/src/restLevelClient/generateClient.d.ts +1 -1
  83. package/dist/src/restLevelClient/generateClient.d.ts.map +1 -1
  84. package/dist/src/restLevelClient/generateClient.js +48 -164
  85. package/dist/src/restLevelClient/generateClient.js.map +1 -1
  86. package/dist/src/restLevelClient/generateClientDefinition.d.ts +6 -0
  87. package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -0
  88. package/dist/src/restLevelClient/generateClientDefinition.js +231 -0
  89. package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -0
  90. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts +8 -0
  91. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts.map +1 -0
  92. package/dist/src/restLevelClient/generateMethodShortcuts.js +70 -0
  93. package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -0
  94. package/dist/src/restLevelClient/generateObjectTypes.d.ts.map +1 -1
  95. package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
  96. package/dist/src/restLevelClient/generatePagingHelper.d.ts.map +1 -1
  97. package/dist/src/restLevelClient/generatePagingHelper.js +2 -1
  98. package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -1
  99. package/dist/src/restLevelClient/generateParameterTypes.d.ts.map +1 -1
  100. package/dist/src/restLevelClient/generateParameterTypes.js +104 -18
  101. package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
  102. package/dist/src/restLevelClient/generatePollingHelper.d.ts.map +1 -1
  103. package/dist/src/restLevelClient/generatePollingHelper.js +3 -1
  104. package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -1
  105. package/dist/src/restLevelClient/generateResponseTypes.d.ts.map +1 -1
  106. package/dist/src/restLevelClient/generateResponseTypes.js +4 -1
  107. package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
  108. package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
  109. package/dist/src/restLevelClient/generateRestLevel.js +19 -3
  110. package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
  111. package/dist/src/restLevelClient/generateSchemaTypes.d.ts.map +1 -1
  112. package/dist/src/restLevelClient/generateSchemaTypes.js +5 -2
  113. package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
  114. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts +4 -0
  115. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts.map +1 -0
  116. package/dist/src/restLevelClient/generateTopLevelIndexFile.js +41 -0
  117. package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -0
  118. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts +10 -0
  119. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts.map +1 -0
  120. package/dist/src/restLevelClient/helpers/operationHelpers.js +64 -0
  121. package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -0
  122. package/dist/src/restLevelClient/interfaces.d.ts +24 -0
  123. package/dist/src/restLevelClient/interfaces.d.ts.map +1 -0
  124. package/dist/src/restLevelClient/interfaces.js +3 -0
  125. package/dist/src/restLevelClient/interfaces.js.map +1 -0
  126. package/dist/src/restLevelClient/operationHelpers.d.ts.map +1 -1
  127. package/dist/src/restLevelClient/operationHelpers.js +4 -1
  128. package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
  129. package/dist/src/restLevelClient/schemaHelpers.d.ts.map +1 -1
  130. package/dist/src/restLevelClient/schemaHelpers.js +4 -1
  131. package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
  132. package/dist/src/transforms/operationTransforms.d.ts.map +1 -1
  133. package/dist/src/transforms/operationTransforms.js +1 -0
  134. package/dist/src/transforms/operationTransforms.js.map +1 -1
  135. package/dist/src/transforms/samplesTransforms.d.ts +7 -0
  136. package/dist/src/transforms/samplesTransforms.d.ts.map +1 -0
  137. package/dist/src/transforms/samplesTransforms.js +283 -0
  138. package/dist/src/transforms/samplesTransforms.js.map +1 -0
  139. package/dist/src/transforms/transforms.d.ts +1 -2
  140. package/dist/src/transforms/transforms.d.ts.map +1 -1
  141. package/dist/src/transforms/transforms.js +4 -3
  142. package/dist/src/transforms/transforms.js.map +1 -1
  143. package/dist/src/typescriptGenerator.d.ts +2 -2
  144. package/dist/src/typescriptGenerator.d.ts.map +1 -1
  145. package/dist/src/typescriptGenerator.js +18 -7
  146. package/dist/src/typescriptGenerator.js.map +1 -1
  147. package/dist/src/utils/autorestOptions.d.ts +2 -2
  148. package/dist/src/utils/autorestOptions.d.ts.map +1 -1
  149. package/dist/src/utils/autorestOptions.js +70 -30
  150. package/dist/src/utils/autorestOptions.js.map +1 -1
  151. package/dist/src/utils/nameUtils.d.ts +6 -2
  152. package/dist/src/utils/nameUtils.d.ts.map +1 -1
  153. package/dist/src/utils/nameUtils.js +9 -5
  154. package/dist/src/utils/nameUtils.js.map +1 -1
  155. package/dist/src/utils/schemaHelpers.js +8 -3
  156. package/dist/src/utils/schemaHelpers.js.map +1 -1
  157. package/package.json +11 -5
  158. package/src/autorestSession.ts +16 -15
  159. package/src/conflictResolver.ts +0 -1
  160. package/src/generators/clientFileGenerator.ts +262 -33
  161. package/src/generators/indexGenerator.ts +78 -9
  162. package/src/generators/modelsGenerator.ts +21 -1
  163. package/src/generators/operationGenerator.ts +7 -7
  164. package/src/generators/samples/sampleEnv.hbs +4 -0
  165. package/src/generators/samples/sampleEnvGenerator.ts +14 -0
  166. package/src/generators/samples/sampleGenerator.ts +50 -0
  167. package/src/generators/static/README.md.hbs +19 -0
  168. package/src/generators/static/karma.conf.js.hbs +141 -0
  169. package/src/generators/static/karmaConfigFileGenerator.ts +20 -0
  170. package/src/generators/static/packageFileGenerator.ts +99 -14
  171. package/src/generators/static/rollupConfigFileGenerator.ts +7 -70
  172. package/src/generators/static/samples.ts.hbs +49 -0
  173. package/src/generators/static/tsConfigFileGenerator.ts +12 -12
  174. package/src/generators/test/envBrowserFileGenerator.ts +14 -0
  175. package/src/generators/test/envFileGenerator.ts +22 -0
  176. package/src/generators/test/recordedClientFileGenerator.ts +22 -0
  177. package/src/generators/test/rlcEnv.ts.hbs +3 -0
  178. package/src/generators/test/rlcRecordedClient.ts.hbs +35 -0
  179. package/src/generators/test/rlcSampleTest.spec.ts.hbs +19 -0
  180. package/src/generators/{static → test}/sampleTest.ts.hbs +0 -0
  181. package/src/generators/test/sampleTestGenerator.ts +23 -8
  182. package/src/generators/utils/pagingOperations.ts +1 -1
  183. package/src/main.ts +9 -5
  184. package/src/models/clientDetails.ts +3 -0
  185. package/src/models/modelDetails.ts +2 -2
  186. package/src/models/operationDetails.ts +1 -0
  187. package/src/models/sampleDetails.ts +22 -0
  188. package/src/restLevelClient/generateClient.ts +57 -253
  189. package/src/restLevelClient/generateClientDefinition.ts +343 -0
  190. package/src/restLevelClient/generateMethodShortcuts.ts +121 -0
  191. package/src/restLevelClient/generateObjectTypes.ts +1 -3
  192. package/src/restLevelClient/generatePagingHelper.ts +3 -2
  193. package/src/restLevelClient/generateParameterTypes.ts +155 -25
  194. package/src/restLevelClient/generatePollingHelper.ts +3 -3
  195. package/src/restLevelClient/generateResponseTypes.ts +4 -1
  196. package/src/restLevelClient/generateRestLevel.ts +24 -6
  197. package/src/restLevelClient/generateSchemaTypes.ts +5 -3
  198. package/src/restLevelClient/generateTopLevelIndexFile.ts +41 -0
  199. package/src/restLevelClient/helpers/operationHelpers.ts +93 -0
  200. package/src/restLevelClient/interfaces.ts +26 -0
  201. package/src/restLevelClient/operationHelpers.ts +8 -2
  202. package/src/restLevelClient/schemaHelpers.ts +4 -2
  203. package/src/transforms/operationTransforms.ts +1 -0
  204. package/src/transforms/samplesTransforms.ts +300 -0
  205. package/src/transforms/transforms.ts +6 -6
  206. package/src/typescriptGenerator.ts +19 -10
  207. package/src/utils/autorestOptions.ts +121 -58
  208. package/src/utils/nameUtils.ts +16 -8
  209. package/src/utils/schemaHelpers.ts +2 -2
  210. package/dist/src/generators/clientContextFileGenerator.d.ts +0 -5
  211. package/dist/src/generators/clientContextFileGenerator.d.ts.map +0 -1
  212. package/dist/src/generators/clientContextFileGenerator.js +0 -263
  213. package/dist/src/generators/clientContextFileGenerator.js.map +0 -1
  214. package/dist/src/restLevelClient/helpers/getOperationParameters.d.ts +0 -6
  215. package/dist/src/restLevelClient/helpers/getOperationParameters.d.ts.map +0 -1
  216. package/dist/src/restLevelClient/helpers/getOperationParameters.js +0 -29
  217. package/dist/src/restLevelClient/helpers/getOperationParameters.js.map +0 -1
  218. package/src/generators/clientContextFileGenerator.ts +0 -405
  219. package/src/restLevelClient/helpers/getOperationParameters.ts +0 -37
@@ -1,4 +1,4 @@
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
3
  import { TracingInfo } from "../models/clientDetails";
4
4
  import { PackageDetails } from "../models/packageDetails";
@@ -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,11 @@ 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 coreHttpCompatMode = await getCoreHttpCompatMode(host);
35
40
 
36
41
  return {
37
42
  azureArm,
@@ -39,6 +44,7 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
39
44
  credentialKeyHeaderName,
40
45
  credentialScopes,
41
46
  restLevelClient,
47
+ rlcShortcut,
42
48
  srcPath,
43
49
  outputPath,
44
50
  packageDetails,
@@ -56,77 +62,110 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
56
62
  headAsBoolean,
57
63
  isTestPackage,
58
64
  generateTest,
65
+ batch,
66
+ multiClient,
67
+ generateSample,
68
+ coreHttpCompatMode
59
69
  };
60
70
  }
61
71
 
62
- async function getHeadAsBoolean(host: Host): Promise<boolean> {
63
- const headAsBoolean = await host.GetValue("head-as-boolean");
72
+ async function getHasShortcutMethods(
73
+ host: AutorestExtensionHost
74
+ ): Promise<boolean> {
75
+ const headAsBoolean = await host.getValue("rlc-shortcut");
64
76
 
65
77
  return Boolean(headAsBoolean);
66
78
  }
67
79
 
68
- async function getIsTestPackage(host: Host): Promise<boolean> {
69
- const isTestPackage: boolean = await host.GetValue("is-test-package");
80
+ async function getHeadAsBoolean(host: AutorestExtensionHost): Promise<boolean> {
81
+ const headAsBoolean = await host.getValue("head-as-boolean");
82
+
83
+ return Boolean(headAsBoolean);
84
+ }
85
+
86
+ async function getIsTestPackage(host: AutorestExtensionHost): Promise<boolean> {
87
+ const isTestPackage = await host.getValue("is-test-package");
70
88
  return isTestPackage === null ? false : Boolean(isTestPackage);
71
89
  }
72
90
 
73
- async function getGenerateTest(host: Host): Promise<boolean> {
74
- const generateTest: boolean = await host.GetValue("generate-test");
91
+ async function getGenerateTest(host: AutorestExtensionHost): Promise<boolean> {
92
+ const generateTest = await host.getValue("generate-test");
75
93
  return generateTest === null ? false : Boolean(generateTest);
76
94
  }
77
95
 
78
- async function getSkipEnumValidation(host: Host): Promise<boolean> {
79
- const skipEnumValidation = await host.GetValue("skip-enum-validation");
96
+ async function getGenerateSample(
97
+ host: AutorestExtensionHost
98
+ ): Promise<boolean> {
99
+ const generateSample = await host.getValue("generate-sample");
100
+ return generateSample === null ? false : Boolean(generateSample);
101
+ }
102
+
103
+ async function getSkipEnumValidation(
104
+ host: AutorestExtensionHost
105
+ ): Promise<boolean> {
106
+ const skipEnumValidation = await host.getValue("skip-enum-validation");
80
107
 
81
108
  return skipEnumValidation === true;
82
109
  }
83
110
 
84
- async function getAllowInsecureConnection(host: Host): Promise<boolean> {
85
- return (await host.GetValue("allow-insecure-connection")) || false;
111
+ async function getAllowInsecureConnection(
112
+ host: AutorestExtensionHost
113
+ ): Promise<boolean> {
114
+ return (await host.getValue("allow-insecure-connection")) || false;
86
115
  }
87
116
 
88
- async function getIgnoreNullableOnOptional(host: Host): Promise<boolean> {
117
+ async function getIgnoreNullableOnOptional(
118
+ host: AutorestExtensionHost
119
+ ): Promise<boolean> {
89
120
  const isAzureArm = await getIsAzureArm(host);
90
- return (await host.GetValue("ignore-nullable-on-optional"))
121
+ return (await host.getValue("ignore-nullable-on-optional"))
91
122
  ? true
92
123
  : isAzureArm;
93
124
  }
94
125
 
95
- async function getDisableAsyncOperators(host: Host): Promise<boolean> {
96
- return (await host.GetValue("disable-async-iterators")) === true;
126
+ async function getDisableAsyncOperators(
127
+ host: AutorestExtensionHost
128
+ ): Promise<boolean> {
129
+ return (await host.getValue("disable-async-iterators")) === true;
97
130
  }
98
131
 
99
- async function getHideClients(host: Host): Promise<boolean> {
100
- return (await host.GetValue("hide-clients")) || false;
132
+ async function getHideClients(host: AutorestExtensionHost): Promise<boolean> {
133
+ return (await host.getValue("hide-clients")) || false;
101
134
  }
102
- async function getGenerateMetadata(host: Host) {
103
- return (await host.GetValue("generate-metadata")) !== false;
135
+ async function getGenerateMetadata(host: AutorestExtensionHost) {
136
+ return (await host.getValue("generate-metadata")) !== false;
104
137
  }
105
138
 
106
- async function getLicenseHeader(host: Host): Promise<boolean> {
107
- return (await host.GetValue("license-header")) || false;
139
+ async function getLicenseHeader(host: AutorestExtensionHost): Promise<boolean> {
140
+ return (await host.getValue("license-header")) || false;
108
141
  }
109
142
 
110
- async function getTitle(host: Host): Promise<string | undefined> {
111
- return (await host.GetValue("title")) || undefined;
143
+ async function getTitle(
144
+ host: AutorestExtensionHost
145
+ ): Promise<string | undefined> {
146
+ return (await host.getValue("title")) || undefined;
112
147
  }
113
148
 
114
- async function getSrcPath(host: Host): Promise<string> {
115
- return ((await host.GetValue("source-code-folder-path")) as string) || "src";
149
+ async function getSrcPath(host: AutorestExtensionHost): Promise<string> {
150
+ return ((await host.getValue("source-code-folder-path")) as string) || "src";
116
151
  }
117
152
 
118
- async function getOutputPath(host: Host): Promise<string | undefined> {
119
- return (await host.GetValue("output-folder")) || undefined;
153
+ async function getOutputPath(
154
+ host: AutorestExtensionHost
155
+ ): Promise<string | undefined> {
156
+ return (await host.getValue("output-folder")) || undefined;
120
157
  }
121
158
 
122
159
  async function getKeyCredentialHeaderName(
123
- host: Host
160
+ host: AutorestExtensionHost
124
161
  ): Promise<string | undefined> {
125
- return (await host.GetValue("credential-key-header-name")) || undefined;
162
+ return (await host.getValue("credential-key-header-name")) || undefined;
126
163
  }
127
164
 
128
- async function getAddCredentials(host: Host): Promise<boolean> {
129
- const addCredentials = await host.GetValue("add-credentials");
165
+ async function getAddCredentials(
166
+ host: AutorestExtensionHost
167
+ ): Promise<boolean> {
168
+ const addCredentials = await host.getValue("add-credentials");
130
169
 
131
170
  // Only set addCredentials to false if explicitly set to false
132
171
  // otherwise default to true
@@ -136,34 +175,38 @@ async function getAddCredentials(host: Host): Promise<boolean> {
136
175
  return true;
137
176
  }
138
177
  }
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";
178
+ async function getIsAzureArm(host: AutorestExtensionHost): Promise<boolean> {
179
+ const flag = (await host.getValue("azure-arm")) === true;
180
+ const openapi = (await host.getValue("openapi-type")) === "arm";
142
181
 
143
182
  return flag || openapi;
144
183
  }
145
184
 
146
- async function getRestLevelClient(host: Host): Promise<boolean> {
147
- return (await host.GetValue("rest-level-client")) === true;
185
+ async function getRestLevelClient(
186
+ host: AutorestExtensionHost
187
+ ): Promise<boolean> {
188
+ return (await host.getValue("rest-level-client")) === true;
148
189
  }
149
190
 
150
- async function getUseCoreV2(host: Host): Promise<boolean> {
151
- const useCoreV2Option: boolean = await host.GetValue("use-core-v2");
191
+ async function getUseCoreV2(host: AutorestExtensionHost): Promise<boolean> {
192
+ const useCoreV2Option = await host.getValue("use-core-v2");
152
193
  return useCoreV2Option === null ? true : Boolean(useCoreV2Option);
153
194
  }
154
195
 
155
- async function getTracingInfo(host: Host): Promise<TracingInfo | undefined> {
196
+ async function getTracingInfo(
197
+ host: AutorestExtensionHost
198
+ ): Promise<TracingInfo | undefined> {
156
199
  const tracing: TracingInfo | undefined =
157
- (await host.GetValue("tracing-info")) || undefined;
200
+ (await host.getValue("tracing-info")) || undefined;
158
201
 
159
202
  if (tracing && tracing.namespace && tracing.packagePrefix) {
160
203
  return tracing;
161
204
  }
162
205
 
163
- const namespace =
164
- (await host.GetValue("tracing-info.namespace")) || undefined;
165
- const packagePrefix =
166
- (await host.GetValue("tracing-info.packagePrefix")) || undefined;
206
+ const namespace: string | undefined =
207
+ (await host.getValue<string>("tracing-info.namespace")) || undefined;
208
+ const packagePrefix: string | undefined =
209
+ (await host.getValue("tracing-info.packagePrefix")) || undefined;
167
210
 
168
211
  if (packagePrefix && namespace) {
169
212
  return {
@@ -181,13 +224,17 @@ async function getTracingInfo(host: Host): Promise<TracingInfo | undefined> {
181
224
  );
182
225
  }
183
226
 
184
- async function getPackageDetails(host: Host): Promise<PackageDetails> {
227
+ async function getPackageDetails(
228
+ host: AutorestExtensionHost
229
+ ): Promise<PackageDetails> {
185
230
  const { model } = getSession();
186
231
  const name = normalizeName(model.language.default.name, NameType.File);
187
232
  // 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";
233
+ const packageName: string = (await host.getValue("package-name")) || name;
234
+ const packageNameParts: RegExpMatchArray =
235
+ packageName.match(/(^@(.*)\/)?(.*)/) ?? [];
236
+ const version: string =
237
+ (await host.getValue("package-version")) || "1.0.0-beta.1";
191
238
 
192
239
  return {
193
240
  name: packageName,
@@ -199,11 +246,11 @@ async function getPackageDetails(host: Host): Promise<PackageDetails> {
199
246
  }
200
247
 
201
248
  export async function getCredentialScopes(
202
- host: Host
249
+ host: AutorestExtensionHost
203
250
  ): 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");
251
+ const addCredentials = await host.getValue("add-credentials");
252
+ const credentialScopes = await host.getValue("credential-scopes");
253
+ const azureArm = await host.getValue("azure-arm");
207
254
 
208
255
  if (credentialScopes && !addCredentials) {
209
256
  throw new Error(
@@ -215,7 +262,7 @@ export async function getCredentialScopes(
215
262
  if (azureArm) {
216
263
  return ["https://management.azure.com/.default"];
217
264
  } else if (addCredentials) {
218
- host.Message({
265
+ host.message({
219
266
  Channel: Channel.Warning,
220
267
  Text: `You have default credential policy BearerTokenCredentialPolicy
221
268
  but not the --credential-scopes flag set while generating non-management plane code.
@@ -233,11 +280,9 @@ export async function getCredentialScopes(
233
280
  }
234
281
 
235
282
  async function getAzureOutputDirectoryPath(
236
- host: Host
283
+ host: AutorestExtensionHost
237
284
  ): Promise<string | undefined> {
238
- const outputDirectoryPath: string | null = await host.GetValue(
239
- "outputFolderUri"
240
- );
285
+ const outputDirectoryPath = await host.getValue<string>("outputFolderUri");
241
286
  const outputDirectoryRelativePath: string | undefined = outputDirectoryPath
242
287
  ?.replace(/\/$/, "")
243
288
  .split("/")
@@ -247,3 +292,21 @@ async function getAzureOutputDirectoryPath(
247
292
  ? outputDirectoryRelativePath
248
293
  : undefined;
249
294
  }
295
+
296
+ async function getBatch(
297
+ host: AutorestExtensionHost
298
+ ): Promise<[string, any][] | undefined> {
299
+ const batch = await host.getValue<[string, any][]>("batch");
300
+ return batch;
301
+ }
302
+
303
+ async function getMultiClient(host: AutorestExtensionHost): Promise<boolean> {
304
+ const multiClient = (await host.getValue("multi-client")) || undefined;
305
+ return !!multiClient;
306
+ }
307
+
308
+ async function getCoreHttpCompatMode(
309
+ host: AutorestExtensionHost
310
+ ): Promise<boolean> {
311
+ return (await host.getValue("core-http-compat-mode")) || false;
312
+ }
@@ -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"}
@@ -1,263 +0,0 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT License.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.generateClientContext = void 0;
6
- const nameUtils_1 = require("../utils/nameUtils");
7
- const codemodel_1 = require("@autorest/codemodel");
8
- const parameterUtils_1 = require("./utils/parameterUtils");
9
- const autorestSession_1 = require("../autorestSession");
10
- function generateClientContext(clientDetails, packageDetails, project) {
11
- const { useCoreV2, hideClients, addCredentials, srcPath } = autorestSession_1.getAutorestOptions();
12
- const importedModels = new Set();
13
- const clientParams = clientDetails.parameters.filter(param => param.implementationLocation === codemodel_1.ImplementationLocation.Client);
14
- const hasLro = clientDetails.operationGroups.some(og => og.operations.some(o => o.isLro));
15
- const clientContextClassName = `${clientDetails.className}Context`;
16
- const clientContextFileName = nameUtils_1.normalizeName(clientContextClassName, nameUtils_1.NameType.File);
17
- const sourceFile = project.createSourceFile(`${srcPath}/${clientContextFileName}.ts`, undefined, {
18
- overwrite: true
19
- });
20
- !useCoreV2 && writePackageInfo(sourceFile, packageDetails);
21
- const contextClass = buildClass(sourceFile, clientContextClassName);
22
- if (hideClients) {
23
- contextClass.addJsDoc({
24
- tags: [
25
- {
26
- tagName: "internal"
27
- }
28
- ]
29
- });
30
- }
31
- writeClassProperties(contextClass, clientParams, importedModels);
32
- const classConstructor = buildConstructor(contextClass, {
33
- clientContextClassName,
34
- clientClassName: clientDetails.className,
35
- clientParams,
36
- importedModels
37
- });
38
- writeConstructorBody(classConstructor, {
39
- clientParams,
40
- clientDetails
41
- }, hasLro);
42
- const hasCredentials = !!addCredentials;
43
- writeImports(sourceFile, hasLro, importedModels, hasCredentials);
44
- sourceFile.fixUnusedIdentifiers();
45
- }
46
- exports.generateClientContext = generateClientContext;
47
- function writeImports(sourceFile, hasLro, importedModels, hasCredentials) {
48
- const { useCoreV2 } = autorestSession_1.getAutorestOptions();
49
- if (!useCoreV2) {
50
- sourceFile.addImportDeclaration({
51
- namespaceImport: "coreHttp",
52
- moduleSpecifier: "@azure/core-http"
53
- });
54
- }
55
- else {
56
- sourceFile.addImportDeclaration({
57
- namespaceImport: "coreClient",
58
- moduleSpecifier: "@azure/core-client"
59
- });
60
- if (hasCredentials) {
61
- sourceFile.addImportDeclaration({
62
- namespaceImport: "coreAuth",
63
- moduleSpecifier: "@azure/core-auth"
64
- });
65
- }
66
- }
67
- if (importedModels.size) {
68
- sourceFile.addImportDeclaration({
69
- namedImports: [...importedModels],
70
- moduleSpecifier: "./models"
71
- });
72
- }
73
- }
74
- function writePackageInfo(sourceFile, packageDetails) {
75
- sourceFile.addStatements([
76
- `\n\n`,
77
- `const packageName = "${packageDetails.name || ""}";`,
78
- `const packageVersion = "${packageDetails.version || ""}";`
79
- ]);
80
- }
81
- function writeClassProperties(contextClass, clientParams, importedModels) {
82
- const params = clientParams.filter(p => !p.isSynthetic);
83
- params.forEach(({ typeDetails }) => typeDetails.usedModels.forEach(model => importedModels.add(model)));
84
- contextClass.addProperties(params.map(param => {
85
- return {
86
- name: param.name,
87
- type: param.typeDetails.typeName,
88
- hasQuestionToken: !param.required
89
- };
90
- }));
91
- }
92
- function writeConstructorBody(classConstructor, { clientParams, clientDetails }, hasLro) {
93
- const { useCoreV2 } = autorestSession_1.getAutorestOptions();
94
- const requiredParams = getRequiredParameters(clientParams);
95
- const addBlankLine = true;
96
- const requiredParameters = getRequiredParamAssignments(requiredParams);
97
- const constantParameters = getConstantClientParamAssignments(clientParams);
98
- classConstructor.addStatements([
99
- writeStatements(getRequiredParamChecks(requiredParams), addBlankLine),
100
- writeStatement(writeDefaultOptions(clientParams.some(p => p.name === "credentials"), hasLro, clientDetails))
101
- ]);
102
- !useCoreV2 &&
103
- classConstructor.addStatements([
104
- writeStatement(getEndpointStatement(clientDetails.endpoint), addBlankLine)
105
- ]);
106
- classConstructor.addStatements([
107
- requiredParameters.length ? "// Parameter assignments" : "",
108
- writeStatements(getRequiredParamAssignments(requiredParams), addBlankLine),
109
- constantParameters.length
110
- ? "// Assigning values to Constant parameters"
111
- : "",
112
- writeStatements(constantParameters, addBlankLine)
113
- ]);
114
- }
115
- const writeStatement = (content, shouldAddBlankLine = false) => (writer) => {
116
- if (content) {
117
- writer.writeLine(content);
118
- shouldAddBlankLine && writer.blankLine();
119
- }
120
- };
121
- const writeStatements = (lines, shouldAddBlankLine = false) => (writer) => {
122
- lines.forEach(line => writer.writeLine(line));
123
- shouldAddBlankLine && writer.blankLine();
124
- };
125
- function getCredentialScopesValue(credentialScopes) {
126
- if (Array.isArray(credentialScopes)) {
127
- return `[${credentialScopes.map(scope => `"${scope}"`).join()}]`;
128
- }
129
- else if (typeof credentialScopes === "string") {
130
- return `"${credentialScopes}"`;
131
- }
132
- return credentialScopes;
133
- }
134
- function writeDefaultOptions(hasCredentials, hasLro, clientDetails) {
135
- const { useCoreV2, credentialScopes, packageDetails } = autorestSession_1.getAutorestOptions();
136
- const credentialScopesValues = getCredentialScopesValue(credentialScopes);
137
- const addScopes = credentialScopes
138
- ? `if(!options.credentialScopes) {
139
- options.credentialScopes = ${credentialScopesValues}
140
- }`
141
- : "";
142
- const defaults = !hasCredentials
143
- ? `const defaults: ${clientDetails.className}OptionalParams = {
144
- requestContentType: "application/json; charset=utf-8"
145
- };`
146
- : `const defaults: ${clientDetails.className}OptionalParams = {
147
- requestContentType: "application/json; charset=utf-8",
148
- credential: credentials
149
- };`;
150
- return !useCoreV2
151
- ? `// Initializing default values for options
152
- if (!options) {
153
- options = {};
154
- }
155
-
156
- const defaultUserAgent = \`azsdk-js-\${packageName.replace(/@.*\\//,"")}/\${packageVersion} \${coreHttp.getDefaultUserAgentValue()}\`;
157
-
158
- ${addScopes}
159
-
160
- super(${hasCredentials ? "credentials" : `undefined`}, {
161
- ...options,
162
- userAgent: options.userAgent
163
- ? \`\${options.userAgent} \${defaultUserAgent}\`
164
- : \`\${defaultUserAgent}\`
165
- });
166
-
167
- this.requestContentType = "application/json; charset=utf-8";
168
-
169
- `
170
- : `// Initializing default values for options
171
- if (!options) {
172
- options = {};
173
- }
174
- ${defaults}
175
-
176
- const packageDetails = \`azsdk-js-${packageDetails.name.replace(/@.*\//, "")}/${packageDetails.version}\`;
177
- const userAgentPrefix =
178
- options.userAgentOptions && options.userAgentOptions.userAgentPrefix
179
- ? \`\${options.userAgentOptions.userAgentPrefix} \${packageDetails}\`
180
- : \`\${packageDetails}\`;
181
-
182
- ${addScopes}
183
- const optionsWithDefaults = {
184
- ...defaults,
185
- ...options,
186
- userAgentOptions: {
187
- userAgentPrefix
188
- },
189
- baseUri: ${getEndpoint(clientDetails.endpoint)}
190
- };
191
- super(optionsWithDefaults);
192
- `;
193
- }
194
- function buildClass(sourceFile, clientContextClassName) {
195
- const { useCoreV2 } = autorestSession_1.getAutorestOptions();
196
- return sourceFile.addClass({
197
- name: clientContextClassName,
198
- extends: !useCoreV2 ? "coreHttp.ServiceClient" : "coreClient.ServiceClient",
199
- isExported: true
200
- });
201
- }
202
- function buildConstructor(contextClass, { clientContextClassName, clientParams, clientClassName, importedModels }) {
203
- const requiredParams = getRequiredParameters(clientParams);
204
- const hasClientOptionalParams = clientParams.some(p => !p.required);
205
- const docs = [
206
- `Initializes a new instance of the ${clientContextClassName} class.`,
207
- ...parameterUtils_1.formatJsDocParam(requiredParams),
208
- `@param options The parameter options`
209
- ]
210
- .filter(d => !!d)
211
- .join("\n");
212
- let clientOptionsParameterType = "coreHttp.ServiceClientOptions";
213
- if (hasClientOptionalParams) {
214
- const typeName = `${clientClassName}OptionalParams`;
215
- importedModels.add(typeName);
216
- clientOptionsParameterType = typeName;
217
- }
218
- requiredParams.forEach(({ typeDetails }) => typeDetails.usedModels.forEach(model => importedModels.add(model)));
219
- return contextClass.addConstructor({
220
- docs: [docs],
221
- parameters: [
222
- ...requiredParams.map(p => ({
223
- name: p.name,
224
- type: p.typeDetails.typeName
225
- })),
226
- {
227
- name: "options",
228
- hasQuestionToken: true,
229
- type: clientOptionsParameterType
230
- }
231
- ]
232
- });
233
- }
234
- function getRequiredParameters(parameters) {
235
- /**
236
- * Getting parameters that are marked as required, and also don't have a defaultValue.
237
- * Constants are also exluded since they have defined value
238
- */
239
- return parameters.filter(p => p.required && p.schemaType !== codemodel_1.SchemaType.Constant && !p.defaultValue);
240
- }
241
- function getEndpointStatement({ endpoint }) {
242
- return `this.baseUri = options.endpoint ${endpoint ? ` || "${endpoint}"` : ""};`;
243
- }
244
- function getConstantClientParamAssignments(clientParameters) {
245
- return clientParameters
246
- .filter(p => !!p.defaultValue || p.schemaType === codemodel_1.SchemaType.Constant)
247
- .map(({ name, defaultValue }) => `this.${name} = options.${name} || ${defaultValue}`);
248
- }
249
- function getRequiredParamChecks(requiredParameters) {
250
- return requiredParameters.map(({ name }) => `if(${name} === undefined) {
251
- throw new Error("'${name}' cannot be null");
252
- }`);
253
- }
254
- function getRequiredParamAssignments(requiredParameters) {
255
- const disallowedClientParameters = ["credentials"];
256
- return requiredParameters
257
- .filter(({ name }) => !disallowedClientParameters.includes(name))
258
- .map(({ name }) => `this.${name} = ${name};`);
259
- }
260
- function getEndpoint({ endpoint }) {
261
- return `options.endpoint ${endpoint ? ` || "${endpoint}"` : ""}`;
262
- }
263
- //# sourceMappingURL=clientContextFileGenerator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clientContextFileGenerator.js","sourceRoot":"","sources":["../../../src/generators/clientContextFileGenerator.ts"],"names":[],"mappings":"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"}