@azure-tools/typespec-ts 0.33.0 → 0.34.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 (199) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/src/framework/declaration.js.map +1 -1
  3. package/dist/src/framework/dependency.d.ts +25 -0
  4. package/dist/src/framework/dependency.d.ts.map +1 -1
  5. package/dist/src/framework/hooks/binder.d.ts +1 -1
  6. package/dist/src/framework/hooks/binder.d.ts.map +1 -1
  7. package/dist/src/framework/hooks/binder.js +16 -12
  8. package/dist/src/framework/hooks/binder.js.map +1 -1
  9. package/dist/src/framework/hooks/sdkTypes.d.ts +4 -2
  10. package/dist/src/framework/hooks/sdkTypes.d.ts.map +1 -1
  11. package/dist/src/framework/hooks/sdkTypes.js +43 -8
  12. package/dist/src/framework/hooks/sdkTypes.js.map +1 -1
  13. package/dist/src/framework/refkey.js +1 -1
  14. package/dist/src/framework/refkey.js.map +1 -1
  15. package/dist/src/framework/sample.js +1 -1
  16. package/dist/src/framework/sample.js.map +1 -1
  17. package/dist/src/index.d.ts +2 -0
  18. package/dist/src/index.d.ts.map +1 -1
  19. package/dist/src/index.js +81 -24
  20. package/dist/src/index.js.map +1 -1
  21. package/dist/src/lib.d.ts +37 -3
  22. package/dist/src/lib.d.ts.map +1 -1
  23. package/dist/src/lib.js +26 -1
  24. package/dist/src/lib.js.map +1 -1
  25. package/dist/src/modular/buildClassicalClient.d.ts +2 -2
  26. package/dist/src/modular/buildClassicalClient.d.ts.map +1 -1
  27. package/dist/src/modular/buildClassicalClient.js +25 -61
  28. package/dist/src/modular/buildClassicalClient.js.map +1 -1
  29. package/dist/src/modular/buildClassicalOperationGroups.d.ts.map +1 -1
  30. package/dist/src/modular/buildClassicalOperationGroups.js +0 -7
  31. package/dist/src/modular/buildClassicalOperationGroups.js.map +1 -1
  32. package/dist/src/modular/buildClientContext.d.ts +7 -3
  33. package/dist/src/modular/buildClientContext.d.ts.map +1 -1
  34. package/dist/src/modular/buildClientContext.js +58 -38
  35. package/dist/src/modular/buildClientContext.js.map +1 -1
  36. package/dist/src/modular/buildCodeModel.d.ts +18 -0
  37. package/dist/src/modular/buildCodeModel.d.ts.map +1 -1
  38. package/dist/src/modular/buildCodeModel.js +95 -42
  39. package/dist/src/modular/buildCodeModel.js.map +1 -1
  40. package/dist/src/modular/buildOperations.d.ts +3 -4
  41. package/dist/src/modular/buildOperations.d.ts.map +1 -1
  42. package/dist/src/modular/buildOperations.js +24 -45
  43. package/dist/src/modular/buildOperations.js.map +1 -1
  44. package/dist/src/modular/buildProjectFiles.d.ts.map +1 -1
  45. package/dist/src/modular/buildProjectFiles.js +3 -1
  46. package/dist/src/modular/buildProjectFiles.js.map +1 -1
  47. package/dist/src/modular/buildRestorePoller.js +1 -1
  48. package/dist/src/modular/buildRestorePoller.js.map +1 -1
  49. package/dist/src/modular/buildRootIndex.d.ts +5 -0
  50. package/dist/src/modular/buildRootIndex.d.ts.map +1 -1
  51. package/dist/src/modular/buildRootIndex.js +62 -17
  52. package/dist/src/modular/buildRootIndex.js.map +1 -1
  53. package/dist/src/modular/buildSubpathIndex.d.ts +1 -1
  54. package/dist/src/modular/buildSubpathIndex.d.ts.map +1 -1
  55. package/dist/src/modular/buildSubpathIndex.js +11 -10
  56. package/dist/src/modular/buildSubpathIndex.js.map +1 -1
  57. package/dist/src/modular/emitModels.d.ts +13 -28
  58. package/dist/src/modular/emitModels.d.ts.map +1 -1
  59. package/dist/src/modular/emitModels.js +435 -240
  60. package/dist/src/modular/emitModels.js.map +1 -1
  61. package/dist/src/modular/emitModelsOptions.d.ts +26 -0
  62. package/dist/src/modular/emitModelsOptions.d.ts.map +1 -0
  63. package/dist/src/modular/emitModelsOptions.js +106 -0
  64. package/dist/src/modular/emitModelsOptions.js.map +1 -0
  65. package/dist/src/modular/emitSamples.d.ts +7 -0
  66. package/dist/src/modular/emitSamples.d.ts.map +1 -0
  67. package/dist/src/modular/emitSamples.js +354 -0
  68. package/dist/src/modular/emitSamples.js.map +1 -0
  69. package/dist/src/modular/external-dependencies.d.ts +7 -0
  70. package/dist/src/modular/external-dependencies.d.ts.map +1 -1
  71. package/dist/src/modular/external-dependencies.js +58 -1
  72. package/dist/src/modular/external-dependencies.js.map +1 -1
  73. package/dist/src/modular/helpers/classicalOperationHelpers.d.ts.map +1 -1
  74. package/dist/src/modular/helpers/classicalOperationHelpers.js +2 -2
  75. package/dist/src/modular/helpers/classicalOperationHelpers.js.map +1 -1
  76. package/dist/src/modular/helpers/clientHelpers.d.ts +13 -6
  77. package/dist/src/modular/helpers/clientHelpers.d.ts.map +1 -1
  78. package/dist/src/modular/helpers/clientHelpers.js +117 -48
  79. package/dist/src/modular/helpers/clientHelpers.js.map +1 -1
  80. package/dist/src/modular/helpers/namingHelpers.d.ts +3 -2
  81. package/dist/src/modular/helpers/namingHelpers.d.ts.map +1 -1
  82. package/dist/src/modular/helpers/namingHelpers.js +3 -0
  83. package/dist/src/modular/helpers/namingHelpers.js.map +1 -1
  84. package/dist/src/modular/helpers/operationHelpers.d.ts +9 -11
  85. package/dist/src/modular/helpers/operationHelpers.d.ts.map +1 -1
  86. package/dist/src/modular/helpers/operationHelpers.js +255 -408
  87. package/dist/src/modular/helpers/operationHelpers.js.map +1 -1
  88. package/dist/src/modular/helpers/typeHelpers.d.ts +12 -0
  89. package/dist/src/modular/helpers/typeHelpers.d.ts.map +1 -1
  90. package/dist/src/modular/helpers/typeHelpers.js +30 -6
  91. package/dist/src/modular/helpers/typeHelpers.js.map +1 -1
  92. package/dist/src/modular/modularCodeModel.d.ts +2 -1
  93. package/dist/src/modular/modularCodeModel.d.ts.map +1 -1
  94. package/dist/src/modular/serialization/buildDeserializerFunction.d.ts +5 -0
  95. package/dist/src/modular/serialization/buildDeserializerFunction.d.ts.map +1 -0
  96. package/dist/src/modular/serialization/buildDeserializerFunction.js +327 -0
  97. package/dist/src/modular/serialization/buildDeserializerFunction.js.map +1 -0
  98. package/dist/src/modular/serialization/buildSerializerFunction.d.ts +4 -3
  99. package/dist/src/modular/serialization/buildSerializerFunction.d.ts.map +1 -1
  100. package/dist/src/modular/serialization/buildSerializerFunction.js +285 -102
  101. package/dist/src/modular/serialization/buildSerializerFunction.js.map +1 -1
  102. package/dist/src/modular/serialization/serializeUtils.d.ts +15 -0
  103. package/dist/src/modular/serialization/serializeUtils.d.ts.map +1 -0
  104. package/dist/src/modular/serialization/serializeUtils.js +102 -0
  105. package/dist/src/modular/serialization/serializeUtils.js.map +1 -0
  106. package/dist/src/modular/type-expressions/get-credential-expression.d.ts +3 -0
  107. package/dist/src/modular/type-expressions/get-credential-expression.d.ts.map +1 -0
  108. package/dist/src/modular/type-expressions/get-credential-expression.js +17 -0
  109. package/dist/src/modular/type-expressions/get-credential-expression.js.map +1 -0
  110. package/dist/src/modular/type-expressions/get-enum-expression.d.ts +6 -0
  111. package/dist/src/modular/type-expressions/get-enum-expression.d.ts.map +1 -0
  112. package/dist/src/modular/type-expressions/get-enum-expression.js +18 -0
  113. package/dist/src/modular/type-expressions/get-enum-expression.js.map +1 -0
  114. package/dist/src/modular/type-expressions/get-model-expression.d.ts +9 -0
  115. package/dist/src/modular/type-expressions/get-model-expression.d.ts.map +1 -0
  116. package/dist/src/modular/type-expressions/get-model-expression.js +42 -0
  117. package/dist/src/modular/type-expressions/get-model-expression.js.map +1 -0
  118. package/dist/src/modular/type-expressions/get-type-expression.d.ts +8 -0
  119. package/dist/src/modular/type-expressions/get-type-expression.d.ts.map +1 -0
  120. package/dist/src/modular/type-expressions/get-type-expression.js +94 -0
  121. package/dist/src/modular/type-expressions/get-type-expression.js.map +1 -0
  122. package/dist/src/modular/type-expressions/get-union-expression.d.ts +5 -0
  123. package/dist/src/modular/type-expressions/get-union-expression.d.ts.map +1 -0
  124. package/dist/src/modular/type-expressions/get-union-expression.js +13 -0
  125. package/dist/src/modular/type-expressions/get-union-expression.js.map +1 -0
  126. package/dist/src/modular/type-expressions/utils.d.ts +5 -0
  127. package/dist/src/modular/type-expressions/utils.d.ts.map +1 -0
  128. package/dist/src/modular/type-expressions/utils.js +9 -0
  129. package/dist/src/modular/type-expressions/utils.js.map +1 -0
  130. package/dist/src/transform/transform.js +1 -1
  131. package/dist/src/transform/transform.js.map +1 -1
  132. package/dist/src/transform/transformApiVersionInfo.js +1 -1
  133. package/dist/src/transform/transformApiVersionInfo.js.map +1 -1
  134. package/dist/src/transform/transformParameters.js +1 -1
  135. package/dist/src/transform/transformParameters.js.map +1 -1
  136. package/dist/src/transform/transformSchemas.d.ts.map +1 -1
  137. package/dist/src/transform/transformSchemas.js +3 -3
  138. package/dist/src/transform/transformSchemas.js.map +1 -1
  139. package/dist/src/utils/clientUtils.d.ts.map +1 -1
  140. package/dist/src/utils/clientUtils.js +1 -4
  141. package/dist/src/utils/clientUtils.js.map +1 -1
  142. package/dist/src/utils/credentialUtils.d.ts +5 -0
  143. package/dist/src/utils/credentialUtils.d.ts.map +1 -1
  144. package/dist/src/utils/credentialUtils.js +36 -4
  145. package/dist/src/utils/credentialUtils.js.map +1 -1
  146. package/dist/src/utils/modelUtils.d.ts.map +1 -1
  147. package/dist/src/utils/modelUtils.js +28 -43
  148. package/dist/src/utils/modelUtils.js.map +1 -1
  149. package/dist/tsconfig.tsbuildinfo +1 -1
  150. package/package.json +26 -26
  151. package/src/framework/declaration.ts +0 -1
  152. package/src/framework/dependency.ts +25 -0
  153. package/src/framework/hooks/binder.ts +19 -14
  154. package/src/framework/hooks/sdkTypes.ts +53 -13
  155. package/src/framework/refkey.ts +1 -1
  156. package/src/framework/sample.ts +1 -1
  157. package/src/index.ts +96 -25
  158. package/src/lib.ts +26 -3
  159. package/src/modular/buildClassicalClient.ts +30 -97
  160. package/src/modular/buildClassicalOperationGroups.ts +0 -14
  161. package/src/modular/buildClientContext.ts +90 -50
  162. package/src/modular/buildCodeModel.ts +118 -47
  163. package/src/modular/buildOperations.ts +41 -76
  164. package/src/modular/buildProjectFiles.ts +4 -2
  165. package/src/modular/buildRestorePoller.ts +1 -1
  166. package/src/modular/buildRootIndex.ts +75 -35
  167. package/src/modular/buildSubpathIndex.ts +13 -11
  168. package/src/modular/emitModels.ts +588 -326
  169. package/src/modular/emitModelsOptions.ts +161 -0
  170. package/src/modular/emitSamples.ts +481 -0
  171. package/src/modular/external-dependencies.ts +59 -1
  172. package/src/modular/helpers/classicalOperationHelpers.ts +6 -2
  173. package/src/modular/helpers/clientHelpers.ts +182 -76
  174. package/src/modular/helpers/namingHelpers.ts +14 -2
  175. package/src/modular/helpers/operationHelpers.ts +356 -638
  176. package/src/modular/helpers/typeHelpers.ts +38 -6
  177. package/src/modular/modularCodeModel.ts +3 -0
  178. package/src/modular/serialization/buildDeserializerFunction.ts +492 -0
  179. package/src/modular/serialization/buildSerializerFunction.ts +434 -141
  180. package/src/modular/serialization/serializeUtils.ts +143 -0
  181. package/src/modular/type-expressions/get-credential-expression.ts +18 -0
  182. package/src/modular/type-expressions/get-enum-expression.ts +28 -0
  183. package/src/modular/type-expressions/get-model-expression.ts +63 -0
  184. package/src/modular/type-expressions/get-type-expression.ts +111 -0
  185. package/src/modular/type-expressions/get-union-expression.ts +20 -0
  186. package/src/modular/type-expressions/utils.ts +15 -0
  187. package/src/transform/transform.ts +2 -2
  188. package/src/transform/transformApiVersionInfo.ts +2 -2
  189. package/src/transform/transformParameters.ts +1 -1
  190. package/src/transform/transformSchemas.ts +9 -8
  191. package/src/utils/clientUtils.ts +2 -12
  192. package/src/utils/credentialUtils.ts +43 -3
  193. package/src/utils/modelUtils.ts +32 -41
  194. package/static/static-helpers/serialization/serializers.ts +60 -0
  195. package/dist/src/modular/buildSerializeUtils.d.ts +0 -14
  196. package/dist/src/modular/buildSerializeUtils.d.ts.map +0 -1
  197. package/dist/src/modular/buildSerializeUtils.js +0 -534
  198. package/dist/src/modular/buildSerializeUtils.js.map +0 -1
  199. package/src/modular/buildSerializeUtils.ts +0 -749
@@ -1,102 +1,55 @@
1
+ import { StructureKind } from "ts-morph";
2
+ import { UsageFlags } from "@azure-tools/typespec-client-generator-core";
1
3
  import { toCamelCase, toPascalCase } from "../../utils/casingUtils.js";
2
4
  import { getRequestModelMapping } from "../helpers/operationHelpers.js";
3
- import { UsageFlags } from "@typespec/compiler";
4
- function getTcgcType(type) {
5
- var _a;
6
- if (((_a = type.tcgcType) === null || _a === void 0 ? void 0 : _a.kind) === "nullable") {
7
- return type.tcgcType.type;
8
- }
9
- return type.tcgcType;
10
- }
11
- export function buildModelSerializer(type, runtimeImports) {
12
- const modelTcgcType = getTcgcType(type);
13
- if (modelTcgcType.usage !== undefined &&
14
- (modelTcgcType.usage & UsageFlags.Input) !== UsageFlags.Input) {
5
+ import { getType } from "../buildCodeModel.js";
6
+ import { normalizeModelName } from "../emitModels.js";
7
+ import { NameType } from "@azure-tools/rlc-common";
8
+ import { isAzureCoreErrorType } from "../../utils/modelUtils.js";
9
+ import { isDiscriminatedUnion, isSupportedSerializeType } from "./serializeUtils.js";
10
+ export function buildModelSerializer(context, type, skipDiscriminatedUnion = false, nameOnly = false) {
11
+ // const modelTcgcType = getTcgcType(type) as SdkModelType;
12
+ if (!isSupportedSerializeType(type)) {
15
13
  return undefined;
16
14
  }
17
- if (!type.name) {
18
- throw new Error(`NYI Serialization of anonymous types`);
19
- }
20
- let serializerName = `${toCamelCase(type.name)}Serializer`;
21
- const output = [];
22
- if (!isDiscriminatedUnion(type) &&
23
- type.type === "combined" &&
24
- type.discriminator) {
25
- return buildPolymorphicSerializer(type);
26
- }
27
- if (isDiscriminatedUnion(type)) {
28
- const discriminatedTgcType = getTcgcType(type);
29
- const cases = [];
30
- const baseSerializerName = `${toCamelCase(discriminatedTgcType.name)}Serializer`;
31
- for (const key in discriminatedTgcType.discriminatedSubtypes) {
32
- const subType = discriminatedTgcType.discriminatedSubtypes[key];
33
- const discriminatedValue = subType.discriminatorValue;
34
- const union = subType.discriminatedSubtypes ? "Union" : "";
35
- const subTypeName = `${toPascalCase(subType.name)}${union}`;
36
- const subtypeSerializerName = toCamelCase(`${subTypeName}Serializer`);
37
- cases.push(`
38
- case "${discriminatedValue}":
39
- return ${subtypeSerializerName}(item as ${subTypeName});
40
- `);
15
+ if (type.kind === "model" || type.kind === "union" || type.kind === "enum") {
16
+ if (!type.usage ||
17
+ (type.usage !== undefined &&
18
+ (type.usage & UsageFlags.Input) !== UsageFlags.Input)) {
19
+ return undefined;
41
20
  }
42
- output.push(`
43
- export function ${toCamelCase(type.name)}Serializer(item: ${toPascalCase(type.name)}) {
44
- switch (item.${type.discriminator}) {
45
- ${cases.join("\n")}
46
- default:
47
- return ${baseSerializerName}(item);
48
- }
49
- }
50
- `);
51
- serializerName = baseSerializerName;
52
- }
53
- if (type.type === "model" || type.type === "dict") {
54
- const nullabilityPrefix = "";
55
- // getPropertySerializationPrefix({
56
- // clientName: "item",
57
- // type
58
- // });
59
- // This is only handling the compatibility mode, will need to update when we handle additionalProperties property.
60
- const additionalPropertiesSpread = hasAdditionalProperties(type.tcgcType)
61
- ? "...item,"
62
- : "";
63
- const { propertiesStr, directAssignment } = getRequestModelMapping(type, "item", runtimeImports);
64
- const propertiesSerialization = propertiesStr.filter((p) => p.trim());
65
- // don't emit a serializer if there is nothing to serialize
66
- if (propertiesSerialization.length || additionalPropertiesSpread) {
67
- const spreadSerialized = directAssignment ? "..." : "";
68
- const fnBody = `{
69
- ${additionalPropertiesSpread}
70
- ${nullabilityPrefix} ${spreadSerialized} ${propertiesSerialization.join(",\n")}
71
- }`;
72
- output.push(`
73
- export function ${serializerName}(item: ${toPascalCase(type.name)}): Record<string, unknown> {
74
- return ${fnBody}
75
- }
76
- `);
21
+ if (!type.name) {
22
+ // TODO: https://github.com/Azure/typespec-azure/issues/1713 and https://github.com/microsoft/typespec/issues/4815
23
+ // throw new Error(`NYI Serialization of anonymous types`);
24
+ return undefined;
77
25
  }
78
- else {
79
- output.push(`
80
- export function ${serializerName}(item: ${toPascalCase(type.name)}) {
81
- return item as any;
82
- }
83
- `);
26
+ if (isAzureCoreErrorType(context.program, type.__raw)) {
27
+ return undefined;
84
28
  }
85
29
  }
86
- else if (type.type === "enum") {
87
- output.push(`
88
- export function ${serializerName}(item: ${toPascalCase(type.name)}) {
89
- return item;
30
+ if (!isDiscriminatedUnion(type) &&
31
+ type.kind === "model" &&
32
+ type.discriminatorProperty) {
33
+ return buildPolymorphicSerializer(context, type, nameOnly);
90
34
  }
91
- `);
35
+ if (isDiscriminatedUnion(type) && !skipDiscriminatedUnion) {
36
+ return buildDiscriminatedUnionSerializer(context, type, nameOnly);
37
+ }
38
+ switch (type.kind) {
39
+ case "model":
40
+ return buildModelTypeSerializer(context, type, {
41
+ nameOnly,
42
+ skipDiscriminatedUnionSuffix: skipDiscriminatedUnion
43
+ });
44
+ case "union": // for non-discriminated union, we just return whatever we get
45
+ return buildUnionSerializer(context, type, nameOnly);
46
+ case "dict":
47
+ return buildDictTypeSerializer(context, type, nameOnly);
48
+ case "array":
49
+ return buildArrayTypeSerializer(context, type, nameOnly);
50
+ default:
51
+ return undefined;
92
52
  }
93
- return output.join("\n");
94
- }
95
- function isDiscriminatedUnion(type) {
96
- const { tcgcType } = type;
97
- return Boolean((tcgcType === null || tcgcType === void 0 ? void 0 : tcgcType.kind) === "model" &&
98
- tcgcType.discriminatorProperty &&
99
- tcgcType.discriminatedSubtypes);
100
53
  }
101
54
  function hasAdditionalProperties(type) {
102
55
  if (!type || !("additionalProperties" in type)) {
@@ -110,33 +63,263 @@ function hasAdditionalProperties(type) {
110
63
  }
111
64
  return false;
112
65
  }
113
- function buildPolymorphicSerializer(type) {
114
- var _a;
115
- if (!type.discriminator) {
66
+ function buildPolymorphicSerializer(context, type, nameOnly = false) {
67
+ if (!type.name) {
68
+ throw new Error(`NYI Serialization of anonymous types`);
69
+ }
70
+ const serializeFunctionName = `${normalizeModelName(context, type, NameType.Operation)}Serializer`;
71
+ if (nameOnly) {
72
+ return serializeFunctionName;
73
+ }
74
+ const serializerFunction = {
75
+ kind: StructureKind.Function,
76
+ name: serializeFunctionName,
77
+ isExported: true,
78
+ parameters: [
79
+ {
80
+ name: "item",
81
+ type: normalizeModelName(context, type)
82
+ }
83
+ ],
84
+ returnType: "any",
85
+ statements: []
86
+ };
87
+ if (!type.discriminatorProperty) {
88
+ return;
89
+ }
90
+ const statements = [];
91
+ const subTypes = type.discriminatedSubtypes;
92
+ if (!subTypes) {
116
93
  return;
117
94
  }
118
- const output = [];
119
- const subTypes = (_a = type.types) !== null && _a !== void 0 ? _a : [];
120
95
  const cases = [];
121
- for (const subType of subTypes) {
122
- const discriminatedValue = subType.discriminatorValue;
123
- const union = subType.types ? "Union" : "";
96
+ Object.keys(subTypes).forEach((discriminatedValue) => {
97
+ const subType = subTypes[discriminatedValue];
98
+ if (!(subType === null || subType === void 0 ? void 0 : subType.usage) ||
99
+ ((subType === null || subType === void 0 ? void 0 : subType.usage) !== undefined &&
100
+ (subType.usage & UsageFlags.Input) !== UsageFlags.Input)) {
101
+ return;
102
+ }
103
+ const union = (subType === null || subType === void 0 ? void 0 : subType.discriminatedSubtypes) ? "Union" : "";
104
+ if (!subType || (subType === null || subType === void 0 ? void 0 : subType.name)) {
105
+ throw new Error(`NYI Serialization of anonymous types`);
106
+ }
124
107
  const subTypeName = `${toPascalCase(subType.name)}${union}`;
125
108
  const subtypeSerializerName = toCamelCase(`${subTypeName}Serializer`);
126
109
  cases.push(`
127
110
  case "${discriminatedValue}":
128
111
  return ${subtypeSerializerName}(item as ${subTypeName});
129
112
  `);
130
- }
131
- output.push(`
132
- export function ${toCamelCase(type.name)}Serializer(item: ${toPascalCase(type.name)}) {
133
- switch (item.${type.discriminator}) {
113
+ });
114
+ statements.push(`
115
+ switch (item.${type.discriminatorProperty.name}) {
134
116
  ${cases.join("\n")}
135
117
  default:
136
118
  return item;
137
119
  }
120
+ `);
121
+ serializerFunction.statements = statements.join("\n");
122
+ return serializerFunction;
123
+ }
124
+ function buildDiscriminatedUnionSerializer(context, type, nameOnly = false) {
125
+ var _a;
126
+ if (!type.name) {
127
+ throw new Error(`NYI Serialization of anonymous types`);
138
128
  }
129
+ const cases = [];
130
+ const output = [];
131
+ const serializeFunctionName = `${normalizeModelName(context, type, NameType.Operation)}Serializer`;
132
+ if (nameOnly) {
133
+ return serializeFunctionName;
134
+ }
135
+ const baseSerializerName = `${normalizeModelName(context, type, NameType.Operation, true)}Serializer`;
136
+ for (const key in type.discriminatedSubtypes) {
137
+ const subType = type.discriminatedSubtypes[key];
138
+ if (!subType.usage ||
139
+ (subType.usage !== undefined &&
140
+ (subType.usage & UsageFlags.Input) !== UsageFlags.Input)) {
141
+ continue;
142
+ }
143
+ const discriminatedValue = subType.discriminatorValue;
144
+ const union = subType.discriminatedSubtypes ? "Union" : "";
145
+ const subTypeName = `${toPascalCase(subType.name)}${union}`;
146
+ const subtypeSerializerName = toCamelCase(`${subTypeName}Serializer`);
147
+ cases.push(`
148
+ case "${discriminatedValue}":
149
+ return ${subtypeSerializerName}(item as ${subTypeName});
139
150
  `);
140
- return output.join("\n");
151
+ }
152
+ output.push(`
153
+ switch (item.${(_a = type.discriminatorProperty) === null || _a === void 0 ? void 0 : _a.name}) {
154
+ ${cases.join("\n")}
155
+ default:
156
+ return ${baseSerializerName}(item);
157
+ }
158
+ `);
159
+ const serializerFunction = {
160
+ kind: StructureKind.Function,
161
+ name: serializeFunctionName,
162
+ isExported: true,
163
+ parameters: [
164
+ {
165
+ name: "item",
166
+ type: normalizeModelName(context, type)
167
+ }
168
+ ],
169
+ returnType: "any",
170
+ statements: output.join("\n")
171
+ };
172
+ return serializerFunction;
173
+ }
174
+ function buildUnionSerializer(context, type, nameOnly = false) {
175
+ if (!type.name) {
176
+ throw new Error(`NYI Serialization of anonymous types`);
177
+ }
178
+ const serializerFunctionName = `${normalizeModelName(context, type, NameType.Operation)}Serializer`;
179
+ if (nameOnly) {
180
+ return serializerFunctionName;
181
+ }
182
+ const serializerFunction = {
183
+ kind: StructureKind.Function,
184
+ name: `${normalizeModelName(context, type, NameType.Operation)}Serializer`,
185
+ isExported: true,
186
+ parameters: [
187
+ {
188
+ name: "item",
189
+ type: normalizeModelName(context, type)
190
+ }
191
+ ],
192
+ returnType: "any",
193
+ statements: ["return item;"]
194
+ };
195
+ return serializerFunction;
196
+ }
197
+ function buildModelTypeSerializer(context, type, options = {
198
+ nameOnly: false,
199
+ skipDiscriminatedUnionSuffix: false
200
+ }) {
201
+ if (!type.name) {
202
+ throw new Error(`NYI Deserialization of anonymous types`);
203
+ }
204
+ const serializerFunctionName = `${normalizeModelName(context, type, NameType.Operation, options.skipDiscriminatedUnionSuffix)}Serializer`;
205
+ if (options.nameOnly) {
206
+ return serializerFunctionName;
207
+ }
208
+ const serializerFunction = {
209
+ kind: StructureKind.Function,
210
+ name: serializerFunctionName,
211
+ isExported: true,
212
+ parameters: [
213
+ {
214
+ name: "item",
215
+ type: normalizeModelName(context, type, NameType.Interface, options.skipDiscriminatedUnionSuffix)
216
+ }
217
+ ],
218
+ returnType: "any",
219
+ statements: ["return item;"]
220
+ };
221
+ // This is only handling the compatibility mode, will need to update when we handle additionalProperties property.
222
+ const additionalPropertiesSpread = hasAdditionalProperties(type)
223
+ ? "...item"
224
+ : "";
225
+ const { directAssignment, propertiesStr } = getRequestModelMapping(context, getType(context, type.__raw), "item");
226
+ if (additionalPropertiesSpread) {
227
+ propertiesStr.unshift(additionalPropertiesSpread);
228
+ }
229
+ const serializeContent = directAssignment === true
230
+ ? propertiesStr.join(",")
231
+ : `{${propertiesStr.join(",")}}`;
232
+ const output = [];
233
+ // don't emit a serializer if there is nothing to serialize
234
+ if (propertiesStr.length) {
235
+ output.push(`
236
+ return ${serializeContent}
237
+ `);
238
+ }
239
+ else {
240
+ output.push(`
241
+ return item;
242
+ `);
243
+ }
244
+ serializerFunction.statements = output;
245
+ return serializerFunction;
246
+ }
247
+ function buildDictTypeSerializer(context, type, nameOnly = false) {
248
+ var _a;
249
+ const valueSerializer = buildModelSerializer(context, type.valueType, false, true);
250
+ if (!valueSerializer) {
251
+ return undefined;
252
+ }
253
+ if (!isSupportedSerializeType(type.valueType)) {
254
+ return undefined;
255
+ }
256
+ if (typeof valueSerializer !== "string") {
257
+ return undefined;
258
+ }
259
+ const valueTypeName = toCamelCase(valueSerializer ? valueSerializer.replace("Serializer", "") : "");
260
+ const serializerFunctionName = `${valueTypeName}RecordSerializer`;
261
+ if (nameOnly) {
262
+ return serializerFunctionName;
263
+ }
264
+ const serializerFunction = {
265
+ kind: StructureKind.Function,
266
+ name: serializerFunctionName,
267
+ isExported: true,
268
+ parameters: [
269
+ {
270
+ name: "item",
271
+ type: `Record<string, ${(_a = normalizeModelName(context, type.valueType)) !== null && _a !== void 0 ? _a : "any"}>`
272
+ }
273
+ ],
274
+ returnType: "Record<string, any>",
275
+ statements: [
276
+ `
277
+ const result: Record<string, any> = {};
278
+ Object.keys(item).map((key) => {
279
+ result[key] = !item[key]? item[key]: ${valueSerializer}(item[key])
280
+ });
281
+ return result;
282
+ `
283
+ ]
284
+ };
285
+ return serializerFunction;
286
+ }
287
+ function buildArrayTypeSerializer(context, type, nameOnly = false) {
288
+ var _a;
289
+ const valueSerializer = buildModelSerializer(context, type.valueType, false, true);
290
+ if (!valueSerializer) {
291
+ return undefined;
292
+ }
293
+ if (!isSupportedSerializeType(type.valueType)) {
294
+ return undefined;
295
+ }
296
+ if (typeof valueSerializer !== "string") {
297
+ return undefined;
298
+ }
299
+ const valueTypeName = toCamelCase(valueSerializer ? valueSerializer.replace("Serializer", "") : "");
300
+ const serializerFunctionName = `${valueTypeName}ArraySerializer`;
301
+ if (nameOnly) {
302
+ return serializerFunctionName;
303
+ }
304
+ const serializerFunction = {
305
+ kind: StructureKind.Function,
306
+ name: serializerFunctionName,
307
+ isExported: true,
308
+ parameters: [
309
+ {
310
+ name: "result",
311
+ type: `Array<${(_a = normalizeModelName(context, type.valueType)) !== null && _a !== void 0 ? _a : "any"}>`
312
+ }
313
+ ],
314
+ returnType: "any[]",
315
+ statements: [
316
+ `
317
+ return result.map((item) => {
318
+ return ${valueSerializer}(item)
319
+ });
320
+ `
321
+ ]
322
+ };
323
+ return serializerFunction;
141
324
  }
142
325
  //# sourceMappingURL=buildSerializerFunction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildSerializerFunction.js","sourceRoot":"","sources":["../../../../src/modular/serialization/buildSerializerFunction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildSerializerFunction.js","sourceRoot":"","sources":["../../../../src/modular/serialization/buildSerializerFunction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Type } from "../modularCodeModel.js";
2
+ import { SdkModelType, SdkType } from "@azure-tools/typespec-client-generator-core";
3
+ export declare function isSupportedSerializeType(type: SdkType): boolean;
4
+ export declare function isSpecialUnionVariant(t: Type, variantStack?: Type[]): boolean;
5
+ export declare function isNormalUnion(t: Type): boolean;
6
+ export declare function isDiscriminatedUnion(type: SdkType): type is SdkModelType & {
7
+ discriminatorProperty: SdkType;
8
+ };
9
+ export declare function isSpecialHandledUnion(t: Type): boolean;
10
+ export declare function isPolymorphicUnion(t: Type): boolean;
11
+ export interface ModelSerializeOptions {
12
+ nameOnly: boolean;
13
+ skipDiscriminatedUnionSuffix: boolean;
14
+ }
15
+ //# sourceMappingURL=serializeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializeUtils.d.ts","sourceRoot":"","sources":["../../../../src/modular/serialization/serializeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EACL,YAAY,EACZ,OAAO,EACR,MAAM,6CAA6C,CAAC;AAErD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAO/D;AAeD,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,IAAI,EACP,YAAY,GAAE,IAAI,EAAO,GACxB,OAAO,CAqDT;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAS9C;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,YAAY,GAAG;IAAE,qBAAqB,EAAE,OAAO,CAAA;CAAE,CAS3D;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAEtD;AAGD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAqBnD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,4BAA4B,EAAE,OAAO,CAAC;CACvC"}
@@ -0,0 +1,102 @@
1
+ import { getAllAncestors } from "../helpers/operationHelpers.js";
2
+ export function isSupportedSerializeType(type) {
3
+ return (type.kind === "model" ||
4
+ type.kind === "dict" ||
5
+ type.kind === "array" ||
6
+ type.kind === "union");
7
+ }
8
+ /**
9
+ *
10
+ * In general, we have two kinds of basic special union variants.
11
+ * 1. datetime type
12
+ * 2. bytes type
13
+ * If we consider model type, we have the following three type.
14
+ * 3. model with property of datetime type.
15
+ * 4. model with property of binary array type.
16
+ * 5. model that has different property name between rest layer and modular layer.
17
+ * 6. nested model i.e. model with property that is a model with one of the above three conditions.
18
+ * If we consider array type, with all the above 6 types as the element types.
19
+ */
20
+ const specialVariantMap = new Map();
21
+ export function isSpecialUnionVariant(t, variantStack = []) {
22
+ var _a, _b, _c, _d, _e;
23
+ if (variantStack.length <= 0) {
24
+ variantStack.push(t);
25
+ }
26
+ const ancestors = getAllAncestors(t);
27
+ if (specialVariantMap.has(t)) {
28
+ variantStack.pop();
29
+ return (_a = specialVariantMap.get(t)) !== null && _a !== void 0 ? _a : false;
30
+ }
31
+ if (t.type === "datetime" ||
32
+ t.type === "byte-array" ||
33
+ (t.type === "model" &&
34
+ ((_c = (_b = t.properties) === null || _b === void 0 ? void 0 : _b.filter((p) => {
35
+ return !(variantStack.includes(p.type) ||
36
+ ancestors.includes(p.type) ||
37
+ (p.type.type === "list" &&
38
+ p.type.elementType &&
39
+ (variantStack.includes(p.type.elementType) ||
40
+ ancestors.includes(p.type.elementType))));
41
+ })) === null || _c === void 0 ? void 0 : _c.some((p) => p.clientName !== p.restApiName ||
42
+ isSpecialUnionVariant(p.type, [...variantStack, p.type])))) ||
43
+ isPolymorphicUnion(t) ||
44
+ (t.type === "list" &&
45
+ t.elementType &&
46
+ !variantStack.includes(t.elementType) &&
47
+ !ancestors.includes(t.elementType) &&
48
+ isSpecialUnionVariant(t.elementType, [...variantStack, t.elementType])) ||
49
+ (t.type === "combined" &&
50
+ ((_e = (_d = t.types) === null || _d === void 0 ? void 0 : _d.filter((p) => {
51
+ return !(variantStack.includes(p) || ancestors.includes(p));
52
+ })) === null || _e === void 0 ? void 0 : _e.some((p) => {
53
+ return isSpecialUnionVariant(p, [...variantStack, p]);
54
+ }))) ||
55
+ (t.type === "enum" && !(t.isFixed || t.isNonExhaustive))) {
56
+ specialVariantMap.set(t, true);
57
+ variantStack.pop();
58
+ return true;
59
+ }
60
+ variantStack.pop();
61
+ specialVariantMap.set(t, false);
62
+ return false;
63
+ }
64
+ export function isNormalUnion(t) {
65
+ var _a, _b;
66
+ return (t.type === "combined" &&
67
+ !((_b = (_a = t.types) === null || _a === void 0 ? void 0 : _a.some((p) => {
68
+ return isSpecialUnionVariant(p);
69
+ })) !== null && _b !== void 0 ? _b : false));
70
+ }
71
+ export function isDiscriminatedUnion(type) {
72
+ if (!type) {
73
+ return false;
74
+ }
75
+ return Boolean((type === null || type === void 0 ? void 0 : type.kind) === "model" &&
76
+ type.discriminatorProperty &&
77
+ type.discriminatedSubtypes);
78
+ }
79
+ export function isSpecialHandledUnion(t) {
80
+ return isDiscriminatedUnion(t.tcgcType) || isPolymorphicUnion(t);
81
+ }
82
+ const polymorphicUnionMap = new Map();
83
+ export function isPolymorphicUnion(t) {
84
+ var _a, _b, _c;
85
+ if (polymorphicUnionMap.has(t)) {
86
+ return (_a = polymorphicUnionMap.get(t)) !== null && _a !== void 0 ? _a : false;
87
+ }
88
+ const ancestors = getAllAncestors(t);
89
+ if (t.type === "model" &&
90
+ t.isPolymorphicBaseModel &&
91
+ ((_c = (_b = t.types) === null || _b === void 0 ? void 0 : _b.filter((p) => {
92
+ return !ancestors.includes(p);
93
+ })) === null || _c === void 0 ? void 0 : _c.some((p) => {
94
+ return isSpecialUnionVariant(p);
95
+ }))) {
96
+ polymorphicUnionMap.set(t, true);
97
+ return true;
98
+ }
99
+ polymorphicUnionMap.set(t, false);
100
+ return false;
101
+ }
102
+ //# sourceMappingURL=serializeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializeUtils.js","sourceRoot":"","sources":["../../../../src/modular/serialization/serializeUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAMjE,MAAM,UAAU,wBAAwB,CAAC,IAAa;IACpD,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,IAAI,CAAC,IAAI,KAAK,MAAM;QACpB,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,IAAI,CAAC,IAAI,KAAK,OAAO,CACtB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAiB,CAAC;AACnD,MAAM,UAAU,qBAAqB,CACnC,CAAO,EACP,eAAuB,EAAE;;IAEzB,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7B,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,YAAY,CAAC,GAAG,EAAE,CAAC;QACnB,OAAO,MAAA,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAI,KAAK,CAAC;IAC3C,CAAC;IAED,IACE,CAAC,CAAC,IAAI,KAAK,UAAU;QACrB,CAAC,CAAC,IAAI,KAAK,YAAY;QACvB,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO;aACjB,MAAA,MAAA,CAAC,CAAC,UAAU,0CACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBACb,OAAO,CAAC,CACN,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC7B,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM;wBACrB,CAAC,CAAC,IAAI,CAAC,WAAW;wBAClB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;4BACxC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAC7C,CAAC;YACJ,CAAC,CAAC,0CACA,IAAI,CACJ,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,WAAW;gBAC9B,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAC3D,CAAA,CAAC;QACN,kBAAkB,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;YAChB,CAAC,CAAC,WAAW;YACb,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;YACrC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;YAClC,qBAAqB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU;aACpB,MAAA,MAAA,CAAC,CAAC,KAAK,0CACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBACb,OAAO,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,0CACA,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACX,OAAO,qBAAqB,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC,CAAC,CAAA,CAAC;QACP,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,EACxD,CAAC;QACD,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/B,YAAY,CAAC,GAAG,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,YAAY,CAAC,GAAG,EAAE,CAAC;IACnB,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAO;;IACnC,OAAO,CACL,CAAC,CAAC,IAAI,KAAK,UAAU;QACrB,CAAC,CACC,MAAA,MAAA,CAAC,CAAC,KAAK,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAClB,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,mCAAI,KAAK,CACZ,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAa;IAEb,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CACZ,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,OAAO;QACpB,IAAI,CAAC,qBAAqB;QAC1B,IAAI,CAAC,qBAAqB,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,CAAO;IAC3C,OAAO,oBAAoB,CAAC,CAAC,CAAC,QAAS,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAiB,CAAC;AACrD,MAAM,UAAU,kBAAkB,CAAC,CAAO;;IACxC,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAA,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAI,KAAK,CAAC;IAC7C,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACrC,IACE,CAAC,CAAC,IAAI,KAAK,OAAO;QAClB,CAAC,CAAC,sBAAsB;SACxB,MAAA,MAAA,CAAC,CAAC,KAAK,0CACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,0CACA,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAA,EACJ,CAAC;QACD,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { SdkCredentialType } from "@azure-tools/typespec-client-generator-core";
2
+ export declare function getCredentialExpression(type: SdkCredentialType): string;
3
+ //# sourceMappingURL=get-credential-expression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-credential-expression.d.ts","sourceRoot":"","sources":["../../../../src/modular/type-expressions/get-credential-expression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAIhF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAavE"}
@@ -0,0 +1,17 @@
1
+ import { resolveReference } from "../../framework/reference.js";
2
+ import { useDependencies } from "../../framework/hooks/useDependencies.js";
3
+ export function getCredentialExpression(type) {
4
+ const dependencies = useDependencies();
5
+ switch (type.scheme.type) {
6
+ case "apiKey":
7
+ case "http":
8
+ return resolveReference(dependencies.KeyCredential);
9
+ case "oauth2":
10
+ case "openIdConnect":
11
+ return resolveReference(dependencies.TokenCredential);
12
+ default:
13
+ // TODO: Add diagnostics about unknown credential type
14
+ return "any";
15
+ }
16
+ }
17
+ //# sourceMappingURL=get-credential-expression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-credential-expression.js","sourceRoot":"","sources":["../../../../src/modular/type-expressions/get-credential-expression.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,MAAM,UAAU,uBAAuB,CAAC,IAAuB;IAC7D,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACzB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACtD,KAAK,QAAQ,CAAC;QACd,KAAK,eAAe;YAClB,OAAO,gBAAgB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACxD;YACE,sDAAsD;YACtD,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { SdkEnumType } from "@azure-tools/typespec-client-generator-core";
2
+ import { EmitTypeOptions } from "./get-type-expression.js";
3
+ import { SdkContext } from "../../utils/interfaces.js";
4
+ export declare function getEnumExpression(context: SdkContext, type: SdkEnumType, options?: EmitTypeOptions): string;
5
+ export declare function isExtensibleEnum(context: SdkContext, type: SdkEnumType): boolean;
6
+ //# sourceMappingURL=get-enum-expression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-enum-expression.d.ts","sourceRoot":"","sources":["../../../../src/modular/type-expressions/get-enum-expression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAE1E,OAAO,EAAqB,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAQR;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,WAAW,GAChB,OAAO,CAIT"}