@azure-tools/typespec-ts 0.21.0 → 0.22.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 (34) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +2 -0
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/lib.d.ts +1 -1
  6. package/dist/src/lib.d.ts.map +1 -1
  7. package/dist/src/modular/buildCodeModel.d.ts.map +1 -1
  8. package/dist/src/modular/buildCodeModel.js +65 -42
  9. package/dist/src/modular/buildCodeModel.js.map +1 -1
  10. package/dist/src/modular/buildOperations.d.ts +1 -0
  11. package/dist/src/modular/buildOperations.d.ts.map +1 -1
  12. package/dist/src/modular/buildOperations.js +25 -3
  13. package/dist/src/modular/buildOperations.js.map +1 -1
  14. package/dist/src/modular/buildProjectFiles.js +7 -7
  15. package/dist/src/modular/buildProjectFiles.js.map +1 -1
  16. package/dist/src/modular/buildSerializeUtils.d.ts +14 -0
  17. package/dist/src/modular/buildSerializeUtils.d.ts.map +1 -0
  18. package/dist/src/modular/buildSerializeUtils.js +526 -0
  19. package/dist/src/modular/buildSerializeUtils.js.map +1 -0
  20. package/dist/src/modular/helpers/operationHelpers.d.ts +27 -4
  21. package/dist/src/modular/helpers/operationHelpers.d.ts.map +1 -1
  22. package/dist/src/modular/helpers/operationHelpers.js +91 -22
  23. package/dist/src/modular/helpers/operationHelpers.js.map +1 -1
  24. package/dist/src/modular/modularCodeModel.d.ts +7 -0
  25. package/dist/src/modular/modularCodeModel.d.ts.map +1 -1
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +26 -20
  28. package/src/index.ts +2 -0
  29. package/src/modular/buildCodeModel.ts +91 -43
  30. package/src/modular/buildOperations.ts +59 -3
  31. package/src/modular/buildProjectFiles.ts +8 -8
  32. package/src/modular/buildSerializeUtils.ts +740 -0
  33. package/src/modular/helpers/operationHelpers.ts +135 -28
  34. package/src/modular/modularCodeModel.ts +7 -0
@@ -0,0 +1,526 @@
1
+ import { toPascalCase } from "../utils/casingUtils.js";
2
+ import { getResponseMapping, getRequestModelMapping, serializeRequestValue, deserializeResponseValue, getAllAncestors } from "./helpers/operationHelpers.js";
3
+ import { StructureKind } from "ts-morph";
4
+ import { addImportToSpecifier, addImportsToFiles, clearImportSets } from "@azure-tools/rlc-common";
5
+ import { UsageFlags } from "@typespec/compiler";
6
+ /**
7
+ * This function creates serialize and deserialize utils for special unions and that are used in the operation.
8
+ */
9
+ export function buildSerializeUtils(model) {
10
+ const serializeUtilFiles = [];
11
+ for (const serializeType of ["serialize", "deserialize"]) {
12
+ const usageCondition = serializeType === "serialize" ? UsageFlags.Input : UsageFlags.Output;
13
+ const specialUnions = model.types.filter((t) => { var _a; return isSpecialHandledUnion(t) && ((_a = t.usage) !== null && _a !== void 0 ? _a : 0) & usageCondition; });
14
+ if (specialUnions.length === 0) {
15
+ continue;
16
+ }
17
+ clearImportSets(model.runtimeImports);
18
+ const utilsFile = model.project.createSourceFile(`${model.modularOptions.sourceRoot}/utils/${serializeType}Util.ts`);
19
+ specialUnions.forEach((su) => {
20
+ var _a;
21
+ let types = su.types;
22
+ if (su.type === "list") {
23
+ types = (_a = su.elementType) === null || _a === void 0 ? void 0 : _a.types;
24
+ }
25
+ const unionDeserializeTypes = types === null || types === void 0 ? void 0 : types.filter((et) => {
26
+ return isSpecialUnionVariant(et);
27
+ });
28
+ unionDeserializeTypes === null || unionDeserializeTypes === void 0 ? void 0 : unionDeserializeTypes.forEach((et) => {
29
+ if (serializeType === "serialize") {
30
+ // getTypePredictFunction(
31
+ // utilsFile,
32
+ // et,
33
+ // serializeType,
34
+ // getTypeUnionName(su, false, model.runtimeImports, serializeType)
35
+ // );
36
+ getTypeSerializeFunction(utilsFile, et, serializeType, model.runtimeImports);
37
+ }
38
+ else {
39
+ // getTypePredictFunction(
40
+ // utilsFile,
41
+ // et,
42
+ // serializeType,
43
+ // getTypeUnionName(su, true, model.runtimeImports, serializeType)
44
+ // );
45
+ getTypeDeserializeFunction(utilsFile, et, serializeType, model.runtimeImports);
46
+ }
47
+ });
48
+ const deserializeFunctionName = getDeserializeFunctionName(su, serializeType, model.runtimeImports);
49
+ if (serializeType === "serialize") {
50
+ deserializeUnionTypesFunction(utilsFile, unionDeserializeTypes !== null && unionDeserializeTypes !== void 0 ? unionDeserializeTypes : [], deserializeFunctionName, serializeType, getTypeUnionName(su, false, model.runtimeImports, serializeType), getTypeUnionName(su, true, model.runtimeImports, serializeType), su.discriminator, su.isPolymorphicBaseModel);
51
+ }
52
+ else {
53
+ deserializeUnionTypesFunction(utilsFile, unionDeserializeTypes !== null && unionDeserializeTypes !== void 0 ? unionDeserializeTypes : [], deserializeFunctionName, serializeType, getTypeUnionName(su, true, model.runtimeImports, serializeType), getTypeUnionName(su, false, model.runtimeImports, serializeType), su.discriminator, su.isPolymorphicBaseModel);
54
+ }
55
+ });
56
+ addImportsToFiles(model.runtimeImports, utilsFile, {
57
+ rlcIndex: "../rest/index.js",
58
+ modularModel: "../models/models.js"
59
+ });
60
+ serializeUtilFiles.push(utilsFile);
61
+ }
62
+ return serializeUtilFiles;
63
+ }
64
+ export function getDeserializeFunctionName(type, serializeType, runtimeImports) {
65
+ const typeUnionNames = getTypeUnionName(type, false, runtimeImports, serializeType);
66
+ const deserializeFunctionName = `${serializeType}${toPascalCase(formalizeTypeUnionName(typeUnionNames !== null && typeUnionNames !== void 0 ? typeUnionNames : ""))}`;
67
+ return deserializeFunctionName;
68
+ }
69
+ function formalizeTypeUnionName(typeUnionName) {
70
+ return typeUnionName
71
+ .replace(/\[\]/g, "Array")
72
+ .replace(/ /g, "")
73
+ .replace(/\|/g, "And");
74
+ }
75
+ /**
76
+ *
77
+ * In general, we have two kinds of basic special union variants.
78
+ * 1. datetime type
79
+ * 2. bytes type
80
+ * If we consider model type, we have the following three type.
81
+ * 3. model with property of datetime type.
82
+ * 4. model with property of binary array type.
83
+ * 5. model that has different property name between rest layer and modular layer.
84
+ * 6. nested model i.e. model with property that is a model with one of the above three conditions.
85
+ * If we consider array type, with all the above 6 types as the element types.
86
+ */
87
+ const specialVariantMap = new Map();
88
+ export function isSpecialUnionVariant(t, variantStack = []) {
89
+ var _a, _b, _c, _d, _e;
90
+ if (variantStack.length <= 0) {
91
+ variantStack.push(t);
92
+ }
93
+ const ancestors = getAllAncestors(t);
94
+ if (specialVariantMap.has(t)) {
95
+ variantStack.pop();
96
+ return (_a = specialVariantMap.get(t)) !== null && _a !== void 0 ? _a : false;
97
+ }
98
+ if (t.type === "datetime" ||
99
+ t.type === "byte-array" ||
100
+ (t.type === "model" &&
101
+ ((_c = (_b = t.properties) === null || _b === void 0 ? void 0 : _b.filter((p) => {
102
+ return !(variantStack.includes(p.type) ||
103
+ ancestors.includes(p.type) ||
104
+ (p.type.type === "list" &&
105
+ p.type.elementType &&
106
+ (variantStack.includes(p.type.elementType) ||
107
+ ancestors.includes(p.type.elementType))));
108
+ })) === null || _c === void 0 ? void 0 : _c.some((p) => p.clientName !== p.restApiName ||
109
+ isSpecialUnionVariant(p.type, [...variantStack, p.type])))) ||
110
+ isPolymorphicUnion(t) ||
111
+ (t.type === "list" &&
112
+ t.elementType &&
113
+ !variantStack.includes(t.elementType) &&
114
+ !ancestors.includes(t.elementType) &&
115
+ isSpecialUnionVariant(t.elementType, [...variantStack, t.elementType])) ||
116
+ (t.type === "combined" &&
117
+ ((_e = (_d = t.types) === null || _d === void 0 ? void 0 : _d.filter((p) => {
118
+ return !(variantStack.includes(p) || ancestors.includes(p));
119
+ })) === null || _e === void 0 ? void 0 : _e.some((p) => {
120
+ return isSpecialUnionVariant(p, [...variantStack, p]);
121
+ })))) {
122
+ specialVariantMap.set(t, true);
123
+ variantStack.pop();
124
+ return true;
125
+ }
126
+ variantStack.pop();
127
+ specialVariantMap.set(t, false);
128
+ return false;
129
+ }
130
+ export function isNormalUnion(t) {
131
+ var _a, _b;
132
+ return (t.type === "combined" &&
133
+ !((_b = (_a = t.types) === null || _a === void 0 ? void 0 : _a.some((p) => {
134
+ return isSpecialUnionVariant(p);
135
+ })) !== null && _b !== void 0 ? _b : false));
136
+ }
137
+ export function isDiscriminatedUnion(t) {
138
+ var _a, _b;
139
+ return (t.type === "combined" &&
140
+ (t.discriminator ? true : false) &&
141
+ ((_b = (_a = t.types) === null || _a === void 0 ? void 0 : _a.some((p) => {
142
+ return isSpecialUnionVariant(p);
143
+ })) !== null && _b !== void 0 ? _b : false));
144
+ }
145
+ export function isSpecialHandledUnion(t) {
146
+ return isDiscriminatedUnion(t) || isPolymorphicUnion(t);
147
+ }
148
+ const polymorphicUnionMap = new Map();
149
+ export function isPolymorphicUnion(t) {
150
+ var _a, _b, _c;
151
+ if (polymorphicUnionMap.has(t)) {
152
+ return (_a = polymorphicUnionMap.get(t)) !== null && _a !== void 0 ? _a : false;
153
+ }
154
+ const ancestors = getAllAncestors(t);
155
+ if (t.type === "model" &&
156
+ t.isPolymorphicBaseModel &&
157
+ ((_c = (_b = t.types) === null || _b === void 0 ? void 0 : _b.filter((p) => {
158
+ return !ancestors.includes(p);
159
+ })) === null || _c === void 0 ? void 0 : _c.some((p) => {
160
+ return isSpecialUnionVariant(p);
161
+ }))) {
162
+ polymorphicUnionMap.set(t, true);
163
+ return true;
164
+ }
165
+ polymorphicUnionMap.set(t, false);
166
+ return false;
167
+ }
168
+ function getTypeUnionName(type, fromRest, runtimeImports, serializeType) {
169
+ var _a, _b, _c;
170
+ const types = type.types;
171
+ if (type.type === "list") {
172
+ types === ((_a = type.elementType) === null || _a === void 0 ? void 0 : _a.types);
173
+ }
174
+ if (type.name) {
175
+ const typeName = (fromRest && type.alias ? type.alias : type.name) +
176
+ (fromRest ? (serializeType === "serialize" ? "Rest" : "Output") : "");
177
+ if (fromRest && runtimeImports) {
178
+ addImportToSpecifier("rlcIndex", runtimeImports, ((_b = type.alias) !== null && _b !== void 0 ? _b : type.name) +
179
+ (serializeType === "serialize"
180
+ ? " as " + ((_c = type.alias) !== null && _c !== void 0 ? _c : type.name) + "Rest"
181
+ : "Output"));
182
+ }
183
+ else if (runtimeImports) {
184
+ addImportToSpecifier("modularModel", runtimeImports, type.name);
185
+ }
186
+ return typeName;
187
+ }
188
+ return types === null || types === void 0 ? void 0 : types.map((t) => {
189
+ var _a, _b, _c, _d, _e;
190
+ if (t.type === "list" && ((_a = t.elementType) === null || _a === void 0 ? void 0 : _a.type) === "model") {
191
+ if (fromRest && t.elementType.name && runtimeImports) {
192
+ addImportToSpecifier("rlcIndex", runtimeImports, ((_b = t.elementType.alias) !== null && _b !== void 0 ? _b : t.elementType.name) +
193
+ (serializeType === "serialize"
194
+ ? " as " + t.elementType.name + "Rest"
195
+ : "Output"));
196
+ }
197
+ else if (t.elementType.name && runtimeImports) {
198
+ addImportToSpecifier("modularModel", runtimeImports, t.elementType.name);
199
+ }
200
+ return (((_c = t.elementType.alias) !== null && _c !== void 0 ? _c : t.elementType.name) +
201
+ (fromRest
202
+ ? serializeType === "serialize"
203
+ ? "Rest"
204
+ : "Output"
205
+ : "") +
206
+ "[]");
207
+ }
208
+ if (fromRest && t.name && runtimeImports) {
209
+ addImportToSpecifier("rlcIndex", runtimeImports, ((_d = t.alias) !== null && _d !== void 0 ? _d : t.name) +
210
+ (serializeType === "serialize"
211
+ ? " as " + ((_e = t.alias) !== null && _e !== void 0 ? _e : t.name) + "Rest"
212
+ : "Output"));
213
+ }
214
+ else if (t.name && runtimeImports) {
215
+ addImportToSpecifier("modularModel", runtimeImports, t.name);
216
+ }
217
+ return t.name
218
+ ? (fromRest && t.alias ? t.alias : t.name) +
219
+ (fromRest
220
+ ? serializeType === "serialize"
221
+ ? "Rest"
222
+ : "Output"
223
+ : "")
224
+ : getMappedType(t.type, fromRest);
225
+ }).join(" | ");
226
+ }
227
+ function getMappedType(modularType, fromRest) {
228
+ switch (modularType) {
229
+ case "datetime":
230
+ return fromRest ? "string" : "Date";
231
+ case "byte-array":
232
+ return fromRest ? "string" : "Uint8Array";
233
+ default:
234
+ return modularType;
235
+ }
236
+ }
237
+ function getTypeDeserializeFunction(sourceFile, type, serializeType, runtimeImports) {
238
+ var _a, _b, _c, _d, _e, _f;
239
+ const statements = [];
240
+ if (isSpecialHandledUnion(type)) {
241
+ return;
242
+ }
243
+ if (type.type === "model" && type.name) {
244
+ addImportToSpecifier("rlcIndex", runtimeImports, `${type.name}Output`);
245
+ addImportToSpecifier("modularModel", runtimeImports, type.name);
246
+ const functionStatement = {
247
+ kind: StructureKind.Function,
248
+ docs: [`${serializeType} function for ${type.name}`],
249
+ name: `${serializeType}${toPascalCase(type.name)}`,
250
+ parameters: [{ name: "obj", type: `${type.name}Output` }],
251
+ returnType: type.name
252
+ };
253
+ if (type.properties) {
254
+ statements.push(`return {${getResponseMapping(type, "obj", runtimeImports)}};`);
255
+ }
256
+ else {
257
+ statements.push(`return {};`);
258
+ }
259
+ functionStatement.statements = statements.join("\n");
260
+ if (!hasDuplicateFunction(sourceFile, functionStatement)) {
261
+ if (sourceFile
262
+ .getFunctions()
263
+ .some((f) => f.getName() === functionStatement.name)) {
264
+ addOverload(sourceFile, type.name + "Output", functionStatement);
265
+ }
266
+ else {
267
+ sourceFile.addFunction(functionStatement);
268
+ }
269
+ }
270
+ }
271
+ else if (type.type === "list" &&
272
+ ((_a = type.elementType) === null || _a === void 0 ? void 0 : _a.type) === "model" &&
273
+ type.elementType.name) {
274
+ addImportToSpecifier("rlcIndex", runtimeImports, `${type.elementType.name}Output`);
275
+ addImportToSpecifier("modularModel", runtimeImports, type.elementType.name);
276
+ const functionStatement = {
277
+ kind: StructureKind.Function,
278
+ docs: [`${serializeType} function for ${type.elementType.name} array`],
279
+ name: `${serializeType}${toPascalCase(type.elementType.name)}Array`,
280
+ parameters: [{ name: "obj", type: type.elementType.name + "Output[]" }],
281
+ returnType: type.elementType.name + "[]"
282
+ };
283
+ statements.push(`return (obj || []).map(item => { return {${getResponseMapping(type.elementType, "item", runtimeImports)}}})`);
284
+ functionStatement.statements = statements.join("\n");
285
+ if (!hasDuplicateFunction(sourceFile, functionStatement)) {
286
+ if (sourceFile
287
+ .getFunctions()
288
+ .some((f) => f.getName() === functionStatement.name)) {
289
+ addOverload(sourceFile, (_b = type.elementType.name) !== null && _b !== void 0 ? _b : "Output[]", functionStatement);
290
+ }
291
+ else {
292
+ sourceFile.addFunction(functionStatement);
293
+ }
294
+ }
295
+ }
296
+ else if (type.type === "datetime") {
297
+ const functionStatement = {
298
+ kind: StructureKind.Function,
299
+ docs: [`${serializeType} function for ${type.type}`],
300
+ name: `${serializeType}${toPascalCase(getMappedType(type.type) +
301
+ (serializeType === "deserialize" ? "Rest" : ""))}`,
302
+ parameters: [{ name: "obj", type: "string" }],
303
+ returnType: "Date"
304
+ };
305
+ statements.push(`return new Date(obj);`);
306
+ functionStatement.statements = statements.join("\n");
307
+ if (!hasDuplicateFunction(sourceFile, functionStatement)) {
308
+ if (sourceFile
309
+ .getFunctions()
310
+ .some((f) => f.getName() === functionStatement.name)) {
311
+ addOverload(sourceFile, (_c = type.name) !== null && _c !== void 0 ? _c : "", functionStatement);
312
+ }
313
+ else {
314
+ sourceFile.addFunction(functionStatement);
315
+ }
316
+ }
317
+ }
318
+ else if (type.type === "byte-array") {
319
+ const functionStatement = {
320
+ kind: StructureKind.Function,
321
+ docs: [`${serializeType} function for ${type.type}`],
322
+ name: `${serializeType}${toPascalCase(getMappedType((_d = type.name) !== null && _d !== void 0 ? _d : "byte-array") +
323
+ (serializeType === "deserialize" ? "Rest" : ""))}`,
324
+ parameters: [{ name: "obj", type: "string" }],
325
+ returnType: "Uint8Array"
326
+ };
327
+ statements.push(`return ${deserializeResponseValue(type, "obj", runtimeImports, true, [type], (_e = type.format) !== null && _e !== void 0 ? _e : "base64")}`);
328
+ functionStatement.statements = statements.join("\n");
329
+ if (!hasDuplicateFunction(sourceFile, functionStatement)) {
330
+ if (sourceFile
331
+ .getFunctions()
332
+ .some((f) => f.getName() === functionStatement.name)) {
333
+ addOverload(sourceFile, (_f = type.name) !== null && _f !== void 0 ? _f : "", functionStatement);
334
+ }
335
+ else {
336
+ sourceFile.addFunction(functionStatement);
337
+ }
338
+ }
339
+ }
340
+ }
341
+ function getTypeSerializeFunction(sourceFile, type, serializeType, runtimeImports) {
342
+ var _a, _b, _c;
343
+ const statements = [];
344
+ if (isSpecialHandledUnion(type)) {
345
+ return;
346
+ }
347
+ if (type.type === "model" && type.name) {
348
+ const typeName = type.name + "Rest";
349
+ addImportToSpecifier("rlcIndex", runtimeImports, `${type.name} as ${typeName}`);
350
+ addImportToSpecifier("modularModel", runtimeImports, type.name);
351
+ const functionStatement = {
352
+ kind: StructureKind.Function,
353
+ docs: [`${serializeType} function for ${type.name}`],
354
+ name: `${serializeType}${toPascalCase(type.name)}`,
355
+ parameters: [{ name: "obj", type: `${type.name}` }],
356
+ returnType: typeName
357
+ };
358
+ if (type.properties) {
359
+ statements.push(`return {${getRequestModelMapping(type, "obj", runtimeImports).join(", ")}};`);
360
+ }
361
+ else {
362
+ statements.push(`return {};`);
363
+ }
364
+ functionStatement.statements = statements.join("\n");
365
+ if (!hasDuplicateFunction(sourceFile, functionStatement)) {
366
+ if (sourceFile
367
+ .getFunctions()
368
+ .some((f) => f.getName() === functionStatement.name)) {
369
+ addOverload(sourceFile, typeName, functionStatement);
370
+ }
371
+ else {
372
+ sourceFile.addFunction(functionStatement);
373
+ }
374
+ }
375
+ }
376
+ else if (type.type === "list" &&
377
+ ((_a = type.elementType) === null || _a === void 0 ? void 0 : _a.type) === "model" &&
378
+ type.elementType.name) {
379
+ const typeName = type.elementType.name + "Rest";
380
+ addImportToSpecifier("rlcIndex", runtimeImports, `${type.elementType.name} as ${typeName}`);
381
+ addImportToSpecifier("modularModel", runtimeImports, type.elementType.name);
382
+ const functionStatement = {
383
+ kind: StructureKind.Function,
384
+ docs: [`${serializeType} function for ${type.elementType.name} array`],
385
+ name: `${serializeType}${toPascalCase(type.elementType.name)}Array`,
386
+ parameters: [{ name: "obj", type: type.elementType.name + "[]" }],
387
+ returnType: `${typeName}[]`
388
+ };
389
+ statements.push(`return (obj || []).map(item => { return {${getRequestModelMapping(type.elementType, "item", runtimeImports).join(", ")}}})`);
390
+ functionStatement.statements = statements.join("\n");
391
+ if (!hasDuplicateFunction(sourceFile, functionStatement)) {
392
+ if (sourceFile
393
+ .getFunctions()
394
+ .some((f) => f.getName() === functionStatement.name)) {
395
+ addOverload(sourceFile, `${typeName}[]`, functionStatement);
396
+ }
397
+ else {
398
+ sourceFile.addFunction(functionStatement);
399
+ }
400
+ }
401
+ }
402
+ else if (type.type === "datetime") {
403
+ const functionStatement = {
404
+ kind: StructureKind.Function,
405
+ docs: [`${serializeType} function for ${type.type}`],
406
+ name: `${serializeType}${toPascalCase(getMappedType(type.type) +
407
+ (serializeType === "deserialize" ? "Rest" : ""))}`,
408
+ parameters: [{ name: "obj", type: "Date" }],
409
+ returnType: "string"
410
+ };
411
+ statements.push(`return ${serializeRequestValue(type, "obj", runtimeImports, true)}`);
412
+ functionStatement.statements = statements.join("\n");
413
+ if (!hasDuplicateFunction(sourceFile, functionStatement)) {
414
+ if (sourceFile
415
+ .getFunctions()
416
+ .some((f) => f.getName() === functionStatement.name)) {
417
+ addOverload(sourceFile, (_b = type.name) !== null && _b !== void 0 ? _b : "", functionStatement);
418
+ }
419
+ else {
420
+ sourceFile.addFunction(functionStatement);
421
+ }
422
+ }
423
+ }
424
+ else if (type.type === "byte-array") {
425
+ const functionStatement = {
426
+ kind: StructureKind.Function,
427
+ docs: [`${serializeType} function for ${type.type}`],
428
+ name: `${serializeType}${toPascalCase(getMappedType(type.type) +
429
+ (serializeType === "deserialize" ? "Rest" : ""))}`,
430
+ parameters: [{ name: "obj", type: "Uint8Array" }],
431
+ returnType: "string"
432
+ };
433
+ statements.push(`return ${serializeRequestValue(type, "obj", runtimeImports, true)}`);
434
+ functionStatement.statements = statements.join("\n");
435
+ if (!hasDuplicateFunction(sourceFile, functionStatement)) {
436
+ if (sourceFile
437
+ .getFunctions()
438
+ .some((f) => f.getName() === functionStatement.name)) {
439
+ addOverload(sourceFile, (_c = type.name) !== null && _c !== void 0 ? _c : "", functionStatement);
440
+ }
441
+ else {
442
+ sourceFile.addFunction(functionStatement);
443
+ }
444
+ }
445
+ }
446
+ }
447
+ function addOverload(sourceFile, typeName, functionStatement) {
448
+ var _a, _b, _c, _d, _e, _f, _g;
449
+ const existFunction = sourceFile.getFunction((_a = functionStatement.name) !== null && _a !== void 0 ? _a : "");
450
+ if (existFunction && existFunction.getOverloads().length === 0) {
451
+ existFunction.addOverload({
452
+ kind: StructureKind.FunctionOverload,
453
+ parameters: existFunction.getParameters().map((p) => {
454
+ var _a;
455
+ return {
456
+ name: p.getName(),
457
+ type: (_a = p.getTypeNode()) === null || _a === void 0 ? void 0 : _a.getText()
458
+ };
459
+ }),
460
+ returnType: (_b = existFunction.getReturnTypeNode()) === null || _b === void 0 ? void 0 : _b.getText(),
461
+ docs: existFunction.getJsDocs().map((d) => {
462
+ return { description: d.getInnerText() };
463
+ })
464
+ });
465
+ }
466
+ existFunction === null || existFunction === void 0 ? void 0 : existFunction.addOverload({
467
+ kind: StructureKind.FunctionOverload,
468
+ parameters: [
469
+ {
470
+ name: "obj",
471
+ type: typeName
472
+ }
473
+ ],
474
+ docs: functionStatement.docs,
475
+ returnType: functionStatement.returnType
476
+ });
477
+ const implementationParameter = (_d = sourceFile
478
+ .getFunction((_c = functionStatement.name) !== null && _c !== void 0 ? _c : "")) === null || _d === void 0 ? void 0 : _d.getParameters();
479
+ if (implementationParameter && implementationParameter.length > 0) {
480
+ const oldTypes = (_f = (_e = implementationParameter[0]) === null || _e === void 0 ? void 0 : _e.getTypeNode()) === null || _f === void 0 ? void 0 : _f.getText().split(" | ");
481
+ const newTypes = typeName.split(" | ").concat(oldTypes !== null && oldTypes !== void 0 ? oldTypes : []);
482
+ const newTypeSet = new Set(newTypes);
483
+ (_g = implementationParameter[0]) === null || _g === void 0 ? void 0 : _g.setType(Array.from(newTypeSet).join(" | "));
484
+ }
485
+ }
486
+ function hasDuplicateFunction(sourceFile, functionStatement) {
487
+ return sourceFile.getFunctions().some((f) => {
488
+ var _a, _b;
489
+ const paramTypes = f.getParameters().map((param) => {
490
+ return param.getName() + param.getType().getText();
491
+ });
492
+ const funcParamTypes = (_a = functionStatement.parameters) === null || _a === void 0 ? void 0 : _a.map((param) => {
493
+ return param.name + param.type;
494
+ });
495
+ return (f.getName() === functionStatement.name &&
496
+ paramTypes.join().includes((_b = funcParamTypes === null || funcParamTypes === void 0 ? void 0 : funcParamTypes.join()) !== null && _b !== void 0 ? _b : ""));
497
+ });
498
+ }
499
+ function deserializeUnionTypesFunction(sourceFile, unionDeserializeTypes, deserializeFunctionName, serializeType, typeUnionNamesOutput, typeUnionNames, discriminator, isPolymorphicBaseModel) {
500
+ var _a, _b, _c, _d;
501
+ const functionStatement = {
502
+ kind: StructureKind.Function,
503
+ docs: [`${serializeType} function for ${typeUnionNamesOutput}`],
504
+ name: deserializeFunctionName,
505
+ parameters: [{ name: "obj", type: typeUnionNamesOutput }],
506
+ returnType: typeUnionNames,
507
+ isExported: true
508
+ };
509
+ const statements = [];
510
+ statements.push(`switch (obj.${discriminator}) {`);
511
+ for (const type of unionDeserializeTypes) {
512
+ const functionName = toPascalCase((_a = type.name) !== null && _a !== void 0 ? _a : (((_b = type.elementType) === null || _b === void 0 ? void 0 : _b.name)
513
+ ? type.elementType.name + "Array"
514
+ : getMappedType(type.type) +
515
+ (serializeType === "deserialize" ? "Rest" : "")));
516
+ statements.push(`case "${type.discriminatorValue}": return ${serializeType}${functionName}(obj${isPolymorphicBaseModel
517
+ ? " as " + ((_c = type.name) !== null && _c !== void 0 ? _c : ((_d = type.elementType) === null || _d === void 0 ? void 0 : _d.name) + "[]")
518
+ : ""}); `);
519
+ }
520
+ statements.push("default: return obj; }");
521
+ functionStatement.statements = statements.join("\n");
522
+ if (!hasDuplicateFunction(sourceFile, functionStatement)) {
523
+ sourceFile.addFunction(functionStatement);
524
+ }
525
+ }
526
+ //# sourceMappingURL=buildSerializeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildSerializeUtils.js","sourceRoot":"","sources":["../../../src/modular/buildSerializeUtils.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { FunctionDeclarationStructure, OptionalKind } from "ts-morph";
2
- import { Client, ModularCodeModel, Operation, Property, Type } from "../modularCodeModel.js";
2
+ import { Client, ModularCodeModel, Operation, Parameter, Property, Type } from "../modularCodeModel.js";
3
3
  import { Imports as RuntimeImports } from "@azure-tools/rlc-common";
4
4
  import { SdkContext } from "@azure-tools/typespec-client-generator-core";
5
5
  export declare function getSendPrivateFunction(dpgContext: SdkContext, operation: Operation, clientType: string, runtimeImports: RuntimeImports): OptionalKind<FunctionDeclarationStructure>;
@@ -9,15 +9,38 @@ export declare function getDeserializePrivateFunction(operation: Operation, need
9
9
  */
10
10
  export declare function getOperationFunction(operation: Operation, clientType: string): OptionalKind<FunctionDeclarationStructure>;
11
11
  export declare function getOperationOptionsName(operation: Operation, includeGroupName?: boolean): string;
12
+ /**
13
+ * This function helps with renames, translating client names to rest api names
14
+ */
15
+ export declare function getParameterMap(param: Parameter | Property, runtimeImports: RuntimeImports): string;
16
+ /**
17
+ *
18
+ * This function helps translating an HLC request to RLC request,
19
+ * extracting properties from body and headers and building the RLC response object
20
+ */
21
+ export declare function getRequestModelMapping(modelPropertyType: Type, propertyPath: string | undefined, runtimeImports: RuntimeImports, typeStack?: Type[]): string[];
12
22
  /**
13
23
  * This function helps translating an RLC response to an HLC response,
14
24
  * extracting properties from body and headers and building the HLC response object
15
25
  */
16
26
  export declare function getResponseMapping(type: Type, propertyPath: string | undefined, runtimeImports: RuntimeImports, typeStack?: Type[]): string[];
17
- export declare function hasLROOperation(codeModel: ModularCodeModel): boolean;
27
+ /**
28
+ * This function helps converting strings into JS complex types recursively.
29
+ * We need to drill down into Array elements to make sure that the element type is
30
+ * deserialized correctly
31
+ */
32
+ export declare function deserializeResponseValue(type: Type, restValue: string, runtimeImports: RuntimeImports, required: boolean, typeStack?: Type[], format?: string): string;
33
+ /**
34
+ * This function helps converting strings into JS complex types recursively.
35
+ * We need to drill down into Array elements to make sure that the element type is
36
+ * deserialized correctly
37
+ */
38
+ export declare function serializeRequestValue(type: Type, clientValue: string, runtimeImports: RuntimeImports, required: boolean, typeStack?: Type[], format?: string): string;
39
+ export declare function hasLROOperation(codeModel: ModularCodeModel, needRLC?: boolean): boolean;
18
40
  export declare function isLROOperation(op: Operation): boolean;
19
- export declare function hasPagingOperation(client: Client): boolean;
20
- export declare function hasPagingOperation(codeModel: ModularCodeModel): boolean;
41
+ export declare function hasPagingOperation(client: Client, needRLC?: boolean): boolean;
42
+ export declare function hasPagingOperation(codeModel: ModularCodeModel, needRLC?: boolean): boolean;
21
43
  export declare function isPagingOperation(op: Operation): boolean;
22
44
  export declare function getAllProperties(type: Type, parents?: Type[]): Property[];
45
+ export declare function getAllAncestors(type: Type): Type[];
23
46
  //# sourceMappingURL=operationHelpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operationHelpers.d.ts","sourceRoot":"","sources":["../../../../src/modular/helpers/operationHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,YAAY,EAEb,MAAM,UAAU,CAAC;AAElB,OAAO,EAEL,MAAM,EACN,gBAAgB,EAChB,SAAS,EAET,QAAQ,EACR,IAAI,EACL,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,OAAO,IAAI,cAAc,EAM1B,MAAM,yBAAyB,CAAC;AAUjC,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAsBzE,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,cAAc,GAC7B,YAAY,CAAC,4BAA4B,CAAC,CAiC5C;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,OAAO,EAC7B,cAAc,EAAE,cAAc,GAC7B,YAAY,CAAC,4BAA4B,CAAC,CA8F5C;AAkDD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,GACjB,YAAY,CAAC,4BAA4B,CAAC,CA6D5C;AAgBD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,SAAS,EACpB,gBAAgB,UAAQ,UAWzB;AA8dD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,YAAY,oBAAwB,EACpC,cAAc,EAAE,cAAc,EAC9B,SAAS,GAAE,IAAI,EAAO,YAyEvB;AAuJD,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,WAM1D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAErD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;AAC5D,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC;AAiBzE,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAExD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAczE"}
1
+ {"version":3,"file":"operationHelpers.d.ts","sourceRoot":"","sources":["../../../../src/modular/helpers/operationHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,YAAY,EAEb,MAAM,UAAU,CAAC;AAElB,OAAO,EAEL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,IAAI,EACL,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,OAAO,IAAI,cAAc,EAM1B,MAAM,yBAAyB,CAAC;AAiBjC,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAsBzE,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,cAAc,GAC7B,YAAY,CAAC,4BAA4B,CAAC,CAiC5C;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,OAAO,EAC7B,cAAc,EAAE,cAAc,GAC7B,YAAY,CAAC,4BAA4B,CAAC,CA6F5C;AAkDD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,GACjB,YAAY,CAAC,4BAA4B,CAAC,CA6D5C;AAgBD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,SAAS,EACpB,gBAAgB,UAAQ,UAWzB;AAsLD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,GAAG,QAAQ,EAC3B,cAAc,EAAE,cAAc,GAC7B,MAAM,CAmBR;AAgMD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,IAAI,EACvB,YAAY,oBAAiB,EAC7B,cAAc,EAAE,cAAc,EAC9B,SAAS,GAAE,IAAI,EAAO,YAiGvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,YAAY,oBAAwB,EACpC,cAAc,EAAE,cAAc,EAC9B,SAAS,GAAE,IAAI,EAAO,YAyFvB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,OAAO,EACjB,SAAS,GAAE,IAAI,EAAO,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAwER;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,OAAO,EACjB,SAAS,GAAE,IAAI,EAAO,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAqFR;AAWD,wBAAgB,eAAe,CAC7B,SAAS,EAAE,gBAAgB,EAC3B,OAAO,GAAE,OAAe,WASzB;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAErD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;AAC/E,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,gBAAgB,EAC3B,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC;AAoBX,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAExD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAczE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,CAOlD"}