@autorest/typescript 6.0.0-beta.13 → 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 (246) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +41 -5
  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 +3 -0
  8. package/dist/src/conflictResolver.d.ts.map +1 -0
  9. package/dist/src/conflictResolver.js +43 -0
  10. package/dist/src/conflictResolver.js.map +1 -0
  11. package/dist/src/generators/clientFileGenerator.d.ts.map +1 -1
  12. package/dist/src/generators/clientFileGenerator.js +181 -31
  13. package/dist/src/generators/clientFileGenerator.js.map +1 -1
  14. package/dist/src/generators/indexGenerator.d.ts.map +1 -1
  15. package/dist/src/generators/indexGenerator.js +85 -12
  16. package/dist/src/generators/indexGenerator.js.map +1 -1
  17. package/dist/src/generators/mappersGenerator.d.ts.map +1 -1
  18. package/dist/src/generators/mappersGenerator.js +81 -7
  19. package/dist/src/generators/mappersGenerator.js.map +1 -1
  20. package/dist/src/generators/modelsGenerator.d.ts.map +1 -1
  21. package/dist/src/generators/modelsGenerator.js +20 -2
  22. package/dist/src/generators/modelsGenerator.js.map +1 -1
  23. package/dist/src/generators/operationGenerator.js +6 -6
  24. package/dist/src/generators/operationGenerator.js.map +1 -1
  25. package/dist/src/generators/samples/sampleEnv.hbs +4 -0
  26. package/dist/src/generators/samples/sampleEnvGenerator.d.ts +3 -0
  27. package/dist/src/generators/samples/sampleEnvGenerator.d.ts.map +1 -0
  28. package/dist/src/generators/samples/sampleEnvGenerator.js +17 -0
  29. package/dist/src/generators/samples/sampleEnvGenerator.js.map +1 -0
  30. package/dist/src/generators/samples/sampleGenerator.d.ts +13 -0
  31. package/dist/src/generators/samples/sampleGenerator.d.ts.map +1 -0
  32. package/dist/src/generators/samples/sampleGenerator.js +43 -0
  33. package/dist/src/generators/samples/sampleGenerator.js.map +1 -0
  34. package/dist/src/generators/static/README.md.hbs +23 -0
  35. package/dist/src/generators/static/karma.conf.js.hbs +141 -0
  36. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts +3 -0
  37. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts.map +1 -0
  38. package/dist/src/generators/static/karmaConfigFileGenerator.js +23 -0
  39. package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -0
  40. package/dist/src/generators/static/packageFileGenerator.d.ts.map +1 -1
  41. package/dist/src/generators/static/packageFileGenerator.js +100 -25
  42. package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
  43. package/dist/src/generators/static/readmeFileGenerator.d.ts.map +1 -1
  44. package/dist/src/generators/static/readmeFileGenerator.js +5 -1
  45. package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
  46. package/dist/src/generators/static/rollupConfigFileGenerator.d.ts.map +1 -1
  47. package/dist/src/generators/static/rollupConfigFileGenerator.js +7 -70
  48. package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
  49. package/dist/src/generators/static/samples.ts.hbs +49 -0
  50. package/dist/src/generators/static/tsConfigFileGenerator.d.ts.map +1 -1
  51. package/dist/src/generators/static/tsConfigFileGenerator.js +9 -10
  52. package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
  53. package/dist/src/generators/test/envBrowserFileGenerator.d.ts +3 -0
  54. package/dist/src/generators/test/envBrowserFileGenerator.d.ts.map +1 -0
  55. package/dist/src/generators/test/envBrowserFileGenerator.js +15 -0
  56. package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -0
  57. package/dist/src/generators/test/envFileGenerator.d.ts +3 -0
  58. package/dist/src/generators/test/envFileGenerator.d.ts.map +1 -0
  59. package/dist/src/generators/test/envFileGenerator.js +23 -0
  60. package/dist/src/generators/test/envFileGenerator.js.map +1 -0
  61. package/dist/src/generators/test/recordedClientFileGenerator.d.ts +3 -0
  62. package/dist/src/generators/test/recordedClientFileGenerator.d.ts.map +1 -0
  63. package/dist/src/generators/test/recordedClientFileGenerator.js +23 -0
  64. package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -0
  65. package/dist/src/generators/test/rlcEnv.ts.hbs +3 -0
  66. package/dist/src/generators/test/rlcRecordedClient.ts.hbs +35 -0
  67. package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +19 -0
  68. package/dist/src/generators/{static → test}/sampleTest.ts.hbs +0 -0
  69. package/dist/src/generators/test/sampleTestGenerator.d.ts.map +1 -1
  70. package/dist/src/generators/test/sampleTestGenerator.js +23 -7
  71. package/dist/src/generators/test/sampleTestGenerator.js.map +1 -1
  72. package/dist/src/generators/utils/pagingOperations.d.ts +5 -0
  73. package/dist/src/generators/utils/pagingOperations.d.ts.map +1 -1
  74. package/dist/src/generators/utils/pagingOperations.js +2 -1
  75. package/dist/src/generators/utils/pagingOperations.js.map +1 -1
  76. package/dist/src/main.d.ts +2 -2
  77. package/dist/src/main.d.ts.map +1 -1
  78. package/dist/src/main.js +3 -3
  79. package/dist/src/main.js.map +1 -1
  80. package/dist/src/models/clientDetails.d.ts +3 -0
  81. package/dist/src/models/clientDetails.d.ts.map +1 -1
  82. package/dist/src/models/modelDetails.d.ts +2 -2
  83. package/dist/src/models/modelDetails.d.ts.map +1 -1
  84. package/dist/src/models/operationDetails.d.ts +1 -0
  85. package/dist/src/models/operationDetails.d.ts.map +1 -1
  86. package/dist/src/models/sampleDetails.d.ts +22 -0
  87. package/dist/src/models/sampleDetails.d.ts.map +1 -0
  88. package/dist/src/models/sampleDetails.js +3 -0
  89. package/dist/src/models/sampleDetails.js.map +1 -0
  90. package/dist/src/restLevelClient/generateClient.d.ts +1 -1
  91. package/dist/src/restLevelClient/generateClient.d.ts.map +1 -1
  92. package/dist/src/restLevelClient/generateClient.js +48 -159
  93. package/dist/src/restLevelClient/generateClient.js.map +1 -1
  94. package/dist/src/restLevelClient/generateClientDefinition.d.ts +6 -0
  95. package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -0
  96. package/dist/src/restLevelClient/generateClientDefinition.js +231 -0
  97. package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -0
  98. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts +8 -0
  99. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts.map +1 -0
  100. package/dist/src/restLevelClient/generateMethodShortcuts.js +70 -0
  101. package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -0
  102. package/dist/src/restLevelClient/generateObjectTypes.d.ts +3 -3
  103. package/dist/src/restLevelClient/generateObjectTypes.d.ts.map +1 -1
  104. package/dist/src/restLevelClient/generateObjectTypes.js +28 -20
  105. package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
  106. package/dist/src/restLevelClient/generatePagingHelper.d.ts.map +1 -1
  107. package/dist/src/restLevelClient/generatePagingHelper.js +2 -1
  108. package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -1
  109. package/dist/src/restLevelClient/generateParameterTypes.d.ts.map +1 -1
  110. package/dist/src/restLevelClient/generateParameterTypes.js +246 -36
  111. package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
  112. package/dist/src/restLevelClient/generatePollingHelper.d.ts.map +1 -1
  113. package/dist/src/restLevelClient/generatePollingHelper.js +3 -1
  114. package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -1
  115. package/dist/src/restLevelClient/generateResponseTypes.d.ts.map +1 -1
  116. package/dist/src/restLevelClient/generateResponseTypes.js +23 -14
  117. package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
  118. package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
  119. package/dist/src/restLevelClient/generateRestLevel.js +19 -3
  120. package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
  121. package/dist/src/restLevelClient/generateSchemaTypes.d.ts.map +1 -1
  122. package/dist/src/restLevelClient/generateSchemaTypes.js +29 -7
  123. package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
  124. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts +4 -0
  125. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts.map +1 -0
  126. package/dist/src/restLevelClient/generateTopLevelIndexFile.js +41 -0
  127. package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -0
  128. package/dist/src/restLevelClient/getPropertySignature.d.ts +2 -2
  129. package/dist/src/restLevelClient/getPropertySignature.d.ts.map +1 -1
  130. package/dist/src/restLevelClient/getPropertySignature.js +2 -2
  131. package/dist/src/restLevelClient/getPropertySignature.js.map +1 -1
  132. package/dist/src/restLevelClient/helpers/modelHelpers.d.ts +4 -0
  133. package/dist/src/restLevelClient/helpers/modelHelpers.d.ts.map +1 -0
  134. package/dist/src/restLevelClient/helpers/modelHelpers.js +19 -0
  135. package/dist/src/restLevelClient/helpers/modelHelpers.js.map +1 -0
  136. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts +10 -0
  137. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts.map +1 -0
  138. package/dist/src/restLevelClient/helpers/operationHelpers.js +64 -0
  139. package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -0
  140. package/dist/src/restLevelClient/interfaces.d.ts +24 -0
  141. package/dist/src/restLevelClient/interfaces.d.ts.map +1 -0
  142. package/dist/src/restLevelClient/interfaces.js +3 -0
  143. package/dist/src/restLevelClient/interfaces.js.map +1 -0
  144. package/dist/src/restLevelClient/operationHelpers.d.ts.map +1 -1
  145. package/dist/src/restLevelClient/operationHelpers.js +4 -1
  146. package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
  147. package/dist/src/restLevelClient/schemaHelpers.d.ts +8 -2
  148. package/dist/src/restLevelClient/schemaHelpers.d.ts.map +1 -1
  149. package/dist/src/restLevelClient/schemaHelpers.js +19 -9
  150. package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
  151. package/dist/src/transforms/operationTransforms.d.ts.map +1 -1
  152. package/dist/src/transforms/operationTransforms.js +4 -1
  153. package/dist/src/transforms/operationTransforms.js.map +1 -1
  154. package/dist/src/transforms/parameterTransforms.d.ts.map +1 -1
  155. package/dist/src/transforms/parameterTransforms.js +1 -1
  156. package/dist/src/transforms/parameterTransforms.js.map +1 -1
  157. package/dist/src/transforms/samplesTransforms.d.ts +7 -0
  158. package/dist/src/transforms/samplesTransforms.d.ts.map +1 -0
  159. package/dist/src/transforms/samplesTransforms.js +283 -0
  160. package/dist/src/transforms/samplesTransforms.js.map +1 -0
  161. package/dist/src/transforms/transforms.d.ts +1 -2
  162. package/dist/src/transforms/transforms.d.ts.map +1 -1
  163. package/dist/src/transforms/transforms.js +4 -3
  164. package/dist/src/transforms/transforms.js.map +1 -1
  165. package/dist/src/typescriptGenerator.d.ts +2 -2
  166. package/dist/src/typescriptGenerator.d.ts.map +1 -1
  167. package/dist/src/typescriptGenerator.js +20 -29
  168. package/dist/src/typescriptGenerator.js.map +1 -1
  169. package/dist/src/utils/autorestOptions.d.ts +2 -2
  170. package/dist/src/utils/autorestOptions.d.ts.map +1 -1
  171. package/dist/src/utils/autorestOptions.js +70 -30
  172. package/dist/src/utils/autorestOptions.js.map +1 -1
  173. package/dist/src/utils/nameUtils.d.ts +6 -2
  174. package/dist/src/utils/nameUtils.d.ts.map +1 -1
  175. package/dist/src/utils/nameUtils.js +11 -6
  176. package/dist/src/utils/nameUtils.js.map +1 -1
  177. package/dist/src/utils/schemaHelpers.js +8 -3
  178. package/dist/src/utils/schemaHelpers.js.map +1 -1
  179. package/package.json +18 -12
  180. package/src/autorestSession.ts +16 -15
  181. package/src/conflictResolver.ts +61 -0
  182. package/src/generators/clientFileGenerator.ts +262 -33
  183. package/src/generators/indexGenerator.ts +98 -13
  184. package/src/generators/mappersGenerator.ts +108 -8
  185. package/src/generators/modelsGenerator.ts +21 -1
  186. package/src/generators/operationGenerator.ts +7 -7
  187. package/src/generators/samples/sampleEnv.hbs +4 -0
  188. package/src/generators/samples/sampleEnvGenerator.ts +14 -0
  189. package/src/generators/samples/sampleGenerator.ts +50 -0
  190. package/src/generators/static/README.md.hbs +23 -0
  191. package/src/generators/static/karma.conf.js.hbs +141 -0
  192. package/src/generators/static/karmaConfigFileGenerator.ts +20 -0
  193. package/src/generators/static/packageFileGenerator.ts +113 -28
  194. package/src/generators/static/readmeFileGenerator.ts +8 -2
  195. package/src/generators/static/rollupConfigFileGenerator.ts +7 -70
  196. package/src/generators/static/samples.ts.hbs +49 -0
  197. package/src/generators/static/tsConfigFileGenerator.ts +12 -12
  198. package/src/generators/test/envBrowserFileGenerator.ts +14 -0
  199. package/src/generators/test/envFileGenerator.ts +22 -0
  200. package/src/generators/test/recordedClientFileGenerator.ts +22 -0
  201. package/src/generators/test/rlcEnv.ts.hbs +3 -0
  202. package/src/generators/test/rlcRecordedClient.ts.hbs +35 -0
  203. package/src/generators/test/rlcSampleTest.spec.ts.hbs +19 -0
  204. package/src/generators/{static → test}/sampleTest.ts.hbs +0 -0
  205. package/src/generators/test/sampleTestGenerator.ts +23 -8
  206. package/src/generators/utils/pagingOperations.ts +1 -1
  207. package/src/main.ts +9 -5
  208. package/src/models/clientDetails.ts +3 -0
  209. package/src/models/modelDetails.ts +2 -2
  210. package/src/models/operationDetails.ts +1 -0
  211. package/src/models/sampleDetails.ts +22 -0
  212. package/src/restLevelClient/generateClient.ts +55 -243
  213. package/src/restLevelClient/generateClientDefinition.ts +343 -0
  214. package/src/restLevelClient/generateMethodShortcuts.ts +121 -0
  215. package/src/restLevelClient/generateObjectTypes.ts +57 -20
  216. package/src/restLevelClient/generatePagingHelper.ts +3 -2
  217. package/src/restLevelClient/generateParameterTypes.ts +377 -48
  218. package/src/restLevelClient/generatePollingHelper.ts +3 -3
  219. package/src/restLevelClient/generateResponseTypes.ts +30 -16
  220. package/src/restLevelClient/generateRestLevel.ts +24 -6
  221. package/src/restLevelClient/generateSchemaTypes.ts +43 -8
  222. package/src/restLevelClient/generateTopLevelIndexFile.ts +41 -0
  223. package/src/restLevelClient/getPropertySignature.ts +3 -2
  224. package/src/restLevelClient/helpers/modelHelpers.ts +15 -0
  225. package/src/restLevelClient/helpers/operationHelpers.ts +93 -0
  226. package/src/restLevelClient/interfaces.ts +26 -0
  227. package/src/restLevelClient/operationHelpers.ts +8 -2
  228. package/src/restLevelClient/schemaHelpers.ts +25 -7
  229. package/src/transforms/operationTransforms.ts +6 -1
  230. package/src/transforms/parameterTransforms.ts +3 -1
  231. package/src/transforms/samplesTransforms.ts +300 -0
  232. package/src/transforms/transforms.ts +6 -6
  233. package/src/typescriptGenerator.ts +22 -46
  234. package/src/utils/autorestOptions.ts +121 -58
  235. package/src/utils/nameUtils.ts +18 -9
  236. package/src/utils/schemaHelpers.ts +2 -2
  237. package/dist/src/generators/clientContextFileGenerator.d.ts +0 -5
  238. package/dist/src/generators/clientContextFileGenerator.d.ts.map +0 -1
  239. package/dist/src/generators/clientContextFileGenerator.js +0 -263
  240. package/dist/src/generators/clientContextFileGenerator.js.map +0 -1
  241. package/dist/src/restLevelClient/helpers/getOperationParameters.d.ts +0 -6
  242. package/dist/src/restLevelClient/helpers/getOperationParameters.d.ts.map +0 -1
  243. package/dist/src/restLevelClient/helpers/getOperationParameters.js +0 -29
  244. package/dist/src/restLevelClient/helpers/getOperationParameters.js.map +0 -1
  245. package/src/generators/clientContextFileGenerator.ts +0 -405
  246. package/src/restLevelClient/helpers/getOperationParameters.ts +0 -34
@@ -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,11 +49,11 @@ 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 } = 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"}`,
58
59
  version: `${packageDetails.version}`,
@@ -61,7 +62,7 @@ function restLevelPackage(packageDetails: PackageDetails) {
61
62
  types: `./types/${packageDetails.nameWithoutScope}.d.ts`,
62
63
  scripts: {
63
64
  test: 'echo "Error: no test specified" && exit 1',
64
- build: "tsc --build && npm run extract-api",
65
+ build: "npm run clean && tsc --build && npm run extract-api",
65
66
  "extract-api": "mkdirp ./review && api-extractor run --local",
66
67
  pack: "npm pack 2>&1",
67
68
  lint: "echo skipped",
@@ -74,7 +75,6 @@ function restLevelPackage(packageDetails: PackageDetails) {
74
75
  "check-format": "echo skipped",
75
76
  "execute:samples": "echo skipped",
76
77
  format: "echo skipped",
77
- prebuild: "echo skipped",
78
78
  "test:node": "echo skipped",
79
79
  "test:browser": "echo skipped",
80
80
  "unit-test": "echo skipped",
@@ -87,14 +87,14 @@ function restLevelPackage(packageDetails: PackageDetails) {
87
87
  },
88
88
  keywords: [],
89
89
  author: "",
90
- license: "ISC",
90
+ license: "MIT",
91
91
  engines: {
92
92
  node: ">=12.0.0"
93
93
  },
94
94
  dependencies: {
95
- "@azure-rest/core-client": "1.0.0-beta.6",
95
+ "@azure-rest/core-client": "1.0.0-beta.8",
96
96
  "@azure/core-auth": "^1.3.0",
97
- "@azure/core-rest-pipeline": "^1.0.4",
97
+ "@azure/core-rest-pipeline": "^1.3.0",
98
98
  ...(hasPaging && {
99
99
  "@azure/core-paging": "^1.2.0"
100
100
  }),
@@ -104,17 +104,72 @@ function restLevelPackage(packageDetails: PackageDetails) {
104
104
  },
105
105
  devDependencies: {
106
106
  autorest: "latest",
107
- "@microsoft/api-extractor": "^7.13.2",
107
+ "@microsoft/api-extractor": "^7.18.11",
108
108
  "@types/node": "^14.14.22",
109
109
  dotenv: "^8.2.0",
110
- prettier: "^2.2.1",
110
+ prettier: "^2.5.1",
111
111
  "ts-node": "^9.1.1",
112
112
  typescript: "~4.2.4",
113
- mkdirp: "^1.0.4"
113
+ mkdirp: "^1.0.4",
114
+ rimraf: "^3.0.0"
114
115
  },
115
116
  sideEffects: false,
116
117
  autoPublish: true
117
118
  };
119
+
120
+ if (generateTest) {
121
+ packageInfo.module = `./dist-esm/src/index.js`;
122
+ packageInfo.devDependencies["@azure/identity"] = "^2.0.1";
123
+ packageInfo.devDependencies["@azure-tools/test-recorder"] = "^1.0.0";
124
+ packageInfo.devDependencies["mocha"] = "^7.1.1";
125
+ packageInfo.devDependencies["mocha-junit-reporter"] = "^1.18.0";
126
+ packageInfo.devDependencies["cross-env"] = "^7.0.2";
127
+ packageInfo.devDependencies["chai"] = "^4.2.0";
128
+ packageInfo.devDependencies["cross-env"] = "^7.0.2";
129
+ packageInfo.devDependencies["cross-env"] = "^7.0.2";
130
+ packageInfo.devDependencies["karma-chrome-launcher"] = "^3.0.0";
131
+ packageInfo.devDependencies["karma-coverage"] = "^2.0.0";
132
+ packageInfo.devDependencies["karma-edge-launcher"] = "^0.4.2";
133
+ packageInfo.devDependencies["karma-env-preprocessor"] = "^0.1.1";
134
+ packageInfo.devDependencies["karma-firefox-launcher"] = "^1.1.0";
135
+ packageInfo.devDependencies["karma-ie-launcher"] = "^1.0.0";
136
+ packageInfo.devDependencies["karma-json-preprocessor"] = "^0.3.3";
137
+ packageInfo.devDependencies["karma-json-to-file-reporter"] = "^1.0.1";
138
+ packageInfo.devDependencies["karma-junit-reporter"] = "^2.0.1";
139
+ packageInfo.devDependencies["karma-mocha-reporter"] = "^2.2.5";
140
+ packageInfo.devDependencies["karma-mocha"] = "^2.0.1";
141
+ packageInfo.devDependencies["karma-source-map-support"] = "~1.4.0";
142
+ packageInfo.devDependencies["karma-sourcemap-loader"] = "^0.3.8";
143
+ packageInfo.devDependencies["karma"] = "^6.2.0";
144
+ packageInfo.devDependencies["nyc"] = "^14.0.0";
145
+ packageInfo.devDependencies["source-map-support"] = "^0.5.9";
146
+
147
+ packageInfo.scripts["test"] =
148
+ "npm run clean && npm run build:test && npm run unit-test";
149
+ packageInfo.scripts["test:node"] =
150
+ "npm run clean && npm run build:test && npm run unit-test:node";
151
+ packageInfo.scripts["test:browser"] =
152
+ "tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1";
153
+ packageInfo.scripts["build:test"] = "tsc -p . && rollup -c 2>&1";
154
+ packageInfo.scripts["unit-test"] =
155
+ "npm run unit-test:node && npm run unit-test:browser";
156
+ packageInfo.scripts["unit-test:node"] =
157
+ 'mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace "test/{,!(browser)/**/}*.spec.ts"';
158
+ packageInfo.scripts["unit-test:browser"] = "karma start --single-run";
159
+ packageInfo.scripts["integration-test"] =
160
+ "npm run integration-test:node && npm run integration-test:browser";
161
+ packageInfo.scripts["integration-test:browser"] =
162
+ "karma start --single-run";
163
+ packageInfo.scripts["integration-test:node"] =
164
+ '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"';
165
+
166
+ packageInfo["browser"] = {
167
+ "./dist-esm/test/public/utils/env.js":
168
+ "./dist-esm/test/public/utils/env.browser.js"
169
+ };
170
+ }
171
+
172
+ return packageInfo;
118
173
  }
119
174
 
120
175
  /**
@@ -133,12 +188,20 @@ function regularAutorestPackage(
133
188
  azureArm,
134
189
  addCredentials,
135
190
  azureOutputDirectory,
136
- generateTest
191
+ generateTest,
192
+ generateSample,
193
+ coreHttpCompatMode
137
194
  } = getAutorestOptions();
138
195
  const { model } = getSession();
139
196
  const hasLro = hasPollingOperations(model);
140
197
  const hasAsyncIterators =
141
198
  !disablePagingAsyncIterators && clientDetails.options.hasPaging;
199
+ const clientPackageName = packageDetails.name;
200
+ let apiRefUrlQueryParameter: string = "";
201
+ if (packageDetails.version.includes("beta")) {
202
+ apiRefUrlQueryParameter = "?view=azure-node-preview";
203
+ }
204
+ const description = packageDetails.description;
142
205
 
143
206
  const packageInfo: Record<string, any> = {
144
207
  name: packageDetails.name,
@@ -154,18 +217,19 @@ function regularAutorestPackage(
154
217
  dependencies: {
155
218
  ...(hasLro && { "@azure/core-lro": "^2.2.0" }),
156
219
  ...(hasLro && { "@azure/abort-controller": "^1.0.0" }),
157
- ...(hasAsyncIterators && { "@azure/core-paging": "^1.1.1" }),
158
- ...(!useCoreV2 && { "@azure/core-http": "^1.2.4" }),
220
+ ...(hasAsyncIterators && { "@azure/core-paging": "^1.2.0" }),
221
+ ...(!useCoreV2 && { "@azure/core-http": "^2.0.0" }),
159
222
  ...(useCoreV2 && { "@azure/core-client": "^1.0.0" }),
160
223
  ...(useCoreV2 && addCredentials && { "@azure/core-auth": "^1.3.0" }),
224
+ ...(useCoreV2 &&
225
+ coreHttpCompatMode && { "@azure/core-http-compat": "^1.0.0" }),
161
226
  ...(useCoreV2 && {
162
227
  "@azure/core-rest-pipeline": "^1.1.0"
163
228
  }),
164
229
  ...(tracingInfo && {
165
- "@azure/core-tracing": "1.0.0-preview.11",
230
+ "@azure/core-tracing": "1.0.0-preview.13",
166
231
  "@opentelemetry/api": "^0.10.2"
167
232
  }),
168
-
169
233
  tslib: "^2.2.0"
170
234
  },
171
235
  keywords: ["node", "azure", "typescript", "browser", "isomorphic"],
@@ -174,16 +238,17 @@ function regularAutorestPackage(
174
238
  module: `./dist-esm/index.js`,
175
239
  types: `./types/${packageDetails.nameWithoutScope}.d.ts`,
176
240
  devDependencies: {
177
- "@microsoft/api-extractor": "7.7.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",
241
+ "@microsoft/api-extractor": "^7.18.11",
242
+ "@rollup/plugin-commonjs": "^21.0.1",
243
+ "@rollup/plugin-json": "^4.1.0",
244
+ "@rollup/plugin-multi-entry": "^4.1.0",
245
+ "@rollup/plugin-node-resolve": "^13.1.3",
182
246
  mkdirp: "^1.0.4",
183
- rollup: "^1.16.3",
184
- "rollup-plugin-sourcemaps": "^0.4.2",
247
+ rollup: "^2.66.1",
248
+ "rollup-plugin-sourcemaps": "^0.6.3",
185
249
  typescript: "~4.2.0",
186
- "uglify-js": "^3.4.9"
250
+ "uglify-js": "^3.4.9",
251
+ rimraf: "^3.0.0"
187
252
  },
188
253
  // TODO: Calculate the SDK path for the package
189
254
  homepage: `https://github.com/Azure/azure-sdk-for-js/tree/main/${azureOutputDirectory}`,
@@ -214,14 +279,15 @@ function regularAutorestPackage(
214
279
  ],
215
280
  scripts: {
216
281
  build:
217
- "tsc && rollup -c 2>&1 && npm run minify && mkdirp ./review && npm run extract-api",
282
+ "npm run clean && tsc && rollup -c 2>&1 && npm run minify && mkdirp ./review && npm run extract-api",
218
283
  minify: `uglifyjs -c -m --comments --source-map "content='./dist/index.js.map'" -o ./dist/index.min.js ./dist/index.js`,
219
284
  prepack: "npm run build",
220
285
  pack: "npm pack 2>&1",
221
286
  "extract-api": "api-extractor run --local",
222
287
  lint: "echo skipped",
223
288
  audit: "echo skipped",
224
- clean: "echo skipped",
289
+ clean:
290
+ "rimraf dist dist-browser dist-esm test-dist temp types *.tgz *.log",
225
291
  "build:node": "echo skipped",
226
292
  "build:browser": "echo skipped",
227
293
  "build:test": "echo skipped",
@@ -230,7 +296,6 @@ function regularAutorestPackage(
230
296
  "execute:samples": "echo skipped",
231
297
  format: "echo skipped",
232
298
  test: "echo skipped",
233
- prebuild: "echo skipped",
234
299
  "test:node": "echo skipped",
235
300
  "test:browser": "echo skipped",
236
301
  "unit-test": "echo skipped",
@@ -242,11 +307,19 @@ function regularAutorestPackage(
242
307
  docs: "echo skipped"
243
308
  },
244
309
  sideEffects: false,
310
+ "//metadata": {
311
+ constantPaths: [
312
+ {
313
+ path: `src/${normalizeName(clientDetails.name, NameType.File)}.ts`,
314
+ prefix: "packageDetails"
315
+ }
316
+ ]
317
+ },
245
318
  autoPublish: true
246
319
  };
247
320
  if (generateTest) {
248
321
  packageInfo.module = `./dist-esm/src/index.js`;
249
- packageInfo.devDependencies["@azure/identity"] = "2.0.0-beta.6";
322
+ packageInfo.devDependencies["@azure/identity"] = "^2.0.1";
250
323
  packageInfo.devDependencies["@azure-tools/test-recorder"] = "^1.0.0";
251
324
  packageInfo.devDependencies["mocha"] = "^7.1.1";
252
325
  packageInfo.devDependencies["cross-env"] = "^7.0.2";
@@ -258,7 +331,19 @@ function regularAutorestPackage(
258
331
  packageInfo.scripts["integration-test"] =
259
332
  "npm run integration-test:node && npm run integration-test:browser";
260
333
  packageInfo.scripts["integration-test:node"] =
261
- "mocha -r esm --require ts-node/register --timeout 1200000 --full-trace test/*.ts";
334
+ "mocha -r esm --require ts-node/register --timeout 1200000 --full-trace test/*.ts --reporter ../../../common/tools/mocha-multi-reporter.js";
335
+ }
336
+ if (
337
+ generateSample &&
338
+ clientDetails.samples &&
339
+ clientDetails.samples.length > 0
340
+ ) {
341
+ packageInfo["//sampleConfiguration"] = {
342
+ productName: description,
343
+ productSlugs: ["azure"],
344
+ disableDocsMs: true,
345
+ apiRefLink: `https://docs.microsoft.com/javascript/api/${clientPackageName}${apiRefUrlQueryParameter}`
346
+ };
262
347
  }
263
348
  return packageInfo;
264
349
  }
@@ -50,7 +50,7 @@ interface Metadata {
50
50
  /** Indicates if the package is a test/releasable package. */
51
51
  isReleasablePackage?: boolean;
52
52
  /** indicate if the package is management plane SDK */
53
- azureArm?: boolean
53
+ azureArm?: boolean;
54
54
  }
55
55
 
56
56
  /**
@@ -100,6 +100,12 @@ function createMetadata(
100
100
  : simpleServiceName;
101
101
  const identityPackageURL =
102
102
  repoURL && `${repoURL}/tree/main/sdk/identity/identity`;
103
+
104
+ var apiRefUrlQueryParameter: string = "";
105
+ if (packageDetails.version.includes("beta")) {
106
+ apiRefUrlQueryParameter = "?view=azure-node-preview";
107
+ }
108
+
103
109
  return {
104
110
  serviceName: serviceName,
105
111
  clientPackageName: clientPackageName,
@@ -119,7 +125,7 @@ function createMetadata(
119
125
  clientDescriptiveName: `${serviceName} client`,
120
126
  description: clientDetails.info?.description,
121
127
  apiRefURL: azureHuh
122
- ? `https://docs.microsoft.com/javascript/api/${clientPackageName}`
128
+ ? `https://docs.microsoft.com/javascript/api/${clientPackageName}${apiRefUrlQueryParameter}`
123
129
  : undefined,
124
130
  packageNPMURL: `https://www.npmjs.com/package/${clientPackageName}`,
125
131
  contributingGuideURL: repoURL && `${repoURL}/blob/main/CONTRIBUTING.md`,
@@ -24,62 +24,14 @@ export function generateRollupConfig(project: Project) {
24
24
 
25
25
  import nodeBuiltins from "builtin-modules";
26
26
 
27
- /**
28
- * Gets the proper configuration needed for rollup's commonJS plugin for @opentelemetry/api.
29
- *
30
- * NOTE: this manual configuration is only needed because OpenTelemetry uses an
31
- * __exportStar downleveled helper function to declare its exports which confuses
32
- * rollup's automatic discovery mechanism.
33
- *
34
- * @returns an object reference that can be \`...\`'d into your cjs() configuration.
35
- */
36
- export function openTelemetryCommonJs() {
37
- const namedExports = {};
38
-
39
- for (const key of [
40
- "@opentelemetry/api",
41
- "@azure/core-tracing/node_modules/@opentelemetry/api"
42
- ]) {
43
- namedExports[key] = [
44
- "SpanKind",
45
- "TraceFlags",
46
- "getSpan",
47
- "setSpan",
48
- "SpanStatusCode",
49
- "getSpanContext",
50
- "setSpanContext"
51
- ];
52
- }
53
-
54
- const releasedOpenTelemetryVersions = ["0.10.2", "1.0.0-rc.0"];
55
-
56
- for (const version of releasedOpenTelemetryVersions) {
57
- namedExports[
58
- // working around a limitation in the rollup common.js plugin - it's not able to resolve these modules so the named exports listed above will not get applied. We have to drill down to the actual path.
59
- \`../../../common/temp/node_modules/.pnpm/@opentelemetry/api@\${version}/node_modules/@opentelemetry/api/build/src/index.js\`
60
- ] = [
61
- "SpanKind",
62
- "TraceFlags",
63
- "getSpan",
64
- "setSpan",
65
- "StatusCode",
66
- "CanonicalCode",
67
- "getSpanContext",
68
- "setSpanContext"
69
- ];
70
- }
71
-
72
- return namedExports;
73
- }
74
-
75
27
  // #region Warning Handler
76
28
 
77
29
  /**
78
- * A function that can determine whether a rollupwarning should be ignored. If
30
+ * A function that can determine whether a rollup warning should be ignored. If
79
31
  * the function returns \`true\`, then the warning will not be displayed.
80
32
  */
81
33
 
82
- function ignoreNiseSinonEvalWarnings(warning) {
34
+ function ignoreNiseSinonEval(warning) {
83
35
  return (
84
36
  warning.code === "EVAL" &&
85
37
  (warning.id && ((warning.id.includes("node_modules/nise")) ||
@@ -87,7 +39,7 @@ export function generateRollupConfig(project: Project) {
87
39
  );
88
40
  }
89
41
 
90
- function ignoreChaiCircularDependencyWarnings(warning) {
42
+ function ignoreChaiCircularDependency(warning) {
91
43
  return (
92
44
  warning.code === "CIRCULAR_DEPENDENCY" &&
93
45
  (warning.importer && warning.importer.includes("node_modules/chai") === true)
@@ -95,8 +47,8 @@ export function generateRollupConfig(project: Project) {
95
47
  }
96
48
 
97
49
  const warningInhibitors = [
98
- ignoreChaiCircularDependencyWarnings,
99
- ignoreNiseSinonEvalWarnings
50
+ ignoreChaiCircularDependency,
51
+ ignoreNiseSinonEval
100
52
  ];
101
53
 
102
54
  /**
@@ -131,22 +83,7 @@ export function generateRollupConfig(project: Project) {
131
83
  nodeResolve({
132
84
  mainFields: ["module", "browser"]
133
85
  }),
134
- cjs({
135
- namedExports: {
136
- // Chai's strange internal architecture makes it impossible to statically
137
- // analyze its exports.
138
- chai: [
139
- "version",
140
- "use",
141
- "util",
142
- "config",
143
- "expect",
144
- "should",
145
- "assert"
146
- ],
147
- ...openTelemetryCommonJs()
148
- }
149
- }),
86
+ cjs(),
150
87
  json(),
151
88
  sourcemaps()
152
89
  //viz({ filename: "dist-test/browser-stats.html", sourcemap: true })
@@ -185,7 +122,7 @@ export function generateRollupConfig(project: Project) {
185
122
  ],
186
123
  output: { file: "dist/index.js", format: "cjs", sourcemap: true },
187
124
  preserveSymlinks: false,
188
- plugins: [sourcemaps(), nodeResolve(), cjs()]
125
+ plugins: [sourcemaps(), nodeResolve()]
189
126
  };
190
127
 
191
128
  const config = [baseConfig];
@@ -0,0 +1,49 @@
1
+
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ import {
5
+ {{#if importedTypes.length }}
6
+ {{#each importedTypes}}
7
+ {{this}},
8
+ {{/each}}
9
+ {{/if}}
10
+ {{clientClassName}},
11
+ } from "{{clientPackageName}}";
12
+ import { DefaultAzureCredential } from "@azure/identity";
13
+
14
+ {{#each samples}}
15
+ /**
16
+ * This sample demonstrates how to {{this.operationDescription}}
17
+ *
18
+ * @summary {{this.operationDescription}}
19
+ * x-ms-original-file: {{this.originalFileLocation}}
20
+ */
21
+ async function {{this.sampleFunctionName}}() {
22
+ {{#each this.clientParamAssignments}}
23
+ {{this}}
24
+ {{/each}}
25
+ {{#each this.methodParamAssignments}}
26
+ {{this}}
27
+ {{/each}}
28
+ const credential = new DefaultAzureCredential();
29
+ const client = new {{this.clientClassName}}({{this.clientParameterNames}});
30
+ {{#if this.isPaging}}
31
+ const resArray = new Array();
32
+ for await (let item of client{{#unless this.isTopLevel}}.{{this.operationGroupName}}{{/unless}}.{{this.operationName}}({{this.methodParameterNames}})){
33
+ resArray.push(item);
34
+ }
35
+ console.log(resArray);
36
+ {{else}}
37
+ const result = await client
38
+ {{#unless this.isTopLevel}}
39
+ .{{this.operationGroupName}}
40
+ {{/unless}}
41
+ .{{this.operationName}}({{this.methodParameterNames}});
42
+ console.log(result);
43
+
44
+ {{/if}}
45
+ }
46
+
47
+ {{this.sampleFunctionName}}().catch(console.error);
48
+
49
+ {{/each}}
@@ -4,7 +4,7 @@
4
4
  import { Project } from "ts-morph";
5
5
  import { getAutorestOptions } from "../../autorestSession";
6
6
 
7
- const highLevelTsConfig = {
7
+ const highLevelTsConfig: Record<string, any> = {
8
8
  compilerOptions: {
9
9
  module: "es6",
10
10
  moduleResolution: "node",
@@ -34,28 +34,28 @@ const restLevelTsConfig = {
34
34
  declarationMap: true,
35
35
  outDir: "./dist-esm"
36
36
  },
37
- exclude: [
38
- "node_modules",
39
- "types",
40
- "temp",
41
- "browser",
42
- "dist",
43
- "dist-esm",
44
- "./samples/**/*.ts"
45
- ]
37
+ include: ["src/**/*.ts"]
46
38
  };
47
39
 
48
40
  export function generateTsConfig(project: Project) {
49
- const { generateMetadata, restLevelClient, generateTest } = getAutorestOptions();
41
+ const { generateMetadata, restLevelClient, generateTest, packageDetails, generateSample } = getAutorestOptions();
50
42
 
51
43
  if (!generateMetadata) {
52
44
  return;
53
45
  }
54
46
 
47
+ const clientPackageName = packageDetails.name;
55
48
  if (generateTest) {
56
49
  highLevelTsConfig.include.push("./test/**/*.ts");
50
+ restLevelTsConfig.include.push("./test/**/*.ts");
57
51
  }
58
-
52
+
53
+ if (generateSample) {
54
+ highLevelTsConfig.include.push("samples-dev/**/*.ts");
55
+ highLevelTsConfig.compilerOptions["paths"] = {};
56
+ highLevelTsConfig.compilerOptions["paths"][clientPackageName] = ["./src/index"];
57
+ }
58
+
59
59
  const tsConfigContents = restLevelClient
60
60
  ? restLevelTsConfig
61
61
  : highLevelTsConfig;