@azure-tools/typespec-ts 0.55.0-dev.8 → 0.55.0

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 (192) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +1 -77
  3. package/dist/src/framework/hooks/sdk-types.d.ts +3 -2
  4. package/dist/src/framework/hooks/sdk-types.d.ts.map +1 -1
  5. package/dist/src/framework/hooks/sdk-types.js +3 -2
  6. package/dist/src/framework/hooks/sdk-types.js.map +1 -1
  7. package/dist/src/index.d.ts.map +1 -1
  8. package/dist/src/index.js +24 -80
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/lib.d.ts +2 -12
  11. package/dist/src/lib.d.ts.map +1 -1
  12. package/dist/src/lib.js +0 -65
  13. package/dist/src/lib.js.map +1 -1
  14. package/dist/src/modular/build-classical-client.js +2 -2
  15. package/dist/src/modular/build-classical-client.js.map +1 -1
  16. package/dist/src/modular/emit-models.d.ts.map +1 -1
  17. package/dist/src/modular/emit-models.js +19 -5
  18. package/dist/src/modular/emit-models.js.map +1 -1
  19. package/dist/src/modular/emit-samples.js +92 -19
  20. package/dist/src/modular/emit-samples.js.map +1 -1
  21. package/dist/src/modular/serialization/serialize-utils.js +2 -2
  22. package/dist/src/modular/serialization/serialize-utils.js.map +1 -1
  23. package/dist/src/rlc-common/helpers/name-constructors.d.ts.map +1 -1
  24. package/dist/src/rlc-common/helpers/name-constructors.js +1 -7
  25. package/dist/src/rlc-common/helpers/name-constructors.js.map +1 -1
  26. package/dist/src/rlc-common/index.d.ts +0 -16
  27. package/dist/src/rlc-common/index.d.ts.map +1 -1
  28. package/dist/src/rlc-common/index.js +0 -16
  29. package/dist/src/rlc-common/index.js.map +1 -1
  30. package/dist/src/rlc-common/interfaces.d.ts +0 -10
  31. package/dist/src/rlc-common/interfaces.d.ts.map +1 -1
  32. package/dist/src/rlc-common/interfaces.js.map +1 -1
  33. package/dist/src/rlc-common/metadata/build-package-file.d.ts.map +1 -1
  34. package/dist/src/rlc-common/metadata/build-package-file.js +0 -12
  35. package/dist/src/rlc-common/metadata/build-package-file.js.map +1 -1
  36. package/dist/src/rlc-common/metadata/build-readme-file.d.ts.map +1 -1
  37. package/dist/src/rlc-common/metadata/build-readme-file.js +4 -89
  38. package/dist/src/rlc-common/metadata/build-readme-file.js.map +1 -1
  39. package/dist/src/rlc-common/metadata/package-json/build-azure-monorepo-package.d.ts +0 -1
  40. package/dist/src/rlc-common/metadata/package-json/build-azure-monorepo-package.d.ts.map +1 -1
  41. package/dist/src/rlc-common/metadata/package-json/build-azure-monorepo-package.js +2 -2
  42. package/dist/src/rlc-common/metadata/package-json/build-azure-monorepo-package.js.map +1 -1
  43. package/dist/src/rlc-common/metadata/package-json/package-common.d.ts +0 -1
  44. package/dist/src/rlc-common/metadata/package-json/package-common.d.ts.map +1 -1
  45. package/dist/src/rlc-common/metadata/package-json/package-common.js.map +1 -1
  46. package/dist/src/rlc-common/test/build-snippets.d.ts.map +1 -1
  47. package/dist/src/rlc-common/test/build-snippets.js +0 -1
  48. package/dist/src/rlc-common/test/build-snippets.js.map +1 -1
  49. package/dist/src/rlc-common/test/template.d.ts +1 -1
  50. package/dist/src/rlc-common/test/template.d.ts.map +1 -1
  51. package/dist/src/rlc-common/test/template.js +0 -4
  52. package/dist/src/rlc-common/test/template.js.map +1 -1
  53. package/dist/src/transform/transform-schemas.js +1 -1
  54. package/dist/src/transform/transform-schemas.js.map +1 -1
  55. package/dist/src/transform/transform.d.ts.map +1 -1
  56. package/dist/src/transform/transform.js +5 -11
  57. package/dist/src/transform/transform.js.map +1 -1
  58. package/dist/src/transform/transfrom-rlc-options.d.ts +2 -2
  59. package/dist/src/transform/transfrom-rlc-options.d.ts.map +1 -1
  60. package/dist/src/transform/transfrom-rlc-options.js +19 -39
  61. package/dist/src/transform/transfrom-rlc-options.js.map +1 -1
  62. package/dist/src/utils/client-utils.d.ts +1 -1
  63. package/dist/src/utils/client-utils.d.ts.map +1 -1
  64. package/dist/src/utils/client-utils.js +4 -5
  65. package/dist/src/utils/client-utils.js.map +1 -1
  66. package/dist/src/utils/emit-util.d.ts +0 -1
  67. package/dist/src/utils/emit-util.d.ts.map +1 -1
  68. package/dist/src/utils/emit-util.js +0 -13
  69. package/dist/src/utils/emit-util.js.map +1 -1
  70. package/dist/src/utils/model-utils.d.ts +1 -1
  71. package/dist/src/utils/model-utils.d.ts.map +1 -1
  72. package/dist/src/utils/model-utils.js +4 -11
  73. package/dist/src/utils/model-utils.js.map +1 -1
  74. package/dist/tsconfig.tsbuildinfo +1 -1
  75. package/package.json +40 -44
  76. package/src/framework/hooks/sdk-types.ts +3 -2
  77. package/src/index.ts +27 -105
  78. package/src/lib.ts +1 -77
  79. package/src/modular/build-classical-client.ts +2 -2
  80. package/src/modular/emit-models.ts +20 -5
  81. package/src/modular/emit-samples.ts +119 -38
  82. package/src/modular/serialization/serialize-utils.ts +2 -2
  83. package/src/rlc-common/helpers/name-constructors.ts +1 -8
  84. package/src/rlc-common/index.ts +0 -16
  85. package/src/rlc-common/interfaces.ts +0 -11
  86. package/src/rlc-common/metadata/build-package-file.ts +0 -13
  87. package/src/rlc-common/metadata/build-readme-file.ts +4 -99
  88. package/src/rlc-common/metadata/package-json/build-azure-monorepo-package.ts +2 -3
  89. package/src/rlc-common/metadata/package-json/package-common.ts +0 -1
  90. package/src/rlc-common/test/build-snippets.ts +0 -1
  91. package/src/rlc-common/test/template.ts +0 -4
  92. package/src/transform/transform-schemas.ts +1 -1
  93. package/src/transform/transform.ts +4 -14
  94. package/src/transform/transfrom-rlc-options.ts +19 -63
  95. package/src/utils/client-utils.ts +4 -5
  96. package/src/utils/emit-util.ts +1 -14
  97. package/src/utils/model-utils.ts +4 -17
  98. package/dist/src/rlc-common/build-client-definitions.d.ts +0 -6
  99. package/dist/src/rlc-common/build-client-definitions.d.ts.map +0 -1
  100. package/dist/src/rlc-common/build-client-definitions.js +0 -157
  101. package/dist/src/rlc-common/build-client-definitions.js.map +0 -1
  102. package/dist/src/rlc-common/build-client.d.ts +0 -9
  103. package/dist/src/rlc-common/build-client.d.ts.map +0 -1
  104. package/dist/src/rlc-common/build-client.js +0 -375
  105. package/dist/src/rlc-common/build-client.js.map +0 -1
  106. package/dist/src/rlc-common/build-index-file.d.ts +0 -6
  107. package/dist/src/rlc-common/build-index-file.d.ts.map +0 -1
  108. package/dist/src/rlc-common/build-index-file.js +0 -180
  109. package/dist/src/rlc-common/build-index-file.js.map +0 -1
  110. package/dist/src/rlc-common/build-is-unexpected-helper.d.ts +0 -6
  111. package/dist/src/rlc-common/build-is-unexpected-helper.d.ts.map +0 -1
  112. package/dist/src/rlc-common/build-is-unexpected-helper.js +0 -219
  113. package/dist/src/rlc-common/build-is-unexpected-helper.js.map +0 -1
  114. package/dist/src/rlc-common/build-logger.d.ts +0 -6
  115. package/dist/src/rlc-common/build-logger.d.ts.map +0 -1
  116. package/dist/src/rlc-common/build-logger.js +0 -23
  117. package/dist/src/rlc-common/build-logger.js.map +0 -1
  118. package/dist/src/rlc-common/build-method-shortcuts.d.ts +0 -5
  119. package/dist/src/rlc-common/build-method-shortcuts.d.ts.map +0 -1
  120. package/dist/src/rlc-common/build-method-shortcuts.js +0 -54
  121. package/dist/src/rlc-common/build-method-shortcuts.js.map +0 -1
  122. package/dist/src/rlc-common/build-object-types.d.ts +0 -29
  123. package/dist/src/rlc-common/build-object-types.d.ts.map +0 -1
  124. package/dist/src/rlc-common/build-object-types.js +0 -410
  125. package/dist/src/rlc-common/build-object-types.js.map +0 -1
  126. package/dist/src/rlc-common/build-paginate-helper.d.ts +0 -6
  127. package/dist/src/rlc-common/build-paginate-helper.d.ts.map +0 -1
  128. package/dist/src/rlc-common/build-paginate-helper.js +0 -27
  129. package/dist/src/rlc-common/build-paginate-helper.js.map +0 -1
  130. package/dist/src/rlc-common/build-parameter-types.d.ts +0 -14
  131. package/dist/src/rlc-common/build-parameter-types.d.ts.map +0 -1
  132. package/dist/src/rlc-common/build-parameter-types.js +0 -338
  133. package/dist/src/rlc-common/build-parameter-types.js.map +0 -1
  134. package/dist/src/rlc-common/build-polling-helper.d.ts +0 -6
  135. package/dist/src/rlc-common/build-polling-helper.d.ts.map +0 -1
  136. package/dist/src/rlc-common/build-polling-helper.js +0 -59
  137. package/dist/src/rlc-common/build-polling-helper.js.map +0 -1
  138. package/dist/src/rlc-common/build-response-types.d.ts +0 -6
  139. package/dist/src/rlc-common/build-response-types.d.ts.map +0 -1
  140. package/dist/src/rlc-common/build-response-types.js +0 -140
  141. package/dist/src/rlc-common/build-response-types.js.map +0 -1
  142. package/dist/src/rlc-common/build-samples.d.ts +0 -3
  143. package/dist/src/rlc-common/build-samples.d.ts.map +0 -1
  144. package/dist/src/rlc-common/build-samples.js +0 -30
  145. package/dist/src/rlc-common/build-samples.js.map +0 -1
  146. package/dist/src/rlc-common/build-schema-type.d.ts +0 -20
  147. package/dist/src/rlc-common/build-schema-type.d.ts.map +0 -1
  148. package/dist/src/rlc-common/build-schema-type.js +0 -64
  149. package/dist/src/rlc-common/build-schema-type.js.map +0 -1
  150. package/dist/src/rlc-common/build-serialize-helper.d.ts +0 -6
  151. package/dist/src/rlc-common/build-serialize-helper.d.ts.map +0 -1
  152. package/dist/src/rlc-common/build-serialize-helper.js +0 -36
  153. package/dist/src/rlc-common/build-serialize-helper.js.map +0 -1
  154. package/dist/src/rlc-common/build-top-level-index-file.d.ts +0 -6
  155. package/dist/src/rlc-common/build-top-level-index-file.d.ts.map +0 -1
  156. package/dist/src/rlc-common/build-top-level-index-file.js +0 -44
  157. package/dist/src/rlc-common/build-top-level-index-file.js.map +0 -1
  158. package/dist/src/rlc-common/helpers/path-utils.d.ts +0 -2
  159. package/dist/src/rlc-common/helpers/path-utils.d.ts.map +0 -1
  160. package/dist/src/rlc-common/helpers/path-utils.js +0 -9
  161. package/dist/src/rlc-common/helpers/path-utils.js.map +0 -1
  162. package/dist/src/rlc-common/helpers/shortcut-methods.d.ts +0 -4
  163. package/dist/src/rlc-common/helpers/shortcut-methods.d.ts.map +0 -1
  164. package/dist/src/rlc-common/helpers/shortcut-methods.js +0 -49
  165. package/dist/src/rlc-common/helpers/shortcut-methods.js.map +0 -1
  166. package/dist/src/rlc-common/helpers/value-generation-util.d.ts +0 -12
  167. package/dist/src/rlc-common/helpers/value-generation-util.d.ts.map +0 -1
  168. package/dist/src/rlc-common/helpers/value-generation-util.js +0 -161
  169. package/dist/src/rlc-common/helpers/value-generation-util.js.map +0 -1
  170. package/dist/src/rlc-common/transform-sample-groups.d.ts +0 -9
  171. package/dist/src/rlc-common/transform-sample-groups.d.ts.map +0 -1
  172. package/dist/src/rlc-common/transform-sample-groups.js +0 -298
  173. package/dist/src/rlc-common/transform-sample-groups.js.map +0 -1
  174. package/src/rlc-common/build-client-definitions.ts +0 -226
  175. package/src/rlc-common/build-client.ts +0 -463
  176. package/src/rlc-common/build-index-file.ts +0 -220
  177. package/src/rlc-common/build-is-unexpected-helper.ts +0 -241
  178. package/src/rlc-common/build-logger.ts +0 -29
  179. package/src/rlc-common/build-method-shortcuts.ts +0 -71
  180. package/src/rlc-common/build-object-types.ts +0 -591
  181. package/src/rlc-common/build-paginate-helper.ts +0 -31
  182. package/src/rlc-common/build-parameter-types.ts +0 -460
  183. package/src/rlc-common/build-polling-helper.ts +0 -80
  184. package/src/rlc-common/build-response-types.ts +0 -170
  185. package/src/rlc-common/build-samples.ts +0 -32
  186. package/src/rlc-common/build-schema-type.ts +0 -79
  187. package/src/rlc-common/build-serialize-helper.ts +0 -49
  188. package/src/rlc-common/build-top-level-index-file.ts +0 -51
  189. package/src/rlc-common/helpers/path-utils.ts +0 -8
  190. package/src/rlc-common/helpers/shortcut-methods.ts +0 -58
  191. package/src/rlc-common/helpers/value-generation-util.ts +0 -234
  192. package/src/rlc-common/transform-sample-groups.ts +0 -383
@@ -1,298 +0,0 @@
1
- import { getClientName } from "./helpers/name-constructors.js";
2
- import { NameType, camelCase, normalizeName } from "./helpers/name-utils.js";
3
- import { buildSchemaObjectMap } from "./helpers/schema-helpers.js";
4
- import { generateParameterTypeValue } from "./helpers/value-generation-util.js";
5
- /**
6
- * Transform the sample data based RLC detail e.g path, operations & schemas
7
- * @param model RLC detail
8
- * @param allowMockValue allow to mock value if not exist, currently we always generate mock value
9
- * @returns Generated sample data or undefined if not support to generate
10
- */
11
- export function transformSampleGroups(model, allowMockValue = true) {
12
- if (model.options?.multiClient || model.options?.isModularLibrary) {
13
- // Not support to generate if multiple clients
14
- // Not support to generate if modular libraries
15
- return;
16
- }
17
- if ((model.sampleGroups && model.sampleGroups.length > 0) || !allowMockValue) {
18
- // Skip to transform if already has sample data
19
- // Skip to transform if not allow to mock value
20
- return;
21
- }
22
- const rlcSampleGroups = [];
23
- // Get all paths
24
- const paths = model.paths;
25
- const clientName = getClientName(model);
26
- const clientInterfaceName = clientName.endsWith("Client")
27
- ? `${clientName}`
28
- : `${clientName}Client`;
29
- const defaultFactoryName = normalizeName(camelCase(`create ${clientInterfaceName}`), NameType.Method);
30
- const packageName = model.options?.packageDetails?.name ?? "";
31
- const methodParameterMap = buildMethodParamMap(model);
32
- const schemaObjectMap = buildSchemaObjectMap(model);
33
- for (const path in paths) {
34
- const pathDetails = paths[path];
35
- if (!pathDetails) {
36
- continue;
37
- }
38
- const methods = pathDetails.methods;
39
- for (const method in methods) {
40
- const importedDict = {};
41
- const methodArray = methods[method];
42
- if (!methodArray || methodArray.length === 0) {
43
- continue;
44
- }
45
- const detail = methodArray[0];
46
- if (!detail) {
47
- continue;
48
- }
49
- const operatonConcante = getOperationConcate(detail.operationName, pathDetails.operationGroupName);
50
- const operationPrefix = normalizeName(camelCase(transformSpecialLetterToSpace(operatonConcante)), NameType.Operation);
51
- const sampleGroup = {
52
- filename: `${operationPrefix}Sample`,
53
- defaultFactoryName,
54
- clientPackageName: packageName,
55
- samples: [],
56
- };
57
- // initialize the sample
58
- const sample = {
59
- description: `call operation ${detail.operationName}`,
60
- name: `${operationPrefix}Sample`,
61
- path,
62
- defaultFactoryName,
63
- clientParamAssignments: [],
64
- pathParamAssignments: [],
65
- methodParamAssignments: [],
66
- clientParamNames: "",
67
- pathParamNames: "",
68
- methodParamNames: "",
69
- method,
70
- isLRO: detail.operationHelperDetail?.lroDetails?.isLongRunning ?? false,
71
- isPaging: detail.operationHelperDetail?.isPaging ?? false,
72
- useLegacyLro: false,
73
- };
74
- // client-level, path-level and method-level parameter preparation
75
- const parameters = {
76
- client: convertClientLevelParameters(model, importedDict, schemaObjectMap),
77
- path: convertPathLevelParameters(pathDetails, path, schemaObjectMap),
78
- method: convertMethodLevelParameters(methodArray, schemaObjectMap, methodParameterMap.get(operatonConcante)),
79
- };
80
- // enrich parameter details
81
- enrichParameterInSample(sample, parameters);
82
- // enrich LRO and pagination info
83
- enrichLROAndPagingInSample(detail, importedDict, packageName);
84
- sampleGroup.samples.push(sample);
85
- rlcSampleGroups.push(sampleGroup);
86
- enrichImportedString(sampleGroup, importedDict, defaultFactoryName, packageName);
87
- }
88
- }
89
- return rlcSampleGroups;
90
- }
91
- function enrichLROAndPagingInSample(operation, importedDict, packageName) {
92
- const isLRO = operation.operationHelperDetail?.lroDetails?.isLongRunning ?? false, isPaging = operation.operationHelperDetail?.isPaging ?? false;
93
- if (isPaging) {
94
- if (isLRO) {
95
- // TODO: report warning this is not supported
96
- }
97
- addValueInImportedDict(packageName, "paginate", importedDict);
98
- }
99
- else if (isLRO) {
100
- addValueInImportedDict(packageName, "getLongRunningPoller", importedDict);
101
- }
102
- }
103
- function transformSpecialLetterToSpace(str) {
104
- if (!str) {
105
- return str;
106
- }
107
- return str
108
- .replace(/_/g, " ")
109
- .replace(/\//g, " Or ")
110
- .replace(/,|\.|\(|\)/g, " ")
111
- .replace("'s ", " ");
112
- }
113
- function enrichImportedString(sampleGroup, importedDict, defaultFactoryName, packageName) {
114
- const importedTypes = [];
115
- if (!importedDict[packageName] || importedDict[packageName].size === 0) {
116
- importedTypes.push(`import ${defaultFactoryName} from "${packageName}";`);
117
- }
118
- for (const key in importedDict) {
119
- const importedSet = importedDict[key];
120
- if (!importedSet) {
121
- continue;
122
- }
123
- const values = Array.from(importedSet).join(", ");
124
- const hasDefaultFactory = key === packageName ? `${defaultFactoryName},` : "";
125
- importedTypes.push(`import ${hasDefaultFactory} { ${values} } from "${key}";`);
126
- }
127
- sampleGroup.importedTypes = importedTypes;
128
- }
129
- function enrichParameterInSample(sample, parameters) {
130
- sample.clientParamAssignments = getAssignmentStrArray(parameters.client);
131
- sample.clientParamNames = getContactParameterNames(parameters.client);
132
- sample.pathParamAssignments = getAssignmentStrArray(parameters.path);
133
- sample.pathParamNames = getContactParameterNames(parameters.path);
134
- // Directly apply the inline option value as method parameter
135
- sample.methodParamNames = parameters.method.length > 0 ? (parameters.method[0]?.value ?? "") : "";
136
- }
137
- function getAssignmentStrArray(parameters) {
138
- return parameters.filter((p) => !!p.assignment).map((p) => p.assignment);
139
- }
140
- function getContactParameterNames(parameters) {
141
- return parameters
142
- .filter((p) => p.name != null)
143
- .map((p) => p.name)
144
- .join(",");
145
- }
146
- function convertClientLevelParameters(model, importedDict, schemaMap) {
147
- if (!model.options) {
148
- return [];
149
- }
150
- const clientParams = [];
151
- const urlParameters = model?.urlInfo?.urlParameters?.filter(
152
- // Do not include parameters with constant values in the signature, these should go in the options bag
153
- (p) => p.value === undefined);
154
- const { addCredentials, credentialScopes, credentialKeyHeaderName, customHttpAuthHeaderName } = model.options;
155
- const hasUrlParameter = !!urlParameters, hasCredentials = addCredentials && (credentialScopes || credentialKeyHeaderName || customHttpAuthHeaderName);
156
- if (hasUrlParameter) {
157
- // convert the host parameters in url
158
- const clientParamAssignments = urlParameters.map((urlParameter) => {
159
- const urlValue = generateParameterTypeValue(urlParameter.type, urlParameter.name, schemaMap);
160
- const normalizedName = normalizeName(urlParameter.name, NameType.Parameter);
161
- return {
162
- name: normalizedName,
163
- assignment: `const ${normalizedName} = ` + urlValue + `;`,
164
- };
165
- });
166
- clientParams.push(...clientParamAssignments);
167
- }
168
- if (hasCredentials) {
169
- // Currently only support token credential
170
- const apiKeyCredentialPackage = "@azure/core-auth";
171
- const tokenCredentialPackage = "@azure/identity";
172
- if (credentialKeyHeaderName) {
173
- clientParams.push({
174
- name: "credential",
175
- assignment: `const credential = new AzureKeyCredential("{Your API key}");`,
176
- });
177
- addValueInImportedDict(apiKeyCredentialPackage, "AzureKeyCredential", importedDict);
178
- }
179
- else if (customHttpAuthHeaderName) {
180
- clientParams.push({
181
- name: "credential",
182
- assignment: `const credential = { key: "{Your API key}"};`,
183
- });
184
- }
185
- else {
186
- clientParams.push({
187
- name: "credential",
188
- assignment: "const credential = new DefaultAzureCredential();",
189
- });
190
- addValueInImportedDict(tokenCredentialPackage, "DefaultAzureCredential", importedDict);
191
- }
192
- }
193
- return clientParams;
194
- }
195
- function convertPathLevelParameters(pathDetail, path, schemaMap) {
196
- const pathItself = {
197
- name: `"${path}"`,
198
- };
199
- const pathParams = (pathDetail || []).pathParameters.map((p) => {
200
- const pathParam = {
201
- name: normalizeName(p.name, NameType.Parameter),
202
- };
203
- const value = generateParameterTypeValue(p.type, p.name, schemaMap);
204
- pathParam.assignment = `const ${pathParam.name} =` + value + `;`;
205
- return pathParam;
206
- });
207
- return [pathItself].concat(pathParams);
208
- }
209
- function convertMethodLevelParameters(methods, schemaMap, operationParameter) {
210
- if (!methods ||
211
- methods.length === 0 ||
212
- !operationParameter ||
213
- operationParameter.parameters.length === 0) {
214
- return [];
215
- }
216
- const rawMethodParams = operationParameter.parameters;
217
- const method = methods[0];
218
- const requestParameter = rawMethodParams[0];
219
- if (!method || !requestParameter) {
220
- return [];
221
- }
222
- const hasInputParams = !!rawMethodParams && rawMethodParams.length > 0, requireParam = !method.hasOptionalOptions;
223
- if (!hasInputParams && !requireParam) {
224
- return [];
225
- }
226
- const allSideAssignments = [], querySideAssignments = [], headerSideAssignments = [];
227
- if (!!requestParameter.body &&
228
- requestParameter.body &&
229
- requestParameter.body.body &&
230
- requestParameter.body.body?.length > 0) {
231
- const body = requestParameter.body.body[0];
232
- if (body) {
233
- const bodyTypeName = body.typeName ?? body.type;
234
- if (bodyTypeName !== "string" && body.oriSchema) {
235
- schemaMap.set(bodyTypeName, body.oriSchema);
236
- }
237
- allSideAssignments.push(` body: ` + generateParameterTypeValue(bodyTypeName, "body", schemaMap));
238
- }
239
- }
240
- requestParameter.parameters
241
- ?.filter((p) => p.type === "query")
242
- .forEach((p) => {
243
- const name = `${p.name}`;
244
- querySideAssignments.push(`${name}: ` + generateParameterTypeValue(p.param.type, name, schemaMap));
245
- });
246
- if (querySideAssignments.length > 0) {
247
- allSideAssignments.push(` queryParameters: { ` + querySideAssignments.join(", ") + `}`);
248
- }
249
- requestParameter.parameters
250
- ?.filter((p) => p.type === "header")
251
- .filter((p) => p.name.toLowerCase() !== "contenttype")
252
- .forEach((p) => {
253
- const name = `${p.name}`;
254
- headerSideAssignments.push(`${name}: ` + generateParameterTypeValue(p.param.type, name, schemaMap));
255
- });
256
- if (headerSideAssignments.length > 0) {
257
- allSideAssignments.push(` headers: { ` + headerSideAssignments.join(", ") + `}`);
258
- }
259
- const contentType = requestParameter.parameters
260
- ?.filter((p) => p.type === "header")
261
- .filter((p) => p.name.toLowerCase() === "contenttype");
262
- const firstContentType = contentType?.[0];
263
- if (firstContentType) {
264
- allSideAssignments.push(` ${firstContentType.name}: ` +
265
- generateParameterTypeValue(firstContentType.param.type, firstContentType.name, schemaMap));
266
- }
267
- let value;
268
- if (allSideAssignments.length > 0) {
269
- value = `{ ` + allSideAssignments.join(", ") + `}`;
270
- }
271
- else {
272
- return [];
273
- }
274
- const optionParam = {
275
- name: "options",
276
- assignment: `const options =` + value + `;`,
277
- value,
278
- };
279
- return [optionParam];
280
- }
281
- function addValueInImportedDict(key, val, importedDict) {
282
- if (!importedDict[key]) {
283
- importedDict[key] = new Set();
284
- }
285
- importedDict[key].add(val);
286
- }
287
- function buildMethodParamMap(model) {
288
- const map = new Map();
289
- (model.parameters ?? []).forEach((p) => {
290
- const operatonConcante = getOperationConcate(p.operationName, p.operationGroup);
291
- map.set(operatonConcante, p);
292
- });
293
- return map;
294
- }
295
- function getOperationConcate(opName, opGroup) {
296
- return `${opGroup}_${opName}`;
297
- }
298
- //# sourceMappingURL=transform-sample-groups.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform-sample-groups.js","sourceRoot":"","sources":["../../../src/rlc-common/transform-sample-groups.ts"],"names":[],"mappings":"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"}
@@ -1,226 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
-
4
- import { joinPaths } from "@typespec/compiler";
5
- import {
6
- CallSignatureDeclarationStructure,
7
- InterfaceDeclarationStructure,
8
- OptionalKind,
9
- Project,
10
- SourceFile,
11
- StructureKind,
12
- Writers,
13
- } from "ts-morph";
14
-
15
- import { REST_CLIENT_RESERVED } from "./build-method-shortcuts.js";
16
- import { getImportSpecifier } from "./helpers/imports-util.js";
17
- import { getClientName } from "./helpers/name-constructors.js";
18
- import { CasingConvention, NameType, normalizeName, pascalCase } from "./helpers/name-utils.js";
19
- import {
20
- buildMethodDefinitions,
21
- getGeneratedWrapperTypes,
22
- getPathParamDefinitions,
23
- } from "./helpers/operation-helpers.js";
24
- import { generateMethodShortcuts } from "./helpers/shortcut-methods.js";
25
- import { PathMetadata, Paths, RLCModel } from "./interfaces.js";
26
-
27
- export function buildClientDefinitions(model: RLCModel) {
28
- const options = {
29
- importedParameters: new Set<string>(),
30
- importedResponses: new Set<string>(),
31
- clientImports: new Set<string>(),
32
- };
33
- const project = new Project({ useInMemoryFileSystem: true });
34
- const srcPath = model.srcPath;
35
- const filePath = joinPaths(srcPath, `clientDefinitions.ts`);
36
- const clientDefinitionsFile = project.createSourceFile(filePath, undefined, {
37
- overwrite: true,
38
- });
39
-
40
- // Get all paths
41
- const pathDictionary = model.paths;
42
- let shortcuts: OptionalKind<InterfaceDeclarationStructure>[] = [];
43
- // There may be operations without an operation group, those shortcut
44
- // methods need to be handled differently.
45
- let shortcutsInOperationGroup: { name: string; type: string }[] = [];
46
-
47
- if (model.options?.includeShortcuts) {
48
- shortcuts = generateMethodShortcuts(model.paths);
49
- clientDefinitionsFile.addInterfaces(shortcuts);
50
- shortcutsInOperationGroup = shortcuts
51
- .filter((s) => s.name !== "ClientOperations")
52
- .map((s) => getShortcutName(s.name));
53
- }
54
-
55
- clientDefinitionsFile.addInterface({
56
- name: "Routes",
57
- isExported: true,
58
- callSignatures: getPathFirstRoutesInterfaceDefinition(
59
- pathDictionary,
60
- clientDefinitionsFile,
61
- options,
62
- ),
63
- });
64
-
65
- const clientInterfaceName = getClientName(model);
66
- clientDefinitionsFile.addTypeAlias({
67
- isExported: true,
68
- name: clientInterfaceName,
69
- type: Writers.intersectionType(
70
- "Client",
71
- Writers.objectType({
72
- properties: [{ name: "path", type: "Routes" }, ...shortcutsInOperationGroup],
73
- }),
74
- // If the length of shortcuts in operation group and all shortcutsInOperationGroup
75
- // is the same, then we don't have any operations at the client level
76
- // Otherwise we need to make the client interface name an union with the
77
- // definition of all client level shortcut methods
78
- ...(shortcutsInOperationGroup.length !== shortcuts.length ? [`ClientOperations`] : []),
79
- ),
80
- });
81
-
82
- if (options.importedParameters.size) {
83
- clientDefinitionsFile.addImportDeclaration({
84
- isTypeOnly: true,
85
- namedImports: [...options.importedParameters],
86
- moduleSpecifier: "./parameters.js",
87
- });
88
- }
89
-
90
- if (options.importedResponses.size) {
91
- clientDefinitionsFile.addImportDeclaration({
92
- isTypeOnly: true,
93
- namedImports: [...options.importedResponses],
94
- moduleSpecifier: "./responses.js",
95
- });
96
- }
97
-
98
- if ((model.importInfo.internalImports.rlcClientDefinition.importsSet?.size ?? 0) > 0) {
99
- clientDefinitionsFile.addImportDeclaration({
100
- isTypeOnly: true,
101
- namedImports: Array.from(model.importInfo.internalImports.rlcClientDefinition.importsSet!),
102
- moduleSpecifier: "./models.js",
103
- });
104
- }
105
-
106
- options.clientImports.add("Client");
107
- options.clientImports.add("StreamableMethod");
108
- clientDefinitionsFile.addImportDeclarations([
109
- {
110
- isTypeOnly: true,
111
- namedImports: [...options.clientImports],
112
- moduleSpecifier: getImportSpecifier("restClient", model.importInfo.runtimeImports),
113
- },
114
- ]);
115
-
116
- return { path: filePath, content: clientDefinitionsFile.getFullText() };
117
- }
118
-
119
- function getPathFirstRoutesInterfaceDefinition(
120
- paths: Paths,
121
- sourcefile: SourceFile,
122
- options: {
123
- importedParameters: Set<string>;
124
- importedResponses: Set<string>;
125
- clientImports: Set<string>;
126
- },
127
- ): CallSignatureDeclarationStructure[] {
128
- const operationGroupCount = getOperationGroupCount(paths);
129
-
130
- const signatures: CallSignatureDeclarationStructure[] = [];
131
- for (const key of Object.keys(paths)) {
132
- const pathMetadata = paths[key];
133
- if (!pathMetadata) {
134
- continue;
135
- }
136
- for (const verb of Object.keys(pathMetadata.methods)) {
137
- const methods = pathMetadata.methods[verb];
138
- if (!methods) {
139
- continue;
140
- }
141
- for (const method of methods) {
142
- options.importedParameters.add(method.optionsName);
143
- method.returnType.split(" | ").forEach((item) => options.importedResponses.add(item));
144
- }
145
- }
146
- generatePathFirstRouteMethodsDefinition(pathMetadata, operationGroupCount, sourcefile);
147
- const pathParams = pathMetadata.pathParameters;
148
- getGeneratedWrapperTypes(pathParams).forEach((p) =>
149
- options.importedParameters.add(p.name ?? p.type),
150
- );
151
- signatures.push({
152
- docs: [
153
- `Resource for '${key
154
- .replace(/\\/g, "\\\\")
155
- .replace(/}/g, "\\}")
156
- .replace(/{/g, "\\{")}' has methods for the following verbs: ${Object.keys(
157
- pathMetadata.methods,
158
- ).join(", ")}`,
159
- ],
160
- parameters: [{ name: "path", type: `"${key}"` }, ...getPathParamDefinitions(pathParams)],
161
- returnType: getOperationReturnTypeName(pathMetadata, getOperationGroupCount(paths)),
162
- kind: StructureKind.CallSignature,
163
- });
164
- }
165
- return signatures;
166
- }
167
-
168
- function getOperationGroupCount(paths: Paths) {
169
- const operationGroups = Object.keys(paths)
170
- .map((p) => paths[p]?.operationGroupName)
171
- .filter((p) => p && p !== "Client");
172
- const uniqueNames = new Set(operationGroups);
173
-
174
- return uniqueNames.size;
175
- }
176
-
177
- function getOperationReturnTypeName(
178
- { operationGroupName, name }: PathMetadata,
179
- operationGroupCount: number,
180
- ) {
181
- if (operationGroupCount > 1 && operationGroupName && operationGroupName !== "Client") {
182
- return normalizeName(
183
- `${pascalCase(operationGroupName)}${pascalCase(name)}`,
184
- NameType.Interface,
185
- );
186
- }
187
-
188
- return pascalCase(name);
189
- }
190
-
191
- function generatePathFirstRouteMethodsDefinition(
192
- path: PathMetadata,
193
- operationGroupCount: number,
194
- file: SourceFile,
195
- ): void {
196
- const methodDefinitions = buildMethodDefinitions(path.methods);
197
- const interfaceDef = {
198
- methods: methodDefinitions,
199
- name: getOperationReturnTypeName(path, operationGroupCount),
200
- isExported: true,
201
- };
202
- file.addInterface(interfaceDef);
203
- }
204
-
205
- function getShortcutName(interfaceName: string) {
206
- const endIndex = shouldKeepSuffix(interfaceName)
207
- ? undefined
208
- : interfaceName.length - "Operations".length;
209
- const clientProperty = normalizeName(
210
- interfaceName.substring(0, endIndex),
211
- NameType.OperationGroup,
212
- true,
213
- REST_CLIENT_RESERVED,
214
- CasingConvention.Camel,
215
- );
216
-
217
- return {
218
- name: clientProperty,
219
- type: interfaceName,
220
- };
221
- }
222
-
223
- function shouldKeepSuffix(name: string) {
224
- const reservedNames = ["pipelineOperations", "pathOperations", "pathUncheckedOperations"];
225
- return reservedNames.some((r) => r.toLowerCase() === name.toLowerCase());
226
- }