@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,224 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Attribute } from "@alloy-js/csharp";
|
|
3
|
+
import { getEncode, getMaxItems, getMaxLength, getMaxValue, getMaxValueExclusive, getMinItems, getMinLength, getMinValue, getMinValueExclusive, getPattern, isArrayModelType, resolveEncodedName } from "@typespec/compiler";
|
|
4
|
+
import { isUnionEnum } from "../components/enums/enums.js";
|
|
5
|
+
import { JsonSerialization } from "./csharp-libs.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Maps a TypeSpec scalar name to the C# type name used in attributes.
|
|
9
|
+
* This follows the old emitter's mapping.
|
|
10
|
+
*/
|
|
11
|
+
function scalarToCSharpTypeName(program, scalar) {
|
|
12
|
+
const stdBase = getStdBase(program, scalar);
|
|
13
|
+
if (!stdBase) return undefined;
|
|
14
|
+
const map = {
|
|
15
|
+
int8: "SByte",
|
|
16
|
+
uint8: "Byte",
|
|
17
|
+
int16: "Int16",
|
|
18
|
+
int32: "int",
|
|
19
|
+
int64: "long",
|
|
20
|
+
uint16: "UInt16",
|
|
21
|
+
uint32: "UInt32",
|
|
22
|
+
uint64: "UInt64",
|
|
23
|
+
safeint: "long",
|
|
24
|
+
float32: "float",
|
|
25
|
+
float64: "double",
|
|
26
|
+
decimal: "decimal",
|
|
27
|
+
decimal128: "decimal",
|
|
28
|
+
numeric: "double",
|
|
29
|
+
integer: "int",
|
|
30
|
+
float: "double",
|
|
31
|
+
boolean: "bool",
|
|
32
|
+
string: "string",
|
|
33
|
+
bytes: "byte[]",
|
|
34
|
+
plainDate: "DateTime",
|
|
35
|
+
plainTime: "DateTime",
|
|
36
|
+
utcDateTime: "DateTimeOffset",
|
|
37
|
+
offsetDateTime: "DateTimeOffset",
|
|
38
|
+
duration: "TimeSpan",
|
|
39
|
+
url: "string"
|
|
40
|
+
};
|
|
41
|
+
return map[stdBase.name];
|
|
42
|
+
}
|
|
43
|
+
function getStdBase(program, scalar) {
|
|
44
|
+
if (program.checker.isStdType(scalar)) return scalar;
|
|
45
|
+
if (scalar.baseScalar) return getStdBase(program, scalar.baseScalar);
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
function getScalarEncoding(program, type) {
|
|
49
|
+
const encode = getEncode(program, type);
|
|
50
|
+
if (encode) return {
|
|
51
|
+
encoding: encode.encoding ?? "string",
|
|
52
|
+
type: encode.type
|
|
53
|
+
};
|
|
54
|
+
if (type.kind === "ModelProperty" && type.type.kind === "Scalar") {
|
|
55
|
+
return getScalarEncoding(program, type.type);
|
|
56
|
+
}
|
|
57
|
+
if (type.kind === "Scalar" && type.baseScalar) {
|
|
58
|
+
return getScalarEncoding(program, type.baseScalar);
|
|
59
|
+
}
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Get all C# attributes for a model property.
|
|
65
|
+
* Returns an array of attribute strings like `[JsonConverter(typeof(TimeSpanDurationConverter))]`
|
|
66
|
+
*/
|
|
67
|
+
export function getPropertyAttributes(program, property) {
|
|
68
|
+
const attrs = [];
|
|
69
|
+
|
|
70
|
+
// Encoding attributes (JsonConverter)
|
|
71
|
+
const encodingAttrs = getEncodingAttributes(program, property);
|
|
72
|
+
attrs.push(...encodingAttrs);
|
|
73
|
+
|
|
74
|
+
// JsonStringEnumConverter for enum and union-as-enum properties
|
|
75
|
+
if (property.type.kind === "Enum" || property.type.kind === "Union" && isUnionEnum(property.type)) {
|
|
76
|
+
attrs.push(_$createComponent(Attribute, {
|
|
77
|
+
get name() {
|
|
78
|
+
return JsonSerialization.JsonConverterAttribute;
|
|
79
|
+
},
|
|
80
|
+
args: ["typeof(JsonStringEnumConverter)"]
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Constraint attributes
|
|
85
|
+
const numericAttr = getNumericConstraintAttribute(program, property);
|
|
86
|
+
if (numericAttr) attrs.push(numericAttr);
|
|
87
|
+
const stringAttr = getStringConstraintAttribute(program, property);
|
|
88
|
+
if (stringAttr) attrs.push(stringAttr);
|
|
89
|
+
const arrayAttr = getArrayConstraintAttribute(program, property);
|
|
90
|
+
if (arrayAttr) attrs.push(arrayAttr);
|
|
91
|
+
|
|
92
|
+
// JsonPropertyName (only when encoded name differs)
|
|
93
|
+
const nameAttr = getEncodedNameAttribute(program, property);
|
|
94
|
+
if (nameAttr) attrs.push(nameAttr);
|
|
95
|
+
|
|
96
|
+
// SafeInt constraint
|
|
97
|
+
if (property.type.kind === "Scalar") {
|
|
98
|
+
const safeIntAttr = getSafeIntAttribute(program, property.type);
|
|
99
|
+
if (safeIntAttr) attrs.push(safeIntAttr);
|
|
100
|
+
}
|
|
101
|
+
return attrs;
|
|
102
|
+
}
|
|
103
|
+
function getEncodingAttributes(program, property) {
|
|
104
|
+
const result = [];
|
|
105
|
+
if (property.type.kind !== "Scalar") return result;
|
|
106
|
+
const stdBase = getStdBase(program, property.type);
|
|
107
|
+
if (!stdBase) return result;
|
|
108
|
+
const encoding = getScalarEncoding(program, property);
|
|
109
|
+
switch (stdBase.name) {
|
|
110
|
+
case "duration":
|
|
111
|
+
result.push(_$createComponent(Attribute, {
|
|
112
|
+
get name() {
|
|
113
|
+
return JsonSerialization.JsonConverterAttribute;
|
|
114
|
+
},
|
|
115
|
+
args: ["typeof(TimeSpanDurationConverter)"]
|
|
116
|
+
}));
|
|
117
|
+
break;
|
|
118
|
+
case "unixTimestamp32":
|
|
119
|
+
result.push(_$createComponent(Attribute, {
|
|
120
|
+
get name() {
|
|
121
|
+
return JsonSerialization.JsonConverterAttribute;
|
|
122
|
+
},
|
|
123
|
+
args: ["typeof(UnixEpochDateTimeOffsetConverter)"]
|
|
124
|
+
}));
|
|
125
|
+
break;
|
|
126
|
+
case "bytes":
|
|
127
|
+
if (encoding && encoding.encoding.toLowerCase() === "base64url") {
|
|
128
|
+
result.push(_$createComponent(Attribute, {
|
|
129
|
+
get name() {
|
|
130
|
+
return JsonSerialization.JsonConverterAttribute;
|
|
131
|
+
},
|
|
132
|
+
args: ["typeof(Base64UrlJsonConverter)"]
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
break;
|
|
136
|
+
case "utcDateTime":
|
|
137
|
+
case "offsetDateTime":
|
|
138
|
+
if (encoding && encoding.encoding.toLowerCase() === "unixtimestamp") {
|
|
139
|
+
result.push(_$createComponent(Attribute, {
|
|
140
|
+
get name() {
|
|
141
|
+
return JsonSerialization.JsonConverterAttribute;
|
|
142
|
+
},
|
|
143
|
+
args: ["typeof(UnixEpochDateTimeOffsetConverter)"]
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
function getNumericConstraintAttribute(program, property) {
|
|
151
|
+
if (property.type.kind !== "Scalar") return undefined;
|
|
152
|
+
const minVal = getMinValue(program, property);
|
|
153
|
+
const maxVal = getMaxValue(program, property);
|
|
154
|
+
const minExcl = getMinValueExclusive(program, property);
|
|
155
|
+
const maxExcl = getMaxValueExclusive(program, property);
|
|
156
|
+
if (minVal === undefined && maxVal === undefined && minExcl === undefined && maxExcl === undefined) {
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
159
|
+
const csharpType = scalarToCSharpTypeName(program, property.type);
|
|
160
|
+
if (!csharpType) return undefined;
|
|
161
|
+
const params = [];
|
|
162
|
+
const actualMin = minVal ?? minExcl;
|
|
163
|
+
const actualMax = maxVal ?? maxExcl;
|
|
164
|
+
if (actualMin !== undefined) params.push(`MinValue = ${actualMin}`);
|
|
165
|
+
if (actualMax !== undefined) params.push(`MaxValue = ${actualMax}`);
|
|
166
|
+
if (minExcl !== undefined) params.push(`MinValueExclusive = true`);
|
|
167
|
+
if (maxExcl !== undefined) params.push(`MaxValueExclusive = true`);
|
|
168
|
+
return _$createComponent(Attribute, {
|
|
169
|
+
name: `NumericConstraint<${csharpType}>`,
|
|
170
|
+
args: params
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
function getStringConstraintAttribute(program, property) {
|
|
174
|
+
const minLen = getMinLength(program, property);
|
|
175
|
+
const maxLen = getMaxLength(program, property);
|
|
176
|
+
const pattern = getPattern(program, property);
|
|
177
|
+
if (minLen === undefined && maxLen === undefined && pattern === undefined) return undefined;
|
|
178
|
+
const params = [];
|
|
179
|
+
if (minLen !== undefined) params.push(`MinLength = ${minLen}`);
|
|
180
|
+
if (maxLen !== undefined) params.push(`MaxLength = ${maxLen}`);
|
|
181
|
+
if (pattern !== undefined) params.push(`Pattern = "${pattern}"`);
|
|
182
|
+
return _$createComponent(Attribute, {
|
|
183
|
+
name: "StringConstraint",
|
|
184
|
+
args: params
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
function getArrayConstraintAttribute(program, property) {
|
|
188
|
+
const minItems = getMinItems(program, property);
|
|
189
|
+
const maxItems = getMaxItems(program, property);
|
|
190
|
+
if (minItems === undefined && maxItems === undefined) return undefined;
|
|
191
|
+
if (property.type.kind !== "Model" || !isArrayModelType(property.type)) return undefined;
|
|
192
|
+
const elementType = property.type.indexer.value;
|
|
193
|
+
if (elementType.kind !== "Scalar") return undefined;
|
|
194
|
+
const csharpType = scalarToCSharpTypeName(program, elementType);
|
|
195
|
+
if (!csharpType) return undefined;
|
|
196
|
+
const params = [];
|
|
197
|
+
if (minItems !== undefined) params.push(`MinItems = ${minItems}`);
|
|
198
|
+
if (maxItems !== undefined) params.push(`MaxItems = ${maxItems}`);
|
|
199
|
+
return _$createComponent(Attribute, {
|
|
200
|
+
name: `ArrayConstraint<${csharpType}>`,
|
|
201
|
+
args: params
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
function getEncodedNameAttribute(program, property) {
|
|
205
|
+
const encodedName = resolveEncodedName(program, property, "application/json");
|
|
206
|
+
if (encodedName !== property.name) {
|
|
207
|
+
return _$createComponent(Attribute, {
|
|
208
|
+
get name() {
|
|
209
|
+
return JsonSerialization.JsonPropertyNameAttribute;
|
|
210
|
+
},
|
|
211
|
+
args: [`"${encodedName}"`]
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
return undefined;
|
|
215
|
+
}
|
|
216
|
+
function getSafeIntAttribute(program, scalar) {
|
|
217
|
+
const stdBase = getStdBase(program, scalar);
|
|
218
|
+
if (!stdBase || stdBase.name !== "safeint") return undefined;
|
|
219
|
+
return _$createComponent(Attribute, {
|
|
220
|
+
name: "NumericConstraint<long>",
|
|
221
|
+
args: ["MinValue = -9007199254740991", "MaxValue = 9007199254740991"]
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=attributes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Attribute","getEncode","getMaxItems","getMaxLength","getMaxValue","getMaxValueExclusive","getMinItems","getMinLength","getMinValue","getMinValueExclusive","getPattern","isArrayModelType","resolveEncodedName","isUnionEnum","JsonSerialization","scalarToCSharpTypeName","program","scalar","stdBase","getStdBase","undefined","map","int8","uint8","int16","int32","int64","uint16","uint32","uint64","safeint","float32","float64","decimal","decimal128","numeric","integer","float","boolean","string","bytes","plainDate","plainTime","utcDateTime","offsetDateTime","duration","url","name","checker","isStdType","baseScalar","getScalarEncoding","type","encode","encoding","kind","getPropertyAttributes","property","attrs","encodingAttrs","getEncodingAttributes","push","_$createComponent","JsonConverterAttribute","args","numericAttr","getNumericConstraintAttribute","stringAttr","getStringConstraintAttribute","arrayAttr","getArrayConstraintAttribute","nameAttr","getEncodedNameAttribute","safeIntAttr","getSafeIntAttribute","result","toLowerCase","minVal","maxVal","minExcl","maxExcl","csharpType","params","actualMin","actualMax","minLen","maxLen","pattern","minItems","maxItems","elementType","indexer","value","encodedName","JsonPropertyNameAttribute"],"sources":["../../../src/utils/attributes.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Library references for System.Text.Json.Serialization attributes.
|
|
3
|
+
* Using createLibrary ensures proper `using` directive generation and
|
|
4
|
+
* attribute name resolution (e.g., stripping "Attribute" suffix).
|
|
5
|
+
*/
|
|
6
|
+
export declare const JsonSerialization: import("@alloy-js/csharp").LibraryFrom<{
|
|
7
|
+
JsonConverterAttribute: {
|
|
8
|
+
kind: "class";
|
|
9
|
+
members: {};
|
|
10
|
+
};
|
|
11
|
+
JsonPropertyNameAttribute: {
|
|
12
|
+
kind: "class";
|
|
13
|
+
members: {};
|
|
14
|
+
};
|
|
15
|
+
JsonStringEnumMemberNameAttribute: {
|
|
16
|
+
kind: "class";
|
|
17
|
+
members: {};
|
|
18
|
+
};
|
|
19
|
+
JsonStringEnumConverter: {
|
|
20
|
+
kind: "class";
|
|
21
|
+
members: {};
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
24
|
+
/**
|
|
25
|
+
* Library references for Microsoft.AspNetCore.Mvc attributes.
|
|
26
|
+
* Using createLibrary ensures proper `using` directive generation and
|
|
27
|
+
* attribute name resolution (e.g., stripping "Attribute" suffix).
|
|
28
|
+
*/
|
|
29
|
+
export declare const AspNetMvc: import("@alloy-js/csharp").LibraryFrom<{
|
|
30
|
+
ApiControllerAttribute: {
|
|
31
|
+
kind: "class";
|
|
32
|
+
members: {};
|
|
33
|
+
};
|
|
34
|
+
RouteAttribute: {
|
|
35
|
+
kind: "class";
|
|
36
|
+
members: {};
|
|
37
|
+
};
|
|
38
|
+
HttpGetAttribute: {
|
|
39
|
+
kind: "class";
|
|
40
|
+
members: {};
|
|
41
|
+
};
|
|
42
|
+
HttpPostAttribute: {
|
|
43
|
+
kind: "class";
|
|
44
|
+
members: {};
|
|
45
|
+
};
|
|
46
|
+
HttpPutAttribute: {
|
|
47
|
+
kind: "class";
|
|
48
|
+
members: {};
|
|
49
|
+
};
|
|
50
|
+
HttpDeleteAttribute: {
|
|
51
|
+
kind: "class";
|
|
52
|
+
members: {};
|
|
53
|
+
};
|
|
54
|
+
HttpPatchAttribute: {
|
|
55
|
+
kind: "class";
|
|
56
|
+
members: {};
|
|
57
|
+
};
|
|
58
|
+
HttpHeadAttribute: {
|
|
59
|
+
kind: "class";
|
|
60
|
+
members: {};
|
|
61
|
+
};
|
|
62
|
+
FromRouteAttribute: {
|
|
63
|
+
kind: "class";
|
|
64
|
+
members: {};
|
|
65
|
+
};
|
|
66
|
+
FromQueryAttribute: {
|
|
67
|
+
kind: "class";
|
|
68
|
+
members: {};
|
|
69
|
+
};
|
|
70
|
+
FromHeaderAttribute: {
|
|
71
|
+
kind: "class";
|
|
72
|
+
members: {};
|
|
73
|
+
};
|
|
74
|
+
FromBodyAttribute: {
|
|
75
|
+
kind: "class";
|
|
76
|
+
members: {};
|
|
77
|
+
};
|
|
78
|
+
ConsumesAttribute: {
|
|
79
|
+
kind: "class";
|
|
80
|
+
members: {};
|
|
81
|
+
};
|
|
82
|
+
ProducesResponseTypeAttribute: {
|
|
83
|
+
kind: "class";
|
|
84
|
+
members: {};
|
|
85
|
+
};
|
|
86
|
+
}>;
|
|
87
|
+
//# sourceMappingURL=csharp-libs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csharp-libs.d.ts","sourceRoot":"","sources":["../../../src/utils/csharp-libs.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;EAK5B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAepB,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { createLibrary } from "@alloy-js/csharp";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Library references for System.Text.Json.Serialization attributes.
|
|
5
|
+
* Using createLibrary ensures proper `using` directive generation and
|
|
6
|
+
* attribute name resolution (e.g., stripping "Attribute" suffix).
|
|
7
|
+
*/
|
|
8
|
+
export const JsonSerialization = createLibrary("System.Text.Json.Serialization", {
|
|
9
|
+
JsonConverterAttribute: {
|
|
10
|
+
kind: "class",
|
|
11
|
+
members: {}
|
|
12
|
+
},
|
|
13
|
+
JsonPropertyNameAttribute: {
|
|
14
|
+
kind: "class",
|
|
15
|
+
members: {}
|
|
16
|
+
},
|
|
17
|
+
JsonStringEnumMemberNameAttribute: {
|
|
18
|
+
kind: "class",
|
|
19
|
+
members: {}
|
|
20
|
+
},
|
|
21
|
+
JsonStringEnumConverter: {
|
|
22
|
+
kind: "class",
|
|
23
|
+
members: {}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Library references for Microsoft.AspNetCore.Mvc attributes.
|
|
29
|
+
* Using createLibrary ensures proper `using` directive generation and
|
|
30
|
+
* attribute name resolution (e.g., stripping "Attribute" suffix).
|
|
31
|
+
*/
|
|
32
|
+
export const AspNetMvc = createLibrary("Microsoft.AspNetCore.Mvc", {
|
|
33
|
+
ApiControllerAttribute: {
|
|
34
|
+
kind: "class",
|
|
35
|
+
members: {}
|
|
36
|
+
},
|
|
37
|
+
RouteAttribute: {
|
|
38
|
+
kind: "class",
|
|
39
|
+
members: {}
|
|
40
|
+
},
|
|
41
|
+
HttpGetAttribute: {
|
|
42
|
+
kind: "class",
|
|
43
|
+
members: {}
|
|
44
|
+
},
|
|
45
|
+
HttpPostAttribute: {
|
|
46
|
+
kind: "class",
|
|
47
|
+
members: {}
|
|
48
|
+
},
|
|
49
|
+
HttpPutAttribute: {
|
|
50
|
+
kind: "class",
|
|
51
|
+
members: {}
|
|
52
|
+
},
|
|
53
|
+
HttpDeleteAttribute: {
|
|
54
|
+
kind: "class",
|
|
55
|
+
members: {}
|
|
56
|
+
},
|
|
57
|
+
HttpPatchAttribute: {
|
|
58
|
+
kind: "class",
|
|
59
|
+
members: {}
|
|
60
|
+
},
|
|
61
|
+
HttpHeadAttribute: {
|
|
62
|
+
kind: "class",
|
|
63
|
+
members: {}
|
|
64
|
+
},
|
|
65
|
+
FromRouteAttribute: {
|
|
66
|
+
kind: "class",
|
|
67
|
+
members: {}
|
|
68
|
+
},
|
|
69
|
+
FromQueryAttribute: {
|
|
70
|
+
kind: "class",
|
|
71
|
+
members: {}
|
|
72
|
+
},
|
|
73
|
+
FromHeaderAttribute: {
|
|
74
|
+
kind: "class",
|
|
75
|
+
members: {}
|
|
76
|
+
},
|
|
77
|
+
FromBodyAttribute: {
|
|
78
|
+
kind: "class",
|
|
79
|
+
members: {}
|
|
80
|
+
},
|
|
81
|
+
ConsumesAttribute: {
|
|
82
|
+
kind: "class",
|
|
83
|
+
members: {}
|
|
84
|
+
},
|
|
85
|
+
ProducesResponseTypeAttribute: {
|
|
86
|
+
kind: "class",
|
|
87
|
+
members: {}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=csharp-libs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createLibrary","JsonSerialization","JsonConverterAttribute","kind","members","JsonPropertyNameAttribute","JsonStringEnumMemberNameAttribute","JsonStringEnumConverter","AspNetMvc","ApiControllerAttribute","RouteAttribute","HttpGetAttribute","HttpPostAttribute","HttpPutAttribute","HttpDeleteAttribute","HttpPatchAttribute","HttpHeadAttribute","FromRouteAttribute","FromQueryAttribute","FromHeaderAttribute","FromBodyAttribute","ConsumesAttribute","ProducesResponseTypeAttribute"],"sources":["../../../src/utils/csharp-libs.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,aAAa,QAAQ,kBAAkB;;AAEhD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAGD,aAAa,CAAC,gCAAgC,EAAE;EAC/EE,sBAAsB,EAAE;IAAEC,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACtDC,yBAAyB,EAAE;IAAEF,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACzDE,iCAAiC,EAAE;IAAEH,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACjEG,uBAAuB,EAAE;IAAEJ,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE;AACxD,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,SAAS,GAAGR,aAAa,CAAC,0BAA0B,EAAE;EACjES,sBAAsB,EAAE;IAAEN,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACtDM,cAAc,EAAE;IAAEP,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAC9CO,gBAAgB,EAAE;IAAER,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAChDQ,iBAAiB,EAAE;IAAET,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACjDS,gBAAgB,EAAE;IAAEV,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAChDU,mBAAmB,EAAE;IAAEX,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACnDW,kBAAkB,EAAE;IAAEZ,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAClDY,iBAAiB,EAAE;IAAEb,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACjDa,kBAAkB,EAAE;IAAEd,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAClDc,kBAAkB,EAAE;IAAEf,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EAClDe,mBAAmB,EAAE;IAAEhB,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACnDgB,iBAAiB,EAAE;IAAEjB,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACjDiB,iBAAiB,EAAE;IAAElB,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE,CAAC;EACjDkB,6BAA6B,EAAE;IAAEnB,IAAI,EAAE,OAAO;IAAEC,OAAO,EAAE,CAAC;EAAE;AAC9D,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-comments.d.ts","sourceRoot":"","sources":["../../../src/utils/doc-comments.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getDocComments"],"sources":["../../../src/utils/doc-comments.tsx"],"sourcesContent":[null],"mappings":"AAAA;AACA;AACA,SAASA,cAAc,QAAQ,oCAAoC","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Refkeyable } from "@alloy-js/core";
|
|
2
|
+
import type { HttpStatusCodesEntry, HttpVerb } from "@typespec/http";
|
|
3
|
+
/**
|
|
4
|
+
* Maps an HTTP verb to its ASP.NET Core attribute library reference.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getHttpVerbAttribute(verb: HttpVerb): Refkeyable;
|
|
7
|
+
/**
|
|
8
|
+
* Maps an HTTP status code to its ASP.NET Core `HttpStatusCode` enum member.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getCSharpStatusCode(entry: HttpStatusCodesEntry): string | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Returns the ASP.NET Core controller return statement for a given HTTP status code.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getControllerReturnStatement(status: HttpStatusCodesEntry, hasValue: boolean): string;
|
|
15
|
+
/**
|
|
16
|
+
* Extracts the route template from an HTTP operation path.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getRouteTemplate(path: string): string;
|
|
19
|
+
//# sourceMappingURL=http-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/http-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAGrE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAiB/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAanF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,OAAO,GAChB,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { AspNetMvc } from "./csharp-libs.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Maps an HTTP verb to its ASP.NET Core attribute library reference.
|
|
5
|
+
*/
|
|
6
|
+
export function getHttpVerbAttribute(verb) {
|
|
7
|
+
switch (verb) {
|
|
8
|
+
case "delete":
|
|
9
|
+
return AspNetMvc.HttpDeleteAttribute;
|
|
10
|
+
case "get":
|
|
11
|
+
return AspNetMvc.HttpGetAttribute;
|
|
12
|
+
case "patch":
|
|
13
|
+
return AspNetMvc.HttpPatchAttribute;
|
|
14
|
+
case "post":
|
|
15
|
+
return AspNetMvc.HttpPostAttribute;
|
|
16
|
+
case "put":
|
|
17
|
+
return AspNetMvc.HttpPutAttribute;
|
|
18
|
+
case "head":
|
|
19
|
+
return AspNetMvc.HttpHeadAttribute;
|
|
20
|
+
default:
|
|
21
|
+
return AspNetMvc.HttpGetAttribute;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Maps an HTTP status code to its ASP.NET Core `HttpStatusCode` enum member.
|
|
27
|
+
*/
|
|
28
|
+
export function getCSharpStatusCode(entry) {
|
|
29
|
+
switch (entry) {
|
|
30
|
+
case 200:
|
|
31
|
+
return "HttpStatusCode.OK";
|
|
32
|
+
case 201:
|
|
33
|
+
return "HttpStatusCode.Created";
|
|
34
|
+
case 202:
|
|
35
|
+
return "HttpStatusCode.Accepted";
|
|
36
|
+
case 204:
|
|
37
|
+
return "HttpStatusCode.NoContent";
|
|
38
|
+
default:
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Returns the ASP.NET Core controller return statement for a given HTTP status code.
|
|
45
|
+
*/
|
|
46
|
+
export function getControllerReturnStatement(status, hasValue) {
|
|
47
|
+
if (typeof status === "number") {
|
|
48
|
+
switch (status) {
|
|
49
|
+
case 200:
|
|
50
|
+
return hasValue ? "return Ok(result);" : "return Ok();";
|
|
51
|
+
case 201:
|
|
52
|
+
return hasValue ? `return Created("", result);` : `return Created("", null);`;
|
|
53
|
+
case 202:
|
|
54
|
+
return hasValue ? "return Accepted(result);" : "return Accepted();";
|
|
55
|
+
case 204:
|
|
56
|
+
return "return NoContent();";
|
|
57
|
+
default:
|
|
58
|
+
return hasValue ? `return StatusCode(${status}, result);` : `return StatusCode(${status});`;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return hasValue ? "return Ok(result);" : "return Ok();";
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Extracts the route template from an HTTP operation path.
|
|
66
|
+
*/
|
|
67
|
+
export function getRouteTemplate(path) {
|
|
68
|
+
return path;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=http-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AspNetMvc","getHttpVerbAttribute","verb","HttpDeleteAttribute","HttpGetAttribute","HttpPatchAttribute","HttpPostAttribute","HttpPutAttribute","HttpHeadAttribute","getCSharpStatusCode","entry","undefined","getControllerReturnStatement","status","hasValue","getRouteTemplate","path"],"sources":["../../../src/utils/http-helpers.ts"],"sourcesContent":[null],"mappings":"AAEA,SAASA,SAAS;;AAElB;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAACC,IAAc,EAAc;EAC/D,QAAQA,IAAI;IACV,KAAK,QAAQ;MACX,OAAOF,SAAS,CAACG,mBAAmB;IACtC,KAAK,KAAK;MACR,OAAOH,SAAS,CAACI,gBAAgB;IACnC,KAAK,OAAO;MACV,OAAOJ,SAAS,CAACK,kBAAkB;IACrC,KAAK,MAAM;MACT,OAAOL,SAAS,CAACM,iBAAiB;IACpC,KAAK,KAAK;MACR,OAAON,SAAS,CAACO,gBAAgB;IACnC,KAAK,MAAM;MACT,OAAOP,SAAS,CAACQ,iBAAiB;IACpC;MACE,OAAOR,SAAS,CAACI,gBAAgB;EACrC;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASK,mBAAmBA,CAACC,KAA2B,EAAsB;EACnF,QAAQA,KAAK;IACX,KAAK,GAAG;MACN,OAAO,mBAAmB;IAC5B,KAAK,GAAG;MACN,OAAO,wBAAwB;IACjC,KAAK,GAAG;MACN,OAAO,yBAAyB;IAClC,KAAK,GAAG;MACN,OAAO,0BAA0B;IACnC;MACE,OAAOC,SAAS;EACpB;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASC,4BAA4BA,CAC1CC,MAA4B,EAC5BC,QAAiB,EACT;EACR,IAAI,OAAOD,MAAM,KAAK,QAAQ,EAAE;IAC9B,QAAQA,MAAM;MACZ,KAAK,GAAG;QACN,OAAOC,QAAQ,GAAG,oBAAoB,GAAG,cAAc;MACzD,KAAK,GAAG;QACN,OAAOA,QAAQ,GAAG,6BAA6B,GAAG,2BAA2B;MAC/E,KAAK,GAAG;QACN,OAAOA,QAAQ,GAAG,0BAA0B,GAAG,oBAAoB;MACrE,KAAK,GAAG;QACN,OAAO,qBAAqB;MAC9B;QACE,OAAOA,QAAQ,GAAG,qBAAqBD,MAAM,YAAY,GAAG,qBAAqBA,MAAM,IAAI;IAC/F;EACF;EACA,OAAOC,QAAQ,GAAG,oBAAoB,GAAG,cAAc;AACzD;;AAEA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,IAAY,EAAU;EACrD,OAAOA,IAAI;AACb","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-helpers.test.d.ts","sourceRoot":"","sources":["../../../src/utils/http-helpers.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { AspNetMvc } from "./csharp-libs.js";
|
|
3
|
+
import { getControllerReturnStatement, getCSharpStatusCode, getHttpVerbAttribute, getRouteTemplate } from "./http-helpers.js";
|
|
4
|
+
describe("getHttpVerbAttribute", () => {
|
|
5
|
+
it.each([["delete", AspNetMvc.HttpDeleteAttribute], ["get", AspNetMvc.HttpGetAttribute], ["patch", AspNetMvc.HttpPatchAttribute], ["post", AspNetMvc.HttpPostAttribute], ["put", AspNetMvc.HttpPutAttribute]])("maps %s to the correct library ref", (verb, expected) => {
|
|
6
|
+
expect(getHttpVerbAttribute(verb)).toBe(expected);
|
|
7
|
+
});
|
|
8
|
+
it("maps head to HttpHead", () => {
|
|
9
|
+
expect(getHttpVerbAttribute("head")).toBe(AspNetMvc.HttpHeadAttribute);
|
|
10
|
+
});
|
|
11
|
+
it("defaults to HttpGet for unknown verbs", () => {
|
|
12
|
+
expect(getHttpVerbAttribute("trace")).toBe(AspNetMvc.HttpGetAttribute);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
describe("getCSharpStatusCode", () => {
|
|
16
|
+
it("maps 200 to HttpStatusCode.OK", () => {
|
|
17
|
+
expect(getCSharpStatusCode(200)).toBe("HttpStatusCode.OK");
|
|
18
|
+
});
|
|
19
|
+
it("maps 201 to HttpStatusCode.Created", () => {
|
|
20
|
+
expect(getCSharpStatusCode(201)).toBe("HttpStatusCode.Created");
|
|
21
|
+
});
|
|
22
|
+
it("maps 202 to HttpStatusCode.Accepted", () => {
|
|
23
|
+
expect(getCSharpStatusCode(202)).toBe("HttpStatusCode.Accepted");
|
|
24
|
+
});
|
|
25
|
+
it("maps 204 to HttpStatusCode.NoContent", () => {
|
|
26
|
+
expect(getCSharpStatusCode(204)).toBe("HttpStatusCode.NoContent");
|
|
27
|
+
});
|
|
28
|
+
it("returns undefined for unmapped codes", () => {
|
|
29
|
+
expect(getCSharpStatusCode(400)).toBeUndefined();
|
|
30
|
+
expect(getCSharpStatusCode(500)).toBeUndefined();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("getControllerReturnStatement", () => {
|
|
34
|
+
it("returns Ok(result) for 200 with value", () => {
|
|
35
|
+
expect(getControllerReturnStatement(200, true)).toBe("return Ok(result);");
|
|
36
|
+
});
|
|
37
|
+
it("returns Ok() for 200 without value", () => {
|
|
38
|
+
expect(getControllerReturnStatement(200, false)).toBe("return Ok();");
|
|
39
|
+
});
|
|
40
|
+
it("returns NoContent() for 204", () => {
|
|
41
|
+
expect(getControllerReturnStatement(204, true)).toBe("return NoContent();");
|
|
42
|
+
expect(getControllerReturnStatement(204, false)).toBe("return NoContent();");
|
|
43
|
+
});
|
|
44
|
+
it("returns Accepted for 202", () => {
|
|
45
|
+
expect(getControllerReturnStatement(202, true)).toBe("return Accepted(result);");
|
|
46
|
+
});
|
|
47
|
+
it("returns Created for 201", () => {
|
|
48
|
+
expect(getControllerReturnStatement(201, true)).toBe('return Created("", result);');
|
|
49
|
+
expect(getControllerReturnStatement(201, false)).toBe('return Created("", null);');
|
|
50
|
+
});
|
|
51
|
+
it("returns StatusCode for other codes", () => {
|
|
52
|
+
expect(getControllerReturnStatement(404, false)).toBe("return StatusCode(404);");
|
|
53
|
+
});
|
|
54
|
+
it("returns Ok for status ranges", () => {
|
|
55
|
+
expect(getControllerReturnStatement({
|
|
56
|
+
start: 200,
|
|
57
|
+
end: 299
|
|
58
|
+
}, true)).toBe("return Ok(result);");
|
|
59
|
+
expect(getControllerReturnStatement("*", false)).toBe("return Ok();");
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe("getRouteTemplate", () => {
|
|
63
|
+
it("passes through route templates", () => {
|
|
64
|
+
expect(getRouteTemplate("/pets/{petId}")).toBe("/pets/{petId}");
|
|
65
|
+
expect(getRouteTemplate("/items")).toBe("/items");
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=http-helpers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","AspNetMvc","getControllerReturnStatement","getCSharpStatusCode","getHttpVerbAttribute","getRouteTemplate","each","HttpDeleteAttribute","HttpGetAttribute","HttpPatchAttribute","HttpPostAttribute","HttpPutAttribute","verb","expected","toBe","HttpHeadAttribute","toBeUndefined","start","end"],"sources":["../../../src/utils/http-helpers.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Namespace as TspNamespace } from "@typespec/compiler";
|
|
2
|
+
/**
|
|
3
|
+
* Gets the sub-namespace path of a type's namespace relative to the service namespace.
|
|
4
|
+
* For example, if the service namespace is "Microsoft.Contoso" and the type is in
|
|
5
|
+
* "Microsoft.Contoso.Colors", returns ["Colors"].
|
|
6
|
+
* Returns an empty array if the type is in the service namespace itself.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getSubNamespaceParts(typeNs: TspNamespace | undefined, serviceNs: TspNamespace | undefined): string[];
|
|
9
|
+
/**
|
|
10
|
+
* Finds the service namespace (the first namespace with content).
|
|
11
|
+
*/
|
|
12
|
+
export declare function findServiceNamespace(globalNs: TspNamespace): TspNamespace | undefined;
|
|
13
|
+
//# sourceMappingURL=namespace-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace-utils.d.ts","sourceRoot":"","sources":["../../../src/utils/namespace-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEpF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,SAAS,EAAE,YAAY,GAAG,SAAS,GAClC,MAAM,EAAE,CA4BV;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS,CAiBrF"}
|