@autorest/typescript 6.0.0-beta.19 → 6.0.0-beta.20
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/README.md +3 -3
- package/dist/hlcREADME.md.hbs +144 -0
- package/dist/karma.conf.js.hbs +126 -0
- package/dist/paginateHelper.ts.hbs +208 -0
- package/dist/pollingHelper.ts.hbs +69 -0
- package/dist/rlcEnv.ts.hbs +3 -0
- package/dist/rlcREADME.md.hbs +71 -0
- package/dist/rlcRecordedClient.ts.hbs +26 -0
- package/dist/rlcSampleTest.spec.ts.hbs +20 -0
- package/dist/sampleEnv.hbs +4 -0
- package/dist/sampleTest.ts.hbs +32 -0
- package/dist/samples.ts.hbs +49 -0
- package/dist/src/autorestSession.js +2 -2
- package/dist/src/autorestSession.js.map +1 -1
- package/dist/src/generators/LROGenerator.js +4 -4
- package/dist/src/generators/LROGenerator.js.map +1 -1
- package/dist/src/generators/clientFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/clientFileGenerator.js +78 -19
- package/dist/src/generators/clientFileGenerator.js.map +1 -1
- package/dist/src/generators/indexGenerator.js +14 -14
- package/dist/src/generators/indexGenerator.js.map +1 -1
- package/dist/src/generators/mappersGenerator.js +14 -14
- package/dist/src/generators/mappersGenerator.js.map +1 -1
- package/dist/src/generators/modelsGenerator.js +22 -22
- 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 +58 -89
- package/dist/src/generators/operationGenerator.js.map +1 -1
- package/dist/src/generators/operationInterfaceGenerator.js +20 -20
- package/dist/src/generators/operationInterfaceGenerator.js.map +1 -1
- package/dist/src/generators/parametersGenerator.d.ts.map +1 -1
- package/dist/src/generators/parametersGenerator.js +7 -8
- package/dist/src/generators/parametersGenerator.js.map +1 -1
- package/dist/src/generators/samples/sampleGenerator.js +1 -1
- package/dist/src/generators/samples/sampleGenerator.js.map +1 -1
- package/dist/src/generators/static/apiExtractorConfig.js +1 -1
- package/dist/src/generators/static/apiExtractorConfig.js.map +1 -1
- package/dist/src/generators/static/esLintConfigGenerator.js +1 -1
- package/dist/src/generators/static/esLintConfigGenerator.js.map +1 -1
- package/dist/src/generators/static/karma.conf.js.hbs +4 -19
- package/dist/src/generators/static/karmaConfigFileGenerator.js +1 -1
- package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -1
- package/dist/src/generators/static/licenseFileGenerator.js +1 -1
- package/dist/src/generators/static/licenseFileGenerator.js.map +1 -1
- package/dist/src/generators/static/packageFileGenerator.js +46 -40
- package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
- package/dist/src/generators/static/readmeFileGenerator.js +4 -4
- package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
- package/dist/src/generators/static/rollupConfigFileGenerator.js +1 -1
- package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
- package/dist/src/generators/static/tsConfigFileGenerator.js +1 -1
- package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
- package/dist/src/generators/test/envBrowserFileGenerator.js +1 -1
- package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -1
- package/dist/src/generators/test/envFileGenerator.js +1 -1
- package/dist/src/generators/test/envFileGenerator.js.map +1 -1
- package/dist/src/generators/test/recordedClientFileGenerator.js +1 -1
- package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -1
- package/dist/src/generators/test/rlcRecordedClient.ts.hbs +15 -24
- package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +4 -3
- package/dist/src/generators/test/sampleTest.ts.hbs +18 -18
- package/dist/src/generators/test/sampleTestGenerator.js +1 -1
- package/dist/src/generators/test/sampleTestGenerator.js.map +1 -1
- package/dist/src/generators/tracingFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/tracingFileGenerator.js +7 -21
- package/dist/src/generators/tracingFileGenerator.js.map +1 -1
- package/dist/src/generators/utils/docsUtils.js +2 -2
- package/dist/src/generators/utils/docsUtils.js.map +1 -1
- package/dist/src/generators/utils/operationsUtils.js +1 -1
- package/dist/src/generators/utils/operationsUtils.js.map +1 -1
- package/dist/src/generators/utils/pagingOperations.js +13 -13
- package/dist/src/generators/utils/pagingOperations.js.map +1 -1
- package/dist/src/generators/utils/parameterUtils.js +9 -9
- package/dist/src/generators/utils/parameterUtils.js.map +1 -1
- package/dist/src/generators/utils/responseTypeUtils.js +2 -2
- package/dist/src/generators/utils/responseTypeUtils.js.map +1 -1
- package/dist/src/generators/utils/tracingUtils.d.ts.map +1 -1
- package/dist/src/generators/utils/tracingUtils.js +2 -6
- package/dist/src/generators/utils/tracingUtils.js.map +1 -1
- package/dist/src/main.js +5 -5
- package/dist/src/main.js.map +1 -1
- package/dist/src/models/clientDetails.d.ts +1 -1
- package/dist/src/models/clientDetails.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateClient.js +14 -14
- package/dist/src/restLevelClient/generateClient.js.map +1 -1
- package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateClientDefinition.js +23 -25
- package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -1
- package/dist/src/restLevelClient/generateMethodShortcuts.js +5 -5
- package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -1
- package/dist/src/restLevelClient/generateObjectTypes.js +10 -10
- package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
- package/dist/src/restLevelClient/generatePagingHelper.js +4 -4
- package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -1
- package/dist/src/restLevelClient/generateParameterTypes.js +11 -11
- package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
- package/dist/src/restLevelClient/generatePollingHelper.js +2 -2
- package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -1
- package/dist/src/restLevelClient/generateResponseTypes.js +12 -12
- 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 +32 -28
- package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
- package/dist/src/restLevelClient/generateSchemaTypes.js +5 -5
- package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js +3 -3
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -1
- package/dist/src/restLevelClient/getPropertySignature.js +4 -4
- package/dist/src/restLevelClient/getPropertySignature.js.map +1 -1
- package/dist/src/restLevelClient/helpers/operationHelpers.js +1 -1
- package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -1
- package/dist/src/restLevelClient/mutateCodeModel.js +2 -2
- package/dist/src/restLevelClient/mutateCodeModel.js.map +1 -1
- package/dist/src/restLevelClient/operationHelpers.js +2 -2
- package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
- package/dist/src/restLevelClient/schemaHelpers.js +4 -4
- package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
- package/dist/src/transforms/extensions.js +10 -10
- package/dist/src/transforms/extensions.js.map +1 -1
- package/dist/src/transforms/groupTransforms.js +2 -2
- package/dist/src/transforms/groupTransforms.js.map +1 -1
- package/dist/src/transforms/mapperTransforms.js +25 -25
- package/dist/src/transforms/mapperTransforms.js.map +1 -1
- package/dist/src/transforms/objectTransforms.js +22 -22
- package/dist/src/transforms/objectTransforms.js.map +1 -1
- package/dist/src/transforms/operationTransforms.js +25 -25
- package/dist/src/transforms/operationTransforms.js.map +1 -1
- package/dist/src/transforms/optionsTransforms.js +1 -1
- package/dist/src/transforms/optionsTransforms.js.map +1 -1
- package/dist/src/transforms/parameterTransforms.js +23 -23
- package/dist/src/transforms/parameterTransforms.js.map +1 -1
- package/dist/src/transforms/samplesTransforms.d.ts +1 -1
- package/dist/src/transforms/samplesTransforms.d.ts.map +1 -1
- package/dist/src/transforms/samplesTransforms.js +30 -20
- package/dist/src/transforms/samplesTransforms.js.map +1 -1
- package/dist/src/transforms/transforms.d.ts.map +1 -1
- package/dist/src/transforms/transforms.js +21 -21
- package/dist/src/transforms/transforms.js.map +1 -1
- package/dist/src/transforms/urlTransforms.js +3 -3
- package/dist/src/transforms/urlTransforms.js.map +1 -1
- package/dist/src/typescriptGenerator.d.ts.map +1 -1
- package/dist/src/typescriptGenerator.js +25 -23
- package/dist/src/typescriptGenerator.js.map +1 -1
- package/dist/src/utils/autorestOptions.d.ts.map +1 -1
- package/dist/src/utils/autorestOptions.js +19 -13
- package/dist/src/utils/autorestOptions.js.map +1 -1
- package/dist/src/utils/cloneOperation.js +2 -2
- package/dist/src/utils/cloneOperation.js.map +1 -1
- package/dist/src/utils/extractHeaders.js +4 -4
- package/dist/src/utils/extractHeaders.js.map +1 -1
- package/dist/src/utils/extractPaginationDetails.js +9 -9
- package/dist/src/utils/extractPaginationDetails.js.map +1 -1
- package/dist/src/utils/headersToSchema.js +1 -1
- package/dist/src/utils/headersToSchema.js.map +1 -1
- package/dist/src/utils/logger.js +1 -1
- package/dist/src/utils/logger.js.map +1 -1
- package/dist/src/utils/nameUtils.js +2 -2
- package/dist/src/utils/nameUtils.js.map +1 -1
- package/dist/src/utils/schemaHelpers.js +3 -3
- package/dist/src/utils/schemaHelpers.js.map +1 -1
- package/dist/src/utils/sortObjectSchemasHierarchically.js +1 -1
- package/dist/src/utils/sortObjectSchemasHierarchically.js.map +1 -1
- package/dist/src/utils/valueHelpers.js +1 -1
- package/dist/src/utils/valueHelpers.js.map +1 -1
- package/package.json +29 -30
- package/src/generators/clientFileGenerator.ts +74 -5
- package/src/generators/modelsGenerator.ts +2 -2
- package/src/generators/operationGenerator.ts +39 -85
- package/src/generators/parametersGenerator.ts +2 -3
- package/src/generators/static/karma.conf.js.hbs +4 -19
- package/src/generators/static/packageFileGenerator.ts +39 -33
- package/src/generators/test/rlcRecordedClient.ts.hbs +15 -24
- package/src/generators/test/rlcSampleTest.spec.ts.hbs +4 -3
- package/src/generators/test/sampleTest.ts.hbs +18 -18
- package/src/generators/tracingFileGenerator.ts +6 -24
- package/src/generators/utils/tracingUtils.ts +1 -5
- package/src/models/clientDetails.ts +1 -1
- package/src/restLevelClient/generateClientDefinition.ts +10 -8
- package/src/restLevelClient/generateRestLevel.ts +5 -2
- package/src/transforms/samplesTransforms.ts +325 -276
- package/src/transforms/transforms.ts +2 -3
- package/src/typescriptGenerator.ts +7 -3
- package/src/utils/autorestOptions.ts +16 -10
- package/CHANGELOG.md +0 -106
|
@@ -1,300 +1,349 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
} from "@autorest/codemodel";
|
|
10
|
-
import { ClientDetails } from "../models/clientDetails";
|
|
11
|
-
import { SampleGroup, SampleDetails } from "../models/sampleDetails";
|
|
12
|
-
import { ExampleValue, TestCodeModel } from "@autorest/testmodeler";
|
|
13
|
-
import { getLanguageMetadata } from "../utils/languageHelpers";
|
|
14
|
-
import { getAutorestOptions, getSession } from "../autorestSession";
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
2
|
+
ChoiceSchema,
|
|
3
|
+
CodeModel,
|
|
4
|
+
ConstantSchema,
|
|
5
|
+
ImplementationLocation,
|
|
6
|
+
Operation,
|
|
7
|
+
OperationGroup,
|
|
8
|
+
SchemaType
|
|
9
|
+
} from "@autorest/codemodel";
|
|
10
|
+
import { ClientDetails } from "../models/clientDetails";
|
|
11
|
+
import { SampleGroup, SampleDetails } from "../models/sampleDetails";
|
|
12
|
+
import { ExampleValue, TestCodeModel } from "@autorest/testmodeler/dist/src/core/model";
|
|
13
|
+
import { getLanguageMetadata } from "../utils/languageHelpers";
|
|
14
|
+
import { getAutorestOptions, getSession } from "../autorestSession";
|
|
15
|
+
import {
|
|
16
|
+
getOperationFullName,
|
|
17
|
+
NameType,
|
|
18
|
+
normalizeName
|
|
19
|
+
} from "../utils/nameUtils";
|
|
20
|
+
import { calculateMethodName } from "../generators/utils/operationsUtils";
|
|
21
|
+
import { camelCase } from "@azure-tools/codegen";
|
|
22
|
+
import { OperationGroupDetails } from "../models/operationDetails";
|
|
23
|
+
import { getPublicMethodName } from "../generators/utils/pagingOperations";
|
|
24
|
+
import { getTypeForSchema } from "../utils/schemaHelpers";
|
|
25
|
+
|
|
26
|
+
export async function transformSamples(
|
|
27
|
+
codeModel: CodeModel,
|
|
28
|
+
clientDetails: ClientDetails
|
|
29
|
+
): Promise<SampleGroup[]> {
|
|
30
|
+
return await getAllExamples(codeModel as TestCodeModel, clientDetails);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function getTransformedOperationGroup(
|
|
34
|
+
operationGroup: OperationGroup,
|
|
35
|
+
operationGroupDetails: OperationGroupDetails[]
|
|
36
|
+
) {
|
|
37
|
+
return operationGroupDetails.filter(
|
|
38
|
+
operationGroupDetail =>
|
|
39
|
+
operationGroup.$key === operationGroupDetail.originalKey
|
|
40
|
+
)[0];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function getTransformedOperation(
|
|
44
|
+
operationGroup: OperationGroup,
|
|
45
|
+
operation: Operation,
|
|
46
|
+
operationGroupDetails: OperationGroupDetails,
|
|
47
|
+
clientName: string
|
|
48
|
+
) {
|
|
49
|
+
return operationGroupDetails.operations.filter(
|
|
50
|
+
operationDetail =>
|
|
51
|
+
operationDetail.fullName ===
|
|
52
|
+
getOperationFullName(operationGroup, operation, clientName)
|
|
53
|
+
)[0];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export async function getAllExamples(
|
|
57
|
+
codeModel: TestCodeModel,
|
|
58
|
+
clientDetails: ClientDetails
|
|
59
|
+
) {
|
|
60
|
+
const operationGroupDetails = clientDetails.operationGroups;
|
|
61
|
+
const { packageDetails } = getAutorestOptions();
|
|
62
|
+
const session = getSession();
|
|
63
|
+
let examplesModels: SampleGroup[] = [];
|
|
64
|
+
if (codeModel?.testModel?.mockTest?.exampleGroups !== undefined) {
|
|
65
|
+
for (const exampleGroup of codeModel.testModel.mockTest.exampleGroups) {
|
|
66
|
+
const clientName = getLanguageMetadata(codeModel.language).name;
|
|
67
|
+
const ogDetails = getTransformedOperationGroup(
|
|
68
|
+
exampleGroup.operationGroup,
|
|
69
|
+
operationGroupDetails
|
|
70
|
+
);
|
|
71
|
+
if (ogDetails === undefined) {
|
|
72
|
+
session.error("An error was encountered while transforming sample", [
|
|
73
|
+
exampleGroup.operationId
|
|
74
|
+
]);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (!(exampleGroup?.examples?.length > 0)) {
|
|
78
|
+
// Skip tranforming sample detail no given example in group
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const opDetails = getTransformedOperation(
|
|
82
|
+
exampleGroup.operationGroup,
|
|
83
|
+
exampleGroup.operation,
|
|
84
|
+
ogDetails,
|
|
85
|
+
clientName
|
|
86
|
+
);
|
|
87
|
+
let methodName = calculateMethodName(opDetails);
|
|
88
|
+
if (opDetails.isLro && opDetails.pagination === undefined) {
|
|
89
|
+
methodName = `${methodName}AndWait`;
|
|
90
|
+
} else if (opDetails.pagination) {
|
|
91
|
+
methodName = getPublicMethodName(opDetails);
|
|
92
|
+
}
|
|
93
|
+
const opGroupName = ogDetails.name;
|
|
94
|
+
const importedTypeSet = new Set<string>();
|
|
95
|
+
const operatonConcante = `${exampleGroup?.operationGroup?.language?.default?.name}${exampleGroup?.operation?.language?.default?.name}`;
|
|
96
|
+
const sampleGroup: SampleGroup = {
|
|
97
|
+
sampleFileName: `${camelCase(
|
|
98
|
+
_transformSpecialLetterToSpace(operatonConcante)
|
|
99
|
+
)}Sample`,
|
|
100
|
+
clientClassName: clientName,
|
|
101
|
+
clientPackageName: packageDetails.name,
|
|
102
|
+
samples: [],
|
|
103
|
+
importedTypes: []
|
|
104
|
+
};
|
|
105
|
+
try {
|
|
106
|
+
for (const example of exampleGroup.examples) {
|
|
107
|
+
const sample: SampleDetails = {
|
|
108
|
+
sampleFunctionName: camelCase(
|
|
109
|
+
_transformSpecialLetterToSpace(example?.name)
|
|
110
|
+
),
|
|
111
|
+
clientParameterNames: "",
|
|
112
|
+
methodParameterNames: "",
|
|
113
|
+
clientParamAssignments: [],
|
|
114
|
+
methodParamAssignments: [],
|
|
115
|
+
originalFileLocation: example.originalFile,
|
|
116
|
+
isTopLevel: ogDetails.isTopLevel,
|
|
117
|
+
isPaging: opDetails.pagination !== undefined,
|
|
118
|
+
operationName: methodName,
|
|
119
|
+
clientClassName: clientName,
|
|
120
|
+
operationGroupName: normalizeName(
|
|
121
|
+
opGroupName,
|
|
122
|
+
NameType.Property,
|
|
123
|
+
true
|
|
124
|
+
),
|
|
125
|
+
operationDescription: getLanguageMetadata(
|
|
126
|
+
exampleGroup.operation.language
|
|
127
|
+
).description
|
|
128
|
+
};
|
|
129
|
+
const clientParameterNames = ["credential"];
|
|
130
|
+
const requiredParams = clientDetails.parameters.filter(
|
|
131
|
+
param =>
|
|
132
|
+
param.required &&
|
|
133
|
+
param.implementationLocation === ImplementationLocation.Client &&
|
|
134
|
+
!param.defaultValue &&
|
|
135
|
+
param.schemaType !== SchemaType.Constant
|
|
114
136
|
);
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
137
|
+
for (const clientParameter of example.clientParameters) {
|
|
138
|
+
if (
|
|
139
|
+
clientParameter.exampleValue.schema.type === SchemaType.Constant
|
|
140
|
+
) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const parameterName = normalizeName(
|
|
144
|
+
getLanguageMetadata(clientParameter.exampleValue.language).name,
|
|
145
|
+
NameType.Parameter,
|
|
146
|
+
true
|
|
147
|
+
);
|
|
148
|
+
const paramAssignment =
|
|
149
|
+
`const ${parameterName} = ` +
|
|
150
|
+
getParameterAssignment(clientParameter.exampleValue);
|
|
151
|
+
sample.clientParamAssignments.push(paramAssignment);
|
|
152
|
+
clientParameterNames.push(parameterName);
|
|
153
|
+
}
|
|
132
154
|
if (
|
|
133
|
-
|
|
155
|
+
clientParameterNames.indexOf("subscriptionId") < 0 &&
|
|
156
|
+
requiredParams.find(param => param.name === "subscriptionId")
|
|
134
157
|
) {
|
|
135
|
-
|
|
158
|
+
const subscriptionIdAssignment = `const subscriptionId = "00000000-0000-0000-0000-000000000000"`;
|
|
159
|
+
sample.clientParamAssignments.push(subscriptionIdAssignment);
|
|
160
|
+
clientParameterNames.push("subscriptionId");
|
|
136
161
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
162
|
+
if (clientParameterNames.length > 0) {
|
|
163
|
+
sample.clientParameterNames = clientParameterNames.join(", ");
|
|
164
|
+
}
|
|
165
|
+
const methodParameterNames = [];
|
|
166
|
+
const optionalParams: [string, string][] = [];
|
|
167
|
+
for (const methodParameter of example.methodParameters) {
|
|
168
|
+
if (
|
|
169
|
+
methodParameter.exampleValue.schema.type === SchemaType.Constant
|
|
170
|
+
) {
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
const parameterName = normalizeName(
|
|
174
|
+
getLanguageMetadata(methodParameter.exampleValue.language).name,
|
|
175
|
+
NameType.Parameter,
|
|
176
|
+
true
|
|
177
|
+
);
|
|
178
|
+
const parameterTypeDetails = getTypeForSchema(
|
|
179
|
+
methodParameter.exampleValue.schema
|
|
180
|
+
);
|
|
181
|
+
const parameterTypeName = parameterTypeDetails.typeName;
|
|
182
|
+
let paramAssignment = "";
|
|
183
|
+
if (methodParameter.parameter.protocol?.http?.["in"] === "body") {
|
|
184
|
+
let bodySchemaName = parameterTypeName;
|
|
185
|
+
if (
|
|
186
|
+
methodParameter.exampleValue.schema.type ===
|
|
187
|
+
SchemaType.AnyObject ||
|
|
188
|
+
methodParameter.exampleValue.schema.type === SchemaType.Any
|
|
189
|
+
) {
|
|
190
|
+
bodySchemaName = "Record<string, unknown>";
|
|
191
|
+
} else {
|
|
192
|
+
importedTypeSet.add(parameterTypeName);
|
|
193
|
+
}
|
|
194
|
+
paramAssignment =
|
|
195
|
+
`const ${parameterName}: ${bodySchemaName} = ` +
|
|
196
|
+
getParameterAssignment(methodParameter.exampleValue);
|
|
151
197
|
} else {
|
|
152
|
-
|
|
198
|
+
paramAssignment =
|
|
199
|
+
`const ${parameterName} = ` +
|
|
200
|
+
getParameterAssignment(methodParameter.exampleValue);
|
|
153
201
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
getParameterAssignment(methodParameter.exampleValue);
|
|
202
|
+
if (!methodParameter.parameter.required) {
|
|
203
|
+
optionalParams.push([parameterName, parameterTypeName]);
|
|
204
|
+
} else {
|
|
205
|
+
methodParameterNames.push(parameterName);
|
|
206
|
+
}
|
|
207
|
+
sample.methodParamAssignments.push(paramAssignment);
|
|
161
208
|
}
|
|
162
|
-
if (
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
209
|
+
if (optionalParams.length > 0) {
|
|
210
|
+
const optionTypeName = `${opDetails.typeDetails.typeName}OptionalParams`;
|
|
211
|
+
importedTypeSet.add(optionTypeName);
|
|
212
|
+
const optionAssignment = `const options: ${optionTypeName} = {${optionalParams
|
|
213
|
+
.map(item => {
|
|
214
|
+
return item[0];
|
|
215
|
+
})
|
|
216
|
+
.join(", ")}}`;
|
|
217
|
+
sample.methodParamAssignments.push(optionAssignment);
|
|
218
|
+
methodParameterNames.push("options");
|
|
166
219
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
importedTypeSet.add(optionTypeName);
|
|
172
|
-
const optionAssignment = `const options: ${optionTypeName} = {${optionalParams
|
|
173
|
-
.map(item => { return item[0]; })
|
|
174
|
-
.join(", ")}}`;
|
|
175
|
-
sample.methodParamAssignments.push(optionAssignment);
|
|
176
|
-
methodParameterNames.push("options");
|
|
177
|
-
}
|
|
178
|
-
if (methodParameterNames.length > 0) {
|
|
179
|
-
sample.methodParameterNames = methodParameterNames.join(", ");
|
|
220
|
+
if (methodParameterNames.length > 0) {
|
|
221
|
+
sample.methodParameterNames = methodParameterNames.join(", ");
|
|
222
|
+
}
|
|
223
|
+
sampleGroup.samples.push(sample);
|
|
180
224
|
}
|
|
181
|
-
|
|
225
|
+
} catch (error) {
|
|
226
|
+
session.error("An error was encountered while transforming sample", [
|
|
227
|
+
exampleGroup.operationId
|
|
228
|
+
]);
|
|
229
|
+
throw error;
|
|
230
|
+
}
|
|
231
|
+
if (sampleGroup.samples.length > 0) {
|
|
232
|
+
// enrich the importedTypes after all examples resolved
|
|
233
|
+
sampleGroup.importedTypes = Array.from(importedTypeSet);
|
|
234
|
+
examplesModels.push(sampleGroup);
|
|
182
235
|
}
|
|
183
|
-
} catch (error) {
|
|
184
|
-
session.error("An error was encountered while transforming sample", [
|
|
185
|
-
exampleGroup.operationId
|
|
186
|
-
]);
|
|
187
|
-
throw error;
|
|
188
|
-
}
|
|
189
|
-
if (sampleGroup.samples.length > 0) {
|
|
190
|
-
// enrich the importedTypes after all examples resolved
|
|
191
|
-
sampleGroup.importedTypes = Array.from(importedTypeSet);
|
|
192
|
-
examplesModels.push(sampleGroup);
|
|
193
236
|
}
|
|
194
237
|
}
|
|
238
|
+
return examplesModels;
|
|
195
239
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
return str
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
function getParameterAssignment(exampleValue: ExampleValue) {
|
|
207
|
-
let schemaType = exampleValue.schema.type;
|
|
208
|
-
const rawValue = exampleValue.rawValue;
|
|
209
|
-
let retValue = rawValue;
|
|
210
|
-
switch (schemaType) {
|
|
211
|
-
case SchemaType.Constant:
|
|
212
|
-
const contentSchema = exampleValue.schema as ConstantSchema;
|
|
213
|
-
schemaType = contentSchema.valueType.type;
|
|
214
|
-
break;
|
|
215
|
-
case SchemaType.Choice:
|
|
216
|
-
case SchemaType.SealedChoice:
|
|
217
|
-
const choiceSchema = exampleValue.schema as ChoiceSchema;
|
|
218
|
-
schemaType = choiceSchema.choiceType.type;
|
|
219
|
-
break;
|
|
240
|
+
|
|
241
|
+
function _transformSpecialLetterToSpace(str: string) {
|
|
242
|
+
if (!str) {
|
|
243
|
+
return str;
|
|
244
|
+
}
|
|
245
|
+
return str
|
|
246
|
+
.replace(/_/g, " ")
|
|
247
|
+
.replace(/\//g, " Or ")
|
|
248
|
+
.replace(/,|\.|\(|\)/g, " ")
|
|
249
|
+
.replace("'s ", " ");
|
|
220
250
|
}
|
|
221
|
-
|
|
251
|
+
|
|
252
|
+
function getParameterAssignment(exampleValue: ExampleValue) {
|
|
253
|
+
let schemaType = exampleValue.schema.type;
|
|
254
|
+
const rawValue = exampleValue.rawValue;
|
|
255
|
+
let retValue = rawValue;
|
|
222
256
|
switch (schemaType) {
|
|
257
|
+
case SchemaType.Constant:
|
|
258
|
+
const contentSchema = exampleValue.schema as ConstantSchema;
|
|
259
|
+
schemaType = contentSchema.valueType.type;
|
|
260
|
+
break;
|
|
261
|
+
case SchemaType.Choice:
|
|
262
|
+
case SchemaType.SealedChoice:
|
|
263
|
+
const choiceSchema = exampleValue.schema as ChoiceSchema;
|
|
264
|
+
schemaType = choiceSchema.choiceType.type;
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
if (rawValue === null) {
|
|
268
|
+
switch (schemaType) {
|
|
269
|
+
case SchemaType.Object:
|
|
270
|
+
case SchemaType.Any:
|
|
271
|
+
case SchemaType.Dictionary:
|
|
272
|
+
case SchemaType.AnyObject:
|
|
273
|
+
retValue = `{}`;
|
|
274
|
+
break;
|
|
275
|
+
case SchemaType.Array:
|
|
276
|
+
retValue = `[]`;
|
|
277
|
+
break;
|
|
278
|
+
default:
|
|
279
|
+
retValue = undefined;
|
|
280
|
+
}
|
|
281
|
+
return retValue;
|
|
282
|
+
}
|
|
283
|
+
switch (schemaType) {
|
|
284
|
+
case SchemaType.String:
|
|
285
|
+
case SchemaType.Char:
|
|
286
|
+
case SchemaType.Time:
|
|
287
|
+
case SchemaType.Uuid:
|
|
288
|
+
case SchemaType.Uri:
|
|
289
|
+
case SchemaType.Credential:
|
|
290
|
+
case SchemaType.Duration:
|
|
291
|
+
retValue = `"${rawValue
|
|
292
|
+
?.toString()
|
|
293
|
+
.replace(/"/g, '\\"')
|
|
294
|
+
.replace(/\n/g, "\\n")}"`;
|
|
295
|
+
break;
|
|
296
|
+
case SchemaType.Boolean:
|
|
297
|
+
(retValue = rawValue), toString();
|
|
298
|
+
break;
|
|
223
299
|
case SchemaType.Object:
|
|
224
|
-
case SchemaType.Any:
|
|
225
300
|
case SchemaType.Dictionary:
|
|
226
|
-
|
|
227
|
-
|
|
301
|
+
const values = [];
|
|
302
|
+
for (const prop in exampleValue.properties) {
|
|
303
|
+
const property = exampleValue.properties[prop];
|
|
304
|
+
if (property === undefined || property === null) {
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
const initPropName = property.language?.default?.name
|
|
308
|
+
? property.language?.default?.name
|
|
309
|
+
: prop;
|
|
310
|
+
const propName = normalizeName(initPropName, NameType.Property, true);
|
|
311
|
+
let propRetValue: string;
|
|
312
|
+
if (propName.indexOf("/") > -1 || propName.match(/^\d/)) {
|
|
313
|
+
propRetValue = `"${propName}": ` + getParameterAssignment(property);
|
|
314
|
+
} else {
|
|
315
|
+
propRetValue = `${propName}: ` + getParameterAssignment(property);
|
|
316
|
+
}
|
|
317
|
+
values.push(propRetValue);
|
|
318
|
+
}
|
|
319
|
+
if (values.length > 0) {
|
|
320
|
+
retValue = `{${values.join(", ")}}`;
|
|
321
|
+
} else {
|
|
322
|
+
retValue = "{}";
|
|
323
|
+
}
|
|
228
324
|
break;
|
|
229
325
|
case SchemaType.Array:
|
|
230
|
-
|
|
326
|
+
const valuesArr = [];
|
|
327
|
+
for (const element of <ExampleValue[]>exampleValue.elements) {
|
|
328
|
+
let propRetValueArr = getParameterAssignment(element);
|
|
329
|
+
valuesArr.push(propRetValueArr);
|
|
330
|
+
}
|
|
331
|
+
if (valuesArr.length > 0) {
|
|
332
|
+
retValue = `[${valuesArr.join(", ")}]`;
|
|
333
|
+
} else {
|
|
334
|
+
retValue = "[]";
|
|
335
|
+
}
|
|
336
|
+
break;
|
|
337
|
+
case SchemaType.Date:
|
|
338
|
+
case SchemaType.DateTime:
|
|
339
|
+
retValue = `new Date("${rawValue}")`;
|
|
340
|
+
break;
|
|
341
|
+
case SchemaType.Any:
|
|
342
|
+
case SchemaType.AnyObject:
|
|
343
|
+
retValue = `${JSON.stringify(rawValue)}`;
|
|
231
344
|
break;
|
|
232
345
|
default:
|
|
233
|
-
|
|
346
|
+
break;
|
|
234
347
|
}
|
|
235
348
|
return retValue;
|
|
236
|
-
}
|
|
237
|
-
switch (schemaType) {
|
|
238
|
-
case SchemaType.String:
|
|
239
|
-
case SchemaType.Char:
|
|
240
|
-
case SchemaType.Time:
|
|
241
|
-
case SchemaType.Uuid:
|
|
242
|
-
case SchemaType.Uri:
|
|
243
|
-
case SchemaType.Credential:
|
|
244
|
-
case SchemaType.Duration:
|
|
245
|
-
retValue = `"${rawValue?.toString().replace(/"/g, '\\"').replace(/\n/g, '\\n')}"`;
|
|
246
|
-
break;
|
|
247
|
-
case SchemaType.Boolean:
|
|
248
|
-
(retValue = rawValue), toString();
|
|
249
|
-
break;
|
|
250
|
-
case SchemaType.Object:
|
|
251
|
-
case SchemaType.Dictionary:
|
|
252
|
-
const values = [];
|
|
253
|
-
for (const prop in exampleValue.properties) {
|
|
254
|
-
const property = exampleValue.properties[prop];
|
|
255
|
-
if (property === undefined || property === null) {
|
|
256
|
-
continue;
|
|
257
|
-
}
|
|
258
|
-
const initPropName = property.language?.default?.name
|
|
259
|
-
? property.language?.default?.name
|
|
260
|
-
: prop;
|
|
261
|
-
const propName = normalizeName(initPropName, NameType.Property, true);
|
|
262
|
-
let propRetValue: string;
|
|
263
|
-
if (propName.indexOf("/") > -1 || propName.match(/^\d/)) {
|
|
264
|
-
propRetValue = `"${propName}": ` + getParameterAssignment(property);
|
|
265
|
-
} else {
|
|
266
|
-
propRetValue = `${propName}: ` + getParameterAssignment(property);
|
|
267
|
-
}
|
|
268
|
-
values.push(propRetValue);
|
|
269
|
-
}
|
|
270
|
-
if (values.length > 0) {
|
|
271
|
-
retValue = `{${values.join(", ")}}`;
|
|
272
|
-
} else {
|
|
273
|
-
retValue = "{}";
|
|
274
|
-
}
|
|
275
|
-
break;
|
|
276
|
-
case SchemaType.Array:
|
|
277
|
-
const valuesArr = [];
|
|
278
|
-
for (const element of <ExampleValue[]>exampleValue.elements) {
|
|
279
|
-
let propRetValueArr = getParameterAssignment(element);
|
|
280
|
-
valuesArr.push(propRetValueArr);
|
|
281
|
-
}
|
|
282
|
-
if (valuesArr.length > 0) {
|
|
283
|
-
retValue = `[${valuesArr.join(", ")}]`;
|
|
284
|
-
} else {
|
|
285
|
-
retValue = "[]";
|
|
286
|
-
}
|
|
287
|
-
break;
|
|
288
|
-
case SchemaType.Date:
|
|
289
|
-
case SchemaType.DateTime:
|
|
290
|
-
retValue = `new Date("${rawValue}")`;
|
|
291
|
-
break;
|
|
292
|
-
case SchemaType.Any:
|
|
293
|
-
case SchemaType.AnyObject:
|
|
294
|
-
retValue = `${JSON.stringify(rawValue)}`;
|
|
295
|
-
break;
|
|
296
|
-
default:
|
|
297
|
-
break;
|
|
298
|
-
}
|
|
299
|
-
return retValue;
|
|
300
|
-
}
|
|
349
|
+
}
|
|
@@ -18,7 +18,6 @@ import { transformOperationGroups } from "./operationTransforms";
|
|
|
18
18
|
import { transformOptions } from "./optionsTransforms";
|
|
19
19
|
import { transformParameters } from "./parameterTransforms";
|
|
20
20
|
import { transformObjects, transformObject } from "./objectTransforms";
|
|
21
|
-
import { transformSamples } from "./samplesTransforms";
|
|
22
21
|
import { ObjectDetails } from "../models/modelDetails";
|
|
23
22
|
import { transformBaseUrl } from "./urlTransforms";
|
|
24
23
|
import { normalizeModelWithExtensions } from "./extensions";
|
|
@@ -100,12 +99,12 @@ export async function transformCodeModel(
|
|
|
100
99
|
|
|
101
100
|
const options = await transformOptions(operationGroups);
|
|
102
101
|
|
|
103
|
-
const [objects, groups, parameters, mappers, unions
|
|
102
|
+
const [objects, groups, parameters, mappers, unions] = await Promise.all([
|
|
104
103
|
transformObjects(codeModel, uberParents),
|
|
105
104
|
transformGroups(codeModel),
|
|
106
105
|
transformParameters(codeModel, options),
|
|
107
106
|
transformMappers(codeModel, uberParents, options),
|
|
108
|
-
transformChoices(codeModel)
|
|
107
|
+
transformChoices(codeModel)
|
|
109
108
|
]);
|
|
110
109
|
|
|
111
110
|
const baseUrl = transformBaseUrl(codeModel);
|