@typespec/http-client-csharp 1.0.0-alpha.20260421.3 → 1.0.0-alpha.20260422.3
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/code-model-writer.d.ts +7 -0
- package/dist/emitter/src/code-model-writer.d.ts.map +1 -1
- package/dist/emitter/src/code-model-writer.js +10 -1
- package/dist/emitter/src/code-model-writer.js.map +1 -1
- package/dist/emitter/src/emit-generate.browser.d.ts +4 -0
- package/dist/emitter/src/emit-generate.browser.d.ts.map +1 -0
- package/dist/emitter/src/emit-generate.browser.js +40 -0
- package/dist/emitter/src/emit-generate.browser.js.map +1 -0
- package/dist/emitter/src/emit-generate.d.ts +12 -0
- package/dist/emitter/src/emit-generate.d.ts.map +1 -0
- package/dist/emitter/src/emit-generate.js +132 -0
- package/dist/emitter/src/emit-generate.js.map +1 -0
- package/dist/emitter/src/emitter.d.ts.map +1 -1
- package/dist/emitter/src/emitter.js +19 -149
- package/dist/emitter/src/emitter.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 +6 -1
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { CSharpEmitterContext } from "./sdk-context.js";
|
|
2
2
|
import { CodeModel } from "./type/code-model.js";
|
|
3
3
|
import { Configuration } from "./type/configuration.js";
|
|
4
|
+
/**
|
|
5
|
+
* Serializes the code model to a JSON string with reference tracking.
|
|
6
|
+
* @param context - The CSharp emitter context
|
|
7
|
+
* @param codeModel - The code model to serialize
|
|
8
|
+
* @beta
|
|
9
|
+
*/
|
|
10
|
+
export declare function serializeCodeModel(context: CSharpEmitterContext, codeModel: CodeModel): string;
|
|
4
11
|
/**
|
|
5
12
|
* Writes the code model to the output folder. Should only be used by autorest.csharp.
|
|
6
13
|
* @param context - The CSharp emitter context
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-model-writer.d.ts","sourceRoot":"","sources":["../../../emitter/src/code-model-writer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,MAAM,iBAMrB;AA2ED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,oBAAoB,EAC7B,cAAc,EAAE,aAAa,EAC7B,YAAY,EAAE,MAAM,iBAMrB"}
|
|
1
|
+
{"version":3,"file":"code-model-writer.d.ts","sourceRoot":"","sources":["../../../emitter/src/code-model-writer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAE9F;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,MAAM,iBAMrB;AA2ED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,oBAAoB,EAC7B,cAAc,EAAE,aAAa,EAC7B,YAAY,EAAE,MAAM,iBAMrB"}
|
|
@@ -3,6 +3,15 @@
|
|
|
3
3
|
import { UsageFlags } from "@azure-tools/typespec-client-generator-core";
|
|
4
4
|
import { resolvePath } from "@typespec/compiler";
|
|
5
5
|
import { configurationFileName, tspOutputFileName } from "./constants.js";
|
|
6
|
+
/**
|
|
7
|
+
* Serializes the code model to a JSON string with reference tracking.
|
|
8
|
+
* @param context - The CSharp emitter context
|
|
9
|
+
* @param codeModel - The code model to serialize
|
|
10
|
+
* @beta
|
|
11
|
+
*/
|
|
12
|
+
export function serializeCodeModel(context, codeModel) {
|
|
13
|
+
return prettierOutput(JSON.stringify(buildJson(context, codeModel), transformJSONProperties, 2));
|
|
14
|
+
}
|
|
6
15
|
/**
|
|
7
16
|
* Writes the code model to the output folder. Should only be used by autorest.csharp.
|
|
8
17
|
* @param context - The CSharp emitter context
|
|
@@ -11,7 +20,7 @@ import { configurationFileName, tspOutputFileName } from "./constants.js";
|
|
|
11
20
|
* @beta
|
|
12
21
|
*/
|
|
13
22
|
export async function writeCodeModel(context, codeModel, outputFolder) {
|
|
14
|
-
await context.program.host.writeFile(resolvePath(outputFolder, tspOutputFileName),
|
|
23
|
+
await context.program.host.writeFile(resolvePath(outputFolder, tspOutputFileName), serializeCodeModel(context, codeModel));
|
|
15
24
|
}
|
|
16
25
|
/**
|
|
17
26
|
* This function builds a json from code model with refs and ids in it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-model-writer.js","sourceRoot":"","sources":["../../../emitter/src/code-model-writer.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAE/F,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAK1E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA6B,EAC7B,SAAoB,EACpB,YAAoB;IAEpB,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAClC,WAAW,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAC5C,
|
|
1
|
+
{"version":3,"file":"code-model-writer.js","sourceRoot":"","sources":["../../../emitter/src/code-model-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GenerateOptions } from "./emit-generate.js";
|
|
2
|
+
import { CSharpEmitterContext } from "./sdk-context.js";
|
|
3
|
+
export declare function generate(sdkContext: CSharpEmitterContext, codeModelJson: string, configJson: string, options: GenerateOptions): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=emit-generate.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-generate.browser.d.ts","sourceRoot":"","sources":["../../../emitter/src/emit-generate.browser.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAKxD,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CA2Cf"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
3
|
+
// Browser implementation: sends code model to a playground server for generation.
|
|
4
|
+
import { resolvePath } from "@typespec/compiler";
|
|
5
|
+
const SERVER_URL = "https://csharp-playground-server.azurewebsites.net";
|
|
6
|
+
const MAX_RESPONSE_SIZE = 10 * 1024 * 1024; // 10 MB
|
|
7
|
+
export async function generate(sdkContext, codeModelJson, configJson, options) {
|
|
8
|
+
const response = await fetch(`${SERVER_URL}/generate`, {
|
|
9
|
+
method: "POST",
|
|
10
|
+
headers: { "Content-Type": "application/json" },
|
|
11
|
+
body: JSON.stringify({
|
|
12
|
+
codeModel: codeModelJson,
|
|
13
|
+
configuration: configJson,
|
|
14
|
+
generatorName: options.generatorName,
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
const errorText = await response.text();
|
|
19
|
+
throw new Error(`Playground server error (${response.status}): ${errorText}`);
|
|
20
|
+
}
|
|
21
|
+
const contentType = response.headers.get("content-type");
|
|
22
|
+
if (!contentType?.includes("application/json")) {
|
|
23
|
+
throw new Error(`Unexpected response content-type: ${contentType}`);
|
|
24
|
+
}
|
|
25
|
+
const contentLength = response.headers.get("content-length");
|
|
26
|
+
if (contentLength && parseInt(contentLength, 10) > MAX_RESPONSE_SIZE) {
|
|
27
|
+
throw new Error(`Response too large: ${contentLength} bytes exceeds ${MAX_RESPONSE_SIZE} byte limit`);
|
|
28
|
+
}
|
|
29
|
+
const result = await response.json();
|
|
30
|
+
if (!result || !Array.isArray(result.files)) {
|
|
31
|
+
throw new Error("Invalid response: expected { files: [...] }");
|
|
32
|
+
}
|
|
33
|
+
for (const file of result.files) {
|
|
34
|
+
if (typeof file.path !== "string" || typeof file.content !== "string") {
|
|
35
|
+
throw new Error(`Invalid file entry: expected { path: string, content: string }`);
|
|
36
|
+
}
|
|
37
|
+
await sdkContext.program.host.writeFile(resolvePath(options.outputFolder, file.path), file.content);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=emit-generate.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-generate.browser.js","sourceRoot":"","sources":["../../../emitter/src/emit-generate.browser.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAE/F,kFAAkF;AAElF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,UAAU,GAAG,oDAAoD,CAAC;AACxE,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AAEpD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,UAAgC,EAChC,aAAqB,EACrB,UAAkB,EAClB,OAAwB;IAExB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,WAAW,EAAE;QACrD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,SAAS,EAAE,aAAa;YACxB,aAAa,EAAE,UAAU;YACzB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzD,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC7D,IAAI,aAAa,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CACb,uBAAuB,aAAa,kBAAkB,iBAAiB,aAAa,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAErC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CACrC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,EAC5C,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CSharpEmitterContext } from "./sdk-context.js";
|
|
2
|
+
export interface GenerateOptions {
|
|
3
|
+
outputFolder: string;
|
|
4
|
+
packageName: string;
|
|
5
|
+
generatorName: string;
|
|
6
|
+
newProject: boolean;
|
|
7
|
+
debug: boolean;
|
|
8
|
+
saveInputs: boolean;
|
|
9
|
+
emitterExtensionPath?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function generate(sdkContext: CSharpEmitterContext, codeModelJson: string, configJson: string, options: GenerateOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=emit-generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-generate.d.ts","sourceRoot":"","sources":["../../../emitter/src/emit-generate.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AA6BD,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
3
|
+
// Node.js implementation: runs the .NET generator locally via subprocess.
|
|
4
|
+
import { createDiagnosticCollector, getDirectoryPath, joinPaths, NoTarget, resolvePath, } from "@typespec/compiler";
|
|
5
|
+
import fs from "fs";
|
|
6
|
+
import { dirname } from "path";
|
|
7
|
+
import { fileURLToPath } from "url";
|
|
8
|
+
import { _minSupportedDotNetSdkVersion, configurationFileName, tspOutputFileName, } from "./constants.js";
|
|
9
|
+
import { createDiagnostic } from "./lib/lib.js";
|
|
10
|
+
import { execAsync, execCSharpGenerator } from "./lib/utils.js";
|
|
11
|
+
function findProjectRoot(path) {
|
|
12
|
+
let current = path;
|
|
13
|
+
while (true) {
|
|
14
|
+
const pkgPath = joinPaths(current, "package.json");
|
|
15
|
+
try {
|
|
16
|
+
if (fs.statSync(pkgPath)?.isFile()) {
|
|
17
|
+
return current;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// file doesn't exist
|
|
22
|
+
}
|
|
23
|
+
const parent = getDirectoryPath(current);
|
|
24
|
+
if (parent === current) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
current = parent;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function checkFile(pkgPath) {
|
|
31
|
+
try {
|
|
32
|
+
return fs.statSync(pkgPath);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export async function generate(sdkContext, codeModelJson, configJson, options) {
|
|
39
|
+
const diagnostics = createDiagnosticCollector();
|
|
40
|
+
const generatedFolder = resolvePath(options.outputFolder, "src", "Generated");
|
|
41
|
+
if (!fs.existsSync(generatedFolder)) {
|
|
42
|
+
fs.mkdirSync(generatedFolder, { recursive: true });
|
|
43
|
+
}
|
|
44
|
+
// Write code model and configuration to disk for the generator
|
|
45
|
+
await sdkContext.program.host.writeFile(resolvePath(options.outputFolder, tspOutputFileName), codeModelJson);
|
|
46
|
+
await sdkContext.program.host.writeFile(resolvePath(options.outputFolder, configurationFileName), configJson);
|
|
47
|
+
const csProjFile = resolvePath(options.outputFolder, "src", `${options.packageName}.csproj`);
|
|
48
|
+
const emitterPath = options.emitterExtensionPath ?? import.meta.url;
|
|
49
|
+
const projectRoot = findProjectRoot(dirname(fileURLToPath(emitterPath)));
|
|
50
|
+
const generatorPath = resolvePath(projectRoot + "/dist/generator/Microsoft.TypeSpec.Generator.dll");
|
|
51
|
+
try {
|
|
52
|
+
const result = await execCSharpGenerator(sdkContext, {
|
|
53
|
+
generatorPath: generatorPath,
|
|
54
|
+
outputFolder: options.outputFolder,
|
|
55
|
+
generatorName: options.generatorName,
|
|
56
|
+
newProject: options.newProject || !checkFile(csProjFile),
|
|
57
|
+
debug: options.debug,
|
|
58
|
+
});
|
|
59
|
+
if (result.exitCode !== 0) {
|
|
60
|
+
const isValid = diagnostics.pipe(await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion));
|
|
61
|
+
if (isValid) {
|
|
62
|
+
throw new Error(`Failed to generate the library. Exit code: ${result.exitCode}.\nStackTrace: \n${result.stderr}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
const isValid = diagnostics.pipe(await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion));
|
|
68
|
+
if (isValid)
|
|
69
|
+
throw new Error(error, { cause: error });
|
|
70
|
+
}
|
|
71
|
+
if (!options.saveInputs) {
|
|
72
|
+
sdkContext.program.host.rm(resolvePath(options.outputFolder, tspOutputFileName));
|
|
73
|
+
sdkContext.program.host.rm(resolvePath(options.outputFolder, configurationFileName));
|
|
74
|
+
}
|
|
75
|
+
sdkContext.program.reportDiagnostics(diagnostics.diagnostics);
|
|
76
|
+
}
|
|
77
|
+
/** @internal */
|
|
78
|
+
export async function _validateDotNetSdk(sdkContext, minMajorVersion) {
|
|
79
|
+
const diagnostics = createDiagnosticCollector();
|
|
80
|
+
try {
|
|
81
|
+
const result = await execAsync("dotnet", ["--version"], { stdio: "pipe" });
|
|
82
|
+
return diagnostics.wrap(diagnostics.pipe(validateDotNetSdkVersionCore(result.stdout, minMajorVersion)));
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
if (error && "code" in error && error["code"] === "ENOENT") {
|
|
86
|
+
diagnostics.add(createDiagnostic({
|
|
87
|
+
code: "invalid-dotnet-sdk-dependency",
|
|
88
|
+
messageId: "missing",
|
|
89
|
+
format: {
|
|
90
|
+
dotnetMajorVersion: `${minMajorVersion}`,
|
|
91
|
+
downloadUrl: "https://dotnet.microsoft.com/",
|
|
92
|
+
},
|
|
93
|
+
target: NoTarget,
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
96
|
+
return diagnostics.wrap(false);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function validateDotNetSdkVersionCore(version, minMajorVersion) {
|
|
100
|
+
const diagnostics = createDiagnosticCollector();
|
|
101
|
+
if (version) {
|
|
102
|
+
const dotIndex = version.indexOf(".");
|
|
103
|
+
const firstPart = dotIndex === -1 ? version : version.substring(0, dotIndex);
|
|
104
|
+
const major = Number(firstPart);
|
|
105
|
+
if (isNaN(major)) {
|
|
106
|
+
return diagnostics.wrap(false);
|
|
107
|
+
}
|
|
108
|
+
if (major < minMajorVersion) {
|
|
109
|
+
diagnostics.add(createDiagnostic({
|
|
110
|
+
code: "invalid-dotnet-sdk-dependency",
|
|
111
|
+
messageId: "invalidVersion",
|
|
112
|
+
format: {
|
|
113
|
+
installedVersion: version,
|
|
114
|
+
dotnetMajorVersion: `${minMajorVersion}`,
|
|
115
|
+
downloadUrl: "https://dotnet.microsoft.com/",
|
|
116
|
+
},
|
|
117
|
+
target: NoTarget,
|
|
118
|
+
}));
|
|
119
|
+
return diagnostics.wrap(false);
|
|
120
|
+
}
|
|
121
|
+
return diagnostics.wrap(true);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
diagnostics.add(createDiagnostic({
|
|
125
|
+
code: "general-error",
|
|
126
|
+
format: { message: "Cannot get the installed .NET SDK version." },
|
|
127
|
+
target: NoTarget,
|
|
128
|
+
}));
|
|
129
|
+
return diagnostics.wrap(false);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=emit-generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-generate.js","sourceRoot":"","sources":["../../../emitter/src/emit-generate.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAE/F,0EAA0E;AAE1E,OAAO,EACL,yBAAyB,EAEzB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAahE,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;gBACnC,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,UAAgC,EAChC,aAAqB,EACrB,UAAkB,EAClB,OAAwB;IAExB,MAAM,WAAW,GAAG,yBAAyB,EAAE,CAAC;IAEhD,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC9E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,+DAA+D;IAC/D,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CACrC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,EACpD,aAAa,CACd,CAAC;IACF,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CACrC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,qBAAqB,CAAC,EACxD,UAAU,CACX,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,WAAW,SAAS,CAAC,CAAC;IAE7F,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACpE,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,WAAW,CAC/B,WAAW,GAAG,kDAAkD,CACjE,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE;YACnD,aAAa,EAAE,aAAa;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACxD,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAC9B,MAAM,kBAAkB,CAAC,UAAU,EAAE,6BAA6B,CAAC,CACpE,CAAC;YACF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CACb,8CAA8C,MAAM,CAAC,QAAQ,oBAAoB,MAAM,CAAC,MAAM,EAAE,CACjG,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAC9B,MAAM,kBAAkB,CAAC,UAAU,EAAE,6BAA6B,CAAC,CACpE,CAAC;QACF,IAAI,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACjF,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAChE,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAgC,EAChC,eAAuB;IAEvB,MAAM,WAAW,GAAG,yBAAyB,EAAE,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3E,OAAO,WAAW,CAAC,IAAI,CACrB,WAAW,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAC/E,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3D,WAAW,CAAC,GAAG,CACb,gBAAgB,CAAC;gBACf,IAAI,EAAE,+BAA+B;gBACrC,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE;oBACN,kBAAkB,EAAE,GAAG,eAAe,EAAE;oBACxC,WAAW,EAAE,+BAA+B;iBAC7C;gBACD,MAAM,EAAE,QAAQ;aACjB,CAAC,CACH,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,OAAe,EACf,eAAuB;IAEvB,MAAM,WAAW,GAAG,yBAAyB,EAAE,CAAC;IAChD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAEhC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,KAAK,GAAG,eAAe,EAAE,CAAC;YAC5B,WAAW,CAAC,GAAG,CACb,gBAAgB,CAAC;gBACf,IAAI,EAAE,+BAA+B;gBACrC,SAAS,EAAE,gBAAgB;gBAC3B,MAAM,EAAE;oBACN,gBAAgB,EAAE,OAAO;oBACzB,kBAAkB,EAAE,GAAG,eAAe,EAAE;oBACxC,WAAW,EAAE,+BAA+B;iBAC7C;gBACD,MAAM,EAAE,QAAQ;aACjB,CAAC,CACH,CAAC;YACF,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,GAAG,CACb,gBAAgB,CAAC;YACf,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,EAAE,OAAO,EAAE,4CAA4C,EAAE;YACjE,MAAM,EAAE,QAAQ;SACjB,CAAC,CACH,CAAC;QACF,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
|
|
@@ -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,EAA6B,UAAU,EAAE,WAAW,EAAW,MAAM,oBAAoB,CAAC;AAOjG,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;AAExD;;;;;;;;;;;;;;;;;;;;;;;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,CAyDxC;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,38 +1,15 @@
|
|
|
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 { createDiagnosticCollector
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { writeCodeModel, writeConfiguration } from "./code-model-writer.js";
|
|
9
|
-
import { _minSupportedDotNetSdkVersion, configurationFileName, tspOutputFileName, } from "./constants.js";
|
|
4
|
+
import { createDiagnosticCollector } from "@typespec/compiler";
|
|
5
|
+
import { resolve } from "path";
|
|
6
|
+
import { serializeCodeModel } from "./code-model-writer.js";
|
|
7
|
+
import { generate } from "./emit-generate.js";
|
|
10
8
|
import { createModel } from "./lib/client-model-builder.js";
|
|
11
|
-
import { createDiagnostic } from "./lib/lib.js";
|
|
12
9
|
import { LoggerLevel } from "./lib/logger-level.js";
|
|
13
10
|
import { Logger } from "./lib/logger.js";
|
|
14
|
-
import { execAsync, execCSharpGenerator } from "./lib/utils.js";
|
|
15
11
|
import { resolveOptions } from "./options.js";
|
|
16
12
|
import { createCSharpEmitterContext } from "./sdk-context.js";
|
|
17
|
-
/**
|
|
18
|
-
* Look for the project root by looking up until a `package.json` is found.
|
|
19
|
-
* @param path Path to start looking
|
|
20
|
-
*/
|
|
21
|
-
function findProjectRoot(path) {
|
|
22
|
-
let current = path;
|
|
23
|
-
while (true) {
|
|
24
|
-
const pkgPath = joinPaths(current, "package.json");
|
|
25
|
-
const stats = checkFile(pkgPath);
|
|
26
|
-
if (stats?.isFile()) {
|
|
27
|
-
return current;
|
|
28
|
-
}
|
|
29
|
-
const parent = getDirectoryPath(current);
|
|
30
|
-
if (parent === current) {
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
current = parent;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
13
|
/**
|
|
37
14
|
* Creates a code model by executing the full emission logic.
|
|
38
15
|
* This function can be called by downstream emitters to generate a code model and collect diagnostics.
|
|
@@ -78,61 +55,23 @@ export async function emitCodeModel(context, updateCodeModel) {
|
|
|
78
55
|
if (root) {
|
|
79
56
|
// Apply optional code model update callback
|
|
80
57
|
const updatedRoot = updateCodeModel ? updateCodeModel(root, sdkContext) : root;
|
|
81
|
-
const generatedFolder = resolvePath(outputFolder, "src", "Generated");
|
|
82
|
-
if (!fs.existsSync(generatedFolder)) {
|
|
83
|
-
fs.mkdirSync(generatedFolder, { recursive: true });
|
|
84
|
-
}
|
|
85
|
-
// emit tspCodeModel.json
|
|
86
|
-
await writeCodeModel(sdkContext, updatedRoot, outputFolder);
|
|
87
58
|
const namespace = updatedRoot.name;
|
|
88
59
|
const configurations = createConfiguration(options, namespace, sdkContext);
|
|
89
|
-
//
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
if (result.exitCode !== 0) {
|
|
105
|
-
const isValid = diagnostics.pipe(await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion));
|
|
106
|
-
// if the dotnet sdk is valid, the error is not dependency issue, log it as normal
|
|
107
|
-
if (isValid) {
|
|
108
|
-
diagnostics.add(createDiagnostic({
|
|
109
|
-
code: "general-error",
|
|
110
|
-
format: {
|
|
111
|
-
message: `Failed to generate the library. Exit code: ${result.exitCode}.\n${result.stderr}`,
|
|
112
|
-
},
|
|
113
|
-
target: NoTarget,
|
|
114
|
-
}));
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
catch (error) {
|
|
119
|
-
const isValid = diagnostics.pipe(await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion));
|
|
120
|
-
// if the dotnet sdk is valid, the error is not dependency issue, log it as normal
|
|
121
|
-
if (isValid) {
|
|
122
|
-
diagnostics.add(createDiagnostic({
|
|
123
|
-
code: "general-error",
|
|
124
|
-
format: {
|
|
125
|
-
message: `Failed to generate the library. Error: ${error.message ?? error}`,
|
|
126
|
-
},
|
|
127
|
-
target: NoTarget,
|
|
128
|
-
}));
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
if (!options["save-inputs"]) {
|
|
132
|
-
// delete
|
|
133
|
-
context.program.host.rm(resolvePath(outputFolder, tspOutputFileName));
|
|
134
|
-
context.program.host.rm(resolvePath(outputFolder, configurationFileName));
|
|
135
|
-
}
|
|
60
|
+
// Serialize code model and configuration
|
|
61
|
+
const codeModelJson = serializeCodeModel(sdkContext, updatedRoot);
|
|
62
|
+
const configJson = JSON.stringify(configurations, null, 2) + "\n";
|
|
63
|
+
// Generate C# code via platform-specific implementation.
|
|
64
|
+
// In Node.js this runs the .NET generator locally.
|
|
65
|
+
// In the browser this sends the code model to a playground server.
|
|
66
|
+
await generate(sdkContext, codeModelJson, configJson, {
|
|
67
|
+
outputFolder,
|
|
68
|
+
packageName: configurations["package-name"] ?? "",
|
|
69
|
+
generatorName: options["generator-name"],
|
|
70
|
+
newProject: options["new-project"],
|
|
71
|
+
debug: options.debug ?? false,
|
|
72
|
+
saveInputs: options["save-inputs"] ?? false,
|
|
73
|
+
emitterExtensionPath: options["emitter-extension-path"],
|
|
74
|
+
});
|
|
136
75
|
}
|
|
137
76
|
}
|
|
138
77
|
return diagnostics.wrap(undefined);
|
|
@@ -170,73 +109,4 @@ export function createConfiguration(options, namespace, sdkContext) {
|
|
|
170
109
|
license: sdkContext.sdkPackage.licenseInfo,
|
|
171
110
|
};
|
|
172
111
|
}
|
|
173
|
-
/** check the dotnet sdk installation.
|
|
174
|
-
* Report diagnostic if dotnet sdk is not installed or its version does not meet prerequisite
|
|
175
|
-
* @param sdkContext - The SDK context
|
|
176
|
-
* @param minVersionRequisite - The minimum required major version
|
|
177
|
-
* @returns A tuple containing whether the SDK is valid and any diagnostics
|
|
178
|
-
* @internal
|
|
179
|
-
*/
|
|
180
|
-
export async function _validateDotNetSdk(sdkContext, minMajorVersion) {
|
|
181
|
-
const diagnostics = createDiagnosticCollector();
|
|
182
|
-
try {
|
|
183
|
-
const result = await execAsync("dotnet", ["--version"], { stdio: "pipe" });
|
|
184
|
-
return diagnostics.wrap(diagnostics.pipe(validateDotNetSdkVersionCore(sdkContext, result.stdout, minMajorVersion)));
|
|
185
|
-
}
|
|
186
|
-
catch (error) {
|
|
187
|
-
if (error && "code" in error && error["code"] === "ENOENT") {
|
|
188
|
-
diagnostics.add(createDiagnostic({
|
|
189
|
-
code: "invalid-dotnet-sdk-dependency",
|
|
190
|
-
messageId: "missing",
|
|
191
|
-
format: {
|
|
192
|
-
dotnetMajorVersion: `${minMajorVersion}`,
|
|
193
|
-
downloadUrl: "https://dotnet.microsoft.com/",
|
|
194
|
-
},
|
|
195
|
-
target: NoTarget,
|
|
196
|
-
}));
|
|
197
|
-
}
|
|
198
|
-
return diagnostics.wrap(false);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
function validateDotNetSdkVersionCore(sdkContext, version, minMajorVersion) {
|
|
202
|
-
const diagnostics = createDiagnosticCollector();
|
|
203
|
-
if (version) {
|
|
204
|
-
const dotIndex = version.indexOf(".");
|
|
205
|
-
const firstPart = dotIndex === -1 ? version : version.substring(0, dotIndex);
|
|
206
|
-
const major = Number(firstPart);
|
|
207
|
-
if (isNaN(major)) {
|
|
208
|
-
return diagnostics.wrap(false);
|
|
209
|
-
}
|
|
210
|
-
if (major < minMajorVersion) {
|
|
211
|
-
diagnostics.add(createDiagnostic({
|
|
212
|
-
code: "invalid-dotnet-sdk-dependency",
|
|
213
|
-
messageId: "invalidVersion",
|
|
214
|
-
format: {
|
|
215
|
-
installedVersion: version,
|
|
216
|
-
dotnetMajorVersion: `${minMajorVersion}`,
|
|
217
|
-
downloadUrl: "https://dotnet.microsoft.com/",
|
|
218
|
-
},
|
|
219
|
-
target: NoTarget,
|
|
220
|
-
}));
|
|
221
|
-
return diagnostics.wrap(false);
|
|
222
|
-
}
|
|
223
|
-
return diagnostics.wrap(true);
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
diagnostics.add(createDiagnostic({
|
|
227
|
-
code: "general-error",
|
|
228
|
-
format: { message: "Cannot get the installed .NET SDK version." },
|
|
229
|
-
target: NoTarget,
|
|
230
|
-
}));
|
|
231
|
-
return diagnostics.wrap(false);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
function checkFile(pkgPath) {
|
|
235
|
-
try {
|
|
236
|
-
return statSync(pkgPath);
|
|
237
|
-
}
|
|
238
|
-
catch (error) {
|
|
239
|
-
return undefined;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
112
|
//# sourceMappingURL=emitter.js.map
|
|
@@ -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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"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typespec/http-client-csharp",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.20260422.3",
|
|
4
4
|
"author": "Microsoft Corporation",
|
|
5
5
|
"description": "TypeSpec library for emitting Http Client libraries for C#.",
|
|
6
6
|
"homepage": "https://typespec.io",
|
|
@@ -25,11 +25,16 @@
|
|
|
25
25
|
"default": "./dist/emitter/src/index.js"
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
|
+
"browser": {
|
|
29
|
+
"./dist/emitter/src/emit-generate.js": "./dist/emitter/src/emit-generate.browser.js",
|
|
30
|
+
"./emitter/src/emit-generate.ts": "./emitter/src/emit-generate.browser.ts"
|
|
31
|
+
},
|
|
28
32
|
"scripts": {
|
|
29
33
|
"clean": "rimraf ./dist ./emitter/temp && dotnet clean ./generator",
|
|
30
34
|
"build:emitter": "tsc -p ./emitter/tsconfig.build.json",
|
|
31
35
|
"build:generator": "dotnet build ./generator",
|
|
32
36
|
"build": "npm run build:emitter && npm run build:generator && npm run extract-api",
|
|
37
|
+
"dev:playground": "npm run build:emitter && cd ../../website && npm run dev",
|
|
33
38
|
"gen-extern-signature": "tspd --enable-experimental gen-extern-signature .",
|
|
34
39
|
"watch": "tsc -p ./emitter/tsconfig.build.json --watch",
|
|
35
40
|
"lint-typespec-library": "tsp compile . --warn-as-error --import @typespec/library-linter --no-emit",
|