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

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 (245) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +37 -3
  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 +21 -3
  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} +19 -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 +171 -46
  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 +31 -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 -168
  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 +104 -18
  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 +4 -1
  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 +31 -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 +37 -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 +10 -2
  143. package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
  144. package/dist/src/transforms/mapperTransforms.js +1 -1
  145. package/dist/src/transforms/mapperTransforms.js.map +1 -1
  146. package/dist/src/transforms/objectTransforms.js +1 -1
  147. package/dist/src/transforms/objectTransforms.js.map +1 -1
  148. package/dist/src/transforms/operationTransforms.d.ts.map +1 -1
  149. package/dist/src/transforms/operationTransforms.js +1 -0
  150. package/dist/src/transforms/operationTransforms.js.map +1 -1
  151. package/dist/src/transforms/parameterTransforms.d.ts.map +1 -1
  152. package/dist/src/transforms/parameterTransforms.js +20 -4
  153. package/dist/src/transforms/parameterTransforms.js.map +1 -1
  154. package/dist/src/transforms/samplesTransforms.d.ts +7 -0
  155. package/dist/src/transforms/samplesTransforms.d.ts.map +1 -0
  156. package/dist/src/transforms/samplesTransforms.js +283 -0
  157. package/dist/src/transforms/samplesTransforms.js.map +1 -0
  158. package/dist/src/transforms/transforms.d.ts +1 -2
  159. package/dist/src/transforms/transforms.d.ts.map +1 -1
  160. package/dist/src/transforms/transforms.js +5 -4
  161. package/dist/src/transforms/transforms.js.map +1 -1
  162. package/dist/src/typescriptGenerator.d.ts +2 -2
  163. package/dist/src/typescriptGenerator.d.ts.map +1 -1
  164. package/dist/src/typescriptGenerator.js +19 -8
  165. package/dist/src/typescriptGenerator.js.map +1 -1
  166. package/dist/src/utils/autorestOptions.d.ts +2 -2
  167. package/dist/src/utils/autorestOptions.d.ts.map +1 -1
  168. package/dist/src/utils/autorestOptions.js +107 -30
  169. package/dist/src/utils/autorestOptions.js.map +1 -1
  170. package/dist/src/utils/nameUtils.d.ts +6 -2
  171. package/dist/src/utils/nameUtils.d.ts.map +1 -1
  172. package/dist/src/utils/nameUtils.js +9 -5
  173. package/dist/src/utils/nameUtils.js.map +1 -1
  174. package/dist/src/utils/schemaHelpers.js +8 -3
  175. package/dist/src/utils/schemaHelpers.js.map +1 -1
  176. package/package.json +26 -10
  177. package/src/autorestSession.ts +20 -16
  178. package/src/conflictResolver.ts +0 -1
  179. package/src/generators/clientFileGenerator.ts +264 -33
  180. package/src/generators/indexGenerator.ts +78 -9
  181. package/src/generators/modelsGenerator.ts +22 -2
  182. package/src/generators/operationGenerator.ts +11 -9
  183. package/src/generators/samples/sampleEnv.hbs +4 -0
  184. package/src/generators/samples/sampleEnvGenerator.ts +14 -0
  185. package/src/generators/samples/sampleGenerator.ts +50 -0
  186. package/src/generators/static/apiExtractorConfig.ts +2 -2
  187. package/src/generators/static/esLintConfigGenerator.ts +24 -0
  188. package/src/generators/static/{README.md.hbs → hlcREADME.md.hbs} +19 -0
  189. package/src/generators/static/karma.conf.js.hbs +141 -0
  190. package/src/generators/static/karmaConfigFileGenerator.ts +20 -0
  191. package/src/generators/static/packageFileGenerator.ts +183 -46
  192. package/src/generators/static/readmeFileGenerator.ts +57 -34
  193. package/src/generators/static/rlcREADME.md.hbs +71 -0
  194. package/src/generators/static/rollupConfigFileGenerator.ts +13 -71
  195. package/src/generators/static/samples.ts.hbs +49 -0
  196. package/src/generators/static/tsConfigFileGenerator.ts +47 -20
  197. package/src/generators/test/envBrowserFileGenerator.ts +14 -0
  198. package/src/generators/test/envFileGenerator.ts +22 -0
  199. package/src/generators/test/recordedClientFileGenerator.ts +22 -0
  200. package/src/generators/test/rlcEnv.ts.hbs +3 -0
  201. package/src/generators/test/rlcRecordedClient.ts.hbs +35 -0
  202. package/src/generators/test/rlcSampleTest.spec.ts.hbs +19 -0
  203. package/src/generators/{static → test}/sampleTest.ts.hbs +0 -0
  204. package/src/generators/test/sampleTestGenerator.ts +23 -8
  205. package/src/generators/utils/pagingOperations.ts +1 -1
  206. package/src/main.ts +8 -5
  207. package/src/models/clientDetails.ts +8 -0
  208. package/src/models/modelDetails.ts +2 -2
  209. package/src/models/operationDetails.ts +1 -0
  210. package/src/models/sampleDetails.ts +22 -0
  211. package/src/restLevelClient/generateClient.ts +101 -260
  212. package/src/restLevelClient/generateClientDefinition.ts +343 -0
  213. package/src/restLevelClient/generateMethodShortcuts.ts +121 -0
  214. package/src/restLevelClient/generateObjectTypes.ts +1 -3
  215. package/src/restLevelClient/generatePagingHelper.ts +3 -2
  216. package/src/restLevelClient/generateParameterTypes.ts +155 -25
  217. package/src/restLevelClient/generatePollingHelper.ts +3 -3
  218. package/src/restLevelClient/generateResponseTypes.ts +4 -1
  219. package/src/restLevelClient/generateRestLevel.ts +36 -8
  220. package/src/restLevelClient/generateSchemaTypes.ts +5 -3
  221. package/src/restLevelClient/generateTopLevelIndexFile.ts +37 -0
  222. package/src/restLevelClient/helpers/operationHelpers.ts +93 -0
  223. package/src/restLevelClient/interfaces.ts +26 -0
  224. package/src/restLevelClient/operationHelpers.ts +8 -2
  225. package/src/restLevelClient/schemaHelpers.ts +10 -3
  226. package/src/transforms/mapperTransforms.ts +1 -1
  227. package/src/transforms/objectTransforms.ts +1 -1
  228. package/src/transforms/operationTransforms.ts +1 -0
  229. package/src/transforms/parameterTransforms.ts +20 -4
  230. package/src/transforms/samplesTransforms.ts +300 -0
  231. package/src/transforms/transforms.ts +6 -6
  232. package/src/typescriptGenerator.ts +20 -11
  233. package/src/utils/autorestOptions.ts +170 -59
  234. package/src/utils/nameUtils.ts +16 -8
  235. package/src/utils/schemaHelpers.ts +2 -2
  236. package/dist/src/generators/clientContextFileGenerator.d.ts +0 -5
  237. package/dist/src/generators/clientContextFileGenerator.d.ts.map +0 -1
  238. package/dist/src/generators/clientContextFileGenerator.js +0 -263
  239. package/dist/src/generators/clientContextFileGenerator.js.map +0 -1
  240. package/dist/src/restLevelClient/helpers/getOperationParameters.d.ts +0 -6
  241. package/dist/src/restLevelClient/helpers/getOperationParameters.d.ts.map +0 -1
  242. package/dist/src/restLevelClient/helpers/getOperationParameters.js +0 -29
  243. package/dist/src/restLevelClient/helpers/getOperationParameters.js.map +0 -1
  244. package/src/generators/clientContextFileGenerator.ts +0 -405
  245. package/src/restLevelClient/helpers/getOperationParameters.ts +0 -37
@@ -0,0 +1,14 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as hbs from 'handlebars';
4
+ import { Project } from 'ts-morph';
5
+
6
+ export function generateSampleEnv(project: Project) {
7
+ const file = fs.readFileSync(path.join(__dirname, "sampleEnv.hbs"), {
8
+ encoding: "utf-8"
9
+ });
10
+ const readmeFileContents = hbs.compile(file, { noEscape: true });
11
+ project.createSourceFile("sample.env", readmeFileContents({}), {
12
+ overwrite: true
13
+ });
14
+ }
@@ -0,0 +1,50 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ import {
5
+ Project,
6
+ SourceFile
7
+ } from "ts-morph";
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+ import * as hbs from "handlebars";
11
+ import { getAutorestOptions, getSession } from "../../autorestSession";
12
+ import { ClientDetails } from "../../models/clientDetails";
13
+ import { SampleGroup } from "../../models/sampleDetails";
14
+
15
+ /**
16
+ * Function that writes the code for all the operations.
17
+ * It will generate one file per operation group and each file contains:
18
+ * - A class definition for the operation group
19
+ * - Methods and overrides for each operation
20
+ * - OperationSpecs for each operation
21
+ * @param clientDetails client details
22
+ * @param project project for code generation
23
+ */
24
+ export function generateSamples(
25
+ clientDetails: ClientDetails,
26
+ project: Project
27
+ ): void {
28
+ // Toplevel operations are inlined in the client
29
+ const sampleGroups = clientDetails.samples;
30
+ const session = getSession();
31
+ if (!sampleGroups) {
32
+ session.error("No samples are found! ", []);
33
+ }
34
+ for (const sampleGroup of sampleGroups as SampleGroup[]) {
35
+ try {
36
+ const file = fs.readFileSync(path.join(__dirname, "../static/samples.ts.hbs"), {
37
+ encoding: "utf-8"
38
+ });
39
+
40
+ const sampleGroupFileContents = hbs.compile(file, { noEscape: true });
41
+ project.createSourceFile(`samples-dev/${sampleGroup.sampleFileName}.ts`, sampleGroupFileContents(sampleGroup), {
42
+ overwrite: true
43
+ });
44
+ } catch (error) {
45
+ session.error("An error was encountered while handling sample generation", [sampleGroup.sampleFileName]);
46
+ throw error;
47
+ }
48
+ }
49
+ }
50
+
@@ -5,7 +5,7 @@ import { Project } from "ts-morph";
5
5
  import { getAutorestOptions } from "../../autorestSession";
6
6
 
7
7
  export function generateApiExtractorConfig(project: Project) {
8
- const { generateMetadata, packageDetails, generateTest } = getAutorestOptions();
8
+ const { generateMetadata, packageDetails, generateTest, restLevelClient } = getAutorestOptions();
9
9
 
10
10
  if (!generateMetadata) {
11
11
  return;
@@ -14,7 +14,7 @@ export function generateApiExtractorConfig(project: Project) {
14
14
  const config = {
15
15
  $schema:
16
16
  "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
17
- mainEntryPointFilePath: generateTest ?`./dist-esm/src/index.d.ts` :`./dist-esm/index.d.ts` ,
17
+ mainEntryPointFilePath: `${restLevelClient ? "./types" : "./dist-esm"}${generateTest ? "/src" : ""}/index.d.ts`,
18
18
  docModel: {
19
19
  enabled: true
20
20
  },
@@ -0,0 +1,24 @@
1
+ import { Project } from "ts-morph";
2
+ import { getAutorestOptions } from "../../autorestSession";
3
+
4
+ const esLintConfig = {
5
+ plugins: ["@azure/azure-sdk"],
6
+ extends: ["plugin:@azure/azure-sdk/azure-sdk-base"],
7
+ rules: {
8
+ "@azure/azure-sdk/ts-modules-only-named": "warn",
9
+ "@azure/azure-sdk/ts-apiextractor-json-types": "warn",
10
+ "@azure/azure-sdk/ts-package-json-types": "warn",
11
+ "@azure/azure-sdk/ts-package-json-engine-is-present": "warn",
12
+ "tsdoc/syntax": "warn"
13
+ }
14
+ }
15
+
16
+ export function generateEsLintConfig(project: Project) {
17
+ const { generateMetadata } = getAutorestOptions();
18
+ if (!generateMetadata) {
19
+ return;
20
+ }
21
+ project.createSourceFile(".eslintrc.json", JSON.stringify(esLintConfig), {
22
+ overwrite: true
23
+ });
24
+ }
@@ -24,6 +24,8 @@ This package contains an isomorphic SDK (runs both in Node.js and in browsers) f
24
24
  - [LTS versions of Node.js](https://nodejs.org/about/releases/)
25
25
  - Latest versions of Safari, Chrome, Edge and Firefox.
26
26
 
27
+ See our [support policy](https://github.com/Azure/azure-sdk-for-js/blob/main/SUPPORT.md) for more details.
28
+
27
29
  {{#if azure}}
28
30
  ### Prerequisites
29
31
 
@@ -64,14 +66,31 @@ For more information about how to create an Azure AD Application check out [this
64
66
  ```javascript
65
67
  const { {{ clientClassName }} } = require("{{ clientPackageName }}");
66
68
  const { DefaultAzureCredential } = require("@azure/identity");
69
+ // For client-side applications running in the browser, use InteractiveBrowserCredential instead of DefaultAzureCredential. See https://aka.ms/azsdk/js/identity/examples for more details.
70
+
67
71
  const subscriptionId = "00000000-0000-0000-0000-000000000000";
68
72
  const client = new {{ clientClassName }}(new DefaultAzureCredential(), subscriptionId);
73
+
74
+ // For client-side applications running in the browser, use this code instead:
75
+ // const credential = new InteractiveBrowserCredential({
76
+ // tenantId: "<YOUR_TENANT_ID>",
77
+ // clientId: "<YOUR_CLIENT_ID>"
78
+ // });
79
+ // const client = new {{ clientClassName }}(credential, subscriptionId);
69
80
  ```
70
81
  {{else}}
71
82
  ```javascript
72
83
  const { {{ clientClassName }} } = require("{{ clientPackageName }}");
73
84
  const { DefaultAzureCredential } = require("@azure/identity");
85
+ // For client-side applications running in the browser, use InteractiveBrowserCredential instead of DefaultAzureCredential. See https://aka.ms/azsdk/js/identity/examples for more details.
86
+
74
87
  const client = new {{ clientClassName }}("<endpoint>", new DefaultAzureCredential());
88
+ // For client-side applications running in the browser, use this code instead:
89
+ // const credential = new InteractiveBrowserCredential({
90
+ // tenantId: "<YOUR_TENANT_ID>",
91
+ // clientId: "<YOUR_CLIENT_ID>"
92
+ // });
93
+ // const client = new {{ clientClassName }}("<endpoint>", credential);
75
94
  ```
76
95
  {{/if}}
77
96
  {{/if}}{{/if}}
@@ -0,0 +1,141 @@
1
+ // https://github.com/karma-runner/karma-chrome-launcher
2
+ process.env.CHROME_BIN = require("puppeteer").executablePath();
3
+ require("dotenv").config();
4
+ const {
5
+ jsonRecordingFilterFunction,
6
+ isPlaybackMode,
7
+ isSoftRecordMode,
8
+ isRecordMode,
9
+ } = require("@azure-tools/test-recorder");
10
+
11
+ module.exports = function (config) {
12
+ config.set({
13
+ // base path that will be used to resolve all patterns (eg. files, exclude)
14
+ basePath: "./",
15
+
16
+ // frameworks to use
17
+ // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
18
+ frameworks: ["source-map-support", "mocha"],
19
+
20
+ plugins: [
21
+ "karma-mocha",
22
+ "karma-mocha-reporter",
23
+ "karma-chrome-launcher",
24
+ "karma-edge-launcher",
25
+ "karma-firefox-launcher",
26
+ "karma-ie-launcher",
27
+ "karma-env-preprocessor",
28
+ "karma-coverage",
29
+ "karma-sourcemap-loader",
30
+ "karma-junit-reporter",
31
+ "karma-json-to-file-reporter",
32
+ "karma-source-map-support",
33
+ "karma-json-preprocessor",
34
+ ],
35
+
36
+ // list of files / patterns to load in the browser
37
+ files: [
38
+ "dist-test/index.browser.js",
39
+ { pattern: "dist-test/index.browser.js.map", type: "html", included: false, served: true },
40
+ ].concat(isPlaybackMode() || isSoftRecordMode() ? ["recordings/browsers/**/*.json"] : []),
41
+
42
+ // list of files / patterns to exclude
43
+ exclude: [],
44
+
45
+ // preprocess matching files before serving them to the browser
46
+ // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
47
+ preprocessors: {
48
+ "**/*.js": ["sourcemap", "env"],
49
+ "recordings/browsers/**/*.json": ["json"],
50
+ // IMPORTANT: COMMENT following line if you want to debug in your browsers!!
51
+ // Preprocess source file to calculate code coverage, however this will make source file unreadable
52
+ // "dist-test/index.js": ["coverage"]
53
+ },
54
+
55
+ envPreprocessor: [
56
+ "TEST_MODE",
57
+ "ENDPOINT",
58
+ "AZURE_CLIENT_SECRET",
59
+ "AZURE_CLIENT_ID",
60
+ "AZURE_TENANT_ID",
61
+ "SUBSCRIPTION_ID",
62
+ ],
63
+
64
+ // test results reporter to use
65
+ // possible values: 'dots', 'progress'
66
+ // available reporters: https://npmjs.org/browse/keyword/karma-reporter
67
+ reporters: ["mocha", "coverage", "junit", "json-to-file"],
68
+
69
+ coverageReporter: {
70
+ // specify a common output directory
71
+ dir: "coverage-browser/",
72
+ reporters: [
73
+ { type: "json", subdir: ".", file: "coverage.json" },
74
+ { type: "lcovonly", subdir: ".", file: "lcov.info" },
75
+ { type: "html", subdir: "html" },
76
+ { type: "cobertura", subdir: ".", file: "cobertura-coverage.xml" },
77
+ ],
78
+ },
79
+
80
+ junitReporter: {
81
+ outputDir: "", // results will be saved as $outputDir/$browserName.xml
82
+ outputFile: "test-results.browser.xml", // if included, results will be saved as $outputDir/$browserName/$outputFile
83
+ suite: "", // suite will become the package name attribute in xml testsuite element
84
+ useBrowserName: false, // add browser name to report and classes names
85
+ nameFormatter: undefined, // function (browser, result) to customize the name attribute in xml testcase element
86
+ classNameFormatter: undefined, // function (browser, result) to customize the classname attribute in xml testcase element
87
+ properties: {}, // key value pair of properties to add to the <properties> section of the report
88
+ },
89
+
90
+ jsonToFileReporter: {
91
+ filter: jsonRecordingFilterFunction,
92
+ outputPath: ".",
93
+ },
94
+
95
+ // web server port
96
+ port: 9876,
97
+
98
+ // enable / disable colors in the output (reporters and logs)
99
+ colors: true,
100
+
101
+ // level of logging
102
+ // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
103
+ logLevel: config.LOG_INFO,
104
+
105
+ // enable / disable watching file and executing tests whenever any file changes
106
+ autoWatch: false,
107
+
108
+ // --no-sandbox allows our tests to run in Linux without having to change the system.
109
+ // --disable-web-security allows us to authenticate from the browser without having to write tests using interactive auth, which would be far more complex.
110
+ browsers: ["ChromeHeadlessNoSandbox"],
111
+ customLaunchers: {
112
+ ChromeHeadlessNoSandbox: {
113
+ base: "ChromeHeadless",
114
+ flags: ["--no-sandbox", "--disable-web-security"],
115
+ },
116
+ },
117
+
118
+ // Continuous Integration mode
119
+ // if true, Karma captures browsers, runs the tests and exits
120
+ singleRun: false,
121
+
122
+ // Concurrency level
123
+ // how many browser should be started simultaneous
124
+ concurrency: 1,
125
+
126
+ browserNoActivityTimeout: 60000000,
127
+ browserDisconnectTimeout: 10000,
128
+ browserDisconnectTolerance: 3,
129
+ browserConsoleLogOptions: {
130
+ terminal: !isRecordMode(),
131
+ },
132
+
133
+ client: {
134
+ mocha: {
135
+ // change Karma's debug.html to the mocha web reporter
136
+ reporter: "html",
137
+ timeout: "600000",
138
+ },
139
+ },
140
+ });
141
+ };
@@ -0,0 +1,20 @@
1
+ import { Project } from "ts-morph";
2
+ import * as path from 'path';
3
+ import * as fs from 'fs';
4
+ import * as hbs from "handlebars";
5
+ import { getAutorestOptions } from "../../autorestSession";
6
+
7
+ export function generateKarmaConfigFile(project: Project) {
8
+ const { generateTest, restLevelClient } = getAutorestOptions();
9
+ if (!generateTest || !restLevelClient) {
10
+ return;
11
+ }
12
+ const metadata = {}
13
+ const file = fs.readFileSync(path.join(__dirname, "karma.conf.js.hbs"), {
14
+ encoding: "utf-8"
15
+ });
16
+ const karmaConfigFileContents = hbs.compile(file, { noEscape: true });
17
+ project.createSourceFile("karma.conf.js", karmaConfigFileContents(metadata), {
18
+ overwrite: true
19
+ });
20
+ }
@@ -7,6 +7,7 @@ import { PackageDetails } from "../../models/packageDetails";
7
7
  import { getAutorestOptions, getSession } from "../../autorestSession";
8
8
  import { hasPagingOperations } from "../../utils/extractPaginationDetails";
9
9
  import { hasPollingOperations } from "../../restLevelClient/helpers/hasPollingOperations";
10
+ import { NameType, normalizeName } from "../../utils/nameUtils";
10
11
 
11
12
  export function generatePackageJson(
12
13
  project: Project,
@@ -48,52 +49,87 @@ export function generatePackageJson(
48
49
  * or High Level Client
49
50
  */
50
51
  function restLevelPackage(packageDetails: PackageDetails) {
51
- const { azureArm } = getAutorestOptions();
52
+ const { azureArm, generateTest, azureOutputDirectory, azureSdkForJs } = getAutorestOptions();
52
53
  const { model } = getSession();
53
54
  const hasPaging = hasPagingOperations(model);
54
55
  const hasLRO = hasPollingOperations(model);
55
- return {
56
+ const packageInfo: Record<string, any> = {
56
57
  name: `${packageDetails.name}`,
57
58
  "sdk-type": `${azureArm ? "mgmt" : "client"}`,
59
+ author: "Microsoft Corporation",
58
60
  version: `${packageDetails.version}`,
59
61
  description: `${packageDetails.description}`,
60
- main: "dist-esm/index.js",
62
+ keywords: [
63
+ "node",
64
+ "azure",
65
+ "cloud",
66
+ "typescript",
67
+ "browser",
68
+ "isomorphic"
69
+ ],
70
+ license: "MIT",
71
+ main: "dist/index.js",
72
+ module: generateTest? "./dist-esm/src/index.js" : "./dist-esm/index.js",
61
73
  types: `./types/${packageDetails.nameWithoutScope}.d.ts`,
74
+ homepage: `https://github.com/Azure/azure-sdk-for-js/tree/main/${azureOutputDirectory}/README.md`,
75
+ repository: "github:Azure/azure-sdk-for-js",
76
+ bugs: {
77
+ url: "https://github.com/Azure/azure-sdk-for-js/issues"
78
+ },
79
+ "files": [
80
+ "dist/",
81
+ generateTest? "dist-esm/src/" : "dist-esm/",
82
+ `types/${packageDetails.nameWithoutScope}.d.ts`,
83
+ "README.md",
84
+ "LICENSE",
85
+ "review/*",
86
+ ],
87
+ "//metadata": {
88
+ "constantPaths": [
89
+ {
90
+ "path": "swagger/README.md",
91
+ "prefix": "package-version"
92
+ }
93
+ ]
94
+ },
95
+ engines: {
96
+ node: ">=12.0.0"
97
+ },
62
98
  scripts: {
63
- test: 'echo "Error: no test specified" && exit 1',
64
- build: "npm run clean && tsc --build && npm run extract-api",
65
- "extract-api": "mkdirp ./review && api-extractor run --local",
66
- pack: "npm pack 2>&1",
67
- lint: "echo skipped",
68
- audit: "echo skipped",
69
- clean: "echo skipped",
70
- "build:node": "echo skipped",
71
- "build:browser": "echo skipped",
72
- "build:test": "echo skipped",
99
+ audit: "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
100
+ "build:browser": "echo skipped.",
101
+ "build:node": "echo skipped.",
73
102
  "build:samples": "echo skipped.",
74
- "check-format": "echo skipped",
103
+ "build:test": "echo skipped.",
104
+ "build:debug": "echo skipped.",
105
+ "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"",
106
+ clean: "rimraf dist dist-browser dist-esm test-dist temp types *.tgz *.log",
75
107
  "execute:samples": "echo skipped",
76
- format: "echo skipped",
77
- "test:node": "echo skipped",
108
+ "extract-api": "rimraf review && mkdirp ./review && api-extractor run --local",
109
+ "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"",
110
+ "generate:client": "autorest --typescript swagger/README.md && npm run format",
111
+ "integration-test:browser": "echo skipped",
112
+ "integration-test:node": "echo skipped",
113
+ "integration-test": "echo skipped",
114
+ "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]",
115
+ lint: "eslint package.json api-extractor.json src test --ext .ts",
116
+ pack: "npm pack 2>&1",
78
117
  "test:browser": "echo skipped",
118
+ "test:node": "echo skipped",
119
+ test: 'echo "Error: no test specified" && exit 1',
79
120
  "unit-test": "echo skipped",
80
121
  "unit-test:node": "echo skipped",
81
122
  "unit-test:browser": "echo skipped",
82
- "integration-test:browser": "echo skipped",
83
- "integration-test:node": "echo skipped",
84
- "integration-test": "echo skipped",
85
- docs: "echo skipped"
86
- },
87
- keywords: [],
88
- author: "",
89
- license: "ISC",
90
- engines: {
91
- node: ">=12.0.0"
123
+ docs: "typedoc --excludePrivate --excludeExternals --out ./dist/docs ./src"
92
124
  },
125
+ "sideEffects": false,
126
+ "autoPublish": false,
93
127
  dependencies: {
94
- "@azure-rest/core-client": "1.0.0-beta.8",
95
128
  "@azure/core-auth": "^1.3.0",
129
+ "@azure-rest/core-client": "1.0.0-beta.8",
96
130
  "@azure/core-rest-pipeline": "^1.3.0",
131
+ "@azure/logger": "^1.0.0",
132
+ tslib: "^2.2.0",
97
133
  ...(hasPaging && {
98
134
  "@azure/core-paging": "^1.2.0"
99
135
  }),
@@ -102,19 +138,90 @@ function restLevelPackage(packageDetails: PackageDetails) {
102
138
  })
103
139
  },
104
140
  devDependencies: {
105
- autorest: "latest",
106
141
  "@microsoft/api-extractor": "^7.18.11",
107
- "@types/node": "^14.14.22",
142
+ autorest: "latest",
143
+ "@types/node": "^12.0.0",
108
144
  dotenv: "^8.2.0",
109
- prettier: "^2.2.1",
110
- "ts-node": "^9.1.1",
111
- typescript: "~4.2.4",
145
+ eslint: "^7.15.0",
112
146
  mkdirp: "^1.0.4",
113
- rimraf: "^3.0.0"
114
- },
115
- sideEffects: false,
116
- autoPublish: true
147
+ prettier: "2.2.1",
148
+ rimraf: "^3.0.0",
149
+ "source-map-support": "^0.5.9",
150
+ "typedoc": "0.15.2",
151
+ "typescript": "~4.2.0"
152
+ }
117
153
  };
154
+
155
+ if (azureSdkForJs) {
156
+ packageInfo.scripts["build"] = "npm run clean && tsc -p . && dev-tool run bundle && mkdirp ./review && api-extractor run --local";
157
+ packageInfo.scripts["build:debug"] = "tsc -p . && dev-tool run bundle && api-extractor run --local";
158
+ packageInfo.scripts["build:browser"] = "tsc -p . && dev-tool run bundle";
159
+ packageInfo.scripts["build:node"] = "tsc -p . && dev-tool run bundle";
160
+ packageInfo.devDependencies["@azure/dev-tool"] = "^1.0.0"
161
+ packageInfo.devDependencies["@azure/eslint-plugin-azure-sdk"] = "^3.0.0"
162
+ } else {
163
+ packageInfo.scripts["build"] = "npm run clean && tsc && rollup -c 2>&1 && npm run minify && mkdirp ./review && npm run extract-api";
164
+ packageInfo.scripts["minify"] = `uglifyjs -c -m --comments --source-map "content='./dist/index.js.map'" -o ./dist/index.min.js ./dist/index.js`;
165
+ packageInfo.devDependencies["@rollup/plugin-commonjs"] = "^21.0.1";
166
+ packageInfo.devDependencies["@rollup/plugin-json"] = "^4.1.0";
167
+ packageInfo.devDependencies["@rollup/plugin-multi-entry"] = "^4.1.0";
168
+ packageInfo.devDependencies["@rollup/plugin-node-resolve"] = "^13.1.3";
169
+ packageInfo.devDependencies["rollup"] = "^2.66.1";
170
+ packageInfo.devDependencies["rollup-plugin-sourcemaps"] = "^0.6.3";
171
+ packageInfo.devDependencies["uglify-js"] = "^3.4.9";
172
+ }
173
+
174
+ if (generateTest) {
175
+ packageInfo.module = `./dist-esm/src/index.js`;
176
+ packageInfo.devDependencies["@azure/identity"] = "^2.0.1";
177
+ packageInfo.devDependencies["@azure-tools/test-recorder"] = "^1.0.0";
178
+ packageInfo.devDependencies["mocha"] = "^7.1.1";
179
+ packageInfo.devDependencies["mocha-junit-reporter"] = "^1.18.0";
180
+ packageInfo.devDependencies["cross-env"] = "^7.0.2";
181
+ packageInfo.devDependencies["chai"] = "^4.2.0";
182
+ packageInfo.devDependencies["cross-env"] = "^7.0.2";
183
+ packageInfo.devDependencies["karma-chrome-launcher"] = "^3.0.0";
184
+ packageInfo.devDependencies["karma-coverage"] = "^2.0.0";
185
+ packageInfo.devDependencies["karma-edge-launcher"] = "^0.4.2";
186
+ packageInfo.devDependencies["karma-env-preprocessor"] = "^0.1.1";
187
+ packageInfo.devDependencies["karma-firefox-launcher"] = "^1.1.0";
188
+ packageInfo.devDependencies["karma-ie-launcher"] = "^1.0.0";
189
+ packageInfo.devDependencies["karma-json-preprocessor"] = "^0.3.3";
190
+ packageInfo.devDependencies["karma-json-to-file-reporter"] = "^1.0.1";
191
+ packageInfo.devDependencies["karma-junit-reporter"] = "^2.0.1";
192
+ packageInfo.devDependencies["karma-mocha-reporter"] = "^2.2.5";
193
+ packageInfo.devDependencies["karma-mocha"] = "^2.0.1";
194
+ packageInfo.devDependencies["karma-source-map-support"] = "~1.4.0";
195
+ packageInfo.devDependencies["karma-sourcemap-loader"] = "^0.3.8";
196
+ packageInfo.devDependencies["karma"] = "^6.2.0";
197
+ packageInfo.devDependencies["nyc"] = "^14.0.0";
198
+ packageInfo.devDependencies["source-map-support"] = "^0.5.9";
199
+
200
+ packageInfo.scripts["test"] = "npm run clean && npm run build:test && npm run unit-test";
201
+ packageInfo.scripts["test:node"] = "npm run clean && npm run build:test && npm run unit-test:node";
202
+ packageInfo.scripts["test:browser"] = "tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1";
203
+ packageInfo.scripts["unit-test"] = "npm run unit-test:node && npm run unit-test:browser";
204
+ packageInfo.scripts["unit-test:node"] = "mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"test/{,!(browser)/**/}*.spec.ts\"";
205
+ packageInfo.scripts["unit-test:browser"] = "karma start --single-run";
206
+ packageInfo.scripts["integration-test"] = "npm run integration-test:node && npm run integration-test:browser";
207
+ packageInfo.scripts["integration-test:node"] = "nyc mocha -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 5000000 --full-trace \"dist-esm/test/{,!(browser)/**/}*.spec.js\"";
208
+
209
+ if (azureSdkForJs) {
210
+ packageInfo.scripts["build:test"] = "tsc -p . && dev-tool run bundle";
211
+ packageInfo.scripts["integration-test:browser"] = "dev-tool run test:browser";
212
+ } else {
213
+ packageInfo.scripts["build:test"] = "tsc -p . && rollup -c 2>&1";
214
+ packageInfo.scripts["integration-test:browser"] = "karma start --single-run";
215
+
216
+ }
217
+
218
+ packageInfo["browser"] = {
219
+ "./dist-esm/test/public/utils/env.js":
220
+ "./dist-esm/test/public/utils/env.browser.js"
221
+ };
222
+ }
223
+
224
+ return packageInfo;
118
225
  }
119
226
 
120
227
  /**
@@ -133,12 +240,20 @@ function regularAutorestPackage(
133
240
  azureArm,
134
241
  addCredentials,
135
242
  azureOutputDirectory,
136
- generateTest
243
+ generateTest,
244
+ generateSample,
245
+ coreHttpCompatMode
137
246
  } = getAutorestOptions();
138
247
  const { model } = getSession();
139
248
  const hasLro = hasPollingOperations(model);
140
249
  const hasAsyncIterators =
141
250
  !disablePagingAsyncIterators && clientDetails.options.hasPaging;
251
+ const clientPackageName = packageDetails.name;
252
+ let apiRefUrlQueryParameter: string = "";
253
+ if (packageDetails.version.includes("beta")) {
254
+ apiRefUrlQueryParameter = "?view=azure-node-preview";
255
+ }
256
+ const description = packageDetails.description;
142
257
 
143
258
  const packageInfo: Record<string, any> = {
144
259
  name: packageDetails.name,
@@ -158,6 +273,8 @@ function regularAutorestPackage(
158
273
  ...(!useCoreV2 && { "@azure/core-http": "^2.0.0" }),
159
274
  ...(useCoreV2 && { "@azure/core-client": "^1.0.0" }),
160
275
  ...(useCoreV2 && addCredentials && { "@azure/core-auth": "^1.3.0" }),
276
+ ...(useCoreV2 &&
277
+ coreHttpCompatMode && { "@azure/core-http-compat": "^1.0.0" }),
161
278
  ...(useCoreV2 && {
162
279
  "@azure/core-rest-pipeline": "^1.1.0"
163
280
  }),
@@ -165,7 +282,6 @@ function regularAutorestPackage(
165
282
  "@azure/core-tracing": "1.0.0-preview.13",
166
283
  "@opentelemetry/api": "^0.10.2"
167
284
  }),
168
-
169
285
  tslib: "^2.2.0"
170
286
  },
171
287
  keywords: ["node", "azure", "typescript", "browser", "isomorphic"],
@@ -175,15 +291,16 @@ function regularAutorestPackage(
175
291
  types: `./types/${packageDetails.nameWithoutScope}.d.ts`,
176
292
  devDependencies: {
177
293
  "@microsoft/api-extractor": "^7.18.11",
178
- "@rollup/plugin-commonjs": "11.0.2",
179
- "@rollup/plugin-json": "^4.0.0",
180
- "@rollup/plugin-multi-entry": "^3.0.0",
181
- "@rollup/plugin-node-resolve": "^8.0.0",
294
+ "@rollup/plugin-commonjs": "^21.0.1",
295
+ "@rollup/plugin-json": "^4.1.0",
296
+ "@rollup/plugin-multi-entry": "^4.1.0",
297
+ "@rollup/plugin-node-resolve": "^13.1.3",
182
298
  mkdirp: "^1.0.4",
183
- rollup: "^1.16.3",
184
- "rollup-plugin-sourcemaps": "^0.4.2",
299
+ rollup: "^2.66.1",
300
+ "rollup-plugin-sourcemaps": "^0.6.3",
185
301
  typescript: "~4.2.0",
186
- "uglify-js": "^3.4.9"
302
+ "uglify-js": "^3.4.9",
303
+ rimraf: "^3.0.0"
187
304
  },
188
305
  // TODO: Calculate the SDK path for the package
189
306
  homepage: `https://github.com/Azure/azure-sdk-for-js/tree/main/${azureOutputDirectory}`,
@@ -242,6 +359,14 @@ function regularAutorestPackage(
242
359
  docs: "echo skipped"
243
360
  },
244
361
  sideEffects: false,
362
+ "//metadata": {
363
+ constantPaths: [
364
+ {
365
+ path: `src/${normalizeName(clientDetails.name, NameType.File)}.ts`,
366
+ prefix: "packageDetails"
367
+ }
368
+ ]
369
+ },
245
370
  autoPublish: true
246
371
  };
247
372
  if (generateTest) {
@@ -258,7 +383,19 @@ function regularAutorestPackage(
258
383
  packageInfo.scripts["integration-test"] =
259
384
  "npm run integration-test:node && npm run integration-test:browser";
260
385
  packageInfo.scripts["integration-test:node"] =
261
- "mocha -r esm --require ts-node/register --timeout 1200000 --full-trace test/*.ts";
386
+ "mocha -r esm --require ts-node/register --timeout 1200000 --full-trace test/*.ts --reporter ../../../common/tools/mocha-multi-reporter.js";
387
+ }
388
+ if (
389
+ generateSample &&
390
+ clientDetails.samples &&
391
+ clientDetails.samples.length > 0
392
+ ) {
393
+ packageInfo["//sampleConfiguration"] = {
394
+ productName: description,
395
+ productSlugs: ["azure"],
396
+ disableDocsMs: true,
397
+ apiRefLink: `https://docs.microsoft.com/javascript/api/${clientPackageName}${apiRefUrlQueryParameter}`
398
+ };
262
399
  }
263
400
  return packageInfo;
264
401
  }