@typespec/http-server-csharp 0.58.0-alpha.2-dev.1 → 0.58.0-alpha.20-dev.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.
- package/README.md +69 -6
- package/cmd/hscs.js +2 -0
- package/dist/src/cli/cli.d.ts +2 -0
- package/dist/src/cli/cli.d.ts.map +1 -0
- package/dist/src/cli/cli.js +173 -0
- package/dist/src/cli/cli.js.map +1 -0
- package/dist/src/{attributes.d.ts → lib/attributes.d.ts} +1 -1
- package/dist/src/lib/attributes.d.ts.map +1 -0
- package/dist/src/{attributes.js → lib/attributes.js} +113 -35
- package/dist/src/lib/attributes.js.map +1 -0
- package/dist/src/lib/boilerplate.d.ts +6 -0
- package/dist/src/lib/boilerplate.d.ts.map +1 -0
- package/dist/src/{boilerplate.js → lib/boilerplate.js} +253 -66
- package/dist/src/lib/boilerplate.js.map +1 -0
- package/dist/src/lib/doc.d.ts +5 -0
- package/dist/src/lib/doc.d.ts.map +1 -0
- package/dist/src/lib/doc.js +237 -0
- package/dist/src/lib/doc.js.map +1 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js.map +1 -0
- package/dist/src/{interfaces.d.ts → lib/interfaces.d.ts} +58 -4
- package/dist/src/lib/interfaces.d.ts.map +1 -0
- package/dist/src/{interfaces.js → lib/interfaces.js} +100 -27
- package/dist/src/lib/interfaces.js.map +1 -0
- package/dist/src/{lib.d.ts → lib/lib.d.ts} +54 -1
- package/dist/src/lib/lib.d.ts.map +1 -0
- package/dist/src/lib/lib.js +146 -0
- package/dist/src/lib/lib.js.map +1 -0
- package/dist/src/lib/project.d.ts +5 -0
- package/dist/src/lib/project.d.ts.map +1 -0
- package/dist/src/lib/project.js +101 -0
- package/dist/src/lib/project.js.map +1 -0
- package/dist/src/lib/scaffolding.d.ts +22 -0
- package/dist/src/lib/scaffolding.d.ts.map +1 -0
- package/dist/src/lib/scaffolding.js +461 -0
- package/dist/src/lib/scaffolding.js.map +1 -0
- package/dist/src/lib/service.d.ts.map +1 -0
- package/dist/src/lib/service.js +1188 -0
- package/dist/src/lib/service.js.map +1 -0
- package/dist/src/lib/testing/index.d.ts.map +1 -0
- package/dist/src/{testing → lib/testing}/index.js +1 -0
- package/dist/src/lib/testing/index.js.map +1 -0
- package/dist/src/{type-helpers.d.ts → lib/type-helpers.d.ts} +5 -1
- package/dist/src/lib/type-helpers.d.ts.map +1 -0
- package/dist/src/{type-helpers.js → lib/type-helpers.js} +31 -0
- package/dist/src/lib/type-helpers.js.map +1 -0
- package/dist/src/lib/utils.d.ts +114 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +1557 -0
- package/dist/src/lib/utils.js.map +1 -0
- package/package.json +49 -27
- package/dist/src/attributes.d.ts.map +0 -1
- package/dist/src/attributes.js.map +0 -1
- package/dist/src/boilerplate.d.ts +0 -4
- package/dist/src/boilerplate.d.ts.map +0 -1
- package/dist/src/boilerplate.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/interfaces.d.ts.map +0 -1
- package/dist/src/interfaces.js.map +0 -1
- package/dist/src/lib.d.ts.map +0 -1
- package/dist/src/lib.js +0 -60
- package/dist/src/lib.js.map +0 -1
- package/dist/src/service.d.ts.map +0 -1
- package/dist/src/service.js +0 -829
- package/dist/src/service.js.map +0 -1
- package/dist/src/testing/index.d.ts.map +0 -1
- package/dist/src/testing/index.js.map +0 -1
- package/dist/src/type-helpers.d.ts.map +0 -1
- package/dist/src/type-helpers.js.map +0 -1
- package/dist/src/utils.d.ts +0 -48
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -628
- package/dist/src/utils.js.map +0 -1
- /package/dist/src/{index.d.ts → lib/index.d.ts} +0 -0
- /package/dist/src/{index.js → lib/index.js} +0 -0
- /package/dist/src/{service.d.ts → lib/service.d.ts} +0 -0
- /package/dist/src/{testing → lib/testing}/index.d.ts +0 -0
package/README.md
CHANGED
|
@@ -8,9 +8,7 @@ TypeSpec service code generator for c-sharp
|
|
|
8
8
|
npm install @typespec/http-server-csharp
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
## Emitter
|
|
12
|
-
|
|
13
|
-
### Usage
|
|
11
|
+
## Emitter usage
|
|
14
12
|
|
|
15
13
|
1. Via the command line
|
|
16
14
|
|
|
@@ -25,16 +23,81 @@ emit:
|
|
|
25
23
|
- "@typespec/http-server-csharp"
|
|
26
24
|
```
|
|
27
25
|
|
|
28
|
-
|
|
26
|
+
The config can be extended with options as follows:
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
emit:
|
|
30
|
+
- "@typespec/http-server-csharp"
|
|
31
|
+
options:
|
|
32
|
+
"@typespec/http-server-csharp":
|
|
33
|
+
option: value
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Emitter options
|
|
37
|
+
|
|
38
|
+
### `emitter-output-dir`
|
|
39
|
+
|
|
40
|
+
**Type:** `absolutePath`
|
|
29
41
|
|
|
30
|
-
|
|
42
|
+
Defines the emitter output directory. Defaults to `{output-dir}/@typespec/http-server-csharp`
|
|
43
|
+
See [Configuring output directory for more info](https://typespec.io/docs/handbook/configuration/configuration/#configuring-output-directory)
|
|
44
|
+
|
|
45
|
+
### `skip-format`
|
|
31
46
|
|
|
32
47
|
**Type:** `boolean`
|
|
33
48
|
|
|
34
49
|
Skips formatting of generated C# Types. By default, C# files are formatted using 'dotnet format'.
|
|
35
50
|
|
|
36
|
-
|
|
51
|
+
### `output-type`
|
|
37
52
|
|
|
38
53
|
**Type:** `"models" | "all"`
|
|
39
54
|
|
|
40
55
|
Chooses which service artifacts to emit. choices include 'models' or 'all' artifacts.
|
|
56
|
+
|
|
57
|
+
### `emit-mocks`
|
|
58
|
+
|
|
59
|
+
**Type:** `"mocks-and-project-files" | "mocks-only" | "none"`
|
|
60
|
+
|
|
61
|
+
Emits mock implementations of business logic, setup code, and project files, enabling the service to respond to requests before a real implementation is provided
|
|
62
|
+
|
|
63
|
+
### `use-swaggerui`
|
|
64
|
+
|
|
65
|
+
**Type:** `boolean`
|
|
66
|
+
|
|
67
|
+
Configure a Swagger UI endpoint in the development configuration
|
|
68
|
+
|
|
69
|
+
### `openapi-path`
|
|
70
|
+
|
|
71
|
+
**Type:** `string`
|
|
72
|
+
|
|
73
|
+
Use openapi at the given path for generating SwaggerUI endpoints. By default, this will be 'openapi/openapi.yaml' if the 'use-swaggerui' option is enabled.
|
|
74
|
+
|
|
75
|
+
### `overwrite`
|
|
76
|
+
|
|
77
|
+
**Type:** `boolean`
|
|
78
|
+
|
|
79
|
+
When generating mock and project files, overwrite any existing files with the same name.
|
|
80
|
+
|
|
81
|
+
### `project-name`
|
|
82
|
+
|
|
83
|
+
**Type:** `string`
|
|
84
|
+
|
|
85
|
+
The name of the generated project.
|
|
86
|
+
|
|
87
|
+
### `http-port`
|
|
88
|
+
|
|
89
|
+
**Type:** `number`
|
|
90
|
+
|
|
91
|
+
The service http port when hosting the project locally.
|
|
92
|
+
|
|
93
|
+
### `https-port`
|
|
94
|
+
|
|
95
|
+
**Type:** `number`
|
|
96
|
+
|
|
97
|
+
The service https port when hosting the project locally.
|
|
98
|
+
|
|
99
|
+
### `collection-type`
|
|
100
|
+
|
|
101
|
+
**Type:** `"array" | "enumerable"`
|
|
102
|
+
|
|
103
|
+
Specifies the collection type to use: 'array' or 'enumerable'. The default is 'array'.
|
package/cmd/hscs.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli/cli.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import { resolvePath } from "@typespec/compiler";
|
|
3
|
+
import { spawn } from "cross-spawn";
|
|
4
|
+
import path from "path";
|
|
5
|
+
import pc from "picocolors";
|
|
6
|
+
import yargs from "yargs";
|
|
7
|
+
import { hideBin } from "yargs/helpers";
|
|
8
|
+
import { getFreePort } from "../lib/utils.js";
|
|
9
|
+
async function main() {
|
|
10
|
+
console.log(`TypeSpec Http Server Emitter for C-Sharp \n`);
|
|
11
|
+
await yargs(hideBin(process.argv))
|
|
12
|
+
.scriptName("hscs-scaffold")
|
|
13
|
+
.help()
|
|
14
|
+
.strict()
|
|
15
|
+
.parserConfiguration({
|
|
16
|
+
"greedy-arrays": false,
|
|
17
|
+
"boolean-negation": false,
|
|
18
|
+
})
|
|
19
|
+
.command("$0 <path-to-spec> [--output <project-directory>] [--use-swaggerui] [OPTIONS]", "Create an ASP.Net server project", (cmd) => {
|
|
20
|
+
return cmd
|
|
21
|
+
.option("use-swaggerui", {
|
|
22
|
+
description: "Include generated OpenAPI and a SwaggerUI endpoint in the service project. THIS OPTION REQUIRES '@typespec/openapi3' as a dependency of your typespec project.",
|
|
23
|
+
type: "boolean",
|
|
24
|
+
default: false,
|
|
25
|
+
})
|
|
26
|
+
.option("project-name", {
|
|
27
|
+
description: "The name of the generated project.",
|
|
28
|
+
type: "string",
|
|
29
|
+
default: "ServiceProject",
|
|
30
|
+
})
|
|
31
|
+
.option("http-port", {
|
|
32
|
+
description: "The http port for the generated project to use locally",
|
|
33
|
+
type: "number",
|
|
34
|
+
})
|
|
35
|
+
.option("https-port", {
|
|
36
|
+
description: "The https port for the generated service to listen on locally.",
|
|
37
|
+
type: "number",
|
|
38
|
+
})
|
|
39
|
+
.option("overwrite", {
|
|
40
|
+
description: "Overwrite existing mock implementations and project files",
|
|
41
|
+
type: "boolean",
|
|
42
|
+
default: true,
|
|
43
|
+
})
|
|
44
|
+
.option("output", {
|
|
45
|
+
description: "Path to the directory where the project will be created.",
|
|
46
|
+
type: "string",
|
|
47
|
+
})
|
|
48
|
+
.option("collection-type", {
|
|
49
|
+
description: "Specifies the type of collection to use: 'array' or 'enumerable'. If not specified, 'array' will be used by default.",
|
|
50
|
+
type: "string",
|
|
51
|
+
default: "array",
|
|
52
|
+
choices: ["array", "enumerable"],
|
|
53
|
+
})
|
|
54
|
+
.positional("path-to-spec", {
|
|
55
|
+
description: "The path to the TypeSpec spec or TypeSpec project directory",
|
|
56
|
+
type: "string",
|
|
57
|
+
demandOption: true,
|
|
58
|
+
});
|
|
59
|
+
}, async (args) => {
|
|
60
|
+
const projectDir = args["output"] !== undefined ? resolvePath(process.cwd(), args["output"]) : undefined;
|
|
61
|
+
const pathToSpec = resolvePath(process.cwd(), args["path-to-spec"]);
|
|
62
|
+
const useSwagger = args["use-swaggerui"];
|
|
63
|
+
const overwrite = args["overwrite"];
|
|
64
|
+
const projectName = args["project-name"];
|
|
65
|
+
const collectionType = args["collectionType"] ?? "array";
|
|
66
|
+
const httpPort = args["http-port"] || (await getFreePort(5000, 5999));
|
|
67
|
+
const httpsPort = args["https-port"] || (await getFreePort(7000, 7999));
|
|
68
|
+
console.log(pc.bold("Compiling spec to create ASP.Net core project with mock implementations"));
|
|
69
|
+
console.log(pc.bold(`using http port ${httpPort} and https port ${httpsPort}`));
|
|
70
|
+
const compileArgs = [
|
|
71
|
+
"tsp",
|
|
72
|
+
"compile",
|
|
73
|
+
pathToSpec,
|
|
74
|
+
"--emit",
|
|
75
|
+
"@typespec/http-server-csharp",
|
|
76
|
+
"--option",
|
|
77
|
+
"@typespec/http-server-csharp.emit-mocks=mocks-and-project-files",
|
|
78
|
+
"--option",
|
|
79
|
+
`@typespec/http-server-csharp.project-name=${projectName}`,
|
|
80
|
+
"--trace",
|
|
81
|
+
"http-server-csharp",
|
|
82
|
+
];
|
|
83
|
+
if (overwrite) {
|
|
84
|
+
compileArgs.push("--option", "@typespec/http-server-csharp.overwrite=true");
|
|
85
|
+
}
|
|
86
|
+
if (httpPort) {
|
|
87
|
+
compileArgs.push("--option", `@typespec/http-server-csharp.http-port=${httpPort}`);
|
|
88
|
+
}
|
|
89
|
+
if (httpsPort) {
|
|
90
|
+
compileArgs.push("--option", `@typespec/http-server-csharp.https-port=${httpsPort}`);
|
|
91
|
+
}
|
|
92
|
+
if (collectionType) {
|
|
93
|
+
compileArgs.push("--option", `@typespec/http-server-csharp.collection-type=${collectionType}`);
|
|
94
|
+
}
|
|
95
|
+
const swaggerArgs = [
|
|
96
|
+
"--emit",
|
|
97
|
+
"@typespec/openapi3",
|
|
98
|
+
"--option",
|
|
99
|
+
"@typespec/http-server-csharp.use-swaggerui=true",
|
|
100
|
+
];
|
|
101
|
+
if (projectDir) {
|
|
102
|
+
const generatedTargetDir = resolvePath(process.cwd(), projectDir);
|
|
103
|
+
const generatedOpenApiDir = resolvePath(process.cwd(), projectDir, "openapi");
|
|
104
|
+
const openApiPath = path
|
|
105
|
+
.relative(projectDir, resolvePath(generatedOpenApiDir, "openapi.yaml"))
|
|
106
|
+
.replaceAll("\\", "/");
|
|
107
|
+
compileArgs.push("--option", `@typespec/http-server-csharp.emitter-output-dir=${generatedTargetDir}`);
|
|
108
|
+
swaggerArgs.push("--option", `@typespec/openapi3.emitter-output-dir=${generatedOpenApiDir}`, "--option", `@typespec/http-server-csharp.openapi-path=${openApiPath}`);
|
|
109
|
+
}
|
|
110
|
+
if (useSwagger)
|
|
111
|
+
compileArgs.push(...swaggerArgs);
|
|
112
|
+
const result = await runScriptAsync("npx", compileArgs);
|
|
113
|
+
if (result === 0) {
|
|
114
|
+
console.log(pc.bold(`Your project was successfully created`));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.log(pc.bold("There were one or more errors"));
|
|
118
|
+
if (useSwagger) {
|
|
119
|
+
console.log("You must have @typespec/openapi3 as a dependency in your typespec project for use of SwaggerUI. ");
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}).argv;
|
|
123
|
+
}
|
|
124
|
+
function internalError(error) {
|
|
125
|
+
// NOTE: An expected error, like one thrown for bad input, shouldn't reach
|
|
126
|
+
// here, but be handled somewhere else. If we reach here, it should be
|
|
127
|
+
// considered a bug and therefore we should not suppress the stack trace as
|
|
128
|
+
// that risks losing it in the case of a bug that does not repro easily.
|
|
129
|
+
console.log(error);
|
|
130
|
+
}
|
|
131
|
+
function processStream(input) {
|
|
132
|
+
if (input === undefined || input === null)
|
|
133
|
+
return "";
|
|
134
|
+
const data = `${input}`;
|
|
135
|
+
const lines = data.split("\n");
|
|
136
|
+
const result = [];
|
|
137
|
+
for (const line of lines) {
|
|
138
|
+
const token = "hscs-msg:";
|
|
139
|
+
const extraChars = token.length;
|
|
140
|
+
if (line.includes(token) && line.includes("trace")) {
|
|
141
|
+
const endPos = line.indexOf(token) + extraChars;
|
|
142
|
+
result.push(pc.bold(line.substring(endPos)));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
result.push(pc.dim(line));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return result.join("\n");
|
|
149
|
+
}
|
|
150
|
+
function runScriptAsync(cmd, args) {
|
|
151
|
+
let resolver;
|
|
152
|
+
const promise = new Promise((resolve, _) => {
|
|
153
|
+
resolver = resolve;
|
|
154
|
+
});
|
|
155
|
+
console.log(pc.green(`> ${cmd} ${args.join(" ")}`));
|
|
156
|
+
const proc = spawn(cmd, args);
|
|
157
|
+
proc.stdout?.on("data", (data) => {
|
|
158
|
+
console.log(processStream(data));
|
|
159
|
+
});
|
|
160
|
+
proc.stderr?.on("data", (data) => {
|
|
161
|
+
console.log(processStream(data));
|
|
162
|
+
});
|
|
163
|
+
proc.on("close", (_, __) => {
|
|
164
|
+
resolver(proc.exitCode || 0);
|
|
165
|
+
});
|
|
166
|
+
return promise;
|
|
167
|
+
}
|
|
168
|
+
process.on("unhandledRejection", (error) => {
|
|
169
|
+
console.error("Unhandled promise rejection!");
|
|
170
|
+
internalError(error);
|
|
171
|
+
});
|
|
172
|
+
main().catch(internalError);
|
|
173
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ export declare function getFormatValue(program: Program, type: Scalar | ModelPro
|
|
|
9
9
|
* @param type The type to check
|
|
10
10
|
* @returns The attributes associated with the type, or none
|
|
11
11
|
*/
|
|
12
|
-
export declare function getEncodedNameAttribute(program: Program, type: ModelProperty): Attribute | undefined;
|
|
12
|
+
export declare function getEncodedNameAttribute(program: Program, type: ModelProperty, cSharpName?: string): Attribute | undefined;
|
|
13
13
|
/**
|
|
14
14
|
* Return the encoding attributes for model properties
|
|
15
15
|
* @param program The program being processed
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/lib/attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,aAAa,EACb,OAAO,EAEP,MAAM,EACN,IAAI,EAEL,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EASV,MAAM,iBAAiB,CAAC;AAKzB,eAAO,MAAM,aAAa,EAAE,MAA2B,CAAC;AAExD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,GAAG,aAAa,GAC3B,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAEjG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,aAAa,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,SAAS,GAAG,SAAS,CAuDvB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,CAgCxF;AAmED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,aAAa,GAAG,MAAM,GAC3B,SAAS,GAAG,SAAS,CAgEvB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,aAAa,GAAG,MAAM,GAC3B,SAAS,GAAG,SAAS,CAqDvB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,aAAa,GAAG,MAAM,GAC3B,SAAS,GAAG,SAAS,CAgFvB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAyCvE;AAYD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CA0C5F"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { getEncode, getFormat, getMaxItems, getMaxValue, getMaxValueExclusive, getMinItems, getMinValue, getMinValueExclusive, resolveEncodedName, } from "@typespec/compiler";
|
|
1
|
+
import { getEncode, getFormat, getMaxItems, getMaxValue, getMaxValueExclusive, getMinItems, getMinValue, getMinValueExclusive, isArrayModelType, resolveEncodedName, } from "@typespec/compiler";
|
|
2
|
+
import { camelCase } from "change-case";
|
|
2
3
|
import { Attribute, AttributeType, BooleanValue, CSharpType, HelperNamespace, NumericValue, Parameter, RawValue, StringValue, } from "./interfaces.js";
|
|
3
|
-
import { getStringConstraint, isArrayType } from "./type-helpers.js";
|
|
4
|
-
import {
|
|
4
|
+
import { getEnumType, getStringConstraint, isArrayType } from "./type-helpers.js";
|
|
5
|
+
import { getCSharpTypeForScalar, isStringEnumType } from "./utils.js";
|
|
5
6
|
export const JsonNamespace = "System.Text.Json";
|
|
6
7
|
export function getEncodingValue(program, type) {
|
|
7
8
|
const value = getEncode(program, type);
|
|
@@ -16,7 +17,7 @@ export function getFormatValue(program, type) {
|
|
|
16
17
|
* @param type The type to check
|
|
17
18
|
* @returns The attributes associated with the type, or none
|
|
18
19
|
*/
|
|
19
|
-
export function getEncodedNameAttribute(program, type) {
|
|
20
|
+
export function getEncodedNameAttribute(program, type, cSharpName) {
|
|
20
21
|
const encodedName = resolveEncodedName(program, type, "application/json");
|
|
21
22
|
if (encodedName !== type.name) {
|
|
22
23
|
const attr = new Attribute(new AttributeType({
|
|
@@ -36,6 +37,24 @@ export function getEncodedNameAttribute(program, type) {
|
|
|
36
37
|
}));
|
|
37
38
|
return attr;
|
|
38
39
|
}
|
|
40
|
+
if (cSharpName && type.name !== camelCase(cSharpName)) {
|
|
41
|
+
const attr = new Attribute(new AttributeType({
|
|
42
|
+
name: "JsonPropertyName",
|
|
43
|
+
namespace: JsonNamespace,
|
|
44
|
+
}), []);
|
|
45
|
+
attr.parameters.push(new Parameter({
|
|
46
|
+
name: "name",
|
|
47
|
+
value: new StringValue(type.name),
|
|
48
|
+
optional: false,
|
|
49
|
+
type: new CSharpType({
|
|
50
|
+
name: "string",
|
|
51
|
+
namespace: "System",
|
|
52
|
+
isBuiltIn: true,
|
|
53
|
+
isValueType: true,
|
|
54
|
+
}),
|
|
55
|
+
}));
|
|
56
|
+
return attr;
|
|
57
|
+
}
|
|
39
58
|
return undefined;
|
|
40
59
|
}
|
|
41
60
|
/**
|
|
@@ -55,39 +74,56 @@ export function getEncodingAttributes(program, type) {
|
|
|
55
74
|
case "duration":
|
|
56
75
|
result.push(getJsonConverterAttribute("TimeSpanDurationConverter"));
|
|
57
76
|
break;
|
|
58
|
-
|
|
59
|
-
if (propertyType.encoding !== undefined
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
result.push(getJsonConverterAttribute("Base64UrlConverter"));
|
|
63
|
-
break;
|
|
64
|
-
case "unixtimestamp":
|
|
65
|
-
result.push(getJsonConverterAttribute("UnixEpochDateTimeOffsetConverter"));
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
77
|
+
case "bytes":
|
|
78
|
+
if (propertyType.encoding !== undefined &&
|
|
79
|
+
propertyType.encoding.name.toLowerCase() === "base64url") {
|
|
80
|
+
result.push(getJsonConverterAttribute("Base64UrlJsonConverter"));
|
|
68
81
|
}
|
|
82
|
+
break;
|
|
83
|
+
case "utcDateTime":
|
|
84
|
+
case "offsetDateTime":
|
|
85
|
+
if (propertyType.encoding !== undefined &&
|
|
86
|
+
propertyType.encoding.name.toLowerCase() === "unixTimestamp") {
|
|
87
|
+
result.push(getJsonConverterAttribute("UnixEpochDateTimeOffsetConverter"));
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
69
90
|
}
|
|
70
91
|
}
|
|
71
92
|
return result;
|
|
72
93
|
}
|
|
73
94
|
function getScalarType(program, property) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
95
|
+
function getScalarEncoding(scalar) {
|
|
96
|
+
const encode = getEncode(program, scalar);
|
|
97
|
+
if (encode === undefined) {
|
|
98
|
+
switch (scalar.kind) {
|
|
99
|
+
case "ModelProperty":
|
|
100
|
+
if (scalar.type.kind === "Scalar") {
|
|
101
|
+
return getScalarEncoding(scalar.type);
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
case "Scalar":
|
|
105
|
+
if (scalar.baseScalar) {
|
|
106
|
+
return getScalarEncoding(scalar.baseScalar);
|
|
107
|
+
}
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
82
110
|
}
|
|
111
|
+
return { name: encode.encoding ?? "string", wireType: encode.type };
|
|
83
112
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
113
|
+
function getStdScalarType(scalar) {
|
|
114
|
+
if (program.checker.isStdType(scalar))
|
|
115
|
+
return scalar;
|
|
116
|
+
if (scalar.baseScalar)
|
|
117
|
+
return getStdScalarType(scalar.baseScalar);
|
|
89
118
|
return undefined;
|
|
90
|
-
|
|
119
|
+
}
|
|
120
|
+
if (property.type.kind !== "Scalar")
|
|
121
|
+
return undefined;
|
|
122
|
+
const stdScalar = getStdScalarType(property.type);
|
|
123
|
+
if (stdScalar === undefined)
|
|
124
|
+
return undefined;
|
|
125
|
+
const encoding = getScalarEncoding(property);
|
|
126
|
+
return { scalar: stdScalar, encoding: encoding };
|
|
91
127
|
}
|
|
92
128
|
function getTypeType() {
|
|
93
129
|
return new CSharpType({ name: "Type", namespace: "System", isValueType: false, isBuiltIn: true });
|
|
@@ -183,8 +219,19 @@ export function getArrayConstraintAttribute(program, type) {
|
|
|
183
219
|
const maxItems = getMaxItems(program, type);
|
|
184
220
|
if (minItems === undefined && maxItems === undefined)
|
|
185
221
|
return undefined;
|
|
222
|
+
if (type.kind !== "ModelProperty" || type.type.kind !== "Model")
|
|
223
|
+
return undefined;
|
|
224
|
+
if (!isArrayModelType(program, type.type))
|
|
225
|
+
return undefined;
|
|
226
|
+
const arrayType = type.type;
|
|
227
|
+
const elementType = arrayType.indexer.value;
|
|
228
|
+
if (elementType.kind !== "Scalar")
|
|
229
|
+
return undefined;
|
|
230
|
+
const scalarType = getCSharpTypeForScalar(program, elementType);
|
|
231
|
+
if (scalarType === undefined)
|
|
232
|
+
return undefined;
|
|
186
233
|
const attr = new Attribute(new AttributeType({
|
|
187
|
-
name:
|
|
234
|
+
name: `ArrayConstraint<${scalarType.getTypeReference()}>`,
|
|
188
235
|
namespace: HelperNamespace,
|
|
189
236
|
}), []);
|
|
190
237
|
if (minItems !== undefined) {
|
|
@@ -289,22 +336,53 @@ export function getNumericConstraintAttribute(program, type) {
|
|
|
289
336
|
export function getSafeIntAttribute(type) {
|
|
290
337
|
if (type.name.toLowerCase() !== "safeint")
|
|
291
338
|
return undefined;
|
|
292
|
-
|
|
293
|
-
name:
|
|
339
|
+
const attr = new Attribute(new AttributeType({
|
|
340
|
+
name: `NumericConstraint<long>`,
|
|
294
341
|
namespace: HelperNamespace,
|
|
295
342
|
}), []);
|
|
343
|
+
attr.parameters.push(new Parameter({
|
|
344
|
+
name: "MinValue",
|
|
345
|
+
value: new NumericValue(-9007199254740991),
|
|
346
|
+
optional: true,
|
|
347
|
+
type: new CSharpType({
|
|
348
|
+
name: "long",
|
|
349
|
+
namespace: "System",
|
|
350
|
+
isBuiltIn: true,
|
|
351
|
+
isValueType: true,
|
|
352
|
+
isNullable: false,
|
|
353
|
+
}),
|
|
354
|
+
}));
|
|
355
|
+
attr.parameters.push(new Parameter({
|
|
356
|
+
name: "MaxValue",
|
|
357
|
+
value: new NumericValue(9007199254740991),
|
|
358
|
+
optional: true,
|
|
359
|
+
type: new CSharpType({
|
|
360
|
+
name: "long",
|
|
361
|
+
namespace: "System",
|
|
362
|
+
isBuiltIn: true,
|
|
363
|
+
isValueType: true,
|
|
364
|
+
isNullable: false,
|
|
365
|
+
}),
|
|
366
|
+
}));
|
|
367
|
+
return attr;
|
|
296
368
|
}
|
|
297
369
|
function getEnumAttribute(type, cSharpName) {
|
|
298
370
|
return new Attribute(new AttributeType({
|
|
299
|
-
name: `
|
|
300
|
-
namespace: "System.Text.Json",
|
|
371
|
+
name: `JsonConverter(typeof(JsonStringEnumConverter))`,
|
|
372
|
+
namespace: "System.Text.Json.Serialization",
|
|
301
373
|
}), []);
|
|
302
374
|
}
|
|
303
375
|
export function getAttributes(program, type, cSharpName) {
|
|
304
376
|
const result = new Set();
|
|
305
377
|
switch (type.kind) {
|
|
306
378
|
case "Enum":
|
|
307
|
-
|
|
379
|
+
if (getEnumType(type) === "string")
|
|
380
|
+
result.add(getEnumAttribute(type, cSharpName));
|
|
381
|
+
break;
|
|
382
|
+
case "Union":
|
|
383
|
+
if (isStringEnumType(program, type)) {
|
|
384
|
+
result.add(getEnumAttribute(type, cSharpName));
|
|
385
|
+
}
|
|
308
386
|
break;
|
|
309
387
|
case "Model":
|
|
310
388
|
break;
|
|
@@ -312,7 +390,7 @@ export function getAttributes(program, type, cSharpName) {
|
|
|
312
390
|
const arrayAttr = getArrayConstraintAttribute(program, type);
|
|
313
391
|
const stringAttr = getStringConstraintAttribute(program, type);
|
|
314
392
|
const numberAttr = getNumericConstraintAttribute(program, type);
|
|
315
|
-
const name = getEncodedNameAttribute(program, type);
|
|
393
|
+
const name = getEncodedNameAttribute(program, type, cSharpName);
|
|
316
394
|
if (arrayAttr)
|
|
317
395
|
result.add(arrayAttr);
|
|
318
396
|
if (stringAttr)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/lib/attributes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AssetEmitter } from "@typespec/asset-emitter";
|
|
2
|
+
import { LibrarySourceFile } from "./interfaces.js";
|
|
3
|
+
export declare const GeneratedFileHeader = "// Generated by @typespec/http-server-csharp\n// <auto-generated />";
|
|
4
|
+
export declare const GeneratedFileHeaderWithNullable: string;
|
|
5
|
+
export declare function getSerializationSourceFiles(emitter: AssetEmitter<string, Record<string, never>>): LibrarySourceFile[];
|
|
6
|
+
//# sourceMappingURL=boilerplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boilerplate.d.ts","sourceRoot":"","sources":["../../../src/lib/boilerplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,mBAAmB,wEACV,CAAC;AACvB,eAAO,MAAM,+BAA+B,EAAE,MAE7B,CAAC;AAElB,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GACnD,iBAAiB,EAAE,CAiErB"}
|