@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.
- package/CHANGELOG.md +13 -0
- package/README.md +41 -5
- package/dist/src/autorestSession.d.ts +12 -4
- package/dist/src/autorestSession.d.ts.map +1 -1
- package/dist/src/autorestSession.js +3 -9
- package/dist/src/autorestSession.js.map +1 -1
- package/dist/src/conflictResolver.d.ts.map +1 -1
- package/dist/src/conflictResolver.js.map +1 -1
- package/dist/src/generators/clientFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/clientFileGenerator.js +181 -31
- package/dist/src/generators/clientFileGenerator.js.map +1 -1
- package/dist/src/generators/indexGenerator.d.ts.map +1 -1
- package/dist/src/generators/indexGenerator.js +70 -9
- package/dist/src/generators/indexGenerator.js.map +1 -1
- package/dist/src/generators/modelsGenerator.d.ts.map +1 -1
- package/dist/src/generators/modelsGenerator.js +20 -2
- package/dist/src/generators/modelsGenerator.js.map +1 -1
- package/dist/src/generators/operationGenerator.d.ts.map +1 -1
- package/dist/src/generators/operationGenerator.js +10 -8
- package/dist/src/generators/operationGenerator.js.map +1 -1
- package/dist/src/generators/samples/sampleEnv.hbs +4 -0
- package/dist/src/generators/samples/sampleEnvGenerator.d.ts +3 -0
- package/dist/src/generators/samples/sampleEnvGenerator.d.ts.map +1 -0
- package/dist/src/generators/samples/sampleEnvGenerator.js +17 -0
- package/dist/src/generators/samples/sampleEnvGenerator.js.map +1 -0
- package/dist/src/generators/samples/sampleGenerator.d.ts +13 -0
- package/dist/src/generators/samples/sampleGenerator.d.ts.map +1 -0
- package/dist/src/generators/samples/sampleGenerator.js +43 -0
- package/dist/src/generators/samples/sampleGenerator.js.map +1 -0
- package/dist/src/generators/static/apiExtractorConfig.js +2 -2
- package/dist/src/generators/static/apiExtractorConfig.js.map +1 -1
- package/dist/src/generators/static/esLintConfigGenerator.d.ts +3 -0
- package/dist/src/generators/static/esLintConfigGenerator.d.ts.map +1 -0
- package/dist/src/generators/static/esLintConfigGenerator.js +26 -0
- package/dist/src/generators/static/esLintConfigGenerator.js.map +1 -0
- package/dist/src/generators/static/{README.md.hbs → hlcREADME.md.hbs} +23 -0
- package/dist/src/generators/static/karma.conf.js.hbs +141 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.d.ts +3 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.js +23 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -0
- package/dist/src/generators/static/packageFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/packageFileGenerator.js +174 -48
- package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
- package/dist/src/generators/static/readmeFileGenerator.d.ts +2 -2
- package/dist/src/generators/static/readmeFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/readmeFileGenerator.js +35 -17
- package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
- package/dist/src/generators/static/rlcREADME.md.hbs +71 -0
- package/dist/src/generators/static/rollupConfigFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/rollupConfigFileGenerator.js +12 -71
- package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
- package/dist/src/generators/static/samples.ts.hbs +49 -0
- package/dist/src/generators/static/tsConfigFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/tsConfigFileGenerator.js +40 -18
- package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
- package/dist/src/generators/test/envBrowserFileGenerator.d.ts +3 -0
- package/dist/src/generators/test/envBrowserFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/test/envBrowserFileGenerator.js +15 -0
- package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -0
- package/dist/src/generators/test/envFileGenerator.d.ts +3 -0
- package/dist/src/generators/test/envFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/test/envFileGenerator.js +23 -0
- package/dist/src/generators/test/envFileGenerator.js.map +1 -0
- package/dist/src/generators/test/recordedClientFileGenerator.d.ts +3 -0
- package/dist/src/generators/test/recordedClientFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/test/recordedClientFileGenerator.js +23 -0
- package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -0
- package/dist/src/generators/test/rlcEnv.ts.hbs +3 -0
- package/dist/src/generators/test/rlcRecordedClient.ts.hbs +35 -0
- package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +19 -0
- package/dist/src/generators/{static → test}/sampleTest.ts.hbs +0 -0
- package/dist/src/generators/test/sampleTestGenerator.d.ts.map +1 -1
- package/dist/src/generators/test/sampleTestGenerator.js +23 -7
- package/dist/src/generators/test/sampleTestGenerator.js.map +1 -1
- package/dist/src/generators/utils/pagingOperations.d.ts +5 -0
- package/dist/src/generators/utils/pagingOperations.d.ts.map +1 -1
- package/dist/src/generators/utils/pagingOperations.js +2 -1
- package/dist/src/generators/utils/pagingOperations.js.map +1 -1
- package/dist/src/main.d.ts +2 -2
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +3 -3
- package/dist/src/main.js.map +1 -1
- package/dist/src/models/clientDetails.d.ts +7 -0
- package/dist/src/models/clientDetails.d.ts.map +1 -1
- package/dist/src/models/modelDetails.d.ts +2 -2
- package/dist/src/models/modelDetails.d.ts.map +1 -1
- package/dist/src/models/operationDetails.d.ts +1 -0
- package/dist/src/models/operationDetails.d.ts.map +1 -1
- package/dist/src/models/sampleDetails.d.ts +22 -0
- package/dist/src/models/sampleDetails.d.ts.map +1 -0
- package/dist/src/models/sampleDetails.js +3 -0
- package/dist/src/models/sampleDetails.js.map +1 -0
- package/dist/src/restLevelClient/generateClient.d.ts +1 -1
- package/dist/src/restLevelClient/generateClient.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateClient.js +81 -163
- package/dist/src/restLevelClient/generateClient.js.map +1 -1
- package/dist/src/restLevelClient/generateClientDefinition.d.ts +6 -0
- package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateClientDefinition.js +231 -0
- package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.d.ts +8 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.js +70 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -0
- package/dist/src/restLevelClient/generateObjectTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
- package/dist/src/restLevelClient/generatePagingHelper.d.ts.map +1 -1
- package/dist/src/restLevelClient/generatePagingHelper.js +2 -1
- package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -1
- package/dist/src/restLevelClient/generateParameterTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateParameterTypes.js +186 -36
- package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
- package/dist/src/restLevelClient/generatePollingHelper.d.ts.map +1 -1
- package/dist/src/restLevelClient/generatePollingHelper.js +3 -1
- package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -1
- package/dist/src/restLevelClient/generateResponseTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateResponseTypes.js +13 -7
- package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
- package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateRestLevel.js +26 -4
- package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
- package/dist/src/restLevelClient/generateSchemaTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateSchemaTypes.js +5 -2
- package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
- package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts +4 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js +41 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.d.ts +10 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.d.ts.map +1 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.js +64 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -0
- package/dist/src/restLevelClient/interfaces.d.ts +24 -0
- package/dist/src/restLevelClient/interfaces.d.ts.map +1 -0
- package/dist/src/restLevelClient/interfaces.js +3 -0
- package/dist/src/restLevelClient/interfaces.js.map +1 -0
- package/dist/src/restLevelClient/operationHelpers.d.ts.map +1 -1
- package/dist/src/restLevelClient/operationHelpers.js +4 -1
- package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
- package/dist/src/restLevelClient/schemaHelpers.d.ts.map +1 -1
- package/dist/src/restLevelClient/schemaHelpers.js +4 -1
- package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
- package/dist/src/transforms/operationTransforms.d.ts.map +1 -1
- package/dist/src/transforms/operationTransforms.js +1 -0
- package/dist/src/transforms/operationTransforms.js.map +1 -1
- package/dist/src/transforms/samplesTransforms.d.ts +7 -0
- package/dist/src/transforms/samplesTransforms.d.ts.map +1 -0
- package/dist/src/transforms/samplesTransforms.js +283 -0
- package/dist/src/transforms/samplesTransforms.js.map +1 -0
- package/dist/src/transforms/transforms.d.ts +1 -2
- package/dist/src/transforms/transforms.d.ts.map +1 -1
- package/dist/src/transforms/transforms.js +4 -3
- package/dist/src/transforms/transforms.js.map +1 -1
- package/dist/src/typescriptGenerator.d.ts +2 -2
- package/dist/src/typescriptGenerator.d.ts.map +1 -1
- package/dist/src/typescriptGenerator.js +19 -8
- package/dist/src/typescriptGenerator.js.map +1 -1
- package/dist/src/utils/autorestOptions.d.ts +2 -2
- package/dist/src/utils/autorestOptions.d.ts.map +1 -1
- package/dist/src/utils/autorestOptions.js +107 -30
- package/dist/src/utils/autorestOptions.js.map +1 -1
- package/dist/src/utils/nameUtils.d.ts +6 -2
- package/dist/src/utils/nameUtils.d.ts.map +1 -1
- package/dist/src/utils/nameUtils.js +9 -5
- package/dist/src/utils/nameUtils.js.map +1 -1
- package/dist/src/utils/schemaHelpers.js +8 -3
- package/dist/src/utils/schemaHelpers.js.map +1 -1
- package/package.json +16 -10
- package/src/autorestSession.ts +20 -16
- package/src/conflictResolver.ts +0 -1
- package/src/generators/clientFileGenerator.ts +264 -33
- package/src/generators/indexGenerator.ts +78 -9
- package/src/generators/modelsGenerator.ts +21 -1
- package/src/generators/operationGenerator.ts +11 -9
- package/src/generators/samples/sampleEnv.hbs +4 -0
- package/src/generators/samples/sampleEnvGenerator.ts +14 -0
- package/src/generators/samples/sampleGenerator.ts +50 -0
- package/src/generators/static/apiExtractorConfig.ts +2 -2
- package/src/generators/static/esLintConfigGenerator.ts +24 -0
- package/src/generators/static/{README.md.hbs → hlcREADME.md.hbs} +23 -0
- package/src/generators/static/karma.conf.js.hbs +141 -0
- package/src/generators/static/karmaConfigFileGenerator.ts +20 -0
- package/src/generators/static/packageFileGenerator.ts +187 -48
- package/src/generators/static/readmeFileGenerator.ts +64 -35
- package/src/generators/static/rlcREADME.md.hbs +71 -0
- package/src/generators/static/rollupConfigFileGenerator.ts +13 -71
- package/src/generators/static/samples.ts.hbs +49 -0
- package/src/generators/static/tsConfigFileGenerator.ts +47 -20
- package/src/generators/test/envBrowserFileGenerator.ts +14 -0
- package/src/generators/test/envFileGenerator.ts +22 -0
- package/src/generators/test/recordedClientFileGenerator.ts +22 -0
- package/src/generators/test/rlcEnv.ts.hbs +3 -0
- package/src/generators/test/rlcRecordedClient.ts.hbs +35 -0
- package/src/generators/test/rlcSampleTest.spec.ts.hbs +19 -0
- package/src/generators/{static → test}/sampleTest.ts.hbs +0 -0
- package/src/generators/test/sampleTestGenerator.ts +23 -8
- package/src/generators/utils/pagingOperations.ts +1 -1
- package/src/main.ts +8 -5
- package/src/models/clientDetails.ts +8 -0
- package/src/models/modelDetails.ts +2 -2
- package/src/models/operationDetails.ts +1 -0
- package/src/models/sampleDetails.ts +22 -0
- package/src/restLevelClient/generateClient.ts +99 -250
- package/src/restLevelClient/generateClientDefinition.ts +343 -0
- package/src/restLevelClient/generateMethodShortcuts.ts +121 -0
- package/src/restLevelClient/generateObjectTypes.ts +1 -3
- package/src/restLevelClient/generatePagingHelper.ts +3 -2
- package/src/restLevelClient/generateParameterTypes.ts +295 -70
- package/src/restLevelClient/generatePollingHelper.ts +3 -3
- package/src/restLevelClient/generateResponseTypes.ts +13 -7
- package/src/restLevelClient/generateRestLevel.ts +32 -7
- package/src/restLevelClient/generateSchemaTypes.ts +5 -3
- package/src/restLevelClient/generateTopLevelIndexFile.ts +41 -0
- package/src/restLevelClient/helpers/operationHelpers.ts +93 -0
- package/src/restLevelClient/interfaces.ts +26 -0
- package/src/restLevelClient/operationHelpers.ts +8 -2
- package/src/restLevelClient/schemaHelpers.ts +4 -2
- package/src/transforms/operationTransforms.ts +1 -0
- package/src/transforms/samplesTransforms.ts +300 -0
- package/src/transforms/transforms.ts +6 -6
- package/src/typescriptGenerator.ts +20 -11
- package/src/utils/autorestOptions.ts +170 -59
- package/src/utils/nameUtils.ts +16 -8
- package/src/utils/schemaHelpers.ts +2 -2
- package/dist/src/generators/clientContextFileGenerator.d.ts +0 -5
- package/dist/src/generators/clientContextFileGenerator.d.ts.map +0 -1
- package/dist/src/generators/clientContextFileGenerator.js +0 -263
- package/dist/src/generators/clientContextFileGenerator.js.map +0 -1
- package/dist/src/restLevelClient/helpers/getOperationParameters.d.ts +0 -6
- package/dist/src/restLevelClient/helpers/getOperationParameters.d.ts.map +0 -1
- package/dist/src/restLevelClient/helpers/getOperationParameters.js +0 -29
- package/dist/src/restLevelClient/helpers/getOperationParameters.js.map +0 -1
- package/src/generators/clientContextFileGenerator.ts +0 -405
- 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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
64
|
-
build: "
|
|
65
|
-
"
|
|
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
|
-
"
|
|
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
|
-
|
|
77
|
-
"
|
|
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
|
-
|
|
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
|
-
|
|
142
|
+
autorest: "latest",
|
|
143
|
+
"@types/node": "^12.0.0",
|
|
108
144
|
dotenv: "^8.2.0",
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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": "
|
|
178
|
-
"@rollup/plugin-json": "^4.
|
|
179
|
-
"@rollup/plugin-multi-entry": "^
|
|
180
|
-
"@rollup/plugin-node-resolve": "^
|
|
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: "^
|
|
183
|
-
"rollup-plugin-sourcemaps": "^0.
|
|
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:
|
|
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.
|
|
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
|
}
|