@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
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Channel,
|
|
1
|
+
import { Channel, AutorestExtensionHost } from "@autorest/extension-base";
|
|
2
2
|
import { AutorestOptions, getHost, getSession } from "../autorestSession";
|
|
3
|
-
import { TracingInfo } from "../models/clientDetails";
|
|
3
|
+
import { DependencyInfo, TracingInfo } from "../models/clientDetails";
|
|
4
4
|
import { PackageDetails } from "../models/packageDetails";
|
|
5
5
|
import { NameType, normalizeName } from "./nameUtils";
|
|
6
6
|
|
|
@@ -11,6 +11,7 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
|
|
|
11
11
|
const host = getHost();
|
|
12
12
|
const useCoreV2 = await getUseCoreV2(host);
|
|
13
13
|
const restLevelClient = await getRestLevelClient(host);
|
|
14
|
+
const rlcShortcut = await getHasShortcutMethods(host);
|
|
14
15
|
const azureArm = await getIsAzureArm(host);
|
|
15
16
|
const addCredentials = await getAddCredentials(host);
|
|
16
17
|
const credentialKeyHeaderName = await getKeyCredentialHeaderName(host);
|
|
@@ -31,7 +32,14 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
|
|
|
31
32
|
const azureOutputDirectory = await getAzureOutputDirectoryPath(host);
|
|
32
33
|
const headAsBoolean = await getHeadAsBoolean(host);
|
|
33
34
|
const isTestPackage = await getIsTestPackage(host);
|
|
34
|
-
const generateTest = await getGenerateTest(host)
|
|
35
|
+
const generateTest = await getGenerateTest(host);
|
|
36
|
+
const batch = await getBatch(host);
|
|
37
|
+
const multiClient = await getMultiClient(host);
|
|
38
|
+
const generateSample = await getGenerateSample(host);
|
|
39
|
+
const productDocLink = await getProductDocLink(host);
|
|
40
|
+
const coreHttpCompatMode = await getCoreHttpCompatMode(host);
|
|
41
|
+
const azureSdkForJs = await getAzureSdkForJs(host);
|
|
42
|
+
const dependencyInfo = await getDependencyInfo(host);
|
|
35
43
|
|
|
36
44
|
return {
|
|
37
45
|
azureArm,
|
|
@@ -39,6 +47,7 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
|
|
|
39
47
|
credentialKeyHeaderName,
|
|
40
48
|
credentialScopes,
|
|
41
49
|
restLevelClient,
|
|
50
|
+
rlcShortcut,
|
|
42
51
|
srcPath,
|
|
43
52
|
outputPath,
|
|
44
53
|
packageDetails,
|
|
@@ -56,77 +65,118 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
|
|
|
56
65
|
headAsBoolean,
|
|
57
66
|
isTestPackage,
|
|
58
67
|
generateTest,
|
|
68
|
+
batch,
|
|
69
|
+
multiClient,
|
|
70
|
+
generateSample,
|
|
71
|
+
azureSdkForJs,
|
|
72
|
+
productDocLink,
|
|
73
|
+
coreHttpCompatMode,
|
|
74
|
+
dependencyInfo
|
|
59
75
|
};
|
|
60
76
|
}
|
|
61
77
|
|
|
62
|
-
async function
|
|
63
|
-
|
|
78
|
+
async function getHasShortcutMethods(
|
|
79
|
+
host: AutorestExtensionHost
|
|
80
|
+
): Promise<boolean> {
|
|
81
|
+
const headAsBoolean = await host.getValue("rlc-shortcut");
|
|
64
82
|
|
|
65
83
|
return Boolean(headAsBoolean);
|
|
66
84
|
}
|
|
67
85
|
|
|
68
|
-
async function
|
|
69
|
-
const
|
|
86
|
+
async function getHeadAsBoolean(host: AutorestExtensionHost): Promise<boolean> {
|
|
87
|
+
const headAsBoolean = await host.getValue("head-as-boolean");
|
|
88
|
+
|
|
89
|
+
return Boolean(headAsBoolean);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
async function getIsTestPackage(host: AutorestExtensionHost): Promise<boolean> {
|
|
93
|
+
const isTestPackage = await host.getValue("is-test-package");
|
|
70
94
|
return isTestPackage === null ? false : Boolean(isTestPackage);
|
|
71
95
|
}
|
|
72
96
|
|
|
73
|
-
async function getGenerateTest(host:
|
|
74
|
-
const generateTest
|
|
97
|
+
async function getGenerateTest(host: AutorestExtensionHost): Promise<boolean> {
|
|
98
|
+
const generateTest = await host.getValue("generate-test");
|
|
75
99
|
return generateTest === null ? false : Boolean(generateTest);
|
|
76
100
|
}
|
|
77
101
|
|
|
78
|
-
async function
|
|
79
|
-
|
|
102
|
+
async function getGenerateSample(
|
|
103
|
+
host: AutorestExtensionHost
|
|
104
|
+
): Promise<boolean> {
|
|
105
|
+
const generateSample = await host.getValue("generate-sample");
|
|
106
|
+
return generateSample === null ? false : Boolean(generateSample);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
async function getAzureSdkForJs(host: AutorestExtensionHost): Promise<boolean> {
|
|
110
|
+
const azureSdkForJs = await host.getValue("azure-sdk-for-js");
|
|
111
|
+
return azureSdkForJs === null ? true : Boolean(azureSdkForJs);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
async function getSkipEnumValidation(
|
|
115
|
+
host: AutorestExtensionHost
|
|
116
|
+
): Promise<boolean> {
|
|
117
|
+
const skipEnumValidation = await host.getValue("skip-enum-validation");
|
|
80
118
|
|
|
81
119
|
return skipEnumValidation === true;
|
|
82
120
|
}
|
|
83
121
|
|
|
84
|
-
async function getAllowInsecureConnection(
|
|
85
|
-
|
|
122
|
+
async function getAllowInsecureConnection(
|
|
123
|
+
host: AutorestExtensionHost
|
|
124
|
+
): Promise<boolean> {
|
|
125
|
+
return (await host.getValue("allow-insecure-connection")) || false;
|
|
86
126
|
}
|
|
87
127
|
|
|
88
|
-
async function getIgnoreNullableOnOptional(
|
|
128
|
+
async function getIgnoreNullableOnOptional(
|
|
129
|
+
host: AutorestExtensionHost
|
|
130
|
+
): Promise<boolean> {
|
|
89
131
|
const isAzureArm = await getIsAzureArm(host);
|
|
90
|
-
return (await host.
|
|
132
|
+
return (await host.getValue("ignore-nullable-on-optional"))
|
|
91
133
|
? true
|
|
92
134
|
: isAzureArm;
|
|
93
135
|
}
|
|
94
136
|
|
|
95
|
-
async function getDisableAsyncOperators(
|
|
96
|
-
|
|
137
|
+
async function getDisableAsyncOperators(
|
|
138
|
+
host: AutorestExtensionHost
|
|
139
|
+
): Promise<boolean> {
|
|
140
|
+
return (await host.getValue("disable-async-iterators")) === true;
|
|
97
141
|
}
|
|
98
142
|
|
|
99
|
-
async function getHideClients(host:
|
|
100
|
-
return (await host.
|
|
143
|
+
async function getHideClients(host: AutorestExtensionHost): Promise<boolean> {
|
|
144
|
+
return (await host.getValue("hide-clients")) || false;
|
|
101
145
|
}
|
|
102
|
-
async function getGenerateMetadata(host:
|
|
103
|
-
return (await host.
|
|
146
|
+
async function getGenerateMetadata(host: AutorestExtensionHost) {
|
|
147
|
+
return (await host.getValue("generate-metadata")) !== false;
|
|
104
148
|
}
|
|
105
149
|
|
|
106
|
-
async function getLicenseHeader(host:
|
|
107
|
-
return (await host.
|
|
150
|
+
async function getLicenseHeader(host: AutorestExtensionHost): Promise<boolean> {
|
|
151
|
+
return (await host.getValue("license-header")) || false;
|
|
108
152
|
}
|
|
109
153
|
|
|
110
|
-
async function getTitle(
|
|
111
|
-
|
|
154
|
+
async function getTitle(
|
|
155
|
+
host: AutorestExtensionHost
|
|
156
|
+
): Promise<string | undefined> {
|
|
157
|
+
return (await host.getValue("title")) || undefined;
|
|
112
158
|
}
|
|
113
159
|
|
|
114
|
-
async function getSrcPath(host:
|
|
115
|
-
return ((await host.
|
|
160
|
+
async function getSrcPath(host: AutorestExtensionHost): Promise<string> {
|
|
161
|
+
return ((await host.getValue("source-code-folder-path")) as string) || "src";
|
|
116
162
|
}
|
|
117
163
|
|
|
118
|
-
async function getOutputPath(
|
|
119
|
-
|
|
164
|
+
async function getOutputPath(
|
|
165
|
+
host: AutorestExtensionHost
|
|
166
|
+
): Promise<string | undefined> {
|
|
167
|
+
return (await host.getValue("output-folder")) || undefined;
|
|
120
168
|
}
|
|
121
169
|
|
|
122
170
|
async function getKeyCredentialHeaderName(
|
|
123
|
-
host:
|
|
171
|
+
host: AutorestExtensionHost
|
|
124
172
|
): Promise<string | undefined> {
|
|
125
|
-
return (await host.
|
|
173
|
+
return (await host.getValue("credential-key-header-name")) || undefined;
|
|
126
174
|
}
|
|
127
175
|
|
|
128
|
-
async function getAddCredentials(
|
|
129
|
-
|
|
176
|
+
async function getAddCredentials(
|
|
177
|
+
host: AutorestExtensionHost
|
|
178
|
+
): Promise<boolean> {
|
|
179
|
+
const addCredentials = await host.getValue("add-credentials");
|
|
130
180
|
|
|
131
181
|
// Only set addCredentials to false if explicitly set to false
|
|
132
182
|
// otherwise default to true
|
|
@@ -136,34 +186,38 @@ async function getAddCredentials(host: Host): Promise<boolean> {
|
|
|
136
186
|
return true;
|
|
137
187
|
}
|
|
138
188
|
}
|
|
139
|
-
async function getIsAzureArm(host:
|
|
140
|
-
const flag = (await host.
|
|
141
|
-
const openapi = (await host.
|
|
189
|
+
async function getIsAzureArm(host: AutorestExtensionHost): Promise<boolean> {
|
|
190
|
+
const flag = (await host.getValue("azure-arm")) === true;
|
|
191
|
+
const openapi = (await host.getValue("openapi-type")) === "arm";
|
|
142
192
|
|
|
143
193
|
return flag || openapi;
|
|
144
194
|
}
|
|
145
195
|
|
|
146
|
-
async function getRestLevelClient(
|
|
147
|
-
|
|
196
|
+
async function getRestLevelClient(
|
|
197
|
+
host: AutorestExtensionHost
|
|
198
|
+
): Promise<boolean> {
|
|
199
|
+
return (await host.getValue("rest-level-client")) === true;
|
|
148
200
|
}
|
|
149
201
|
|
|
150
|
-
async function getUseCoreV2(host:
|
|
151
|
-
const useCoreV2Option
|
|
202
|
+
async function getUseCoreV2(host: AutorestExtensionHost): Promise<boolean> {
|
|
203
|
+
const useCoreV2Option = await host.getValue("use-core-v2");
|
|
152
204
|
return useCoreV2Option === null ? true : Boolean(useCoreV2Option);
|
|
153
205
|
}
|
|
154
206
|
|
|
155
|
-
async function getTracingInfo(
|
|
207
|
+
async function getTracingInfo(
|
|
208
|
+
host: AutorestExtensionHost
|
|
209
|
+
): Promise<TracingInfo | undefined> {
|
|
156
210
|
const tracing: TracingInfo | undefined =
|
|
157
|
-
(await host.
|
|
211
|
+
(await host.getValue("tracing-info")) || undefined;
|
|
158
212
|
|
|
159
213
|
if (tracing && tracing.namespace && tracing.packagePrefix) {
|
|
160
214
|
return tracing;
|
|
161
215
|
}
|
|
162
216
|
|
|
163
|
-
const namespace =
|
|
164
|
-
(await host.
|
|
165
|
-
const packagePrefix =
|
|
166
|
-
(await host.
|
|
217
|
+
const namespace: string | undefined =
|
|
218
|
+
(await host.getValue<string>("tracing-info.namespace")) || undefined;
|
|
219
|
+
const packagePrefix: string | undefined =
|
|
220
|
+
(await host.getValue("tracing-info.packagePrefix")) || undefined;
|
|
167
221
|
|
|
168
222
|
if (packagePrefix && namespace) {
|
|
169
223
|
return {
|
|
@@ -181,13 +235,17 @@ async function getTracingInfo(host: Host): Promise<TracingInfo | undefined> {
|
|
|
181
235
|
);
|
|
182
236
|
}
|
|
183
237
|
|
|
184
|
-
async function getPackageDetails(
|
|
238
|
+
async function getPackageDetails(
|
|
239
|
+
host: AutorestExtensionHost
|
|
240
|
+
): Promise<PackageDetails> {
|
|
185
241
|
const { model } = getSession();
|
|
186
242
|
const name = normalizeName(model.language.default.name, NameType.File);
|
|
187
243
|
// TODO: Look for an existing package.json and
|
|
188
|
-
const packageName = (await host.
|
|
189
|
-
const packageNameParts =
|
|
190
|
-
|
|
244
|
+
const packageName: string = (await host.getValue("package-name")) || name;
|
|
245
|
+
const packageNameParts: RegExpMatchArray =
|
|
246
|
+
packageName.match(/(^@(.*)\/)?(.*)/) ?? [];
|
|
247
|
+
const version: string =
|
|
248
|
+
(await host.getValue("package-version")) || "1.0.0-beta.1";
|
|
191
249
|
|
|
192
250
|
return {
|
|
193
251
|
name: packageName,
|
|
@@ -199,11 +257,11 @@ async function getPackageDetails(host: Host): Promise<PackageDetails> {
|
|
|
199
257
|
}
|
|
200
258
|
|
|
201
259
|
export async function getCredentialScopes(
|
|
202
|
-
host:
|
|
260
|
+
host: AutorestExtensionHost
|
|
203
261
|
): Promise<string[] | undefined> {
|
|
204
|
-
const addCredentials = await host.
|
|
205
|
-
const credentialScopes = await host.
|
|
206
|
-
const azureArm = await host.
|
|
262
|
+
const addCredentials = await host.getValue("add-credentials");
|
|
263
|
+
const credentialScopes = await host.getValue("credential-scopes");
|
|
264
|
+
const azureArm = await host.getValue("azure-arm");
|
|
207
265
|
|
|
208
266
|
if (credentialScopes && !addCredentials) {
|
|
209
267
|
throw new Error(
|
|
@@ -215,7 +273,7 @@ export async function getCredentialScopes(
|
|
|
215
273
|
if (azureArm) {
|
|
216
274
|
return ["https://management.azure.com/.default"];
|
|
217
275
|
} else if (addCredentials) {
|
|
218
|
-
host.
|
|
276
|
+
host.message({
|
|
219
277
|
Channel: Channel.Warning,
|
|
220
278
|
Text: `You have default credential policy BearerTokenCredentialPolicy
|
|
221
279
|
but not the --credential-scopes flag set while generating non-management plane code.
|
|
@@ -233,11 +291,9 @@ export async function getCredentialScopes(
|
|
|
233
291
|
}
|
|
234
292
|
|
|
235
293
|
async function getAzureOutputDirectoryPath(
|
|
236
|
-
host:
|
|
294
|
+
host: AutorestExtensionHost
|
|
237
295
|
): Promise<string | undefined> {
|
|
238
|
-
const outputDirectoryPath
|
|
239
|
-
"outputFolderUri"
|
|
240
|
-
);
|
|
296
|
+
const outputDirectoryPath = await host.getValue<string>("outputFolderUri");
|
|
241
297
|
const outputDirectoryRelativePath: string | undefined = outputDirectoryPath
|
|
242
298
|
?.replace(/\/$/, "")
|
|
243
299
|
.split("/")
|
|
@@ -247,3 +303,58 @@ async function getAzureOutputDirectoryPath(
|
|
|
247
303
|
? outputDirectoryRelativePath
|
|
248
304
|
: undefined;
|
|
249
305
|
}
|
|
306
|
+
|
|
307
|
+
async function getBatch(
|
|
308
|
+
host: AutorestExtensionHost
|
|
309
|
+
): Promise<[string, any][] | undefined> {
|
|
310
|
+
const batch = await host.getValue<[string, any][]>("batch");
|
|
311
|
+
return batch;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
async function getProductDocLink(
|
|
315
|
+
host: AutorestExtensionHost
|
|
316
|
+
): Promise<string | undefined> {
|
|
317
|
+
return (await host.getValue("product-doc-link")) || undefined;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
async function getMultiClient(host: AutorestExtensionHost): Promise<boolean> {
|
|
321
|
+
const multiClient = (await host.getValue("multi-client")) || undefined;
|
|
322
|
+
return !!multiClient;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
async function getCoreHttpCompatMode(
|
|
326
|
+
host: AutorestExtensionHost
|
|
327
|
+
): Promise<boolean> {
|
|
328
|
+
return (await host.getValue("core-http-compat-mode")) || false;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
async function getDependencyInfo(
|
|
332
|
+
host: AutorestExtensionHost
|
|
333
|
+
): Promise<DependencyInfo | undefined> {
|
|
334
|
+
const dependency: DependencyInfo | undefined =
|
|
335
|
+
(await host.getValue("dependency-info")) || undefined;
|
|
336
|
+
|
|
337
|
+
if (dependency && dependency.description && dependency.link) {
|
|
338
|
+
return dependency;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
const link: string | undefined =
|
|
342
|
+
(await host.getValue<string>("dependency-info.link")) || undefined;
|
|
343
|
+
const description: string | undefined =
|
|
344
|
+
(await host.getValue("dependency-info.description")) || undefined;
|
|
345
|
+
|
|
346
|
+
if (description && link) {
|
|
347
|
+
return {
|
|
348
|
+
link,
|
|
349
|
+
description
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
if (!dependency && !description && !link) {
|
|
354
|
+
return undefined;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
throw new Error(
|
|
358
|
+
"Invalid dependency-info. Make sure that link and description are defined"
|
|
359
|
+
);
|
|
360
|
+
}
|
package/src/utils/nameUtils.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { Operation, OperationGroup } from "@autorest/codemodel";
|
|
|
4
4
|
import { getLanguageMetadata } from "./languageHelpers";
|
|
5
5
|
import { TypeDetails, PropertyKind } from "../models/modelDetails";
|
|
6
6
|
|
|
7
|
-
interface ReservedName {
|
|
7
|
+
export interface ReservedName {
|
|
8
8
|
name: string;
|
|
9
9
|
reservedFor: NameType[];
|
|
10
10
|
}
|
|
@@ -93,11 +93,15 @@ export enum CasingConvention {
|
|
|
93
93
|
Camel
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
export function guardReservedNames(
|
|
96
|
+
export function guardReservedNames(
|
|
97
|
+
name: string,
|
|
98
|
+
nameType: NameType,
|
|
99
|
+
customReservedNames: ReservedName[] = []
|
|
100
|
+
): string {
|
|
97
101
|
const suffix = getSuffix(nameType);
|
|
98
|
-
return ReservedModelNames
|
|
99
|
-
r => r.
|
|
100
|
-
|
|
102
|
+
return [...ReservedModelNames, ...customReservedNames]
|
|
103
|
+
.filter(r => r.reservedFor.includes(nameType))
|
|
104
|
+
.find(r => r.name === name.toLowerCase())
|
|
101
105
|
? `${name}${suffix}`
|
|
102
106
|
: name;
|
|
103
107
|
}
|
|
@@ -136,12 +140,14 @@ export function normalizeTypeName({ kind, typeName }: TypeDetails) {
|
|
|
136
140
|
export function normalizeName(
|
|
137
141
|
name: string,
|
|
138
142
|
nameType: NameType,
|
|
139
|
-
shouldGuard?: boolean
|
|
143
|
+
shouldGuard?: boolean,
|
|
144
|
+
customReservedNames: ReservedName[] = [],
|
|
145
|
+
casingOverride?: CasingConvention
|
|
140
146
|
): string {
|
|
141
147
|
if (name.startsWith("$DO_NOT_NORMALIZE$")) {
|
|
142
148
|
return name.replace("$DO_NOT_NORMALIZE$", "");
|
|
143
149
|
}
|
|
144
|
-
const casingConvention = getCasingConvention(nameType);
|
|
150
|
+
const casingConvention = casingOverride ?? getCasingConvention(nameType);
|
|
145
151
|
const sanitizedName = sanitizeName(name);
|
|
146
152
|
const parts = getNameParts(sanitizedName);
|
|
147
153
|
const [firstPart, ...otherParts] = parts;
|
|
@@ -153,7 +159,9 @@ export function normalizeName(
|
|
|
153
159
|
.join("");
|
|
154
160
|
|
|
155
161
|
const normalized = checkBeginning(`${normalizedFirstPart}${normalizedParts}`);
|
|
156
|
-
return shouldGuard
|
|
162
|
+
return shouldGuard
|
|
163
|
+
? guardReservedNames(normalized, nameType, customReservedNames)
|
|
164
|
+
: normalized;
|
|
157
165
|
}
|
|
158
166
|
|
|
159
167
|
function checkBeginning(name: string): string {
|
|
@@ -68,7 +68,7 @@ export function getTypeForSchema(
|
|
|
68
68
|
): TypeDetails {
|
|
69
69
|
let typeName: string = "";
|
|
70
70
|
let usedModels: string[] = [];
|
|
71
|
-
let defaultValue
|
|
71
|
+
let defaultValue = undefined;
|
|
72
72
|
let kind: PropertyKind = PropertyKind.Primitive;
|
|
73
73
|
switch (schema.type) {
|
|
74
74
|
case SchemaType.Any:
|
|
@@ -194,7 +194,7 @@ export function getTypeForSchema(
|
|
|
194
194
|
usedModels,
|
|
195
195
|
isConstant: schema.type === SchemaType.Constant,
|
|
196
196
|
nullable: isNullable,
|
|
197
|
-
|
|
197
|
+
defaultValue
|
|
198
198
|
};
|
|
199
199
|
}
|
|
200
200
|
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Project } from "ts-morph";
|
|
2
|
-
import { ClientDetails } from "../models/clientDetails";
|
|
3
|
-
import { PackageDetails } from "../models/packageDetails";
|
|
4
|
-
export declare function generateClientContext(clientDetails: ClientDetails, packageDetails: PackageDetails, project: Project): void;
|
|
5
|
-
//# sourceMappingURL=clientContextFileGenerator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientContextFileGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/clientContextFileGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,OAAO,EAMR,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO1D,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,QAmEjB"}
|