@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
@@ -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,17 +66,38 @@ 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}}
97
+
98
+ ### JavaScript Bundle
99
+ To use this client library in the browser, first you need to use a bundler. For details on how to do this, please refer to our [bundling documentation](https://aka.ms/AzureSDKBundling).
100
+
78
101
  ## Key concepts
79
102
 
80
103
  ### {{ clientClassName }}
@@ -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.7",
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,18 +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",
112
- mkdirp: "^1.0.4"
113
- },
114
- sideEffects: false,
115
- autoPublish: true
145
+ eslint: "^7.15.0",
146
+ mkdirp: "^1.0.4",
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
+ }
116
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;
117
225
  }
118
226
 
119
227
  /**
@@ -132,12 +240,20 @@ function regularAutorestPackage(
132
240
  azureArm,
133
241
  addCredentials,
134
242
  azureOutputDirectory,
135
- generateTest
243
+ generateTest,
244
+ generateSample,
245
+ coreHttpCompatMode
136
246
  } = getAutorestOptions();
137
247
  const { model } = getSession();
138
248
  const hasLro = hasPollingOperations(model);
139
249
  const hasAsyncIterators =
140
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;
141
257
 
142
258
  const packageInfo: Record<string, any> = {
143
259
  name: packageDetails.name,
@@ -157,6 +273,8 @@ function regularAutorestPackage(
157
273
  ...(!useCoreV2 && { "@azure/core-http": "^2.0.0" }),
158
274
  ...(useCoreV2 && { "@azure/core-client": "^1.0.0" }),
159
275
  ...(useCoreV2 && addCredentials && { "@azure/core-auth": "^1.3.0" }),
276
+ ...(useCoreV2 &&
277
+ coreHttpCompatMode && { "@azure/core-http-compat": "^1.0.0" }),
160
278
  ...(useCoreV2 && {
161
279
  "@azure/core-rest-pipeline": "^1.1.0"
162
280
  }),
@@ -164,7 +282,6 @@ function regularAutorestPackage(
164
282
  "@azure/core-tracing": "1.0.0-preview.13",
165
283
  "@opentelemetry/api": "^0.10.2"
166
284
  }),
167
-
168
285
  tslib: "^2.2.0"
169
286
  },
170
287
  keywords: ["node", "azure", "typescript", "browser", "isomorphic"],
@@ -174,15 +291,16 @@ function regularAutorestPackage(
174
291
  types: `./types/${packageDetails.nameWithoutScope}.d.ts`,
175
292
  devDependencies: {
176
293
  "@microsoft/api-extractor": "^7.18.11",
177
- "@rollup/plugin-commonjs": "11.0.2",
178
- "@rollup/plugin-json": "^4.0.0",
179
- "@rollup/plugin-multi-entry": "^3.0.0",
180
- "@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",
181
298
  mkdirp: "^1.0.4",
182
- rollup: "^1.16.3",
183
- "rollup-plugin-sourcemaps": "^0.4.2",
299
+ rollup: "^2.66.1",
300
+ "rollup-plugin-sourcemaps": "^0.6.3",
184
301
  typescript: "~4.2.0",
185
- "uglify-js": "^3.4.9"
302
+ "uglify-js": "^3.4.9",
303
+ rimraf: "^3.0.0"
186
304
  },
187
305
  // TODO: Calculate the SDK path for the package
188
306
  homepage: `https://github.com/Azure/azure-sdk-for-js/tree/main/${azureOutputDirectory}`,
@@ -220,7 +338,8 @@ function regularAutorestPackage(
220
338
  "extract-api": "api-extractor run --local",
221
339
  lint: "echo skipped",
222
340
  audit: "echo skipped",
223
- clean: "echo skipped",
341
+ clean:
342
+ "rimraf dist dist-browser dist-esm test-dist temp types *.tgz *.log",
224
343
  "build:node": "echo skipped",
225
344
  "build:browser": "echo skipped",
226
345
  "build:test": "echo skipped",
@@ -240,11 +359,19 @@ function regularAutorestPackage(
240
359
  docs: "echo skipped"
241
360
  },
242
361
  sideEffects: false,
362
+ "//metadata": {
363
+ constantPaths: [
364
+ {
365
+ path: `src/${normalizeName(clientDetails.name, NameType.File)}.ts`,
366
+ prefix: "packageDetails"
367
+ }
368
+ ]
369
+ },
243
370
  autoPublish: true
244
371
  };
245
372
  if (generateTest) {
246
373
  packageInfo.module = `./dist-esm/src/index.js`;
247
- packageInfo.devDependencies["@azure/identity"] = "2.0.0-beta.6";
374
+ packageInfo.devDependencies["@azure/identity"] = "^2.0.1";
248
375
  packageInfo.devDependencies["@azure-tools/test-recorder"] = "^1.0.0";
249
376
  packageInfo.devDependencies["mocha"] = "^7.1.1";
250
377
  packageInfo.devDependencies["cross-env"] = "^7.0.2";
@@ -256,7 +383,19 @@ function regularAutorestPackage(
256
383
  packageInfo.scripts["integration-test"] =
257
384
  "npm run integration-test:node && npm run integration-test:browser";
258
385
  packageInfo.scripts["integration-test:node"] =
259
- "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
+ };
260
399
  }
261
400
  return packageInfo;
262
401
  }