@typespec/http-client-csharp 1.0.0-alpha.20260326.2 → 1.0.0-alpha.20260327.1
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.
- package/dist/emitter/src/emitter.d.ts +28 -1
- package/dist/emitter/src/emitter.d.ts.map +1 -1
- package/dist/emitter/src/emitter.js +62 -23
- package/dist/emitter/src/emitter.js.map +1 -1
- package/dist/emitter/src/index.d.ts +1 -1
- package/dist/emitter/src/index.d.ts.map +1 -1
- package/dist/emitter/src/index.js +1 -1
- package/dist/emitter/src/index.js.map +1 -1
- package/dist/emitter/src/lib/client-converter.d.ts +2 -1
- package/dist/emitter/src/lib/client-converter.d.ts.map +1 -1
- package/dist/emitter/src/lib/client-converter.js +27 -21
- package/dist/emitter/src/lib/client-converter.js.map +1 -1
- package/dist/emitter/src/lib/client-model-builder.d.ts +14 -2
- package/dist/emitter/src/lib/client-model-builder.d.ts.map +1 -1
- package/dist/emitter/src/lib/client-model-builder.js +23 -8
- package/dist/emitter/src/lib/client-model-builder.js.map +1 -1
- package/dist/emitter/src/lib/example-converter.d.ts +2 -1
- package/dist/emitter/src/lib/example-converter.d.ts.map +1 -1
- package/dist/emitter/src/lib/example-converter.js +16 -11
- package/dist/emitter/src/lib/example-converter.js.map +1 -1
- package/dist/emitter/src/lib/logger.d.ts +1 -5
- package/dist/emitter/src/lib/logger.d.ts.map +1 -1
- package/dist/emitter/src/lib/logger.js +2 -19
- package/dist/emitter/src/lib/logger.js.map +1 -1
- package/dist/emitter/src/lib/namespace-converter.d.ts +2 -1
- package/dist/emitter/src/lib/namespace-converter.d.ts.map +1 -1
- package/dist/emitter/src/lib/namespace-converter.js +3 -1
- package/dist/emitter/src/lib/namespace-converter.js.map +1 -1
- package/dist/emitter/src/lib/operation-converter.d.ts +8 -7
- package/dist/emitter/src/lib/operation-converter.d.ts.map +1 -1
- package/dist/emitter/src/lib/operation-converter.js +139 -115
- package/dist/emitter/src/lib/operation-converter.js.map +1 -1
- package/dist/emitter/src/lib/service-authentication.d.ts +2 -1
- package/dist/emitter/src/lib/service-authentication.d.ts.map +1 -1
- package/dist/emitter/src/lib/service-authentication.js +33 -28
- package/dist/emitter/src/lib/service-authentication.js.map +1 -1
- package/dist/emitter/src/lib/type-converter.d.ts +2 -1
- package/dist/emitter/src/lib/type-converter.d.ts.map +1 -1
- package/dist/emitter/src/lib/type-converter.js +85 -62
- package/dist/emitter/src/lib/type-converter.js.map +1 -1
- package/dist/emitter/src/lib/typespec-server.d.ts +2 -1
- package/dist/emitter/src/lib/typespec-server.d.ts.map +1 -1
- package/dist/emitter/src/lib/typespec-server.js +6 -3
- package/dist/emitter/src/lib/typespec-server.js.map +1 -1
- package/dist/emitter/src/options.d.ts +2 -7
- package/dist/emitter/src/options.d.ts.map +1 -1
- package/dist/emitter/src/options.js +0 -6
- package/dist/emitter/src/options.js.map +1 -1
- package/dist/generator/Microsoft.TypeSpec.Generator.ClientModel.StubLibrary.dll +0 -0
- package/dist/generator/Microsoft.TypeSpec.Generator.ClientModel.StubLibrary.pdb +0 -0
- package/dist/generator/Microsoft.TypeSpec.Generator.ClientModel.dll +0 -0
- package/dist/generator/Microsoft.TypeSpec.Generator.ClientModel.pdb +0 -0
- package/dist/generator/Microsoft.TypeSpec.Generator.Input.dll +0 -0
- package/dist/generator/Microsoft.TypeSpec.Generator.Input.pdb +0 -0
- package/dist/generator/Microsoft.TypeSpec.Generator.dll +0 -0
- package/dist/generator/Microsoft.TypeSpec.Generator.pdb +0 -0
- package/package.json +1 -1
- package/readme.md +0 -6
|
@@ -1,7 +1,34 @@
|
|
|
1
1
|
import { SdkContext } from "@azure-tools/typespec-client-generator-core";
|
|
2
|
-
import { EmitContext } from "@typespec/compiler";
|
|
2
|
+
import { Diagnostic, EmitContext } from "@typespec/compiler";
|
|
3
3
|
import { CSharpEmitterOptions } from "./options.js";
|
|
4
|
+
import { CSharpEmitterContext } from "./sdk-context.js";
|
|
5
|
+
import { CodeModel } from "./type/code-model.js";
|
|
4
6
|
import { Configuration } from "./type/configuration.js";
|
|
7
|
+
/**
|
|
8
|
+
* Creates a code model by executing the full emission logic.
|
|
9
|
+
* This function can be called by downstream emitters to generate a code model and collect diagnostics.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { emitCodeModel } from "@typespec/http-client-csharp";
|
|
14
|
+
*
|
|
15
|
+
* export async function $onEmit(context: EmitContext<MyEmitterOptions>) {
|
|
16
|
+
* const updateCodeModel = (model: CodeModel, context: CSharpEmitterContext) => {
|
|
17
|
+
* // Customize the code model here
|
|
18
|
+
* return model;
|
|
19
|
+
* };
|
|
20
|
+
* const [, diagnostics] = await emitCodeModel(context, updateCodeModel);
|
|
21
|
+
* // Process diagnostics as needed
|
|
22
|
+
* context.program.reportDiagnostics(diagnostics);
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @param context - The emit context
|
|
27
|
+
* @param updateCodeModel - Optional callback to modify the code model before emission
|
|
28
|
+
* @returns A tuple containing void and any diagnostics that were generated during the emission
|
|
29
|
+
* @beta
|
|
30
|
+
*/
|
|
31
|
+
export declare function emitCodeModel(context: EmitContext<CSharpEmitterOptions>, updateCodeModel?: (model: CodeModel, context: CSharpEmitterContext) => CodeModel): Promise<[void, readonly Diagnostic[]]>;
|
|
5
32
|
/**
|
|
6
33
|
* The entry point for the emitter. This function is called by the typespec compiler.
|
|
7
34
|
* @param context - The emit context
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../emitter/src/emitter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../emitter/src/emitter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAEL,UAAU,EACV,WAAW,EAMZ,MAAM,oBAAoB,CAAC;AAe5B,OAAO,EAAE,oBAAoB,EAAkB,MAAM,cAAc,CAAC;AACpE,OAAO,EAA8B,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAsBxD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,CAAC,oBAAoB,CAAC,EAC1C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,KAAK,SAAS,GAC/E,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,CA4FxC;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,oBAAoB,CAAC,iBAGvE;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,GACrB,aAAa,CA0Bf"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
2
|
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
3
3
|
import { createSdkContext } from "@azure-tools/typespec-client-generator-core";
|
|
4
|
-
import { getDirectoryPath, joinPaths, NoTarget, resolvePath, } from "@typespec/compiler";
|
|
4
|
+
import { createDiagnosticCollector, getDirectoryPath, joinPaths, NoTarget, resolvePath, } from "@typespec/compiler";
|
|
5
5
|
import fs, { statSync } from "fs";
|
|
6
6
|
import { dirname } from "path";
|
|
7
7
|
import { fileURLToPath } from "url";
|
|
8
8
|
import { writeCodeModel, writeConfiguration } from "./code-model-writer.js";
|
|
9
9
|
import { _minSupportedDotNetSdkVersion, configurationFileName, tspOutputFileName, } from "./constants.js";
|
|
10
10
|
import { createModel } from "./lib/client-model-builder.js";
|
|
11
|
+
import { createDiagnostic } from "./lib/lib.js";
|
|
11
12
|
import { LoggerLevel } from "./lib/logger-level.js";
|
|
12
13
|
import { Logger } from "./lib/logger.js";
|
|
13
14
|
import { execAsync, execCSharpGenerator } from "./lib/utils.js";
|
|
@@ -33,11 +34,31 @@ function findProjectRoot(path) {
|
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
36
|
-
*
|
|
37
|
+
* Creates a code model by executing the full emission logic.
|
|
38
|
+
* This function can be called by downstream emitters to generate a code model and collect diagnostics.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* import { emitCodeModel } from "@typespec/http-client-csharp";
|
|
43
|
+
*
|
|
44
|
+
* export async function $onEmit(context: EmitContext<MyEmitterOptions>) {
|
|
45
|
+
* const updateCodeModel = (model: CodeModel, context: CSharpEmitterContext) => {
|
|
46
|
+
* // Customize the code model here
|
|
47
|
+
* return model;
|
|
48
|
+
* };
|
|
49
|
+
* const [, diagnostics] = await emitCodeModel(context, updateCodeModel);
|
|
50
|
+
* // Process diagnostics as needed
|
|
51
|
+
* context.program.reportDiagnostics(diagnostics);
|
|
52
|
+
* }
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
37
55
|
* @param context - The emit context
|
|
56
|
+
* @param updateCodeModel - Optional callback to modify the code model before emission
|
|
57
|
+
* @returns A tuple containing void and any diagnostics that were generated during the emission
|
|
38
58
|
* @beta
|
|
39
59
|
*/
|
|
40
|
-
export async function
|
|
60
|
+
export async function emitCodeModel(context, updateCodeModel) {
|
|
61
|
+
const diagnostics = createDiagnosticCollector();
|
|
41
62
|
const program = context.program;
|
|
42
63
|
const options = resolveOptions(context);
|
|
43
64
|
const outputFolder = context.emitterOutputDir;
|
|
@@ -46,17 +67,20 @@ export async function $onEmit(context) {
|
|
|
46
67
|
if (!program.compilerOptions.noEmit && !program.hasError()) {
|
|
47
68
|
// Write out the dotnet model to the output path
|
|
48
69
|
const sdkContext = createCSharpEmitterContext(await createSdkContext(context, "@typespec/http-client-csharp", options["sdk-context-options"]), logger);
|
|
49
|
-
|
|
50
|
-
|
|
70
|
+
for (const diag of sdkContext.diagnostics) {
|
|
71
|
+
diagnostics.add(diag);
|
|
72
|
+
}
|
|
73
|
+
const root = diagnostics.pipe(createModel(sdkContext));
|
|
51
74
|
if (root) {
|
|
52
|
-
|
|
75
|
+
// Apply optional code model update callback
|
|
76
|
+
const updatedRoot = updateCodeModel ? updateCodeModel(root, sdkContext) : root;
|
|
53
77
|
const generatedFolder = resolvePath(outputFolder, "src", "Generated");
|
|
54
78
|
if (!fs.existsSync(generatedFolder)) {
|
|
55
79
|
fs.mkdirSync(generatedFolder, { recursive: true });
|
|
56
80
|
}
|
|
57
81
|
// emit tspCodeModel.json
|
|
58
|
-
await writeCodeModel(sdkContext,
|
|
59
|
-
const namespace =
|
|
82
|
+
await writeCodeModel(sdkContext, updatedRoot, outputFolder);
|
|
83
|
+
const namespace = updatedRoot.name;
|
|
60
84
|
const configurations = createConfiguration(options, namespace, sdkContext);
|
|
61
85
|
//emit configuration.json
|
|
62
86
|
await writeConfiguration(sdkContext, configurations, outputFolder);
|
|
@@ -74,7 +98,7 @@ export async function $onEmit(context) {
|
|
|
74
98
|
debug: options.debug ?? false,
|
|
75
99
|
});
|
|
76
100
|
if (result.exitCode !== 0) {
|
|
77
|
-
const isValid = await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion);
|
|
101
|
+
const isValid = diagnostics.pipe(await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion));
|
|
78
102
|
// if the dotnet sdk is valid, the error is not dependency issue, log it as normal
|
|
79
103
|
if (isValid) {
|
|
80
104
|
throw new Error(`Failed to generate the library. Exit code: ${result.exitCode}.\nStackTrace: \n${result.stderr}`);
|
|
@@ -82,7 +106,7 @@ export async function $onEmit(context) {
|
|
|
82
106
|
}
|
|
83
107
|
}
|
|
84
108
|
catch (error) {
|
|
85
|
-
const isValid = await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion);
|
|
109
|
+
const isValid = diagnostics.pipe(await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion));
|
|
86
110
|
// if the dotnet sdk is valid, the error is not dependency issue, log it as normal
|
|
87
111
|
if (isValid)
|
|
88
112
|
throw new Error(error, { cause: error });
|
|
@@ -94,11 +118,20 @@ export async function $onEmit(context) {
|
|
|
94
118
|
}
|
|
95
119
|
}
|
|
96
120
|
}
|
|
121
|
+
return diagnostics.wrap(undefined);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* The entry point for the emitter. This function is called by the typespec compiler.
|
|
125
|
+
* @param context - The emit context
|
|
126
|
+
* @beta
|
|
127
|
+
*/
|
|
128
|
+
export async function $onEmit(context) {
|
|
129
|
+
const [, diagnostics] = await emitCodeModel(context);
|
|
130
|
+
context.program.reportDiagnostics(diagnostics);
|
|
97
131
|
}
|
|
98
132
|
export function createConfiguration(options, namespace, sdkContext) {
|
|
99
133
|
const skipKeys = [
|
|
100
134
|
"new-project",
|
|
101
|
-
"update-code-model",
|
|
102
135
|
"sdk-context-options",
|
|
103
136
|
"save-inputs",
|
|
104
137
|
"generator-name",
|
|
@@ -124,17 +157,18 @@ export function createConfiguration(options, namespace, sdkContext) {
|
|
|
124
157
|
* Report diagnostic if dotnet sdk is not installed or its version does not meet prerequisite
|
|
125
158
|
* @param sdkContext - The SDK context
|
|
126
159
|
* @param minVersionRequisite - The minimum required major version
|
|
127
|
-
* @
|
|
160
|
+
* @returns A tuple containing whether the SDK is valid and any diagnostics
|
|
128
161
|
* @internal
|
|
129
162
|
*/
|
|
130
163
|
export async function _validateDotNetSdk(sdkContext, minMajorVersion) {
|
|
164
|
+
const diagnostics = createDiagnosticCollector();
|
|
131
165
|
try {
|
|
132
166
|
const result = await execAsync("dotnet", ["--version"], { stdio: "pipe" });
|
|
133
|
-
return validateDotNetSdkVersionCore(sdkContext, result.stdout, minMajorVersion);
|
|
167
|
+
return diagnostics.wrap(diagnostics.pipe(validateDotNetSdkVersionCore(sdkContext, result.stdout, minMajorVersion)));
|
|
134
168
|
}
|
|
135
169
|
catch (error) {
|
|
136
170
|
if (error && "code" in error && error["code"] === "ENOENT") {
|
|
137
|
-
|
|
171
|
+
diagnostics.add(createDiagnostic({
|
|
138
172
|
code: "invalid-dotnet-sdk-dependency",
|
|
139
173
|
messageId: "missing",
|
|
140
174
|
format: {
|
|
@@ -142,21 +176,22 @@ export async function _validateDotNetSdk(sdkContext, minMajorVersion) {
|
|
|
142
176
|
downloadUrl: "https://dotnet.microsoft.com/",
|
|
143
177
|
},
|
|
144
178
|
target: NoTarget,
|
|
145
|
-
});
|
|
179
|
+
}));
|
|
146
180
|
}
|
|
147
|
-
return false;
|
|
181
|
+
return diagnostics.wrap(false);
|
|
148
182
|
}
|
|
149
183
|
}
|
|
150
184
|
function validateDotNetSdkVersionCore(sdkContext, version, minMajorVersion) {
|
|
185
|
+
const diagnostics = createDiagnosticCollector();
|
|
151
186
|
if (version) {
|
|
152
187
|
const dotIndex = version.indexOf(".");
|
|
153
188
|
const firstPart = dotIndex === -1 ? version : version.substring(0, dotIndex);
|
|
154
189
|
const major = Number(firstPart);
|
|
155
190
|
if (isNaN(major)) {
|
|
156
|
-
return false;
|
|
191
|
+
return diagnostics.wrap(false);
|
|
157
192
|
}
|
|
158
193
|
if (major < minMajorVersion) {
|
|
159
|
-
|
|
194
|
+
diagnostics.add(createDiagnostic({
|
|
160
195
|
code: "invalid-dotnet-sdk-dependency",
|
|
161
196
|
messageId: "invalidVersion",
|
|
162
197
|
format: {
|
|
@@ -165,14 +200,18 @@ function validateDotNetSdkVersionCore(sdkContext, version, minMajorVersion) {
|
|
|
165
200
|
downloadUrl: "https://dotnet.microsoft.com/",
|
|
166
201
|
},
|
|
167
202
|
target: NoTarget,
|
|
168
|
-
});
|
|
169
|
-
return false;
|
|
203
|
+
}));
|
|
204
|
+
return diagnostics.wrap(false);
|
|
170
205
|
}
|
|
171
|
-
return true;
|
|
206
|
+
return diagnostics.wrap(true);
|
|
172
207
|
}
|
|
173
208
|
else {
|
|
174
|
-
|
|
175
|
-
|
|
209
|
+
diagnostics.add(createDiagnostic({
|
|
210
|
+
code: "general-error",
|
|
211
|
+
format: { message: "Cannot get the installed .NET SDK version." },
|
|
212
|
+
target: NoTarget,
|
|
213
|
+
}));
|
|
214
|
+
return diagnostics.wrap(false);
|
|
176
215
|
}
|
|
177
216
|
}
|
|
178
217
|
function checkFile(pkgPath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../emitter/src/emitter.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAE/F,OAAO,EAAE,gBAAgB,EAAc,MAAM,6CAA6C,CAAC;AAC3F,OAAO,
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../emitter/src/emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { writeCodeModel } from "./code-model-writer.js";
|
|
2
2
|
export { configurationFileName, tspOutputFileName } from "./constants.js";
|
|
3
|
-
export { $onEmit } from "./emitter.js";
|
|
3
|
+
export { $onEmit, emitCodeModel } from "./emitter.js";
|
|
4
4
|
export { createModel } from "./lib/client-model-builder.js";
|
|
5
5
|
export { $lib, createDiagnostic, getTracer, reportDiagnostic } from "./lib/lib.js";
|
|
6
6
|
export { LoggerLevel } from "./lib/logger-level.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../emitter/src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../emitter/src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKnE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
3
3
|
export { writeCodeModel } from "./code-model-writer.js";
|
|
4
4
|
export { configurationFileName, tspOutputFileName } from "./constants.js";
|
|
5
|
-
export { $onEmit } from "./emitter.js";
|
|
5
|
+
export { $onEmit, emitCodeModel } from "./emitter.js";
|
|
6
6
|
// we export `createModel` only for autorest.csharp because it uses the emitter to generate the code model file but not calling the dll here
|
|
7
7
|
// we could remove this export when in the future we deprecate autorest.csharp
|
|
8
8
|
export { createModel } from "./lib/client-model-builder.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../emitter/src/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAE/F,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../emitter/src/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAE/F,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,4IAA4I;AAC5I,8EAA8E;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAEL,0BAA0B,EAC1B,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,2JAA2J;AAC3J,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAwB,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAIpF,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { SdkClientType as SdkClientTypeOfT, SdkHttpOperation } from "@azure-tools/typespec-client-generator-core";
|
|
2
|
+
import { Diagnostic } from "@typespec/compiler";
|
|
2
3
|
import { CSharpEmitterContext } from "../sdk-context.js";
|
|
3
4
|
import { InputClient } from "../type/input-type.js";
|
|
4
5
|
type SdkClientType = SdkClientTypeOfT<SdkHttpOperation>;
|
|
5
|
-
export declare function fromSdkClients(sdkContext: CSharpEmitterContext, clients: SdkClientType[], rootApiVersions: string[]): InputClient[];
|
|
6
|
+
export declare function fromSdkClients(sdkContext: CSharpEmitterContext, clients: SdkClientType[], rootApiVersions: string[]): [InputClient[], readonly Diagnostic[]];
|
|
6
7
|
export {};
|
|
7
8
|
//# sourceMappingURL=client-converter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-converter.d.ts","sourceRoot":"","sources":["../../../../emitter/src/lib/client-converter.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,IAAI,gBAAgB,EAIjC,gBAAgB,EAEjB,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"client-converter.d.ts","sourceRoot":"","sources":["../../../../emitter/src/lib/client-converter.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,IAAI,gBAAgB,EAIjC,gBAAgB,EAEjB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAA6B,UAAU,EAAY,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EACL,WAAW,EAIZ,MAAM,uBAAuB,CAAC;AAW/B,KAAK,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AAExD,wBAAgB,cAAc,CAC5B,UAAU,EAAE,oBAAoB,EAChC,OAAO,EAAE,aAAa,EAAE,EACxB,eAAe,EAAE,MAAM,EAAE,GACxB,CAAC,WAAW,EAAE,EAAE,SAAS,UAAU,EAAE,CAAC,CASxC"}
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
2
|
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
3
|
-
import { NoTarget } from "@typespec/compiler";
|
|
3
|
+
import { createDiagnosticCollector, NoTarget } from "@typespec/compiler";
|
|
4
4
|
import { InputParameterScope } from "../type/input-parameter-scope.js";
|
|
5
|
+
import { createDiagnostic } from "./lib.js";
|
|
5
6
|
import { fromMethodParameter, fromSdkServiceMethod, getMethodParameterSegments, getParameterDefaultValue, } from "./operation-converter.js";
|
|
6
7
|
import { fromSdkType } from "./type-converter.js";
|
|
7
8
|
import { isMultiServiceClient, isReadOnly } from "./utils.js";
|
|
8
9
|
export function fromSdkClients(sdkContext, clients, rootApiVersions) {
|
|
10
|
+
const diagnostics = createDiagnosticCollector();
|
|
9
11
|
const inputClients = [];
|
|
10
12
|
for (const client of clients) {
|
|
11
|
-
const inputClient = fromSdkClient(sdkContext, client, rootApiVersions);
|
|
13
|
+
const inputClient = diagnostics.pipe(fromSdkClient(sdkContext, client, rootApiVersions));
|
|
12
14
|
inputClients.push(inputClient);
|
|
13
15
|
}
|
|
14
|
-
return inputClients;
|
|
16
|
+
return diagnostics.wrap(inputClients);
|
|
15
17
|
}
|
|
16
18
|
function fromSdkClient(sdkContext, client, rootApiVersions) {
|
|
19
|
+
const diagnostics = createDiagnosticCollector();
|
|
17
20
|
let inputClient = sdkContext.__typeCache.clients.get(client);
|
|
18
21
|
if (inputClient) {
|
|
19
|
-
return inputClient;
|
|
22
|
+
return diagnostics.wrap(inputClient);
|
|
20
23
|
}
|
|
21
24
|
const endpointParameter = client.clientInitialization.parameters.find((p) => p.kind === "endpoint");
|
|
22
25
|
const uri = getMethodUri(endpointParameter);
|
|
23
26
|
// Convert all clientInitialization parameters
|
|
24
|
-
const clientParameters = fromSdkClientInitializationParameters(sdkContext, client.clientInitialization.parameters, client.namespace);
|
|
27
|
+
const clientParameters = diagnostics.pipe(fromSdkClientInitializationParameters(sdkContext, client.clientInitialization.parameters, client.namespace));
|
|
25
28
|
const isMultiService = isMultiServiceClient(client);
|
|
26
29
|
const clientName = !client.parent && isMultiService && !client.name.toLowerCase().endsWith("client")
|
|
27
30
|
? `${client.name}Client`
|
|
@@ -33,7 +36,7 @@ function fromSdkClient(sdkContext, client, rootApiVersions) {
|
|
|
33
36
|
doc: client.doc,
|
|
34
37
|
summary: client.summary,
|
|
35
38
|
methods: client.methods
|
|
36
|
-
.map((m) => fromSdkServiceMethod(sdkContext, m, uri, rootApiVersions, client.namespace))
|
|
39
|
+
.map((m) => diagnostics.pipe(fromSdkServiceMethod(sdkContext, m, uri, rootApiVersions, client.namespace)))
|
|
37
40
|
.filter((m) => m !== undefined),
|
|
38
41
|
parameters: clientParameters,
|
|
39
42
|
initializedBy: client.clientInitialization.initializedBy,
|
|
@@ -47,52 +50,55 @@ function fromSdkClient(sdkContext, client, rootApiVersions) {
|
|
|
47
50
|
sdkContext.__typeCache.updateSdkClientReferences(client, inputClient);
|
|
48
51
|
// fill parent
|
|
49
52
|
if (client.parent) {
|
|
50
|
-
inputClient.parent = fromSdkClient(sdkContext, client.parent, rootApiVersions);
|
|
53
|
+
inputClient.parent = diagnostics.pipe(fromSdkClient(sdkContext, client.parent, rootApiVersions));
|
|
51
54
|
}
|
|
52
55
|
// fill children
|
|
53
56
|
if (client.children) {
|
|
54
|
-
inputClient.children = client.children.map((c) => fromSdkClient(sdkContext, c, rootApiVersions));
|
|
57
|
+
inputClient.children = client.children.map((c) => diagnostics.pipe(fromSdkClient(sdkContext, c, rootApiVersions)));
|
|
55
58
|
}
|
|
56
|
-
return inputClient;
|
|
59
|
+
return diagnostics.wrap(inputClient);
|
|
57
60
|
function fromSdkClientInitializationParameters(sdkContext, parameters, namespace) {
|
|
61
|
+
const diagnostics = createDiagnosticCollector();
|
|
58
62
|
const inputParameters = [];
|
|
59
63
|
for (const param of parameters) {
|
|
60
64
|
if (param.kind === "endpoint") {
|
|
61
65
|
// Convert endpoint parameters
|
|
62
|
-
const endpointParams = fromSdkEndpointParameter(param);
|
|
66
|
+
const endpointParams = diagnostics.pipe(fromSdkEndpointParameter(param));
|
|
63
67
|
inputParameters.push(...endpointParams);
|
|
64
68
|
}
|
|
65
69
|
else if (param.kind === "method") {
|
|
66
70
|
// Convert method parameters
|
|
67
|
-
const methodParam = fromMethodParameter(sdkContext, param, namespace);
|
|
71
|
+
const methodParam = diagnostics.pipe(fromMethodParameter(sdkContext, param, namespace));
|
|
68
72
|
inputParameters.push(methodParam);
|
|
69
73
|
}
|
|
70
74
|
// Note: credential parameters are handled separately in service-authentication.ts
|
|
71
75
|
// and are not included in the client parameters list
|
|
72
76
|
}
|
|
73
|
-
return inputParameters;
|
|
77
|
+
return diagnostics.wrap(inputParameters);
|
|
74
78
|
}
|
|
75
79
|
function fromSdkEndpointParameter(p) {
|
|
80
|
+
const diagnostics = createDiagnosticCollector();
|
|
76
81
|
if (p.type.kind === "union") {
|
|
77
|
-
return fromSdkEndpointType(p.type.variantTypes[0]);
|
|
82
|
+
return diagnostics.wrap(diagnostics.pipe(fromSdkEndpointType(p.type.variantTypes[0])));
|
|
78
83
|
}
|
|
79
84
|
else {
|
|
80
|
-
return fromSdkEndpointType(p.type);
|
|
85
|
+
return diagnostics.wrap(diagnostics.pipe(fromSdkEndpointType(p.type)));
|
|
81
86
|
}
|
|
82
87
|
}
|
|
83
88
|
function fromSdkEndpointType(type) {
|
|
89
|
+
const diagnostics = createDiagnosticCollector();
|
|
84
90
|
// TODO: support free-style endpoint url with multiple parameters
|
|
85
91
|
const endpointExpr = type.serverUrl
|
|
86
92
|
.replace("https://", "")
|
|
87
93
|
.replace("http://", "")
|
|
88
94
|
.split("/")[0];
|
|
89
95
|
if (!/^\{\w+\}$/.test(endpointExpr)) {
|
|
90
|
-
|
|
96
|
+
diagnostics.add(createDiagnostic({
|
|
91
97
|
code: "unsupported-endpoint-url",
|
|
92
98
|
format: { endpoint: type.serverUrl },
|
|
93
99
|
target: NoTarget,
|
|
94
|
-
});
|
|
95
|
-
return [];
|
|
100
|
+
}));
|
|
101
|
+
return diagnostics.wrap([]);
|
|
96
102
|
}
|
|
97
103
|
const endpointVariableName = endpointExpr.substring(1, endpointExpr.length - 1);
|
|
98
104
|
const parameters = [];
|
|
@@ -104,7 +110,7 @@ function fromSdkClient(sdkContext, client, rootApiVersions) {
|
|
|
104
110
|
name: "endpoint",
|
|
105
111
|
crossLanguageDefinitionId: parameter.type.kind === "string" ? "TypeSpec.string" : "TypeSpec.url",
|
|
106
112
|
}
|
|
107
|
-
: fromSdkType(sdkContext, parameter.type); // TODO: consolidate with converter.fromSdkEndpointType
|
|
113
|
+
: diagnostics.pipe(fromSdkType(sdkContext, parameter.type)); // TODO: consolidate with converter.fromSdkEndpointType
|
|
108
114
|
parameters.push({
|
|
109
115
|
kind: "endpoint",
|
|
110
116
|
name: parameter.name,
|
|
@@ -116,15 +122,15 @@ function fromSdkClient(sdkContext, client, rootApiVersions) {
|
|
|
116
122
|
optional: parameter.optional,
|
|
117
123
|
scope: InputParameterScope.Client,
|
|
118
124
|
isEndpoint: isEndpoint,
|
|
119
|
-
defaultValue: getParameterDefaultValue(sdkContext, parameter.clientDefaultValue, parameterType),
|
|
125
|
+
defaultValue: diagnostics.pipe(getParameterDefaultValue(sdkContext, parameter.clientDefaultValue, parameterType)),
|
|
120
126
|
serverUrlTemplate: type.serverUrl,
|
|
121
127
|
skipUrlEncoding: false,
|
|
122
128
|
readOnly: isReadOnly(parameter),
|
|
123
129
|
crossLanguageDefinitionId: parameter.crossLanguageDefinitionId,
|
|
124
|
-
methodParameterSegments: getMethodParameterSegments(sdkContext, parameter),
|
|
130
|
+
methodParameterSegments: diagnostics.pipe(getMethodParameterSegments(sdkContext, parameter)),
|
|
125
131
|
});
|
|
126
132
|
}
|
|
127
|
-
return parameters;
|
|
133
|
+
return diagnostics.wrap(parameters);
|
|
128
134
|
}
|
|
129
135
|
}
|
|
130
136
|
function getMethodUri(p) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-converter.js","sourceRoot":"","sources":["../../../../emitter/src/lib/client-converter.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAU/F,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"client-converter.js","sourceRoot":"","sources":["../../../../emitter/src/lib/client-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
+
import { Diagnostic } from "@typespec/compiler";
|
|
1
2
|
import { CSharpEmitterContext } from "../sdk-context.js";
|
|
2
3
|
import { CodeModel } from "../type/code-model.js";
|
|
3
4
|
/**
|
|
4
5
|
* Creates the code model from the SDK context.
|
|
6
|
+
* This function follows TypeSpec best practices by returning diagnostics alongside the result.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { createModel } from "@typespec/http-client-csharp";
|
|
11
|
+
*
|
|
12
|
+
* const sdkContext = createCSharpEmitterContext(context, logger);
|
|
13
|
+
* const [codeModel, diagnostics] = createModel(sdkContext);
|
|
14
|
+
* // Process the code model and handle diagnostics
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
5
17
|
* @param sdkContext - The SDK context
|
|
6
|
-
* @returns
|
|
18
|
+
* @returns A tuple containing the code model and any diagnostics that were generated
|
|
7
19
|
* @beta
|
|
8
20
|
*/
|
|
9
|
-
export declare function createModel(sdkContext: CSharpEmitterContext): CodeModel;
|
|
21
|
+
export declare function createModel(sdkContext: CSharpEmitterContext): [CodeModel, readonly Diagnostic[]];
|
|
10
22
|
//# sourceMappingURL=client-model-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-model-builder.d.ts","sourceRoot":"","sources":["../../../../emitter/src/lib/client-model-builder.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQlD
|
|
1
|
+
{"version":3,"file":"client-model-builder.d.ts","sourceRoot":"","sources":["../../../../emitter/src/lib/client-model-builder.ts"],"names":[],"mappings":"AAQA,OAAO,EAA6B,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQlD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,oBAAoB,GAAG,CAAC,SAAS,EAAE,SAAS,UAAU,EAAE,CAAC,CAoChG"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
2
|
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
3
|
+
import { createDiagnosticCollector } from "@typespec/compiler";
|
|
3
4
|
import { fromSdkClients } from "./client-converter.js";
|
|
4
5
|
import { fromSdkNamespaces } from "./namespace-converter.js";
|
|
5
6
|
import { processServiceAuthentication } from "./service-authentication.js";
|
|
@@ -7,16 +8,28 @@ import { fromSdkType } from "./type-converter.js";
|
|
|
7
8
|
import { firstLetterToUpperCase, getClientNamespaceString } from "./utils.js";
|
|
8
9
|
/**
|
|
9
10
|
* Creates the code model from the SDK context.
|
|
11
|
+
* This function follows TypeSpec best practices by returning diagnostics alongside the result.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { createModel } from "@typespec/http-client-csharp";
|
|
16
|
+
*
|
|
17
|
+
* const sdkContext = createCSharpEmitterContext(context, logger);
|
|
18
|
+
* const [codeModel, diagnostics] = createModel(sdkContext);
|
|
19
|
+
* // Process the code model and handle diagnostics
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
10
22
|
* @param sdkContext - The SDK context
|
|
11
|
-
* @returns
|
|
23
|
+
* @returns A tuple containing the code model and any diagnostics that were generated
|
|
12
24
|
* @beta
|
|
13
25
|
*/
|
|
14
26
|
export function createModel(sdkContext) {
|
|
27
|
+
const diagnostics = createDiagnosticCollector();
|
|
15
28
|
const sdkPackage = sdkContext.sdkPackage;
|
|
16
29
|
// TO-DO: Consider exposing the namespace hierarchy in the code model https://github.com/microsoft/typespec/issues/8332
|
|
17
|
-
fromSdkNamespaces(sdkContext, sdkPackage.namespaces);
|
|
30
|
+
diagnostics.pipe(fromSdkNamespaces(sdkContext, sdkPackage.namespaces));
|
|
18
31
|
// TO-DO: Consider using the TCGC model + enum cache once https://github.com/Azure/typespec-azure/issues/3180 is resolved
|
|
19
|
-
navigateModels(sdkContext);
|
|
32
|
+
diagnostics.pipe(navigateModels(sdkContext));
|
|
20
33
|
const types = Array.from(sdkContext.__typeCache.types.values());
|
|
21
34
|
const [models, enums] = [
|
|
22
35
|
types.filter((type) => type.kind === "model"),
|
|
@@ -24,7 +37,7 @@ export function createModel(sdkContext) {
|
|
|
24
37
|
];
|
|
25
38
|
const rootClients = sdkPackage.clients;
|
|
26
39
|
const rootApiVersions = parseApiVersions(sdkPackage.enums, rootClients);
|
|
27
|
-
const inputClients = fromSdkClients(sdkContext, rootClients, rootApiVersions);
|
|
40
|
+
const inputClients = diagnostics.pipe(fromSdkClients(sdkContext, rootClients, rootApiVersions));
|
|
28
41
|
// TODO -- TCGC now does not have constants field in its sdkPackage, they might add it in the future.
|
|
29
42
|
const constants = Array.from(sdkContext.__typeCache.constants.values());
|
|
30
43
|
// Fix naming conflicts for constants, enums, and models
|
|
@@ -36,9 +49,9 @@ export function createModel(sdkContext) {
|
|
|
36
49
|
constants: constants,
|
|
37
50
|
models: models,
|
|
38
51
|
clients: inputClients,
|
|
39
|
-
auth: processServiceAuthentication(sdkContext, sdkPackage),
|
|
52
|
+
auth: diagnostics.pipe(processServiceAuthentication(sdkContext, sdkPackage)),
|
|
40
53
|
};
|
|
41
|
-
return clientModel;
|
|
54
|
+
return diagnostics.wrap(clientModel);
|
|
42
55
|
}
|
|
43
56
|
/**
|
|
44
57
|
* Parses and returns the correct API versions for the library.
|
|
@@ -117,11 +130,13 @@ function fixNamingConflicts(models, constants) {
|
|
|
117
130
|
}
|
|
118
131
|
}
|
|
119
132
|
function navigateModels(sdkContext) {
|
|
133
|
+
const diagnostics = createDiagnosticCollector();
|
|
120
134
|
for (const m of sdkContext.sdkPackage.models) {
|
|
121
|
-
fromSdkType(sdkContext, m);
|
|
135
|
+
diagnostics.pipe(fromSdkType(sdkContext, m));
|
|
122
136
|
}
|
|
123
137
|
for (const e of sdkContext.sdkPackage.enums) {
|
|
124
|
-
fromSdkType(sdkContext, e);
|
|
138
|
+
diagnostics.pipe(fromSdkType(sdkContext, e));
|
|
125
139
|
}
|
|
140
|
+
return diagnostics.wrap(undefined);
|
|
126
141
|
}
|
|
127
142
|
//# sourceMappingURL=client-model-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-model-builder.js","sourceRoot":"","sources":["../../../../emitter/src/lib/client-model-builder.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;
|
|
1
|
+
{"version":3,"file":"client-model-builder.js","sourceRoot":"","sources":["../../../../emitter/src/lib/client-model-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SdkHttpOperationExample } from "@azure-tools/typespec-client-generator-core";
|
|
2
|
+
import { Diagnostic } from "@typespec/compiler";
|
|
2
3
|
import { CSharpEmitterContext } from "../sdk-context.js";
|
|
3
4
|
import { InputHttpOperationExample } from "../type/input-examples.js";
|
|
4
|
-
export declare function fromSdkHttpExamples(sdkContext: CSharpEmitterContext, examples: SdkHttpOperationExample[]): InputHttpOperationExample[];
|
|
5
|
+
export declare function fromSdkHttpExamples(sdkContext: CSharpEmitterContext, examples: SdkHttpOperationExample[]): [InputHttpOperationExample[], readonly Diagnostic[]];
|
|
5
6
|
//# sourceMappingURL=example-converter.d.ts.map
|