@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.
Files changed (184) hide show
  1. package/README.md +3 -3
  2. package/dist/hlcREADME.md.hbs +144 -0
  3. package/dist/karma.conf.js.hbs +126 -0
  4. package/dist/paginateHelper.ts.hbs +208 -0
  5. package/dist/pollingHelper.ts.hbs +69 -0
  6. package/dist/rlcEnv.ts.hbs +3 -0
  7. package/dist/rlcREADME.md.hbs +71 -0
  8. package/dist/rlcRecordedClient.ts.hbs +26 -0
  9. package/dist/rlcSampleTest.spec.ts.hbs +20 -0
  10. package/dist/sampleEnv.hbs +4 -0
  11. package/dist/sampleTest.ts.hbs +32 -0
  12. package/dist/samples.ts.hbs +49 -0
  13. package/dist/src/autorestSession.js +2 -2
  14. package/dist/src/autorestSession.js.map +1 -1
  15. package/dist/src/generators/LROGenerator.js +4 -4
  16. package/dist/src/generators/LROGenerator.js.map +1 -1
  17. package/dist/src/generators/clientFileGenerator.d.ts.map +1 -1
  18. package/dist/src/generators/clientFileGenerator.js +78 -19
  19. package/dist/src/generators/clientFileGenerator.js.map +1 -1
  20. package/dist/src/generators/indexGenerator.js +14 -14
  21. package/dist/src/generators/indexGenerator.js.map +1 -1
  22. package/dist/src/generators/mappersGenerator.js +14 -14
  23. package/dist/src/generators/mappersGenerator.js.map +1 -1
  24. package/dist/src/generators/modelsGenerator.js +22 -22
  25. package/dist/src/generators/modelsGenerator.js.map +1 -1
  26. package/dist/src/generators/operationGenerator.d.ts.map +1 -1
  27. package/dist/src/generators/operationGenerator.js +58 -89
  28. package/dist/src/generators/operationGenerator.js.map +1 -1
  29. package/dist/src/generators/operationInterfaceGenerator.js +20 -20
  30. package/dist/src/generators/operationInterfaceGenerator.js.map +1 -1
  31. package/dist/src/generators/parametersGenerator.d.ts.map +1 -1
  32. package/dist/src/generators/parametersGenerator.js +7 -8
  33. package/dist/src/generators/parametersGenerator.js.map +1 -1
  34. package/dist/src/generators/samples/sampleGenerator.js +1 -1
  35. package/dist/src/generators/samples/sampleGenerator.js.map +1 -1
  36. package/dist/src/generators/static/apiExtractorConfig.js +1 -1
  37. package/dist/src/generators/static/apiExtractorConfig.js.map +1 -1
  38. package/dist/src/generators/static/esLintConfigGenerator.js +1 -1
  39. package/dist/src/generators/static/esLintConfigGenerator.js.map +1 -1
  40. package/dist/src/generators/static/karma.conf.js.hbs +4 -19
  41. package/dist/src/generators/static/karmaConfigFileGenerator.js +1 -1
  42. package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -1
  43. package/dist/src/generators/static/licenseFileGenerator.js +1 -1
  44. package/dist/src/generators/static/licenseFileGenerator.js.map +1 -1
  45. package/dist/src/generators/static/packageFileGenerator.js +46 -40
  46. package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
  47. package/dist/src/generators/static/readmeFileGenerator.js +4 -4
  48. package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
  49. package/dist/src/generators/static/rollupConfigFileGenerator.js +1 -1
  50. package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
  51. package/dist/src/generators/static/tsConfigFileGenerator.js +1 -1
  52. package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
  53. package/dist/src/generators/test/envBrowserFileGenerator.js +1 -1
  54. package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -1
  55. package/dist/src/generators/test/envFileGenerator.js +1 -1
  56. package/dist/src/generators/test/envFileGenerator.js.map +1 -1
  57. package/dist/src/generators/test/recordedClientFileGenerator.js +1 -1
  58. package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -1
  59. package/dist/src/generators/test/rlcRecordedClient.ts.hbs +15 -24
  60. package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +4 -3
  61. package/dist/src/generators/test/sampleTest.ts.hbs +18 -18
  62. package/dist/src/generators/test/sampleTestGenerator.js +1 -1
  63. package/dist/src/generators/test/sampleTestGenerator.js.map +1 -1
  64. package/dist/src/generators/tracingFileGenerator.d.ts.map +1 -1
  65. package/dist/src/generators/tracingFileGenerator.js +7 -21
  66. package/dist/src/generators/tracingFileGenerator.js.map +1 -1
  67. package/dist/src/generators/utils/docsUtils.js +2 -2
  68. package/dist/src/generators/utils/docsUtils.js.map +1 -1
  69. package/dist/src/generators/utils/operationsUtils.js +1 -1
  70. package/dist/src/generators/utils/operationsUtils.js.map +1 -1
  71. package/dist/src/generators/utils/pagingOperations.js +13 -13
  72. package/dist/src/generators/utils/pagingOperations.js.map +1 -1
  73. package/dist/src/generators/utils/parameterUtils.js +9 -9
  74. package/dist/src/generators/utils/parameterUtils.js.map +1 -1
  75. package/dist/src/generators/utils/responseTypeUtils.js +2 -2
  76. package/dist/src/generators/utils/responseTypeUtils.js.map +1 -1
  77. package/dist/src/generators/utils/tracingUtils.d.ts.map +1 -1
  78. package/dist/src/generators/utils/tracingUtils.js +2 -6
  79. package/dist/src/generators/utils/tracingUtils.js.map +1 -1
  80. package/dist/src/main.js +5 -5
  81. package/dist/src/main.js.map +1 -1
  82. package/dist/src/models/clientDetails.d.ts +1 -1
  83. package/dist/src/models/clientDetails.d.ts.map +1 -1
  84. package/dist/src/restLevelClient/generateClient.js +14 -14
  85. package/dist/src/restLevelClient/generateClient.js.map +1 -1
  86. package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -1
  87. package/dist/src/restLevelClient/generateClientDefinition.js +23 -25
  88. package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -1
  89. package/dist/src/restLevelClient/generateMethodShortcuts.js +5 -5
  90. package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -1
  91. package/dist/src/restLevelClient/generateObjectTypes.js +10 -10
  92. package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
  93. package/dist/src/restLevelClient/generatePagingHelper.js +4 -4
  94. package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -1
  95. package/dist/src/restLevelClient/generateParameterTypes.js +11 -11
  96. package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
  97. package/dist/src/restLevelClient/generatePollingHelper.js +2 -2
  98. package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -1
  99. package/dist/src/restLevelClient/generateResponseTypes.js +12 -12
  100. package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
  101. package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
  102. package/dist/src/restLevelClient/generateRestLevel.js +32 -28
  103. package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
  104. package/dist/src/restLevelClient/generateSchemaTypes.js +5 -5
  105. package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
  106. package/dist/src/restLevelClient/generateTopLevelIndexFile.js +3 -3
  107. package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -1
  108. package/dist/src/restLevelClient/getPropertySignature.js +4 -4
  109. package/dist/src/restLevelClient/getPropertySignature.js.map +1 -1
  110. package/dist/src/restLevelClient/helpers/operationHelpers.js +1 -1
  111. package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -1
  112. package/dist/src/restLevelClient/mutateCodeModel.js +2 -2
  113. package/dist/src/restLevelClient/mutateCodeModel.js.map +1 -1
  114. package/dist/src/restLevelClient/operationHelpers.js +2 -2
  115. package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
  116. package/dist/src/restLevelClient/schemaHelpers.js +4 -4
  117. package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
  118. package/dist/src/transforms/extensions.js +10 -10
  119. package/dist/src/transforms/extensions.js.map +1 -1
  120. package/dist/src/transforms/groupTransforms.js +2 -2
  121. package/dist/src/transforms/groupTransforms.js.map +1 -1
  122. package/dist/src/transforms/mapperTransforms.js +25 -25
  123. package/dist/src/transforms/mapperTransforms.js.map +1 -1
  124. package/dist/src/transforms/objectTransforms.js +22 -22
  125. package/dist/src/transforms/objectTransforms.js.map +1 -1
  126. package/dist/src/transforms/operationTransforms.js +25 -25
  127. package/dist/src/transforms/operationTransforms.js.map +1 -1
  128. package/dist/src/transforms/optionsTransforms.js +1 -1
  129. package/dist/src/transforms/optionsTransforms.js.map +1 -1
  130. package/dist/src/transforms/parameterTransforms.js +23 -23
  131. package/dist/src/transforms/parameterTransforms.js.map +1 -1
  132. package/dist/src/transforms/samplesTransforms.d.ts +1 -1
  133. package/dist/src/transforms/samplesTransforms.d.ts.map +1 -1
  134. package/dist/src/transforms/samplesTransforms.js +30 -20
  135. package/dist/src/transforms/samplesTransforms.js.map +1 -1
  136. package/dist/src/transforms/transforms.d.ts.map +1 -1
  137. package/dist/src/transforms/transforms.js +21 -21
  138. package/dist/src/transforms/transforms.js.map +1 -1
  139. package/dist/src/transforms/urlTransforms.js +3 -3
  140. package/dist/src/transforms/urlTransforms.js.map +1 -1
  141. package/dist/src/typescriptGenerator.d.ts.map +1 -1
  142. package/dist/src/typescriptGenerator.js +25 -23
  143. package/dist/src/typescriptGenerator.js.map +1 -1
  144. package/dist/src/utils/autorestOptions.d.ts.map +1 -1
  145. package/dist/src/utils/autorestOptions.js +19 -13
  146. package/dist/src/utils/autorestOptions.js.map +1 -1
  147. package/dist/src/utils/cloneOperation.js +2 -2
  148. package/dist/src/utils/cloneOperation.js.map +1 -1
  149. package/dist/src/utils/extractHeaders.js +4 -4
  150. package/dist/src/utils/extractHeaders.js.map +1 -1
  151. package/dist/src/utils/extractPaginationDetails.js +9 -9
  152. package/dist/src/utils/extractPaginationDetails.js.map +1 -1
  153. package/dist/src/utils/headersToSchema.js +1 -1
  154. package/dist/src/utils/headersToSchema.js.map +1 -1
  155. package/dist/src/utils/logger.js +1 -1
  156. package/dist/src/utils/logger.js.map +1 -1
  157. package/dist/src/utils/nameUtils.js +2 -2
  158. package/dist/src/utils/nameUtils.js.map +1 -1
  159. package/dist/src/utils/schemaHelpers.js +3 -3
  160. package/dist/src/utils/schemaHelpers.js.map +1 -1
  161. package/dist/src/utils/sortObjectSchemasHierarchically.js +1 -1
  162. package/dist/src/utils/sortObjectSchemasHierarchically.js.map +1 -1
  163. package/dist/src/utils/valueHelpers.js +1 -1
  164. package/dist/src/utils/valueHelpers.js.map +1 -1
  165. package/package.json +29 -30
  166. package/src/generators/clientFileGenerator.ts +74 -5
  167. package/src/generators/modelsGenerator.ts +2 -2
  168. package/src/generators/operationGenerator.ts +39 -85
  169. package/src/generators/parametersGenerator.ts +2 -3
  170. package/src/generators/static/karma.conf.js.hbs +4 -19
  171. package/src/generators/static/packageFileGenerator.ts +39 -33
  172. package/src/generators/test/rlcRecordedClient.ts.hbs +15 -24
  173. package/src/generators/test/rlcSampleTest.spec.ts.hbs +4 -3
  174. package/src/generators/test/sampleTest.ts.hbs +18 -18
  175. package/src/generators/tracingFileGenerator.ts +6 -24
  176. package/src/generators/utils/tracingUtils.ts +1 -5
  177. package/src/models/clientDetails.ts +1 -1
  178. package/src/restLevelClient/generateClientDefinition.ts +10 -8
  179. package/src/restLevelClient/generateRestLevel.ts +5 -2
  180. package/src/transforms/samplesTransforms.ts +325 -276
  181. package/src/transforms/transforms.ts +2 -3
  182. package/src/typescriptGenerator.ts +7 -3
  183. package/src/utils/autorestOptions.ts +16 -10
  184. package/CHANGELOG.md +0 -106
@@ -1,300 +1,349 @@
1
1
  import {
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";
13
- import { getLanguageMetadata } from "../utils/languageHelpers";
14
- import { getAutorestOptions, getSession } from "../autorestSession";
15
- import { getOperationFullName, NameType, normalizeName } from "../utils/nameUtils";
16
- import { calculateMethodName } from "../generators/utils/operationsUtils";
17
- import { camelCase } from "@azure-tools/codegen";
18
- import { OperationGroupDetails } from "../models/operationDetails";
19
- import { getPublicMethodName } from '../generators/utils/pagingOperations';
20
- import { getTypeForSchema } from "../utils/schemaHelpers";
21
-
22
- export async function transformSamples(
23
- codeModel: CodeModel,
24
- clientDetails: ClientDetails
25
- ): Promise<SampleGroup[]> {
26
- return await getAllExamples(codeModel as TestCodeModel, clientDetails);
27
- }
28
-
29
- function getTransformedOperationGroup(operationGroup: OperationGroup, operationGroupDetails: OperationGroupDetails[]) {
30
- return operationGroupDetails.filter(operationGroupDetail => operationGroup.$key === operationGroupDetail.originalKey)[0];
31
- }
32
-
33
- function getTransformedOperation(operationGroup: OperationGroup, operation: Operation, operationGroupDetails: OperationGroupDetails, clientName: string) {
34
- return operationGroupDetails.operations.filter(operationDetail => operationDetail.fullName === getOperationFullName(operationGroup, operation, clientName))[0];
35
- }
36
-
37
- export async function getAllExamples(codeModel: TestCodeModel, clientDetails: ClientDetails) {
38
- const operationGroupDetails = clientDetails.operationGroups;
39
- const { packageDetails } = getAutorestOptions();
40
- const session = getSession();
41
- let examplesModels: SampleGroup[] = [];
42
- if (codeModel?.testModel?.mockTest?.exampleGroups !== undefined) {
43
- for (const exampleGroup of codeModel.testModel.mockTest.exampleGroups) {
44
- const clientName = getLanguageMetadata(codeModel.language).name;
45
- const ogDetails = getTransformedOperationGroup(exampleGroup.operationGroup, operationGroupDetails);
46
- if (ogDetails === undefined) {
47
- session.error("An error was encountered while transforming sample", [
48
- exampleGroup.operationId
49
- ]);
50
- continue;
51
- }
52
- if (!(exampleGroup?.examples?.length > 0)) {
53
- // Skip tranforming sample detail no given example in group
54
- continue;
55
- }
56
- const opDetails = getTransformedOperation(
57
- exampleGroup.operationGroup,
58
- exampleGroup.operation,
59
- ogDetails,
60
- clientName
61
- );
62
- let methodName = calculateMethodName(opDetails);
63
- if (opDetails.isLro && opDetails.pagination === undefined) {
64
- methodName = `${methodName}AndWait`;
65
- } else if (opDetails.pagination) {
66
- methodName = getPublicMethodName(opDetails);
67
- }
68
- const opGroupName = ogDetails.name;
69
- const importedTypeSet = new Set<string>();
70
- const operatonConcante = `${exampleGroup?.operationGroup?.language?.default?.name}${exampleGroup?.operation?.language?.default?.name}`;
71
- const sampleGroup: SampleGroup = {
72
- sampleFileName: `${camelCase(_transformSpecialLetterToSpace(operatonConcante))}Sample`,
73
- clientClassName: clientName,
74
- clientPackageName: packageDetails.name,
75
- samples: [],
76
- importedTypes: []
77
- };
78
- try {
79
- for (const example of exampleGroup.examples) {
80
- const sample: SampleDetails = {
81
- sampleFunctionName: camelCase(_transformSpecialLetterToSpace(example?.name)),
82
- clientParameterNames: "",
83
- methodParameterNames: "",
84
- clientParamAssignments: [],
85
- methodParamAssignments: [],
86
- originalFileLocation: example.originalFile,
87
- isTopLevel: ogDetails.isTopLevel,
88
- isPaging: opDetails.pagination !== undefined,
89
- operationName: methodName,
90
- clientClassName: clientName,
91
- operationGroupName: normalizeName(opGroupName, NameType.Property, true),
92
- operationDescription: getLanguageMetadata(
93
- exampleGroup.operation.language
94
- ).description,
95
- };
96
- const clientParameterNames = ["credential"];
97
- const requiredParams = clientDetails.parameters.filter(
98
- param =>
99
- param.required &&
100
- param.implementationLocation === ImplementationLocation.Client &&
101
- !param.defaultValue &&
102
- param.schemaType !== SchemaType.Constant
103
- );
104
- for (const clientParameter of example.clientParameters) {
105
- if (
106
- clientParameter.exampleValue.schema.type === SchemaType.Constant
107
- ) {
108
- continue;
109
- }
110
- const parameterName = normalizeName(
111
- getLanguageMetadata(clientParameter.exampleValue.language).name,
112
- NameType.Parameter,
113
- true
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 paramAssignment =
116
- `const ${parameterName} = ` +
117
- getParameterAssignment(clientParameter.exampleValue);
118
- sample.clientParamAssignments.push(paramAssignment);
119
- clientParameterNames.push(parameterName);
120
- }
121
- if (clientParameterNames.indexOf("subscriptionId") < 0 && requiredParams.find(param => param.name === 'subscriptionId')) {
122
- const subscriptionIdAssignment = `const subscriptionId = "00000000-0000-0000-0000-000000000000"`;
123
- sample.clientParamAssignments.push(subscriptionIdAssignment);
124
- clientParameterNames.push('subscriptionId');
125
- }
126
- if (clientParameterNames.length > 0) {
127
- sample.clientParameterNames = clientParameterNames.join(", ");
128
- }
129
- const methodParameterNames = [];
130
- const optionalParams: [string, string][] = [];
131
- for (const methodParameter of example.methodParameters) {
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
- methodParameter.exampleValue.schema.type === SchemaType.Constant
155
+ clientParameterNames.indexOf("subscriptionId") < 0 &&
156
+ requiredParams.find(param => param.name === "subscriptionId")
134
157
  ) {
135
- continue;
158
+ const subscriptionIdAssignment = `const subscriptionId = "00000000-0000-0000-0000-000000000000"`;
159
+ sample.clientParamAssignments.push(subscriptionIdAssignment);
160
+ clientParameterNames.push("subscriptionId");
136
161
  }
137
- const parameterName = normalizeName(
138
- getLanguageMetadata(methodParameter.exampleValue.language).name,
139
- NameType.Parameter,
140
- true
141
- );
142
- const parameterTypeDetails = getTypeForSchema(
143
- methodParameter.exampleValue.schema
144
- );
145
- const parameterTypeName = parameterTypeDetails.typeName;
146
- let paramAssignment = "";
147
- if (methodParameter.parameter.protocol?.http?.["in"] === "body") {
148
- let bodySchemaName = parameterTypeName;
149
- if (methodParameter.exampleValue.schema.type === SchemaType.AnyObject || methodParameter.exampleValue.schema.type === SchemaType.Any) {
150
- bodySchemaName = "Record<string, unknown>";
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
- importedTypeSet.add(parameterTypeName);
198
+ paramAssignment =
199
+ `const ${parameterName} = ` +
200
+ getParameterAssignment(methodParameter.exampleValue);
153
201
  }
154
- paramAssignment =
155
- `const ${parameterName}: ${bodySchemaName} = ` +
156
- getParameterAssignment(methodParameter.exampleValue);
157
- } else {
158
- paramAssignment =
159
- `const ${parameterName} = ` +
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 (!methodParameter.parameter.required) {
163
- optionalParams.push([parameterName, parameterTypeName]);
164
- } else {
165
- methodParameterNames.push(parameterName);
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
- sample.methodParamAssignments.push(paramAssignment);
168
- }
169
- if (optionalParams.length > 0) {
170
- const optionTypeName = `${opDetails.typeDetails.typeName}OptionalParams`;
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
- sampleGroup.samples.push(sample);
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
- return examplesModels;
197
- }
198
-
199
- function _transformSpecialLetterToSpace(str: string) {
200
- if (!str) {
201
- return str;
202
- }
203
- return str.replace(/_/g, ' ').replace(/\//g, ' Or ').replace(/,|\.|\(|\)/g, ' ').replace('\'s ', ' ');
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
- if (rawValue === null) {
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
- case SchemaType.AnyObject:
227
- retValue = `{}`;
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
- retValue = `[]`;
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
- retValue = undefined;
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 ] = await Promise.all([
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);