@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,43 +1,55 @@
1
- import { getImportSpecifier, isAzurePackage, NameType, normalizeName } from "@azure-tools/rlc-common";
2
- import { importModels } from "./buildOperations.js";
3
- import { buildGetClientCredentialParam, buildGetClientEndpointParam, buildGetClientOptionsParam, getClientParameters, importCredential } from "./helpers/clientHelpers.js";
4
- import { getDocsFromDescription } from "./helpers/docsHelpers.js";
1
+ import { NameType, isAzurePackage, normalizeName } from "@azure-tools/rlc-common";
2
+ import { buildGetClientCredentialParam, buildGetClientEndpointParam, buildGetClientOptionsParam, getClientParameterName, getClientParameters, getClientParametersDeclaration } from "./helpers/clientHelpers.js";
5
3
  import { getClientName } from "./helpers/namingHelpers.js";
6
- import { getType } from "./helpers/typeHelpers.js";
4
+ import { getDocsFromDescription } from "./helpers/docsHelpers.js";
5
+ import { getTypeExpression } from "./type-expressions/get-type-expression.js";
6
+ import { resolveReference } from "../framework/reference.js";
7
+ import { useDependencies } from "../framework/hooks/useDependencies.js";
8
+ import { buildEnumTypes, getApiVersionEnum } from "./emitModels.js";
7
9
  /**
8
- * This function creates the file containing the modular client context
10
+ * This function gets the path of the file containing the modular client context
9
11
  */
10
- export function buildClientContext(client, dpgContext, codeModel) {
11
- const { description, subfolder } = client;
12
+ export function getClientContextPath(_client, codeModel) {
13
+ const { subfolder, tcgcClient: client } = _client;
12
14
  const name = getClientName(client);
13
- const params = getClientParameters(client, dpgContext);
14
15
  const srcPath = codeModel.modularOptions.sourceRoot;
15
- const clientContextFile = codeModel.project.createSourceFile(`${srcPath}/${subfolder && subfolder !== "" ? subfolder + "/" : ""}/api/${normalizeName(name, NameType.File)}Context.ts`);
16
- importCredential(codeModel.runtimeImports, clientContextFile);
17
- importModels(srcPath, clientContextFile, codeModel.project, subfolder);
18
- clientContextFile.addImportDeclaration({
19
- moduleSpecifier: getImportSpecifier("restClient", codeModel.runtimeImports),
20
- namedImports: ["ClientOptions", "Client", "getClient"]
16
+ const contentPath = `${srcPath}/${subfolder && subfolder !== "" ? subfolder + "/" : ""}api/${normalizeName(name, NameType.File)}Context.ts`;
17
+ return contentPath;
18
+ }
19
+ /**
20
+ * This function creates the file containing the modular client context
21
+ */
22
+ export function buildClientContext(_client, dpgContext, codeModel) {
23
+ const { description, tcgcClient: client } = _client;
24
+ const dependencies = useDependencies();
25
+ const name = getClientName(client);
26
+ const requiredParams = getClientParametersDeclaration(_client, dpgContext, {
27
+ onClientOnly: false,
28
+ requiredOnly: true
21
29
  });
30
+ const clientContextFile = codeModel.project.createSourceFile(getClientContextPath(_client, codeModel));
22
31
  clientContextFile.addInterface({
23
32
  isExported: true,
24
- name: `${client.rlcClientName}`,
25
- extends: ["Client"]
33
+ name: `${_client.rlcClientName}`,
34
+ extends: [resolveReference(dependencies.Client)],
35
+ docs: getDocsFromDescription(description)
26
36
  });
27
37
  clientContextFile.addInterface({
28
38
  name: `${name}ClientOptionalParams`,
29
39
  isExported: true,
30
- extends: ["ClientOptions"],
31
- properties: client.parameters
32
- .filter((p) => {
33
- return (p.optional || (p.type.type !== "constant" && p.clientDefaultValue));
40
+ extends: [resolveReference(dependencies.ClientOptions)],
41
+ properties: getClientParameters(_client, dpgContext, {
42
+ optionalOnly: true
34
43
  })
44
+ .filter((p) => p.name !== "endpoint")
35
45
  .map((p) => {
36
46
  return {
37
- name: p.clientName,
38
- type: getType(p.type).name,
47
+ name: normalizeName(p.name, NameType.Parameter),
48
+ type: p.name.toLowerCase() === "apiversion"
49
+ ? "string"
50
+ : getTypeExpression(dpgContext, p.type),
39
51
  hasQuestionToken: true,
40
- docs: getDocsFromDescription(p.description)
52
+ docs: getDocsWithKnownVersion(dpgContext, p)
41
53
  };
42
54
  }),
43
55
  docs: ["Optional parameters for the client."]
@@ -53,22 +65,18 @@ export function buildClientContext(client, dpgContext, codeModel) {
53
65
  const factoryFunction = clientContextFile.addFunction({
54
66
  docs: getDocsFromDescription(description),
55
67
  name: `create${name}`,
56
- returnType: `${client.rlcClientName}`,
57
- parameters: params,
68
+ returnType: `${_client.rlcClientName}`,
69
+ parameters: requiredParams,
58
70
  isExported: true
59
71
  });
60
- const endpointParam = buildGetClientEndpointParam(factoryFunction, client);
61
- const credentialParam = buildGetClientCredentialParam(client, codeModel);
72
+ const endpointParam = buildGetClientEndpointParam(factoryFunction, dpgContext, _client);
73
+ const credentialParam = buildGetClientCredentialParam(_client, codeModel);
62
74
  const optionsParam = buildGetClientOptionsParam(factoryFunction, codeModel, endpointParam);
63
- factoryFunction.addStatements(`const clientContext = getClient(${endpointParam}, ${credentialParam}, ${optionsParam});`);
75
+ factoryFunction.addStatements(`const clientContext = ${resolveReference(dependencies.getClient)}(${endpointParam}, ${credentialParam}, ${optionsParam});`);
64
76
  const { customHttpAuthHeaderName, customHttpAuthSharedKeyPrefix } = codeModel.options;
65
77
  if (customHttpAuthHeaderName && customHttpAuthSharedKeyPrefix) {
66
- clientContextFile.addImportDeclaration({
67
- moduleSpecifier: getImportSpecifier("coreAuth", codeModel.runtimeImports),
68
- namedImports: ["isKeyCredential"]
69
- });
70
78
  factoryFunction.addStatements(`
71
- if(isKeyCredential(credential)) {
79
+ if(${resolveReference(dependencies.isKeyCredential)}(credential)) {
72
80
  clientContext.pipeline.addPolicy({
73
81
  name: "customKeyCredentialPolicy",
74
82
  sendRequest(request, next) {
@@ -81,10 +89,10 @@ export function buildClientContext(client, dpgContext, codeModel) {
81
89
  }
82
90
  let apiVersionPolicyStatement = `clientContext.pipeline.removePolicy({ name: "ApiVersionPolicy" });`;
83
91
  if (dpgContext.hasApiVersionInClient) {
84
- const apiVersionParam = client.parameters.find((x) => x.isApiVersion);
85
- if ((apiVersionParam === null || apiVersionParam === void 0 ? void 0 : apiVersionParam.location) === "query") {
92
+ const apiVersionParam = getClientParameters(_client, dpgContext).find((x) => x.isApiVersionParam && x.kind === "method");
93
+ if (apiVersionParam) {
86
94
  if (apiVersionParam.clientDefaultValue) {
87
- apiVersionPolicyStatement += `const ${apiVersionParam.clientName} = options.${apiVersionParam.clientName} ?? "${apiVersionParam.clientDefaultValue}";`;
95
+ apiVersionPolicyStatement += `const apiVersion = options.apiVersion ?? "${apiVersionParam.clientDefaultValue}";`;
88
96
  }
89
97
  apiVersionPolicyStatement += `
90
98
  clientContext.pipeline.addPolicy({
@@ -96,7 +104,7 @@ export function buildClientContext(client, dpgContext, codeModel) {
96
104
  if (!url.searchParams.get("api-version")) {
97
105
  req.url = \`\${req.url}\${
98
106
  Array.from(url.searchParams.keys()).length > 0 ? "&" : "?"
99
- }api-version=\${${apiVersionParam.clientName}}\`;
107
+ }api-version=\${${getClientParameterName(apiVersionParam)}}\`;
100
108
  }
101
109
 
102
110
  return next(req);
@@ -122,4 +130,16 @@ export function buildClientContext(client, dpgContext, codeModel) {
122
130
  clientContextFile.fixUnusedIdentifiers();
123
131
  return clientContextFile;
124
132
  }
133
+ function getDocsWithKnownVersion(dpgContext, param) {
134
+ const docs = getDocsFromDescription(param.doc);
135
+ if (param.name.toLowerCase() !== "apiversion") {
136
+ return docs;
137
+ }
138
+ const apiVersionEnum = getApiVersionEnum(dpgContext);
139
+ if (apiVersionEnum) {
140
+ const [_, knownValuesEnum] = buildEnumTypes(dpgContext, apiVersionEnum);
141
+ docs.push(`Known values of {@link ${knownValuesEnum.name}} that the service accepts.`);
142
+ }
143
+ return docs;
144
+ }
125
145
  //# sourceMappingURL=buildClientContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildClientContext.js","sourceRoot":"","sources":["../../../src/modular/buildClientContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildClientContext.js","sourceRoot":"","sources":["../../../src/modular/buildClientContext.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,18 @@
1
+ import { Model, Type, UsageFlags } from "@typespec/compiler";
1
2
  import { ModularCodeModel } from "./modularCodeModel.js";
3
+ import { HttpAuth } from "@typespec/http";
2
4
  import { RLCModel } from "@azure-tools/rlc-common";
3
5
  import { Project } from "ts-morph";
4
6
  import { SdkContext } from "../utils/interfaces.js";
7
+ interface CredentialType {
8
+ kind: "Credential";
9
+ scheme: HttpAuth;
10
+ }
11
+ interface CredentialTypeUnion {
12
+ kind: "CredentialTypeUnion";
13
+ types: CredentialType[];
14
+ }
15
+ type EmitterType = Type | CredentialType | CredentialTypeUnion;
5
16
  export interface EmitterOptions {
6
17
  "basic-setup-py"?: boolean;
7
18
  "package-version"?: string;
@@ -10,7 +21,14 @@ export interface EmitterOptions {
10
21
  "package-mode"?: string;
11
22
  debug?: boolean;
12
23
  }
24
+ interface EmitTypeOptions {
25
+ disableEffectiveModel?: boolean;
26
+ usage?: UsageFlags;
27
+ }
28
+ export declare function getType(context: SdkContext, type: EmitterType, options?: EmitTypeOptions): any;
29
+ export declare function emitModel(context: SdkContext, type: Model, options?: EmitTypeOptions): Record<string, any>;
13
30
  export declare function emitCodeModel(dpgContext: SdkContext, rlcModelsMap: Map<string, RLCModel>, modularSourcesRoot: string, project: Project, options?: {
14
31
  casing: "snake" | "camel";
15
32
  }): ModularCodeModel;
33
+ export {};
16
34
  //# sourceMappingURL=buildCodeModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildCodeModel.d.ts","sourceRoot":"","sources":["../../../src/modular/buildCodeModel.ts"],"names":[],"mappings":"AAoCA,OAAO,EAKL,gBAAgB,EAKjB,MAAM,uBAAuB,CAAC;AAY/B,OAAO,EAEL,QAAQ,EAKT,MAAM,yBAAyB,CAAC;AA2CjC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA6BpD,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA6oDD,wBAAgB,aAAa,CAC3B,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EACnC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE;IAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAA;CAAwB,GAC3D,gBAAgB,CA6ClB"}
1
+ {"version":3,"file":"buildCodeModel.d.ts","sourceRoot":"","sources":["../../../src/modular/buildCodeModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,EAOL,IAAI,EAEJ,UAAU,EAwBX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAKL,gBAAgB,EAKjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,QAAQ,EAST,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,QAAQ,EAIT,MAAM,yBAAyB,CAAC;AA4CjC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAepD,UAAU,cAAc;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,KAAK,WAAW,GAAG,IAAI,GAAG,cAAc,GAAG,mBAAmB,CAAC;AAI/D,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAqKD,UAAU,eAAe;IACvB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,wBAAgB,OAAO,CACrB,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,eAAoB,GAC5B,GAAG,CAqFL;AAsoBD,wBAAgB,SAAS,CACvB,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,KAAK,EACX,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAqErB;AAgwBD,wBAAgB,aAAa,CAC3B,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EACnC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE;IAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAA;CAAwB,GAC3D,gBAAgB,CA6ClB"}
@@ -1,8 +1,8 @@
1
- import { UsageFlags, getDiscriminator, getDoc, getEncode, getFriendlyName, getMaxItems, getMaxLength, getMaxValue, getMinItems, getMinLength, getMinValue, getPattern, getPropertyType, getSummary, getVisibility, isErrorModel, isNeverType, isNullType, isNumericType, isStringType, isTemplateDeclarationOrInstance, isType, isVoidType, listServices } from "@typespec/compiler";
1
+ import { NoTarget, UsageFlags, getDiscriminator, getDoc, getEncode, getFriendlyName, getMaxItems, getMaxLength, getMaxValue, getMinItems, getMinLength, getMinValue, getPattern, getPropertyType, getSummary, getVisibility, isErrorModel, isNeverType, isNullType, isNumericType, isStringType, isTemplateDeclarationOrInstance, isType, isVoidType, listServices } from "@typespec/compiler";
2
2
  import { getAuthentication, getServers, isSharedRoute } from "@typespec/http";
3
- import { NameType, buildRuntimeImports, getClientName, isAzurePackage, normalizeName } from "@azure-tools/rlc-common";
3
+ import { NameType, buildRuntimeImports, isAzurePackage, normalizeName } from "@azure-tools/rlc-common";
4
4
  import { getAllModels, getClientNamespaceString, getClientType, getDefaultApiVersion, getHttpOperationWithCache, getLibraryName, getSdkUnion, getWireName, isApiVersion, listClients, listOperationGroups, listOperationsInOperationGroup } from "@azure-tools/typespec-client-generator-core";
5
- import { buildCoreTypeInfo, getBodyType, getDefaultApiVersionString, getEffectiveSchemaType, isAzureCoreErrorType, isSchemaProperty } from "../utils/modelUtils.js";
5
+ import { buildCoreTypeInfo, getBodyType, getDefaultApiVersionString, getEffectiveSchemaType, isAzureCoreErrorType, isBodyRequired, isSchemaProperty } from "../utils/modelUtils.js";
6
6
  import { camelToSnakeCase, toCamelCase } from "../utils/casingUtils.js";
7
7
  import { extractPagedMetadataNested, getOperationGroupName, getOperationName, isBinaryPayload, isIgnoredHeaderParam, isLongRunningOperation, parseItemName, parseNextLinkName } from "../utils/operationUtil.js";
8
8
  import { getLroMetadata, getPagedResult } from "@azure-tools/typespec-azure-core";
@@ -10,9 +10,9 @@ import { getAddedOnVersions } from "@typespec/versioning";
10
10
  import { getModelNamespaceName } from "../utils/namespaceUtils.js";
11
11
  import { getSupportedHttpAuth } from "../utils/credentialUtils.js";
12
12
  import { getType as getTypeName } from "./helpers/typeHelpers.js";
13
- import { isModelWithAdditionalProperties } from "./emitModels.js";
14
13
  import { reportDiagnostic } from "../lib.js";
15
14
  import { useContext } from "../contextManager.js";
15
+ import { normalizeModelName } from "./emitModels.js";
16
16
  let CASING = "snake";
17
17
  function applyCasing(name, options = { casing: "snake" }) {
18
18
  if (options.casing === "camel") {
@@ -61,6 +61,7 @@ function handleDiscriminator(context, type, usage) {
61
61
  const discriminatorValues = [];
62
62
  const aliases = [];
63
63
  const discriminatedSubtypes = [];
64
+ let discriminatorTcgcType = undefined;
64
65
  for (const childModel of type.derivedModels) {
65
66
  const modelType = getType(context, childModel, { usage });
66
67
  aliases.push(modelType.name);
@@ -68,6 +69,7 @@ function handleDiscriminator(context, type, usage) {
68
69
  if (property.restApiName === discriminator.propertyName) {
69
70
  modelType.discriminatorValue = property.type.value;
70
71
  discriminatorValues.push(modelType.discriminatorValue);
72
+ discriminatorTcgcType = getClientType(context, property.type);
71
73
  }
72
74
  }
73
75
  discriminatedSubtypes.push(modelType);
@@ -76,7 +78,7 @@ function handleDiscriminator(context, type, usage) {
76
78
  description: discriminatorValues.length > 0
77
79
  ? `the discriminator possible values: ${discriminatorValues.join(", ")}`
78
80
  : "discriminator property",
79
- type: { type: "string" },
81
+ type: { type: "string", tcgcType: discriminatorTcgcType },
80
82
  restApiName: discriminator.propertyName,
81
83
  clientName: discriminator.propertyName,
82
84
  name: discriminator.propertyName,
@@ -109,7 +111,8 @@ function processModelProperties(context, newValue, model, usage) {
109
111
  newProperty = {
110
112
  ...newProperty,
111
113
  ...discriminatorInfo,
112
- type: newProperty["type"]
114
+ type: newProperty["type"],
115
+ tcgcType: getClientType(context, property)
113
116
  };
114
117
  }
115
118
  newValue.properties.push(newProperty);
@@ -124,8 +127,8 @@ function processModelProperties(context, newValue, model, usage) {
124
127
  if (newValue.name) {
125
128
  newValue.name = normalizeName(newValue.name, NameType.Interface);
126
129
  discriminatorInfo === null || discriminatorInfo === void 0 ? void 0 : discriminatorInfo.aliases.push(`${newValue.name}`);
127
- newValue.alias = `${newValue.name}`;
128
- newValue.name = `${newValue.name}Union`;
130
+ newValue.alias = `${newValue.name.replace(/Union$/g, "")}`;
131
+ newValue.name = `${newValue.name}`;
129
132
  newValue.aliasType = discriminatorInfo === null || discriminatorInfo === void 0 ? void 0 : discriminatorInfo.aliases.join(" | ");
130
133
  newValue.types = discriminatorInfo === null || discriminatorInfo === void 0 ? void 0 : discriminatorInfo.discriminatedSubtypes;
131
134
  newValue.isPolymorphicBaseModel = true;
@@ -142,7 +145,7 @@ function isEmptyAnonymousModel(type) {
142
145
  type.derivedModels.length === 0 &&
143
146
  !type.indexer);
144
147
  }
145
- function getType(context, type, options = {}) {
148
+ export function getType(context, type, options = {}) {
146
149
  var _a, _b;
147
150
  const modularMetatree = useContext("modularMetaTree");
148
151
  // don't cache simple type(string, int, etc) since decorators may change the result
@@ -157,24 +160,30 @@ function getType(context, type, options = {}) {
157
160
  return cached;
158
161
  }
159
162
  }
160
- let newValue;
163
+ let newValue = { __raw: type };
161
164
  if (isEmptyAnonymousModel(type)) {
162
165
  // do not generate model for empty model, treat it as any
163
166
  newValue = { type: "any" };
164
167
  }
165
168
  else {
166
- newValue = emitType(context, type, options.usage);
169
+ newValue = emitType(context, type, options);
167
170
  }
168
171
  if (type.kind === "ModelProperty" || type.kind === "Scalar") {
169
172
  newValue = applyEncoding(context.program, type, newValue);
170
173
  }
171
174
  if (isTypespecType(type)) {
172
- newValue.tcgcType = getClientType(context, type);
175
+ newValue.tcgcType = getClientType(context, effectiveModel);
176
+ newValue.name = !newValue.tcgcType.isGeneratedName
177
+ ? normalizeModelName(context, newValue.tcgcType)
178
+ : newValue.name;
173
179
  newValue.__raw = type;
174
180
  modularMetatree.set(type, newValue);
175
181
  }
176
182
  if (enableCache) {
177
183
  if (!options.disableEffectiveModel) {
184
+ if (newValue.__raw === undefined) {
185
+ newValue.__raw = type;
186
+ }
178
187
  typesMap.set(effectiveModel, newValue);
179
188
  }
180
189
  if (type.kind === "Union") {
@@ -188,7 +197,7 @@ function getType(context, type, options = {}) {
188
197
  // need to do properties after insertion to avoid infinite recursion
189
198
  processModelProperties(context, newValue, type, options.usage);
190
199
  if (newValue.type === "dict") {
191
- newValue = { ...emitModel(context, type, options.usage), ...newValue };
200
+ newValue = { ...emitModel(context, type, options), ...newValue };
192
201
  typesMap.set(effectiveModel, newValue);
193
202
  }
194
203
  }
@@ -205,7 +214,7 @@ function getType(context, type, options = {}) {
205
214
  }
206
215
  }
207
216
  if (type.kind === "Model" &&
208
- isModelWithAdditionalProperties(newValue) &&
217
+ newValue.tcgcType.additionalProperties &&
209
218
  !((_a = context.rlcOptions) === null || _a === void 0 ? void 0 : _a.compatibilityMode)) {
210
219
  reportDiagnostic(context.program, {
211
220
  code: "compatible-additional-properties",
@@ -215,6 +224,7 @@ function getType(context, type, options = {}) {
215
224
  target: type
216
225
  });
217
226
  }
227
+ typesMap.set(effectiveModel, newValue);
218
228
  return newValue;
219
229
  }
220
230
  function isTypespecType(type) {
@@ -277,7 +287,8 @@ function emitBodyParameter(context, httpOperation) {
277
287
  type,
278
288
  location: "body",
279
289
  ...base,
280
- isBinaryPayload: isBinaryPayload(context, body.type, contentTypes)
290
+ isBinaryPayload: isBinaryPayload(context, body.type, contentTypes),
291
+ optional: !isBodyRequired(httpOperation.parameters)
281
292
  };
282
293
  }
283
294
  return undefined;
@@ -294,15 +305,22 @@ function emitParameter(context, parameter, implementation) {
294
305
  /// We don't want constant types for content types, so we make sure if it's
295
306
  /// a constant, we make it not constant
296
307
  clientDefaultValue = type["value"];
297
- type = type["valueType"];
308
+ type = {
309
+ ...type["valueType"],
310
+ tcgcType: base.tcgcType.kind === "constant"
311
+ ? base.tcgcType.valueType
312
+ : base.tcgcType
313
+ };
298
314
  }
299
315
  const paramMap = {
300
316
  restApiName: parameter.name,
301
317
  location: parameter.type,
302
318
  type: base.format ? { ...type, format: base.format } : type,
303
319
  implementation: implementation,
304
- skipUrlEncoding: parameter.type === "endpointPath",
305
- format: (_a = parameter.format) !== null && _a !== void 0 ? _a : base.format
320
+ skipUrlEncoding: parameter.type === "endpointPath" ||
321
+ (parameter.type === "path" && parameter.allowReserved),
322
+ format: (_a = parameter.format) !== null && _a !== void 0 ? _a : base.format,
323
+ tcgcType: base.tcgcType
306
324
  };
307
325
  if (paramMap.type.type === "constant") {
308
326
  clientDefaultValue = paramMap.type.value;
@@ -464,10 +482,31 @@ function addLroInformation(context, operation, emittedOperation) {
464
482
  finalResult: (metadata === null || metadata === void 0 ? void 0 : metadata.finalResult) === "void" || (metadata === null || metadata === void 0 ? void 0 : metadata.finalResult) === undefined
465
483
  ? undefined
466
484
  : getType(context, metadata.finalResult),
467
- finalStateVia: metadata === null || metadata === void 0 ? void 0 : metadata.finalStateVia,
485
+ finalStateVia: getFinalStateVia(context, operation, metadata),
468
486
  finalResultPath: metadata === null || metadata === void 0 ? void 0 : metadata.finalResultPath
469
487
  };
470
488
  }
489
+ function getFinalStateVia(context, operation, metadata) {
490
+ if (!metadata) {
491
+ return undefined;
492
+ }
493
+ switch (metadata.finalStateVia) {
494
+ case "azure-async-operation":
495
+ case "location":
496
+ case "operation-location":
497
+ case "original-uri":
498
+ return metadata.finalStateVia;
499
+ default:
500
+ reportDiagnostic(context.program, {
501
+ code: "un-supported-finalStateVia",
502
+ format: {
503
+ finalStateVia: metadata.finalStateVia
504
+ },
505
+ target: operation
506
+ });
507
+ return undefined;
508
+ }
509
+ }
471
510
  function addPagingInformation(context, operation, emittedOperation) {
472
511
  emittedOperation["discriminator"] = "paging";
473
512
  const pagedResult = getPagedResult(context.program, operation);
@@ -624,7 +663,7 @@ function isReadOnly(program, type) {
624
663
  }
625
664
  }
626
665
  function emitProperty(context, property, usage) {
627
- var _a, _b;
666
+ var _a, _b, _c;
628
667
  const newProperty = applyEncoding(context.program, property, property);
629
668
  let clientDefaultValue = undefined;
630
669
  const propertyDefaultKind = (_a = property.default) === null || _a === void 0 ? void 0 : _a.kind;
@@ -645,7 +684,9 @@ function emitProperty(context, property, usage) {
645
684
  }
646
685
  const type = getType(context, property.type, { usage });
647
686
  return {
648
- clientName: applyCasing(clientName, { casing: CASING }),
687
+ clientName: ((_c = context.rlcOptions) === null || _c === void 0 ? void 0 : _c.ignorePropertyNameNormalize)
688
+ ? clientName
689
+ : normalizeName(clientName, NameType.Property),
649
690
  restApiName: jsonName,
650
691
  type: newProperty.format ? { ...type, format: newProperty.format } : type,
651
692
  optional: property.optional,
@@ -676,15 +717,17 @@ function getName(program, type) {
676
717
  }
677
718
  }
678
719
  }
679
- function emitModel(context, type, usage) {
720
+ export function emitModel(context, type, options = {}) {
680
721
  var _a, _b;
681
722
  // Now we know it's a defined model
682
723
  const properties = [];
683
724
  let baseModel = undefined;
684
725
  if (type.baseModel) {
685
- baseModel = getType(context, type.baseModel, { usage });
726
+ baseModel = getType(context, type.baseModel, options);
686
727
  }
687
- const effectiveName = getEffectiveSchemaType(context.program, type).name;
728
+ const effectiveName = !options.disableEffectiveModel
729
+ ? getEffectiveSchemaType(context.program, type).name
730
+ : undefined;
688
731
  const overridedModelName = normalizeName((_a = getLibraryName(context, type)) !== null && _a !== void 0 ? _a : getFriendlyName(context.program, type), NameType.Interface, true);
689
732
  const fullNamespaceName = getModelNamespaceName(context, type.namespace)
690
733
  .map((nsName) => {
@@ -733,7 +776,7 @@ function emitModel(context, type, usage) {
733
776
  : modelName,
734
777
  base: modelName === "" ? "json" : "dpg",
735
778
  coreTypeInfo: buildCoreTypeInfo(context.program, type),
736
- usage
779
+ usage: options.usage
737
780
  };
738
781
  }
739
782
  function intOrFloat(value) {
@@ -753,6 +796,9 @@ function emitEnum(context, type) {
753
796
  description: getDocStr(program, m)
754
797
  });
755
798
  }
799
+ if (enumValues.length === 0) {
800
+ throw new Error(`Expecting enum values but got none`);
801
+ }
756
802
  const name = normalizeName(getLibraryName(context, type) ? getLibraryName(context, type) : type.name, NameType.Interface);
757
803
  return {
758
804
  type: "enum",
@@ -867,7 +913,7 @@ function emitStdScalar(program, scalar) {
867
913
  format: {
868
914
  propertyName: (_c = newScalar === null || newScalar === void 0 ? void 0 : newScalar.name) !== null && _c !== void 0 ? _c : ""
869
915
  },
870
- target: newScalar !== null && newScalar !== void 0 ? newScalar : scalar
916
+ target: NoTarget
871
917
  });
872
918
  return { type: "integer", format: newScalar.format };
873
919
  default:
@@ -997,7 +1043,7 @@ function emitUnion(context, type, usage) {
997
1043
  ? getLibraryName(context, type)
998
1044
  : type.name;
999
1045
  const discriminatorPropertyName = (_a = getDiscriminator(context.program, type)) === null || _a === void 0 ? void 0 : _a.propertyName;
1000
- const variantTypes = sdkType.values.map((x) => {
1046
+ const variantTypes = sdkType.variantTypes.map((x) => {
1001
1047
  const valueType = getType(context, x.__raw, { usage });
1002
1048
  if (valueType.properties && discriminatorPropertyName) {
1003
1049
  valueType.discriminatorValue = valueType.properties.filter((p) => p.clientName === discriminatorPropertyName)[0].type.value;
@@ -1036,7 +1082,7 @@ function emitUnion(context, type, usage) {
1036
1082
  return {
1037
1083
  name: typeName,
1038
1084
  nullable: isNull,
1039
- description: sdkType.description || `Type of ${typeName}`,
1085
+ description: sdkType.doc || `Type of ${typeName}`,
1040
1086
  internal: true,
1041
1087
  type: sdkType.kind,
1042
1088
  valueType: emitSimpleType(sdkType.valueType),
@@ -1049,13 +1095,13 @@ function emitUnion(context, type, usage) {
1049
1095
  }
1050
1096
  else if (nonNullOptions.length === 1 && nonNullOptions[0]) {
1051
1097
  return {
1052
- ...emitType(context, nonNullOptions[0], usage),
1098
+ ...emitType(context, nonNullOptions[0], { usage }),
1053
1099
  nullable: isNull
1054
1100
  };
1055
1101
  }
1056
1102
  else {
1057
1103
  return {
1058
- ...emitType(context, sdkType.__raw, usage),
1104
+ ...emitType(context, sdkType.__raw, { usage }),
1059
1105
  nullable: isNull
1060
1106
  };
1061
1107
  }
@@ -1089,14 +1135,14 @@ function emitSimpleType(type) {
1089
1135
  format: undefined
1090
1136
  };
1091
1137
  }
1092
- function emitType(context, type, usage) {
1138
+ function emitType(context, type, options = {}) {
1093
1139
  if (type.kind === "Credential") {
1094
1140
  return emitCredential(type.scheme);
1095
1141
  }
1096
1142
  if (type.kind === "CredentialTypeUnion") {
1097
1143
  return emitCredentialUnion(type);
1098
1144
  }
1099
- const builtinType = mapTypeSpecType(context, type, usage);
1145
+ const builtinType = mapTypeSpecType(context, type, options.usage);
1100
1146
  if (builtinType !== undefined) {
1101
1147
  // add in description elements for types derived from primitive types (SecureString, etc.)
1102
1148
  const doc = getDoc(context.program, type);
@@ -1109,13 +1155,13 @@ function emitType(context, type, usage) {
1109
1155
  case "Intrinsic":
1110
1156
  return { type: type.name };
1111
1157
  case "Model":
1112
- return emitModel(context, type, usage);
1158
+ return emitModel(context, type, options);
1113
1159
  case "Scalar":
1114
1160
  return emitScalar(context.program, type);
1115
1161
  case "Union":
1116
- return emitUnion(context, type, usage);
1162
+ return emitUnion(context, type, options.usage);
1117
1163
  case "UnionVariant":
1118
- return emitType(context, type.type, usage);
1164
+ return emitType(context, type.type, options);
1119
1165
  case "Enum":
1120
1166
  return emitEnum(context, type);
1121
1167
  case "EnumMember":
@@ -1140,7 +1186,7 @@ function emitOperationGroups(context, client, rlcModels) {
1140
1186
  const overrideName = getLibraryName(context, operationGroup.type);
1141
1187
  const name = ((_a = context.rlcOptions) === null || _a === void 0 ? void 0 : _a.hierarchyClient) ||
1142
1188
  ((_b = context.rlcOptions) === null || _b === void 0 ? void 0 : _b.enableOperationGroup)
1143
- ? overrideName !== null && overrideName !== void 0 ? overrideName : operationGroup.type.name
1189
+ ? (overrideName !== null && overrideName !== void 0 ? overrideName : operationGroup.type.name)
1144
1190
  : "";
1145
1191
  const hierarchies = ((_c = context.rlcOptions) === null || _c === void 0 ? void 0 : _c.hierarchyClient) ||
1146
1192
  ((_d = context.rlcOptions) === null || _d === void 0 ? void 0 : _d.enableOperationGroup)
@@ -1205,14 +1251,14 @@ function getServerHelper(program, namespace) {
1205
1251
  }
1206
1252
  function emitServerParams(context, namespace) {
1207
1253
  const server = getServerHelper(context.program, namespace);
1208
- if (server === undefined) {
1254
+ if (server === undefined || server.parameters.size === 0) {
1209
1255
  return [
1210
1256
  {
1211
1257
  optional: false,
1212
1258
  description: "Service host",
1213
- clientName: "endpoint",
1259
+ clientName: "endpointParam",
1214
1260
  clientDefaultValue: null,
1215
- restApiName: "$host",
1261
+ restApiName: "endpoint",
1216
1262
  location: "endpointPath",
1217
1263
  type: { type: "string" },
1218
1264
  implementation: "Client",
@@ -1244,9 +1290,9 @@ function emitServerParams(context, namespace) {
1244
1290
  {
1245
1291
  optional: false,
1246
1292
  description: "Service host",
1247
- clientName: "endpoint",
1293
+ clientName: "endpointParam",
1248
1294
  clientDefaultValue: server.url,
1249
- restApiName: "$host",
1295
+ restApiName: "endpoint",
1250
1296
  location: "path",
1251
1297
  type: { type: "string" },
1252
1298
  implementation: "Client",
@@ -1317,6 +1363,12 @@ function emitClients(context, rlcModelsMap) {
1317
1363
  const retval = [];
1318
1364
  methodApiVersionParam = undefined;
1319
1365
  for (const client of clients) {
1366
+ const sdkPackageClient = context.sdkPackage.clients.find((p) => {
1367
+ return p.name === client.name;
1368
+ });
1369
+ if (!sdkPackageClient) {
1370
+ throw new Error(`Client ${client.name} not found in the SDK package`);
1371
+ }
1320
1372
  const clientName = client.name.replace("Client", "");
1321
1373
  const server = getServerHelper(program, client.service);
1322
1374
  const rlcModels = rlcModelsMap.get(client.service.name);
@@ -1328,9 +1380,10 @@ function emitClients(context, rlcModelsMap) {
1328
1380
  description: getDocStr(program, client.type),
1329
1381
  parameters: emitGlobalParameters(context, client.service),
1330
1382
  operationGroups: emitOperationGroups(context, client, rlcModels),
1383
+ tcgcClient: sdkPackageClient,
1331
1384
  url: server ? server.url : "",
1332
1385
  apiVersions: [],
1333
- rlcClientName: rlcModels ? getClientName(rlcModels) : client.name,
1386
+ rlcClientName: `${client.name.replace("Client", "")}Context`,
1334
1387
  subfolder: "",
1335
1388
  rlcHelperDetails: rlcModels && rlcModels.helperDetails ? rlcModels.helperDetails : {}
1336
1389
  };