@typespec/http-server-csharp 0.58.0-alpha.28 → 0.58.0-alpha.29-dev.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/src/cli/cli.js +118 -154
- package/dist/src/cli/cli.js.map +1 -1
- package/dist/src/components/controller-action/controller-action.d.ts +16 -0
- package/dist/src/components/controller-action/controller-action.d.ts.map +1 -0
- package/dist/src/components/controller-action/controller-action.js +251 -0
- package/dist/src/components/controller-action/controller-action.js.map +1 -0
- package/dist/src/components/controller-action/controller-action.test.d.ts +2 -0
- package/dist/src/components/controller-action/controller-action.test.d.ts.map +1 -0
- package/dist/src/components/controller-action/controller-action.test.js +106 -0
- package/dist/src/components/controller-action/controller-action.test.js.map +1 -0
- package/dist/src/components/controller-action/parameter-binding.d.ts +17 -0
- package/dist/src/components/controller-action/parameter-binding.d.ts.map +1 -0
- package/dist/src/components/controller-action/parameter-binding.js +77 -0
- package/dist/src/components/controller-action/parameter-binding.js.map +1 -0
- package/dist/src/components/controller-action/response-analysis.d.ts +10 -0
- package/dist/src/components/controller-action/response-analysis.d.ts.map +1 -0
- package/dist/src/components/controller-action/response-analysis.js +61 -0
- package/dist/src/components/controller-action/response-analysis.js.map +1 -0
- package/dist/src/components/controllers/controllers.d.ts +18 -0
- package/dist/src/components/controllers/controllers.d.ts.map +1 -0
- package/dist/src/components/controllers/controllers.js +64 -0
- package/dist/src/components/controllers/controllers.js.map +1 -0
- package/dist/src/components/controllers/controllers.test.d.ts +2 -0
- package/dist/src/components/controllers/controllers.test.d.ts.map +1 -0
- package/dist/src/components/controllers/controllers.test.js +84 -0
- package/dist/src/components/controllers/controllers.test.js.map +1 -0
- package/dist/src/components/csharp-file.d.ts +15 -0
- package/dist/src/components/csharp-file.d.ts.map +1 -0
- package/dist/src/components/csharp-file.js +28 -0
- package/dist/src/components/csharp-file.js.map +1 -0
- package/dist/src/components/enums/enums.d.ts +28 -0
- package/dist/src/components/enums/enums.d.ts.map +1 -0
- package/dist/src/components/enums/enums.js +158 -0
- package/dist/src/components/enums/enums.js.map +1 -0
- package/dist/src/components/enums/enums.test.d.ts +2 -0
- package/dist/src/components/enums/enums.test.d.ts.map +1 -0
- package/dist/src/components/enums/enums.test.js +112 -0
- package/dist/src/components/enums/enums.test.js.map +1 -0
- package/dist/src/components/interfaces/interfaces.d.ts +17 -0
- package/dist/src/components/interfaces/interfaces.d.ts.map +1 -0
- package/dist/src/components/interfaces/interfaces.js +153 -0
- package/dist/src/components/interfaces/interfaces.js.map +1 -0
- package/dist/src/components/interfaces/interfaces.test.d.ts +2 -0
- package/dist/src/components/interfaces/interfaces.test.d.ts.map +1 -0
- package/dist/src/components/interfaces/interfaces.test.js +76 -0
- package/dist/src/components/interfaces/interfaces.test.js.map +1 -0
- package/dist/src/components/models/anonymous-models.d.ts +9 -0
- package/dist/src/components/models/anonymous-models.d.ts.map +1 -0
- package/dist/src/components/models/anonymous-models.js +37 -0
- package/dist/src/components/models/anonymous-models.js.map +1 -0
- package/dist/src/components/models/error-models.d.ts +5 -0
- package/dist/src/components/models/error-models.d.ts.map +1 -0
- package/dist/src/components/models/error-models.js +84 -0
- package/dist/src/components/models/error-models.js.map +1 -0
- package/dist/src/components/models/model-helpers.d.ts +40 -0
- package/dist/src/components/models/model-helpers.d.ts.map +1 -0
- package/dist/src/components/models/model-helpers.js +239 -0
- package/dist/src/components/models/model-helpers.js.map +1 -0
- package/dist/src/components/models/models.d.ts +15 -0
- package/dist/src/components/models/models.d.ts.map +1 -0
- package/dist/src/components/models/models.js +234 -0
- package/dist/src/components/models/models.js.map +1 -0
- package/dist/src/components/models/models.test.d.ts +2 -0
- package/dist/src/components/models/models.test.d.ts.map +1 -0
- package/dist/src/components/models/models.test.js +151 -0
- package/dist/src/components/models/models.test.js.map +1 -0
- package/dist/src/components/project/csproj.d.ts +12 -0
- package/dist/src/components/project/csproj.d.ts.map +1 -0
- package/dist/src/components/project/csproj.js +35 -0
- package/dist/src/components/project/csproj.js.map +1 -0
- package/dist/src/components/project/csproj.test.d.ts +2 -0
- package/dist/src/components/project/csproj.test.d.ts.map +1 -0
- package/dist/src/components/project/csproj.test.js +42 -0
- package/dist/src/components/project/csproj.test.js.map +1 -0
- package/dist/src/components/project/launch-settings.d.ts +16 -0
- package/dist/src/components/project/launch-settings.d.ts.map +1 -0
- package/dist/src/components/project/launch-settings.js +73 -0
- package/dist/src/components/project/launch-settings.js.map +1 -0
- package/dist/src/components/project/launch-settings.test.d.ts +2 -0
- package/dist/src/components/project/launch-settings.test.d.ts.map +1 -0
- package/dist/src/components/project/launch-settings.test.js +48 -0
- package/dist/src/components/project/launch-settings.test.js.map +1 -0
- package/dist/src/components/project/program.d.ts +14 -0
- package/dist/src/components/project/program.d.ts.map +1 -0
- package/dist/src/components/project/program.js +75 -0
- package/dist/src/components/project/program.js.map +1 -0
- package/dist/src/components/project/program.test.d.ts +2 -0
- package/dist/src/components/project/program.test.d.ts.map +1 -0
- package/dist/src/components/project/program.test.js +50 -0
- package/dist/src/components/project/program.test.js.map +1 -0
- package/dist/src/components/render-root.d.ts +14 -0
- package/dist/src/components/render-root.d.ts.map +1 -0
- package/dist/src/components/render-root.js +122 -0
- package/dist/src/components/render-root.js.map +1 -0
- package/dist/src/components/request-models.d.ts +15 -0
- package/dist/src/components/request-models.d.ts.map +1 -0
- package/dist/src/components/request-models.js +97 -0
- package/dist/src/components/request-models.js.map +1 -0
- package/dist/src/components/scaffolding/documentation.d.ts +12 -0
- package/dist/src/components/scaffolding/documentation.d.ts.map +1 -0
- package/dist/src/{lib/doc.js → components/scaffolding/documentation.js} +56 -46
- package/dist/src/components/scaffolding/documentation.js.map +1 -0
- package/dist/src/components/scaffolding/mock-helpers.d.ts +10 -0
- package/dist/src/components/scaffolding/mock-helpers.d.ts.map +1 -0
- package/dist/src/components/scaffolding/mock-helpers.js +268 -0
- package/dist/src/components/scaffolding/mock-helpers.js.map +1 -0
- package/dist/src/components/scaffolding/mock-implementations.d.ts +14 -0
- package/dist/src/components/scaffolding/mock-implementations.d.ts.map +1 -0
- package/dist/src/components/scaffolding/mock-implementations.js +152 -0
- package/dist/src/components/scaffolding/mock-implementations.js.map +1 -0
- package/dist/src/components/scaffolding/mock-return-utils.d.ts +11 -0
- package/dist/src/components/scaffolding/mock-return-utils.d.ts.map +1 -0
- package/dist/src/components/scaffolding/mock-return-utils.js +62 -0
- package/dist/src/components/scaffolding/mock-return-utils.js.map +1 -0
- package/dist/src/components/scaffolding/mock-scaffolding.d.ts +6 -0
- package/dist/src/components/scaffolding/mock-scaffolding.d.ts.map +1 -0
- package/dist/src/components/scaffolding/mock-scaffolding.js +5 -0
- package/dist/src/components/scaffolding/mock-scaffolding.js.map +1 -0
- package/dist/src/components/scaffolding/mock-scaffolding.test.d.ts +2 -0
- package/dist/src/components/scaffolding/mock-scaffolding.test.d.ts.map +1 -0
- package/dist/src/components/scaffolding/mock-scaffolding.test.js +59 -0
- package/dist/src/components/scaffolding/mock-scaffolding.test.js.map +1 -0
- package/dist/src/components/serialization/base64-url-json-converter.d.ts +7 -0
- package/dist/src/components/serialization/base64-url-json-converter.d.ts.map +1 -0
- package/dist/src/components/serialization/base64-url-json-converter.js +58 -0
- package/dist/src/components/serialization/base64-url-json-converter.js.map +1 -0
- package/dist/src/components/serialization/constraint-attributes.d.ts +7 -0
- package/dist/src/components/serialization/constraint-attributes.d.ts.map +1 -0
- package/dist/src/components/serialization/constraint-attributes.js +556 -0
- package/dist/src/components/serialization/constraint-attributes.js.map +1 -0
- package/dist/src/components/serialization/http-service-exception-filter.d.ts +8 -0
- package/dist/src/components/serialization/http-service-exception-filter.d.ts.map +1 -0
- package/dist/src/components/serialization/http-service-exception-filter.js +71 -0
- package/dist/src/components/serialization/http-service-exception-filter.js.map +1 -0
- package/dist/src/components/serialization/json-converters.d.ts +7 -0
- package/dist/src/components/serialization/json-converters.d.ts.map +1 -0
- package/dist/src/components/serialization/json-converters.js +22 -0
- package/dist/src/components/serialization/json-converters.js.map +1 -0
- package/dist/src/components/serialization/json-converters.test.d.ts +2 -0
- package/dist/src/components/serialization/json-converters.test.d.ts.map +1 -0
- package/dist/src/components/serialization/json-converters.test.js +136 -0
- package/dist/src/components/serialization/json-converters.test.js.map +1 -0
- package/dist/src/components/serialization/json-serialization-provider.d.ts +7 -0
- package/dist/src/components/serialization/json-serialization-provider.d.ts.map +1 -0
- package/dist/src/components/serialization/json-serialization-provider.js +90 -0
- package/dist/src/components/serialization/json-serialization-provider.js.map +1 -0
- package/dist/src/components/serialization/time-span-duration-converter.d.ts +7 -0
- package/dist/src/components/serialization/time-span-duration-converter.d.ts.map +1 -0
- package/dist/src/components/serialization/time-span-duration-converter.js +44 -0
- package/dist/src/components/serialization/time-span-duration-converter.js.map +1 -0
- package/dist/src/components/serialization/unix-epoch-date-time-converter.d.ts +7 -0
- package/dist/src/components/serialization/unix-epoch-date-time-converter.d.ts.map +1 -0
- package/dist/src/components/serialization/unix-epoch-date-time-converter.js +71 -0
- package/dist/src/components/serialization/unix-epoch-date-time-converter.js.map +1 -0
- package/dist/src/components/type-expression/type-expression.d.ts +24 -0
- package/dist/src/components/type-expression/type-expression.d.ts.map +1 -0
- package/dist/src/components/type-expression/type-expression.js +223 -0
- package/dist/src/components/type-expression/type-expression.js.map +1 -0
- package/dist/src/components/type-expression/type-expression.test.d.ts +2 -0
- package/dist/src/components/type-expression/type-expression.test.d.ts.map +1 -0
- package/dist/src/components/type-expression/type-expression.test.js +207 -0
- package/dist/src/components/type-expression/type-expression.test.js.map +1 -0
- package/dist/src/context/emitter-options-context.d.ts +13 -0
- package/dist/src/context/emitter-options-context.d.ts.map +1 -0
- package/dist/src/context/emitter-options-context.js +15 -0
- package/dist/src/context/emitter-options-context.js.map +1 -0
- package/dist/src/diagnostics.d.ts +8 -0
- package/dist/src/diagnostics.d.ts.map +1 -0
- package/dist/src/diagnostics.js +164 -0
- package/dist/src/diagnostics.js.map +1 -0
- package/dist/src/emitter.d.ts +8 -0
- package/dist/src/emitter.d.ts.map +1 -0
- package/dist/src/emitter.js +180 -0
- package/dist/src/emitter.js.map +1 -0
- package/dist/src/{lib/index.d.ts → index.d.ts} +1 -1
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/{lib/index.js → index.js} +1 -1
- package/dist/src/index.js.map +1 -0
- package/dist/src/{lib/lib.d.ts → lib.d.ts} +4 -14
- package/dist/src/lib.d.ts.map +1 -0
- package/dist/src/lib.js +133 -0
- package/dist/src/lib.js.map +1 -0
- package/dist/src/output-writer.d.ts +11 -0
- package/dist/src/output-writer.d.ts.map +1 -0
- package/dist/src/output-writer.js +72 -0
- package/dist/src/output-writer.js.map +1 -0
- package/dist/src/service-discovery.d.ts +13 -0
- package/dist/src/service-discovery.d.ts.map +1 -0
- package/dist/src/service-discovery.js +93 -0
- package/dist/src/service-discovery.js.map +1 -0
- package/dist/src/service-resolution.d.ts +34 -0
- package/dist/src/service-resolution.d.ts.map +1 -0
- package/dist/src/service-resolution.js +244 -0
- package/dist/src/service-resolution.js.map +1 -0
- package/dist/src/testing/index.d.ts +2 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +2 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/utils/attributes.d.ts +8 -0
- package/dist/src/utils/attributes.d.ts.map +1 -0
- package/dist/src/utils/attributes.js +224 -0
- package/dist/src/utils/attributes.js.map +1 -0
- package/dist/src/utils/csharp-libs.d.ts +87 -0
- package/dist/src/utils/csharp-libs.d.ts.map +1 -0
- package/dist/src/utils/csharp-libs.js +90 -0
- package/dist/src/utils/csharp-libs.js.map +1 -0
- package/dist/src/utils/doc-comments.d.ts +2 -0
- package/dist/src/utils/doc-comments.d.ts.map +1 -0
- package/dist/src/utils/doc-comments.js +4 -0
- package/dist/src/utils/doc-comments.js.map +1 -0
- package/dist/src/utils/http-helpers.d.ts +19 -0
- package/dist/src/utils/http-helpers.d.ts.map +1 -0
- package/dist/src/utils/http-helpers.js +70 -0
- package/dist/src/utils/http-helpers.js.map +1 -0
- package/dist/src/utils/http-helpers.test.d.ts +2 -0
- package/dist/src/utils/http-helpers.test.d.ts.map +1 -0
- package/dist/src/utils/http-helpers.test.js +68 -0
- package/dist/src/utils/http-helpers.test.js.map +1 -0
- package/dist/src/utils/namespace-utils.d.ts +13 -0
- package/dist/src/utils/namespace-utils.d.ts.map +1 -0
- package/dist/src/utils/namespace-utils.js +55 -0
- package/dist/src/utils/namespace-utils.js.map +1 -0
- package/dist/src/utils/naming.d.ts +31 -0
- package/dist/src/utils/naming.d.ts.map +1 -0
- package/dist/src/utils/naming.js +87 -0
- package/dist/src/utils/naming.js.map +1 -0
- package/dist/src/utils/naming.test.d.ts +2 -0
- package/dist/src/utils/naming.test.d.ts.map +1 -0
- package/dist/src/utils/naming.test.js +86 -0
- package/dist/src/utils/naming.test.js.map +1 -0
- package/dist/src/utils/port.d.ts +5 -0
- package/dist/src/utils/port.d.ts.map +1 -0
- package/dist/src/utils/port.js +33 -0
- package/dist/src/utils/port.js.map +1 -0
- package/dist/src/utils/return-type-helpers.d.ts +8 -0
- package/dist/src/utils/return-type-helpers.d.ts.map +1 -0
- package/dist/src/utils/return-type-helpers.js +59 -0
- package/dist/src/utils/return-type-helpers.js.map +1 -0
- package/package.json +36 -28
- package/dist/src/lib/attributes.d.ts +0 -43
- package/dist/src/lib/attributes.d.ts.map +0 -1
- package/dist/src/lib/attributes.js +0 -422
- package/dist/src/lib/attributes.js.map +0 -1
- package/dist/src/lib/boilerplate.d.ts +0 -6
- package/dist/src/lib/boilerplate.d.ts.map +0 -1
- package/dist/src/lib/boilerplate.js +0 -792
- package/dist/src/lib/boilerplate.js.map +0 -1
- package/dist/src/lib/doc.d.ts +0 -5
- package/dist/src/lib/doc.d.ts.map +0 -1
- package/dist/src/lib/doc.js.map +0 -1
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js.map +0 -1
- package/dist/src/lib/interfaces.d.ts +0 -183
- package/dist/src/lib/interfaces.d.ts.map +0 -1
- package/dist/src/lib/interfaces.js +0 -287
- package/dist/src/lib/interfaces.js.map +0 -1
- package/dist/src/lib/lib.d.ts.map +0 -1
- package/dist/src/lib/lib.js +0 -146
- package/dist/src/lib/lib.js.map +0 -1
- package/dist/src/lib/project.d.ts +0 -5
- package/dist/src/lib/project.d.ts.map +0 -1
- package/dist/src/lib/project.js +0 -101
- package/dist/src/lib/project.js.map +0 -1
- package/dist/src/lib/scaffolding.d.ts +0 -22
- package/dist/src/lib/scaffolding.d.ts.map +0 -1
- package/dist/src/lib/scaffolding.js +0 -461
- package/dist/src/lib/scaffolding.js.map +0 -1
- package/dist/src/lib/service.d.ts +0 -4
- package/dist/src/lib/service.d.ts.map +0 -1
- package/dist/src/lib/service.js +0 -1208
- package/dist/src/lib/service.js.map +0 -1
- package/dist/src/lib/type-helpers.d.ts +0 -44
- package/dist/src/lib/type-helpers.d.ts.map +0 -1
- package/dist/src/lib/type-helpers.js +0 -106
- package/dist/src/lib/type-helpers.js.map +0 -1
- package/dist/src/lib/utils.d.ts +0 -120
- package/dist/src/lib/utils.d.ts.map +0 -1
- package/dist/src/lib/utils.js +0 -1580
- package/dist/src/lib/utils.js.map +0 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { isStdNamespace, isTemplateDeclaration } from "@typespec/compiler";
|
|
2
|
+
import { $ } from "@typespec/compiler/typekit";
|
|
3
|
+
import { assignAnonymousName } from "./components/models/anonymous-models.js";
|
|
4
|
+
import { reportDiagnostic } from "./lib.js";
|
|
5
|
+
import { isValidCSharpIdentifier } from "./utils/naming.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Reports diagnostic warnings for models, scalars, and operations.
|
|
9
|
+
* This pre-pass mirrors the old emitter behavior so that `tester.diagnose()` tests pass.
|
|
10
|
+
*/
|
|
11
|
+
export function reportEmitterDiagnostics(program, interfaces, canonicalOpsMap) {
|
|
12
|
+
const tk = $(program);
|
|
13
|
+
const visited = new Set();
|
|
14
|
+
|
|
15
|
+
// Walk all models in the service namespace(s) to check properties
|
|
16
|
+
for (const ns of program.getGlobalNamespaceType().namespaces.values()) {
|
|
17
|
+
if (isStdNamespace(ns)) continue;
|
|
18
|
+
walkNamespaceModels(program, ns, tk, visited);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Check GET operations for body parameters
|
|
22
|
+
for (const iface of interfaces) {
|
|
23
|
+
const ops = canonicalOpsMap.get(iface.name) ?? [];
|
|
24
|
+
for (const canonOp of ops) {
|
|
25
|
+
if (canonOp.method === "get") {
|
|
26
|
+
const body = canonOp.requestParameters.body;
|
|
27
|
+
if (body) {
|
|
28
|
+
reportDiagnostic(program, {
|
|
29
|
+
code: "get-request-body",
|
|
30
|
+
target: canonOp.languageType,
|
|
31
|
+
format: {}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function walkNamespaceModels(program, ns, tk, visited) {
|
|
39
|
+
// Walk scalars to detect unrecognized/imprecise scalar types
|
|
40
|
+
for (const scalar of ns.scalars.values()) {
|
|
41
|
+
if (isTemplateDeclaration(scalar)) continue;
|
|
42
|
+
checkPropertyDiagnostics(program, tk, scalar);
|
|
43
|
+
}
|
|
44
|
+
for (const model of ns.models.values()) {
|
|
45
|
+
if (visited.has(model)) continue;
|
|
46
|
+
visited.add(model);
|
|
47
|
+
if (isTemplateDeclaration(model)) continue;
|
|
48
|
+
|
|
49
|
+
// Check for anonymous models
|
|
50
|
+
if (!model.name || model.name === "") {
|
|
51
|
+
const emittedName = assignAnonymousName(model);
|
|
52
|
+
reportDiagnostic(program, {
|
|
53
|
+
code: "anonymous-model",
|
|
54
|
+
target: model,
|
|
55
|
+
format: {
|
|
56
|
+
emittedName
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Walk properties
|
|
62
|
+
for (const prop of model.properties.values()) {
|
|
63
|
+
checkPropertyDiagnostics(program, tk, prop.type);
|
|
64
|
+
|
|
65
|
+
// Check for invalid identifiers
|
|
66
|
+
if (!isValidCSharpIdentifier(prop.name)) {
|
|
67
|
+
const location = `property '${prop.name}' in model ${model.name || "anonymous"}`;
|
|
68
|
+
reportDiagnostic(program, {
|
|
69
|
+
code: "invalid-identifier",
|
|
70
|
+
target: prop,
|
|
71
|
+
format: {
|
|
72
|
+
identifier: prop.name,
|
|
73
|
+
location
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Check for anonymous inline model properties (including inside union variants)
|
|
79
|
+
if (prop.type.kind === "Model" && (!prop.type.name || prop.type.name === "")) {
|
|
80
|
+
if (!visited.has(prop.type)) {
|
|
81
|
+
visited.add(prop.type);
|
|
82
|
+
const emittedName = assignAnonymousName(prop.type);
|
|
83
|
+
reportDiagnostic(program, {
|
|
84
|
+
code: "anonymous-model",
|
|
85
|
+
target: prop.type,
|
|
86
|
+
format: {
|
|
87
|
+
emittedName
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
} else if (prop.type.kind === "Union") {
|
|
92
|
+
// Walk union variants to find anonymous models
|
|
93
|
+
for (const variant of prop.type.variants.values()) {
|
|
94
|
+
if (variant.type.kind === "Model" && (!variant.type.name || variant.type.name === "")) {
|
|
95
|
+
if (!visited.has(variant.type)) {
|
|
96
|
+
visited.add(variant.type);
|
|
97
|
+
const emittedName = assignAnonymousName(variant.type);
|
|
98
|
+
reportDiagnostic(program, {
|
|
99
|
+
code: "anonymous-model",
|
|
100
|
+
target: variant.type,
|
|
101
|
+
format: {
|
|
102
|
+
emittedName
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Check for invalid string interpolation
|
|
111
|
+
if (prop.type.kind === "StringTemplate") {
|
|
112
|
+
const hasNonLiteral = prop.type.spans.some(span => span.isInterpolated && span.node?.kind !== undefined);
|
|
113
|
+
if (hasNonLiteral) {
|
|
114
|
+
reportDiagnostic(program, {
|
|
115
|
+
code: "invalid-interpolation",
|
|
116
|
+
target: prop,
|
|
117
|
+
format: {}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Recurse into sub-namespaces
|
|
125
|
+
for (const childNs of ns.namespaces.values()) {
|
|
126
|
+
if (isStdNamespace(childNs)) continue;
|
|
127
|
+
walkNamespaceModels(program, childNs, tk, visited);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function checkPropertyDiagnostics(program, tk, type) {
|
|
131
|
+
if (type.kind === "Scalar") {
|
|
132
|
+
const stdBase = tk.scalar.getStdBase(type);
|
|
133
|
+
if (!stdBase) {
|
|
134
|
+
// Custom scalar with no standard base
|
|
135
|
+
reportDiagnostic(program, {
|
|
136
|
+
code: "unrecognized-scalar",
|
|
137
|
+
target: type,
|
|
138
|
+
format: {
|
|
139
|
+
typeName: type.name
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Check for imprecise numeric types
|
|
146
|
+
const numericMappings = {
|
|
147
|
+
integer: "long",
|
|
148
|
+
float: "double",
|
|
149
|
+
numeric: "object"
|
|
150
|
+
};
|
|
151
|
+
const targetType = numericMappings[stdBase.name];
|
|
152
|
+
if (targetType) {
|
|
153
|
+
reportDiagnostic(program, {
|
|
154
|
+
code: "no-numeric",
|
|
155
|
+
target: type,
|
|
156
|
+
format: {
|
|
157
|
+
sourceType: stdBase.name,
|
|
158
|
+
targetType
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isStdNamespace","isTemplateDeclaration","$","assignAnonymousName","reportDiagnostic","isValidCSharpIdentifier","reportEmitterDiagnostics","program","interfaces","canonicalOpsMap","tk","visited","Set","ns","getGlobalNamespaceType","namespaces","values","walkNamespaceModels","iface","ops","get","name","canonOp","method","body","requestParameters","code","target","languageType","format","scalar","scalars","checkPropertyDiagnostics","model","models","has","add","emittedName","prop","properties","type","location","identifier","kind","variant","variants","hasNonLiteral","spans","some","span","isInterpolated","node","undefined","childNs","stdBase","getStdBase","typeName","numericMappings","integer","float","numeric","targetType","sourceType"],"sources":["../../src/diagnostics.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { EmitContext } from "@typespec/compiler";
|
|
2
|
+
import { CSharpServiceEmitterOptions } from "./lib.js";
|
|
3
|
+
/**
|
|
4
|
+
* Main function to handle the emission process.
|
|
5
|
+
* @param context - The context for the emission process.
|
|
6
|
+
*/
|
|
7
|
+
export declare function $onEmit(context: EmitContext<CSharpServiceEmitterOptions>): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/emitter.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgBtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAKvD;;;GAGG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,2BAA2B,CAAC,iBAsG9E"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Show, SourceDirectory } from "@alloy-js/core";
|
|
3
|
+
import { createCSharpNamePolicy, Namespace } from "@alloy-js/csharp";
|
|
4
|
+
import { $ } from "@typespec/compiler/typekit";
|
|
5
|
+
import { Experimental_ComponentOverrides, Output } from "@typespec/emitter-framework";
|
|
6
|
+
import { HttpCanonicalizer } from "@typespec/http-canonicalization";
|
|
7
|
+
import { Enums } from "./components/enums/enums.js";
|
|
8
|
+
import { Models } from "./components/models/models.js";
|
|
9
|
+
import { Csproj } from "./components/project/csproj.js";
|
|
10
|
+
import { AppSettings, LaunchSettings } from "./components/project/launch-settings.js";
|
|
11
|
+
import { ProgramCs } from "./components/project/program.js";
|
|
12
|
+
import { ControllersAndInterfaces } from "./components/render-root.js";
|
|
13
|
+
import { Documentation } from "./components/scaffolding/documentation.js";
|
|
14
|
+
import { MockHelpers, MockImplementations } from "./components/scaffolding/mock-scaffolding.js";
|
|
15
|
+
import { JsonConverters } from "./components/serialization/json-converters.js";
|
|
16
|
+
import { createServerScalarOverrides } from "./components/type-expression/type-expression.js";
|
|
17
|
+
import { EmitterOptions } from "./context/emitter-options-context.js";
|
|
18
|
+
import { reportEmitterDiagnostics } from "./diagnostics.js";
|
|
19
|
+
import { resolveOpenApiPath, writeOutputWithOverwrite } from "./output-writer.js";
|
|
20
|
+
import { resolveServiceTypes } from "./service-resolution.js";
|
|
21
|
+
import { getFreePort } from "./utils/port.js";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Main function to handle the emission process.
|
|
25
|
+
* @param context - The context for the emission process.
|
|
26
|
+
*/
|
|
27
|
+
export async function $onEmit(context) {
|
|
28
|
+
const tk = $(context.program);
|
|
29
|
+
const canonicalizer = new HttpCanonicalizer(tk);
|
|
30
|
+
const scalarOverrides = createServerScalarOverrides(tk);
|
|
31
|
+
const options = context.options;
|
|
32
|
+
const collectionType = options["collection-type"] ?? "array";
|
|
33
|
+
const emitMocks = options["emit-mocks"] === "mocks-only" || options["emit-mocks"] === "mocks-and-project-files";
|
|
34
|
+
const emitProjectFiles = options["emit-mocks"] === "mocks-and-project-files";
|
|
35
|
+
const useSwaggerUI = options["use-swaggerui"] ?? false;
|
|
36
|
+
|
|
37
|
+
// Resolve all service types in a single pass
|
|
38
|
+
const resolution = resolveServiceTypes(context.program, tk, canonicalizer);
|
|
39
|
+
const serviceName = resolution.serviceNamespaceName ?? "ServiceProject";
|
|
40
|
+
const projectName = options["project-name"] ?? "ServiceProject";
|
|
41
|
+
|
|
42
|
+
// Report diagnostic warnings (pre-pass before rendering)
|
|
43
|
+
reportEmitterDiagnostics(context.program, resolution.interfaces, resolution.canonicalOpsMap);
|
|
44
|
+
|
|
45
|
+
// Resolve OpenAPI path for SwaggerUI
|
|
46
|
+
let openApiPath = options["openapi-path"];
|
|
47
|
+
if (!openApiPath && useSwaggerUI) {
|
|
48
|
+
openApiPath = await resolveOpenApiPath(context);
|
|
49
|
+
}
|
|
50
|
+
const effectiveUseSwaggerUI = useSwaggerUI && !!openApiPath;
|
|
51
|
+
|
|
52
|
+
// Collect interface names for mock registration
|
|
53
|
+
const interfaceNames = resolution.interfaces.map(iface => iface.name);
|
|
54
|
+
const interfaceRegistrations = resolution.interfaces.map(iface => `I${iface.name}, ${iface.name}`);
|
|
55
|
+
|
|
56
|
+
// Resolve ports for project files
|
|
57
|
+
let httpPort = options["http-port"] ?? 5000;
|
|
58
|
+
let httpsPort = options["https-port"] ?? 7000;
|
|
59
|
+
if (emitProjectFiles) {
|
|
60
|
+
if (!options["http-port"]) {
|
|
61
|
+
httpPort = await getFreePort(5000, 5999);
|
|
62
|
+
}
|
|
63
|
+
if (!options["https-port"]) {
|
|
64
|
+
httpsPort = await getFreePort(7000, 7999);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const output = _$createComponent(Output, {
|
|
68
|
+
get program() {
|
|
69
|
+
return context.program;
|
|
70
|
+
},
|
|
71
|
+
get namePolicy() {
|
|
72
|
+
return createCSharpNamePolicy();
|
|
73
|
+
},
|
|
74
|
+
get children() {
|
|
75
|
+
return _$createComponent(Experimental_ComponentOverrides, {
|
|
76
|
+
overrides: scalarOverrides,
|
|
77
|
+
get children() {
|
|
78
|
+
return _$createComponent(EmitterOptions.Provider, {
|
|
79
|
+
value: {
|
|
80
|
+
collectionType,
|
|
81
|
+
serviceNamespace: serviceName
|
|
82
|
+
},
|
|
83
|
+
get children() {
|
|
84
|
+
return _$createComponent(SourceDirectory, {
|
|
85
|
+
path: ".",
|
|
86
|
+
get children() {
|
|
87
|
+
return [_$createComponent(Namespace, {
|
|
88
|
+
name: serviceName,
|
|
89
|
+
get children() {
|
|
90
|
+
return [_$createComponent(SourceDirectory, {
|
|
91
|
+
path: "generated",
|
|
92
|
+
get children() {
|
|
93
|
+
return [_$createComponent(SourceDirectory, {
|
|
94
|
+
path: "models",
|
|
95
|
+
get children() {
|
|
96
|
+
return [_$createComponent(Models, {
|
|
97
|
+
get models() {
|
|
98
|
+
return resolution.models;
|
|
99
|
+
},
|
|
100
|
+
get serviceNamespace() {
|
|
101
|
+
return resolution.serviceNamespace;
|
|
102
|
+
}
|
|
103
|
+
}), _$createComponent(Enums, {
|
|
104
|
+
get enums() {
|
|
105
|
+
return resolution.enums;
|
|
106
|
+
},
|
|
107
|
+
get unionEnums() {
|
|
108
|
+
return resolution.unionEnums;
|
|
109
|
+
},
|
|
110
|
+
get serviceNamespace() {
|
|
111
|
+
return resolution.serviceNamespace;
|
|
112
|
+
}
|
|
113
|
+
})];
|
|
114
|
+
}
|
|
115
|
+
}), _$createComponent(ControllersAndInterfaces, {
|
|
116
|
+
get interfaces() {
|
|
117
|
+
return resolution.interfaces;
|
|
118
|
+
},
|
|
119
|
+
get canonicalOpsMap() {
|
|
120
|
+
return resolution.canonicalOpsMap;
|
|
121
|
+
}
|
|
122
|
+
})];
|
|
123
|
+
}
|
|
124
|
+
}), _$createComponent(ProgramCs, {
|
|
125
|
+
hasMocks: emitMocks,
|
|
126
|
+
useSwaggerUI: effectiveUseSwaggerUI,
|
|
127
|
+
openApiPath: openApiPath
|
|
128
|
+
}), _$createComponent(Show, {
|
|
129
|
+
when: emitMocks,
|
|
130
|
+
get children() {
|
|
131
|
+
return _$createComponent(MockImplementations, {
|
|
132
|
+
get interfaces() {
|
|
133
|
+
return resolution.interfaces;
|
|
134
|
+
},
|
|
135
|
+
get canonicalOpsMap() {
|
|
136
|
+
return resolution.canonicalOpsMap;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}), _$createComponent(Show, {
|
|
141
|
+
when: emitProjectFiles,
|
|
142
|
+
get children() {
|
|
143
|
+
return [_$createComponent(Csproj, {
|
|
144
|
+
projectName: projectName,
|
|
145
|
+
useSwaggerUI: useSwaggerUI
|
|
146
|
+
}), _$createComponent(LaunchSettings, {
|
|
147
|
+
httpPort: httpPort,
|
|
148
|
+
httpsPort: httpsPort
|
|
149
|
+
}), _$createComponent(AppSettings, {})];
|
|
150
|
+
}
|
|
151
|
+
}), _$createComponent(Documentation, {
|
|
152
|
+
interfaceNames: emitMocks ? interfaceNames : [],
|
|
153
|
+
useSwaggerUI: useSwaggerUI
|
|
154
|
+
})];
|
|
155
|
+
}
|
|
156
|
+
}), _$createComponent(SourceDirectory, {
|
|
157
|
+
path: "generated",
|
|
158
|
+
get children() {
|
|
159
|
+
return _$createComponent(JsonConverters, {});
|
|
160
|
+
}
|
|
161
|
+
}), _$createComponent(Show, {
|
|
162
|
+
when: emitMocks,
|
|
163
|
+
get children() {
|
|
164
|
+
return _$createComponent(MockHelpers, {
|
|
165
|
+
interfaceRegistrations: interfaceRegistrations
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
})];
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
const overwrite = options.overwrite ?? false;
|
|
178
|
+
await writeOutputWithOverwrite(context.program, output, context.emitterOutputDir, overwrite);
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Show","SourceDirectory","createCSharpNamePolicy","Namespace","$","Experimental_ComponentOverrides","Output","HttpCanonicalizer","Enums","Models","Csproj","AppSettings","LaunchSettings","ProgramCs","ControllersAndInterfaces","Documentation","MockHelpers","MockImplementations","JsonConverters","createServerScalarOverrides","EmitterOptions","reportEmitterDiagnostics","resolveOpenApiPath","writeOutputWithOverwrite","resolveServiceTypes","getFreePort","$onEmit","context","tk","program","canonicalizer","scalarOverrides","options","collectionType","emitMocks","emitProjectFiles","useSwaggerUI","resolution","serviceName","serviceNamespaceName","projectName","interfaces","canonicalOpsMap","openApiPath","effectiveUseSwaggerUI","interfaceNames","map","iface","name","interfaceRegistrations","httpPort","httpsPort","output","_$createComponent","namePolicy","children","overrides","Provider","value","serviceNamespace","path","models","enums","unionEnums","hasMocks","when","overwrite","emitterOutputDir"],"sources":["../../src/emitter.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,4BAA4B,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["namespace","$onEmit","$lib"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,MAAMA,SAAS,GAAG,yBAAyB;AAElD,SAASC,OAAO,QAAQ,cAAc;AACtC,SAASC,IAAI,QAAQ,UAAU","ignoreList":[]}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { CollectionType } from "./interfaces.js";
|
|
2
1
|
export interface CSharpServiceEmitterOptions {
|
|
3
|
-
/**Skip formatting of output. Default is false (generated c-sharp files are formatted) */
|
|
2
|
+
/** Skip formatting of output. Default is false (generated c-sharp files are formatted) */
|
|
4
3
|
"skip-format"?: boolean;
|
|
5
|
-
/** Choose which service artifacts to emit.
|
|
4
|
+
/** Choose which service artifacts to emit. Default is 'all'. */
|
|
6
5
|
"output-type"?: "models" | "all";
|
|
7
|
-
/** Emit mock implementations of business logic, setup code, and project files. Allows the service to respond to requests with mock responses
|
|
6
|
+
/** Emit mock implementations of business logic, setup code, and project files. Allows the service to respond to requests with mock responses. */
|
|
8
7
|
"emit-mocks"?: "none" | "mocks-only" | "mocks-and-project-files";
|
|
9
8
|
/** Configure a Swagger UI endpoint in the development configuration. */
|
|
10
9
|
"use-swaggerui"?: boolean;
|
|
@@ -18,7 +17,7 @@ export interface CSharpServiceEmitterOptions {
|
|
|
18
17
|
"http-port"?: number;
|
|
19
18
|
/** The https port number to use when hosting the service locally */
|
|
20
19
|
"https-port"?: number;
|
|
21
|
-
/** Specifies the collection type to use: 'array' or 'enumerable'. The default is '
|
|
20
|
+
/** Specifies the collection type to use: 'array' or 'enumerable'. The default is 'array'. */
|
|
22
21
|
"collection-type"?: "array" | "enumerable";
|
|
23
22
|
}
|
|
24
23
|
export declare const $lib: import("@typespec/compiler").TypeSpecLibrary<{
|
|
@@ -99,13 +98,4 @@ export declare const reportDiagnostic: <C extends "invalid-identifier" | "anonym
|
|
|
99
98
|
};
|
|
100
99
|
}, C, M>) => void, createStateSymbol: (name: string) => symbol, getTracer: (program: import("@typespec/compiler").Program) => import("@typespec/compiler").Tracer;
|
|
101
100
|
export type CSharpServiceLibrary = typeof $lib;
|
|
102
|
-
export declare class CSharpServiceOptions {
|
|
103
|
-
private static instance;
|
|
104
|
-
collectionType: CollectionType;
|
|
105
|
-
private constructor();
|
|
106
|
-
static getInstance(): CSharpServiceOptions;
|
|
107
|
-
initialize(options: {
|
|
108
|
-
"collection-type"?: string;
|
|
109
|
-
}): void;
|
|
110
|
-
}
|
|
111
101
|
//# sourceMappingURL=lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,2BAA2B;IAC1C,0FAA0F;IAC1F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gEAAgE;IAChE,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IACjC,iJAAiJ;IACjJ,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,yBAAyB,CAAC;IACjE,wEAAwE;IACxE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kKAAkK;IAClK,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;CAC5C;AA4ED,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;sCA0Df,CAAC;AAEH,eAAO,MAAQ,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAE,iBAAiB,4BAAE,SAAS,wFAAS,CAAC;AAEvE,MAAM,MAAM,oBAAoB,GAAG,OAAO,IAAI,CAAC"}
|
package/dist/src/lib.js
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { createTypeSpecLibrary, paramMessage } from "@typespec/compiler";
|
|
2
|
+
const EmitterOptionsSchema = {
|
|
3
|
+
type: "object",
|
|
4
|
+
additionalProperties: false,
|
|
5
|
+
properties: {
|
|
6
|
+
"skip-format": {
|
|
7
|
+
type: "boolean",
|
|
8
|
+
nullable: true,
|
|
9
|
+
description: "Skips formatting of generated C# Types. By default, C# files are formatted using 'dotnet format'."
|
|
10
|
+
},
|
|
11
|
+
"output-type": {
|
|
12
|
+
type: "string",
|
|
13
|
+
enum: ["models", "all"],
|
|
14
|
+
nullable: true,
|
|
15
|
+
default: "all",
|
|
16
|
+
description: "Chooses which service artifacts to emit. choices include 'models' or 'all' artifacts."
|
|
17
|
+
},
|
|
18
|
+
"emit-mocks": {
|
|
19
|
+
type: "string",
|
|
20
|
+
enum: ["mocks-and-project-files", "mocks-only", "none"],
|
|
21
|
+
nullable: true,
|
|
22
|
+
default: "none",
|
|
23
|
+
description: "Emits mock implementations of business logic, setup code, and project files, enabling the service to respond to requests before a real implementation is provided"
|
|
24
|
+
},
|
|
25
|
+
"use-swaggerui": {
|
|
26
|
+
type: "boolean",
|
|
27
|
+
nullable: true,
|
|
28
|
+
default: false,
|
|
29
|
+
description: "Configure a Swagger UI endpoint in the development configuration"
|
|
30
|
+
},
|
|
31
|
+
"openapi-path": {
|
|
32
|
+
type: "string",
|
|
33
|
+
nullable: true,
|
|
34
|
+
default: null,
|
|
35
|
+
description: "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. "
|
|
36
|
+
},
|
|
37
|
+
overwrite: {
|
|
38
|
+
type: "boolean",
|
|
39
|
+
nullable: true,
|
|
40
|
+
default: false,
|
|
41
|
+
description: "When generating mock and project files, overwrite any existing files with the same name."
|
|
42
|
+
},
|
|
43
|
+
"project-name": {
|
|
44
|
+
type: "string",
|
|
45
|
+
nullable: true,
|
|
46
|
+
default: "ServiceProject",
|
|
47
|
+
description: "The name of the generated project."
|
|
48
|
+
},
|
|
49
|
+
"http-port": {
|
|
50
|
+
type: "number",
|
|
51
|
+
nullable: true,
|
|
52
|
+
description: "The service http port when hosting the project locally."
|
|
53
|
+
},
|
|
54
|
+
"https-port": {
|
|
55
|
+
type: "number",
|
|
56
|
+
nullable: true,
|
|
57
|
+
description: "The service https port when hosting the project locally."
|
|
58
|
+
},
|
|
59
|
+
"collection-type": {
|
|
60
|
+
type: "string",
|
|
61
|
+
enum: ["array", "enumerable"],
|
|
62
|
+
nullable: true,
|
|
63
|
+
default: "array",
|
|
64
|
+
description: "Specifies the collection type to use: 'array' or 'enumerable'. The default is 'array'."
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
required: []
|
|
68
|
+
};
|
|
69
|
+
export const $lib = createTypeSpecLibrary({
|
|
70
|
+
name: "@typespec/http-server-csharp",
|
|
71
|
+
capabilities: {
|
|
72
|
+
dryRun: true
|
|
73
|
+
},
|
|
74
|
+
diagnostics: {
|
|
75
|
+
"invalid-identifier": {
|
|
76
|
+
severity: "warning",
|
|
77
|
+
messages: {
|
|
78
|
+
default: paramMessage`Invalid identifier '${"identifier"}' in ${"location"}`
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"anonymous-model": {
|
|
82
|
+
severity: "warning",
|
|
83
|
+
messages: {
|
|
84
|
+
default: paramMessage`Inline models use generated names in emitted code. Consider defining each model with an explicit name. This model will be named '${"emittedName"}' in emitted code`
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"missing-type-parent": {
|
|
88
|
+
severity: "warning",
|
|
89
|
+
messages: {
|
|
90
|
+
default: paramMessage`No parent found for ${"type"} ${"name"} `
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"no-numeric": {
|
|
94
|
+
severity: "warning",
|
|
95
|
+
messages: {
|
|
96
|
+
default: paramMessage`Type '${"sourceType"}' is an imprecise type that does not map directly to a single numeric type, using '${"targetType"}' as the safest c# numeric type. Please specify a more precise numeric type, like 'int32' or 'float64'`
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"unrecognized-scalar": {
|
|
100
|
+
severity: "warning",
|
|
101
|
+
messages: {
|
|
102
|
+
default: paramMessage`Scalar type ${"typeName"} is not a recognized scalar type. Please use or extend a built-in scalar type.`
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"invalid-intrinsic": {
|
|
106
|
+
severity: "error",
|
|
107
|
+
messages: {
|
|
108
|
+
default: paramMessage`Intrinsic type ${"typeName"} is not valid in this context. Please use a model, enum, union, scalar, or the unknown type`
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"invalid-interpolation": {
|
|
112
|
+
severity: "warning",
|
|
113
|
+
messages: {
|
|
114
|
+
default: paramMessage`StringTemplate types should only reference literal-valued constants, enum members, or literal-valued model properties. The interpolated value will not contain one or more referenced elements in generated code.`
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"get-request-body": {
|
|
118
|
+
severity: "warning",
|
|
119
|
+
messages: {
|
|
120
|
+
default: paramMessage`Get operations should not have request bodies. Generating an operation and interface without parameters, your business logic will use HttpContext to interpret Request properties.`
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
emitter: {
|
|
125
|
+
options: EmitterOptionsSchema
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
export const {
|
|
129
|
+
reportDiagnostic,
|
|
130
|
+
createStateSymbol,
|
|
131
|
+
getTracer
|
|
132
|
+
} = $lib;
|
|
133
|
+
//# sourceMappingURL=lib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createTypeSpecLibrary","paramMessage","EmitterOptionsSchema","type","additionalProperties","properties","nullable","description","enum","default","overwrite","required","$lib","name","capabilities","dryRun","diagnostics","severity","messages","emitter","options","reportDiagnostic","createStateSymbol","getTracer"],"sources":["../../src/lib.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Children } from "@alloy-js/core";
|
|
2
|
+
import { Program, type EmitContext } from "@typespec/compiler";
|
|
3
|
+
import type { CSharpServiceEmitterOptions } from "./lib.js";
|
|
4
|
+
/**
|
|
5
|
+
* Custom write function that respects the overwrite option.
|
|
6
|
+
* Files in the "generated/" directory are always written.
|
|
7
|
+
* Other files (scaffolding, mocks, project files) are only written if they don't exist or overwrite is true.
|
|
8
|
+
*/
|
|
9
|
+
export declare function writeOutputWithOverwrite(program: Program, rootComponent: Children, emitterOutputDir: string, overwrite: boolean): Promise<void>;
|
|
10
|
+
export declare function resolveOpenApiPath(context: EmitContext<CSharpServiceEmitterOptions>): Promise<string | undefined>;
|
|
11
|
+
//# sourceMappingURL=output-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output-writer.d.ts","sourceRoot":"","sources":["../../src/output-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAGL,OAAO,EAGP,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAE5D;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,QAAQ,EACvB,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,IAAI,CAAC,CAGf;AAwCD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,WAAW,CAAC,2BAA2B,CAAC,GAChD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwC7B"}
|