@typespec/http-server-csharp 0.58.0-alpha.28-dev.4 → 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 +34 -26
- 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,71 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { code } from "@alloy-js/core";
|
|
3
|
+
import { Namespace } from "@alloy-js/csharp";
|
|
4
|
+
import { CSharpFile } from "../csharp-file.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Renders the HttpServiceException class and HttpServiceExceptionFilter.
|
|
8
|
+
* The exception class represents HTTP response exceptions with status codes.
|
|
9
|
+
* The filter converts these exceptions to proper HTTP responses.
|
|
10
|
+
*/
|
|
11
|
+
export function HttpServiceExceptionFilter() {
|
|
12
|
+
return _$createComponent(CSharpFile, {
|
|
13
|
+
path: "HttpServiceException.cs",
|
|
14
|
+
using: ["Microsoft.AspNetCore.Mvc", "Microsoft.AspNetCore.Mvc.Filters"],
|
|
15
|
+
get children() {
|
|
16
|
+
return _$createComponent(Namespace, {
|
|
17
|
+
name: "TypeSpec.Helpers",
|
|
18
|
+
children: code`
|
|
19
|
+
/// <summary>
|
|
20
|
+
/// Represents an HTTP response exception with a status code and optional value.
|
|
21
|
+
/// </summary>
|
|
22
|
+
public class HttpServiceException : Exception
|
|
23
|
+
{
|
|
24
|
+
/// <summary>
|
|
25
|
+
/// Initializes a new instance of the HttpServiceException class.
|
|
26
|
+
/// </summary>
|
|
27
|
+
/// <param name="statusCode">The HTTP status code.</param>
|
|
28
|
+
/// <param name="value">The optional value to include in the response.</param>
|
|
29
|
+
public HttpServiceException(int statusCode, object? value = null, Dictionary<string, string>? headers = null) =>
|
|
30
|
+
(StatusCode, Value, Headers) = (statusCode, value, headers ?? new Dictionary<string, string>());
|
|
31
|
+
|
|
32
|
+
public int StatusCode { get; }
|
|
33
|
+
|
|
34
|
+
public object? Value { get; }
|
|
35
|
+
|
|
36
|
+
public Dictionary<string, string> Headers { get; }
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/// <summary>
|
|
40
|
+
/// An action filter that handles HttpServiceException and converts it to an HTTP response.
|
|
41
|
+
/// </summary>
|
|
42
|
+
public class HttpServiceExceptionFilter : IActionFilter, IOrderedFilter
|
|
43
|
+
{
|
|
44
|
+
public int Order => int.MaxValue - 10;
|
|
45
|
+
|
|
46
|
+
public void OnActionExecuting(ActionExecutingContext context) { }
|
|
47
|
+
|
|
48
|
+
public void OnActionExecuted(ActionExecutedContext context)
|
|
49
|
+
{
|
|
50
|
+
if (context.Exception is HttpServiceException httpServiceException)
|
|
51
|
+
{
|
|
52
|
+
foreach (var header in httpServiceException.Headers)
|
|
53
|
+
{
|
|
54
|
+
context.HttpContext.Response.Headers.Append(header.Key, header.Value.ToString());
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
context.Result = new ObjectResult(httpServiceException.Value)
|
|
58
|
+
{
|
|
59
|
+
StatusCode = httpServiceException.StatusCode,
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
context.ExceptionHandled = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
`
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=http-service-exception-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["code","Namespace","CSharpFile","HttpServiceExceptionFilter","_$createComponent","path","using","children","name"],"sources":["../../../../src/components/serialization/http-service-exception-filter.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,IAAI,QAAuB,gBAAgB;AACpD,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,UAAU;;AAEnB;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,0BAA0BA,CAAA,EAAa;EACrD,OAAAC,iBAAA,CACGF,UAAU;IACTG,IAAI;IACJC,KAAK,EAAE,CAAC,0BAA0B,EAAE,kCAAkC,CAAC;IAAA,IAAAC,SAAA;MAAA,OAAAH,iBAAA,CAEtEH,SAAS;QAACO,IAAI;QAAAD,QAAA,EACZP,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAAS;IAAA;EAAA;AAIT","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Children } from "@alloy-js/core";
|
|
2
|
+
/**
|
|
3
|
+
* Renders the JSON serialization helper files (converters and provider).
|
|
4
|
+
* These are static C# source files used by the generated models and controllers.
|
|
5
|
+
*/
|
|
6
|
+
export declare function JsonConverters(): Children;
|
|
7
|
+
//# sourceMappingURL=json-converters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-converters.d.ts","sourceRoot":"","sources":["../../../../src/components/serialization/json-converters.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQhE;;;GAGG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAWzC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { SourceDirectory } from "@alloy-js/core";
|
|
3
|
+
import { Base64UrlJsonConverter } from "./base64-url-json-converter.js";
|
|
4
|
+
import { ConstraintAttributes } from "./constraint-attributes.js";
|
|
5
|
+
import { HttpServiceExceptionFilter } from "./http-service-exception-filter.js";
|
|
6
|
+
import { JsonSerializationProvider } from "./json-serialization-provider.js";
|
|
7
|
+
import { TimeSpanDurationConverter } from "./time-span-duration-converter.js";
|
|
8
|
+
import { UnixEpochDateTimeConverter } from "./unix-epoch-date-time-converter.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Renders the JSON serialization helper files (converters and provider).
|
|
12
|
+
* These are static C# source files used by the generated models and controllers.
|
|
13
|
+
*/
|
|
14
|
+
export function JsonConverters() {
|
|
15
|
+
return _$createComponent(SourceDirectory, {
|
|
16
|
+
path: "lib",
|
|
17
|
+
get children() {
|
|
18
|
+
return [_$createComponent(TimeSpanDurationConverter, {}), _$createComponent(Base64UrlJsonConverter, {}), _$createComponent(UnixEpochDateTimeConverter, {}), _$createComponent(HttpServiceExceptionFilter, {}), _$createComponent(JsonSerializationProvider, {}), _$createComponent(ConstraintAttributes, {})];
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=json-converters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SourceDirectory","Base64UrlJsonConverter","ConstraintAttributes","HttpServiceExceptionFilter","JsonSerializationProvider","TimeSpanDurationConverter","UnixEpochDateTimeConverter","JsonConverters","_$createComponent","path","children"],"sources":["../../../../src/components/serialization/json-converters.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,eAAe,QAAuB,gBAAgB;AAC/D,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB;AAC7B,SAASC,0BAA0B;AACnC,SAASC,yBAAyB;AAClC,SAASC,yBAAyB;AAClC,SAASC,0BAA0B;;AAEnC;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAa;EACzC,OAAAC,iBAAA,CACGR,eAAe;IAACS,IAAI;IAAA,IAAAC,SAAA;MAAA,QAAAF,iBAAA,CAClBH,yBAAyB,OAAAG,iBAAA,CACzBP,sBAAsB,OAAAO,iBAAA,CACtBF,0BAA0B,OAAAE,iBAAA,CAC1BL,0BAA0B,OAAAK,iBAAA,CAC1BJ,yBAAyB,OAAAI,iBAAA,CACzBN,oBAAoB;IAAA;EAAA;AAG3B","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-converters.test.d.ts","sourceRoot":"","sources":["../../../../src/components/serialization/json-converters.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Output, render } from "@alloy-js/core";
|
|
3
|
+
import { createCSharpNamePolicy } from "@alloy-js/csharp";
|
|
4
|
+
import { describe, expect, it } from "vitest";
|
|
5
|
+
import { Base64UrlJsonConverter } from "./base64-url-json-converter.js";
|
|
6
|
+
import { HttpServiceExceptionFilter } from "./http-service-exception-filter.js";
|
|
7
|
+
import { JsonConverters } from "./json-converters.js";
|
|
8
|
+
import { JsonSerializationProvider } from "./json-serialization-provider.js";
|
|
9
|
+
import { TimeSpanDurationConverter } from "./time-span-duration-converter.js";
|
|
10
|
+
import { UnixEpochDateTimeConverter } from "./unix-epoch-date-time-converter.js";
|
|
11
|
+
function findFileContent(output, pathSuffix) {
|
|
12
|
+
function search(dir) {
|
|
13
|
+
for (const item of dir.contents) {
|
|
14
|
+
if ("contents" in item && typeof item.contents === "string" && (item.path.endsWith("/" + pathSuffix) || item.path === pathSuffix)) {
|
|
15
|
+
return item.contents;
|
|
16
|
+
}
|
|
17
|
+
if ("contents" in item && Array.isArray(item.contents)) {
|
|
18
|
+
const found = search(item);
|
|
19
|
+
if (found) return found;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
return search(output);
|
|
25
|
+
}
|
|
26
|
+
describe("TimeSpanDurationConverter", () => {
|
|
27
|
+
it("renders converter with XmlConvert usage", () => {
|
|
28
|
+
const output = render(_$createComponent(Output, {
|
|
29
|
+
get namePolicy() {
|
|
30
|
+
return createCSharpNamePolicy();
|
|
31
|
+
},
|
|
32
|
+
get children() {
|
|
33
|
+
return _$createComponent(TimeSpanDurationConverter, {});
|
|
34
|
+
}
|
|
35
|
+
}));
|
|
36
|
+
const content = findFileContent(output, "TimeSpanDurationConverter.cs");
|
|
37
|
+
expect(content).toBeDefined();
|
|
38
|
+
expect(content).toContain("class TimeSpanDurationConverter");
|
|
39
|
+
expect(content).toContain("XmlConvert.ToTimeSpan");
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe("Base64UrlJsonConverter", () => {
|
|
43
|
+
it("renders converter with base64url encoding logic", () => {
|
|
44
|
+
const output = render(_$createComponent(Output, {
|
|
45
|
+
get namePolicy() {
|
|
46
|
+
return createCSharpNamePolicy();
|
|
47
|
+
},
|
|
48
|
+
get children() {
|
|
49
|
+
return _$createComponent(Base64UrlJsonConverter, {});
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
const content = findFileContent(output, "Base64UrlJsonConverter.cs");
|
|
53
|
+
expect(content).toBeDefined();
|
|
54
|
+
expect(content).toContain("class Base64UrlJsonConverter");
|
|
55
|
+
expect(content).toContain("Convert.FromBase64String");
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe("UnixEpochDateTimeConverter", () => {
|
|
59
|
+
it("renders converter with Unix epoch logic", () => {
|
|
60
|
+
const output = render(_$createComponent(Output, {
|
|
61
|
+
get namePolicy() {
|
|
62
|
+
return createCSharpNamePolicy();
|
|
63
|
+
},
|
|
64
|
+
get children() {
|
|
65
|
+
return _$createComponent(UnixEpochDateTimeConverter, {});
|
|
66
|
+
}
|
|
67
|
+
}));
|
|
68
|
+
const dateTimeContent = findFileContent(output, "UnixEpochDateTimeConverter.cs");
|
|
69
|
+
expect(dateTimeContent).toBeDefined();
|
|
70
|
+
expect(dateTimeContent).toContain("class UnixEpochDateTimeConverter");
|
|
71
|
+
expect(dateTimeContent).toContain("AddMilliseconds");
|
|
72
|
+
const offsetContent = findFileContent(output, "UnixEpochDateTimeOffsetConverter.cs");
|
|
73
|
+
expect(offsetContent).toBeDefined();
|
|
74
|
+
expect(offsetContent).toContain("class UnixEpochDateTimeOffsetConverter");
|
|
75
|
+
expect(offsetContent).toContain("AddMilliseconds");
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe("HttpServiceExceptionFilter", () => {
|
|
79
|
+
it("renders exception filter and exception class", () => {
|
|
80
|
+
const output = render(_$createComponent(Output, {
|
|
81
|
+
get namePolicy() {
|
|
82
|
+
return createCSharpNamePolicy();
|
|
83
|
+
},
|
|
84
|
+
get children() {
|
|
85
|
+
return _$createComponent(HttpServiceExceptionFilter, {});
|
|
86
|
+
}
|
|
87
|
+
}));
|
|
88
|
+
const content = findFileContent(output, "HttpServiceException.cs");
|
|
89
|
+
expect(content).toBeDefined();
|
|
90
|
+
expect(content).toContain("class HttpServiceExceptionFilter");
|
|
91
|
+
expect(content).toContain("IActionFilter, IOrderedFilter");
|
|
92
|
+
expect(content).toContain("class HttpServiceException");
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe("JsonSerializationProvider", () => {
|
|
96
|
+
it("renders provider with all converters registered", () => {
|
|
97
|
+
const output = render(_$createComponent(Output, {
|
|
98
|
+
get namePolicy() {
|
|
99
|
+
return createCSharpNamePolicy();
|
|
100
|
+
},
|
|
101
|
+
get children() {
|
|
102
|
+
return _$createComponent(JsonSerializationProvider, {});
|
|
103
|
+
}
|
|
104
|
+
}));
|
|
105
|
+
const content = findFileContent(output, "JsonSerializationProvider.cs");
|
|
106
|
+
expect(content).toBeDefined();
|
|
107
|
+
expect(content).toContain("class JsonSerializationProvider");
|
|
108
|
+
expect(content).toContain("IJsonSerializationProvider");
|
|
109
|
+
expect(content).toContain("virtual JsonSerializerOptions Options");
|
|
110
|
+
expect(content).toContain("virtual T? Deserialize");
|
|
111
|
+
expect(content).toContain("virtual string Serialize");
|
|
112
|
+
const ifaceContent = findFileContent(output, "IJsonSerializationProvider.cs");
|
|
113
|
+
expect(ifaceContent).toBeDefined();
|
|
114
|
+
expect(ifaceContent).toContain("interface IJsonSerializationProvider");
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
describe("JsonConverters", () => {
|
|
118
|
+
it("renders all converter files in lib directory", () => {
|
|
119
|
+
const output = render(_$createComponent(Output, {
|
|
120
|
+
get namePolicy() {
|
|
121
|
+
return createCSharpNamePolicy();
|
|
122
|
+
},
|
|
123
|
+
get children() {
|
|
124
|
+
return _$createComponent(JsonConverters, {});
|
|
125
|
+
}
|
|
126
|
+
}));
|
|
127
|
+
expect(findFileContent(output, "TimeSpanDurationConverter.cs")).toBeDefined();
|
|
128
|
+
expect(findFileContent(output, "Base64UrlJsonConverter.cs")).toBeDefined();
|
|
129
|
+
expect(findFileContent(output, "UnixEpochDateTimeConverter.cs")).toBeDefined();
|
|
130
|
+
expect(findFileContent(output, "UnixEpochDateTimeOffsetConverter.cs")).toBeDefined();
|
|
131
|
+
expect(findFileContent(output, "HttpServiceException.cs")).toBeDefined();
|
|
132
|
+
expect(findFileContent(output, "JsonSerializationProvider.cs")).toBeDefined();
|
|
133
|
+
expect(findFileContent(output, "IJsonSerializationProvider.cs")).toBeDefined();
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=json-converters.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Output","render","createCSharpNamePolicy","describe","expect","it","Base64UrlJsonConverter","HttpServiceExceptionFilter","JsonConverters","JsonSerializationProvider","TimeSpanDurationConverter","UnixEpochDateTimeConverter","findFileContent","output","pathSuffix","search","dir","item","contents","path","endsWith","Array","isArray","found","undefined","_$createComponent","namePolicy","children","content","toBeDefined","toContain","dateTimeContent","offsetContent","ifaceContent"],"sources":["../../../../src/components/serialization/json-converters.test.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,MAAM,EAAEC,MAAM,QAAQ,gBAAgB;AAC/C,SAASC,sBAAsB,QAAQ,kBAAkB;AACzD,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAC7C,SAASC,sBAAsB;AAC/B,SAASC,0BAA0B;AACnC,SAASC,cAAc;AACvB,SAASC,yBAAyB;AAClC,SAASC,yBAAyB;AAClC,SAASC,0BAA0B;AAEnC,SAASC,eAAeA,CAACC,MAAW,EAAEC,UAAkB,EAAsB;EAC5E,SAASC,MAAMA,CAACC,GAAQ,EAAsB;IAC5C,KAAK,MAAMC,IAAI,IAAID,GAAG,CAACE,QAAQ,EAAE;MAC/B,IACE,UAAU,IAAID,IAAI,IAClB,OAAOA,IAAI,CAACC,QAAQ,KAAK,QAAQ,KAChCD,IAAI,CAACE,IAAI,CAACC,QAAQ,CAAC,GAAG,GAAGN,UAAU,CAAC,IAAIG,IAAI,CAACE,IAAI,KAAKL,UAAU,CAAC,EAClE;QACA,OAAOG,IAAI,CAACC,QAAQ;MACtB;MACA,IAAI,UAAU,IAAID,IAAI,IAAII,KAAK,CAACC,OAAO,CAACL,IAAI,CAACC,QAAQ,CAAC,EAAE;QACtD,MAAMK,KAAK,GAAGR,MAAM,CAACE,IAAI,CAAC;QAC1B,IAAIM,KAAK,EAAE,OAAOA,KAAK;MACzB;IACF;IACA,OAAOC,SAAS;EAClB;EACA,OAAOT,MAAM,CAACF,MAAM,CAAC;AACvB;AAEAV,QAAQ,CAAC,2BAA2B,EAAE,MAAM;EAC1CE,EAAE,CAAC,yCAAyC,EAAE,MAAM;IAClD,MAAMQ,MAAM,GAAGZ,MAAM,CAAAwB,iBAAA,CAClBzB,MAAM;MAAA,IAAC0B,UAAUA,CAAA;QAAA,OAAExB,sBAAsB,CAAC,CAAC;MAAA;MAAA,IAAAyB,SAAA;QAAA,OAAAF,iBAAA,CACzCf,yBAAyB;MAAA;IAAA,EAE9B,CAAC;IACD,MAAMkB,OAAO,GAAGhB,eAAe,CAACC,MAAM,EAAE,8BAA8B,CAAC;IACvET,MAAM,CAACwB,OAAO,CAAC,CAACC,WAAW,CAAC,CAAC;IAC7BzB,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,iCAAiC,CAAC;IAC5D1B,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,uBAAuB,CAAC;EACpD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF3B,QAAQ,CAAC,wBAAwB,EAAE,MAAM;EACvCE,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAC1D,MAAMQ,MAAM,GAAGZ,MAAM,CAAAwB,iBAAA,CAClBzB,MAAM;MAAA,IAAC0B,UAAUA,CAAA;QAAA,OAAExB,sBAAsB,CAAC,CAAC;MAAA;MAAA,IAAAyB,SAAA;QAAA,OAAAF,iBAAA,CACzCnB,sBAAsB;MAAA;IAAA,EAE3B,CAAC;IACD,MAAMsB,OAAO,GAAGhB,eAAe,CAACC,MAAM,EAAE,2BAA2B,CAAC;IACpET,MAAM,CAACwB,OAAO,CAAC,CAACC,WAAW,CAAC,CAAC;IAC7BzB,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,8BAA8B,CAAC;IACzD1B,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,0BAA0B,CAAC;EACvD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF3B,QAAQ,CAAC,4BAA4B,EAAE,MAAM;EAC3CE,EAAE,CAAC,yCAAyC,EAAE,MAAM;IAClD,MAAMQ,MAAM,GAAGZ,MAAM,CAAAwB,iBAAA,CAClBzB,MAAM;MAAA,IAAC0B,UAAUA,CAAA;QAAA,OAAExB,sBAAsB,CAAC,CAAC;MAAA;MAAA,IAAAyB,SAAA;QAAA,OAAAF,iBAAA,CACzCd,0BAA0B;MAAA;IAAA,EAE/B,CAAC;IACD,MAAMoB,eAAe,GAAGnB,eAAe,CAACC,MAAM,EAAE,+BAA+B,CAAC;IAChFT,MAAM,CAAC2B,eAAe,CAAC,CAACF,WAAW,CAAC,CAAC;IACrCzB,MAAM,CAAC2B,eAAe,CAAC,CAACD,SAAS,CAAC,kCAAkC,CAAC;IACrE1B,MAAM,CAAC2B,eAAe,CAAC,CAACD,SAAS,CAAC,iBAAiB,CAAC;IAEpD,MAAME,aAAa,GAAGpB,eAAe,CAACC,MAAM,EAAE,qCAAqC,CAAC;IACpFT,MAAM,CAAC4B,aAAa,CAAC,CAACH,WAAW,CAAC,CAAC;IACnCzB,MAAM,CAAC4B,aAAa,CAAC,CAACF,SAAS,CAAC,wCAAwC,CAAC;IACzE1B,MAAM,CAAC4B,aAAa,CAAC,CAACF,SAAS,CAAC,iBAAiB,CAAC;EACpD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF3B,QAAQ,CAAC,4BAA4B,EAAE,MAAM;EAC3CE,EAAE,CAAC,8CAA8C,EAAE,MAAM;IACvD,MAAMQ,MAAM,GAAGZ,MAAM,CAAAwB,iBAAA,CAClBzB,MAAM;MAAA,IAAC0B,UAAUA,CAAA;QAAA,OAAExB,sBAAsB,CAAC,CAAC;MAAA;MAAA,IAAAyB,SAAA;QAAA,OAAAF,iBAAA,CACzClB,0BAA0B;MAAA;IAAA,EAE/B,CAAC;IACD,MAAMqB,OAAO,GAAGhB,eAAe,CAACC,MAAM,EAAE,yBAAyB,CAAC;IAClET,MAAM,CAACwB,OAAO,CAAC,CAACC,WAAW,CAAC,CAAC;IAC7BzB,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,kCAAkC,CAAC;IAC7D1B,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,+BAA+B,CAAC;IAC1D1B,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,4BAA4B,CAAC;EACzD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF3B,QAAQ,CAAC,2BAA2B,EAAE,MAAM;EAC1CE,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAC1D,MAAMQ,MAAM,GAAGZ,MAAM,CAAAwB,iBAAA,CAClBzB,MAAM;MAAA,IAAC0B,UAAUA,CAAA;QAAA,OAAExB,sBAAsB,CAAC,CAAC;MAAA;MAAA,IAAAyB,SAAA;QAAA,OAAAF,iBAAA,CACzChB,yBAAyB;MAAA;IAAA,EAE9B,CAAC;IACD,MAAMmB,OAAO,GAAGhB,eAAe,CAACC,MAAM,EAAE,8BAA8B,CAAC;IACvET,MAAM,CAACwB,OAAO,CAAC,CAACC,WAAW,CAAC,CAAC;IAC7BzB,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,iCAAiC,CAAC;IAC5D1B,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,4BAA4B,CAAC;IACvD1B,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,uCAAuC,CAAC;IAClE1B,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,wBAAwB,CAAC;IACnD1B,MAAM,CAACwB,OAAO,CAAC,CAACE,SAAS,CAAC,0BAA0B,CAAC;IAErD,MAAMG,YAAY,GAAGrB,eAAe,CAACC,MAAM,EAAE,+BAA+B,CAAC;IAC7ET,MAAM,CAAC6B,YAAY,CAAC,CAACJ,WAAW,CAAC,CAAC;IAClCzB,MAAM,CAAC6B,YAAY,CAAC,CAACH,SAAS,CAAC,sCAAsC,CAAC;EACxE,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM;EAC/BE,EAAE,CAAC,8CAA8C,EAAE,MAAM;IACvD,MAAMQ,MAAM,GAAGZ,MAAM,CAAAwB,iBAAA,CAClBzB,MAAM;MAAA,IAAC0B,UAAUA,CAAA;QAAA,OAAExB,sBAAsB,CAAC,CAAC;MAAA;MAAA,IAAAyB,SAAA;QAAA,OAAAF,iBAAA,CACzCjB,cAAc;MAAA;IAAA,EAEnB,CAAC;IACDJ,MAAM,CAACQ,eAAe,CAACC,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAACgB,WAAW,CAAC,CAAC;IAC7EzB,MAAM,CAACQ,eAAe,CAACC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAACgB,WAAW,CAAC,CAAC;IAC1EzB,MAAM,CAACQ,eAAe,CAACC,MAAM,EAAE,+BAA+B,CAAC,CAAC,CAACgB,WAAW,CAAC,CAAC;IAC9EzB,MAAM,CAACQ,eAAe,CAACC,MAAM,EAAE,qCAAqC,CAAC,CAAC,CAACgB,WAAW,CAAC,CAAC;IACpFzB,MAAM,CAACQ,eAAe,CAACC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAACgB,WAAW,CAAC,CAAC;IACxEzB,MAAM,CAACQ,eAAe,CAACC,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAACgB,WAAW,CAAC,CAAC;IAC7EzB,MAAM,CAACQ,eAAe,CAACC,MAAM,EAAE,+BAA+B,CAAC,CAAC,CAACgB,WAAW,CAAC,CAAC;EAChF,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Children } from "@alloy-js/core";
|
|
2
|
+
/**
|
|
3
|
+
* Renders the IJsonSerializationProvider interface and JsonSerializationProvider class.
|
|
4
|
+
* These are emitted as separate files to match the old emitter output.
|
|
5
|
+
*/
|
|
6
|
+
export declare function JsonSerializationProvider(): Children;
|
|
7
|
+
//# sourceMappingURL=json-serialization-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-serialization-provider.d.ts","sourceRoot":"","sources":["../../../../src/components/serialization/json-serialization-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAIrD;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,QAAQ,CAgFpD"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { code } from "@alloy-js/core";
|
|
3
|
+
import { Namespace } from "@alloy-js/csharp";
|
|
4
|
+
import { CSharpFile } from "../csharp-file.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Renders the IJsonSerializationProvider interface and JsonSerializationProvider class.
|
|
8
|
+
* These are emitted as separate files to match the old emitter output.
|
|
9
|
+
*/
|
|
10
|
+
export function JsonSerializationProvider() {
|
|
11
|
+
return [_$createComponent(CSharpFile, {
|
|
12
|
+
path: "IJsonSerializationProvider.cs",
|
|
13
|
+
using: ["System.Text.Json", "System.Text.Json.Serialization"],
|
|
14
|
+
get children() {
|
|
15
|
+
return _$createComponent(Namespace, {
|
|
16
|
+
name: "TypeSpec.Helpers",
|
|
17
|
+
children: code`
|
|
18
|
+
/// <summary>
|
|
19
|
+
/// Interface for Json serialization, suitable for providing a service in ASP.Net dependency injection
|
|
20
|
+
/// </summary>
|
|
21
|
+
public interface IJsonSerializationProvider
|
|
22
|
+
{
|
|
23
|
+
/// <summary>
|
|
24
|
+
/// Serialize an object to a JSON string
|
|
25
|
+
/// </summary>
|
|
26
|
+
/// <typeparam name="T">The type of the object</typeparam>
|
|
27
|
+
/// <param name="value">The object to serialize</param>
|
|
28
|
+
/// <returns>A string representing the serialized object</returns>
|
|
29
|
+
string Serialize<T>(T value);
|
|
30
|
+
|
|
31
|
+
/// <summary>
|
|
32
|
+
/// Create an object from a json string
|
|
33
|
+
/// </summary>
|
|
34
|
+
/// <typeparam name="T">The type of the object represented in the string</typeparam>
|
|
35
|
+
/// <param name="value">The strign to deserialize</param>
|
|
36
|
+
/// <returns>The deserialized object, or null</returns>
|
|
37
|
+
T? Deserialize<T>(string value);
|
|
38
|
+
}
|
|
39
|
+
`
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}), _$createComponent(CSharpFile, {
|
|
43
|
+
path: "JsonSerializationProvider.cs",
|
|
44
|
+
using: ["System.Text.Json", "System.Text.Json.Serialization"],
|
|
45
|
+
get children() {
|
|
46
|
+
return _$createComponent(Namespace, {
|
|
47
|
+
name: "TypeSpec.Helpers",
|
|
48
|
+
children: code`
|
|
49
|
+
/// <summary>
|
|
50
|
+
/// Standard implementation of IJsonSerializationProvider
|
|
51
|
+
/// </summary>
|
|
52
|
+
public class JsonSerializationProvider : IJsonSerializationProvider
|
|
53
|
+
{
|
|
54
|
+
/// <summary>
|
|
55
|
+
/// The options to use for serialization
|
|
56
|
+
/// </summary>
|
|
57
|
+
public virtual JsonSerializerOptions Options { get; } = new JsonSerializerOptions
|
|
58
|
+
{
|
|
59
|
+
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
|
|
60
|
+
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/// <summary>
|
|
64
|
+
/// Create an object from a json string
|
|
65
|
+
/// </summary>
|
|
66
|
+
/// <typeparam name="T">The type of the object represented in the string</typeparam>
|
|
67
|
+
/// <param name="value">The strign to deserialize</param>
|
|
68
|
+
/// <returns>The deserialized object, or null</returns>
|
|
69
|
+
public virtual T? Deserialize<T>(string value)
|
|
70
|
+
{
|
|
71
|
+
return JsonSerializer.Deserialize<T>(value, Options);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/// <summary>
|
|
75
|
+
/// Serialize an object to a JSON string
|
|
76
|
+
/// </summary>
|
|
77
|
+
/// <typeparam name="T">The type of the object</typeparam>
|
|
78
|
+
/// <param name="value">The object to serialize</param>
|
|
79
|
+
/// <returns>A string representing the serialized object</returns>
|
|
80
|
+
public virtual string Serialize<T>(T value)
|
|
81
|
+
{
|
|
82
|
+
return JsonSerializer.Serialize(value, Options);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
`
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
})];
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=json-serialization-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["code","Namespace","CSharpFile","JsonSerializationProvider","_$createComponent","path","using","children","name"],"sources":["../../../../src/components/serialization/json-serialization-provider.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,IAAI,QAAuB,gBAAgB;AACpD,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,UAAU;;AAEnB;AACA;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CAAA,EAAa;EACpD,QAAAC,iBAAA,CAEKF,UAAU;IACTG,IAAI;IACJC,KAAK,EAAE,CAAC,kBAAkB,EAAE,gCAAgC,CAAC;IAAA,IAAAC,SAAA;MAAA,OAAAH,iBAAA,CAE5DH,SAAS;QAACO,IAAI;QAAAD,QAAA,EACZP,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAAW;IAAA;EAAA,IAAAI,iBAAA,CAGJF,UAAU;IACTG,IAAI;IACJC,KAAK,EAAE,CAAC,kBAAkB,EAAE,gCAAgC,CAAC;IAAA,IAAAC,SAAA;MAAA,OAAAH,iBAAA,CAE5DH,SAAS;QAACO,IAAI;QAAAD,QAAA,EACZP,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAAW;IAAA;EAAA;AAKX","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Children } from "@alloy-js/core";
|
|
2
|
+
/**
|
|
3
|
+
* Renders the TimeSpanDurationConverter JSON converter.
|
|
4
|
+
* Converts between ISO 8601 duration strings and TimeSpan values.
|
|
5
|
+
*/
|
|
6
|
+
export declare function TimeSpanDurationConverter(): Children;
|
|
7
|
+
//# sourceMappingURL=time-span-duration-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-span-duration-converter.d.ts","sourceRoot":"","sources":["../../../../src/components/serialization/time-span-duration-converter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAIrD;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,QAAQ,CAiCpD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { code } from "@alloy-js/core";
|
|
3
|
+
import { Namespace } from "@alloy-js/csharp";
|
|
4
|
+
import { CSharpFile } from "../csharp-file.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Renders the TimeSpanDurationConverter JSON converter.
|
|
8
|
+
* Converts between ISO 8601 duration strings and TimeSpan values.
|
|
9
|
+
*/
|
|
10
|
+
export function TimeSpanDurationConverter() {
|
|
11
|
+
return _$createComponent(CSharpFile, {
|
|
12
|
+
path: "TimeSpanDurationConverter.cs",
|
|
13
|
+
using: ["System.Text.Json", "System.Text.Json.Serialization", "System.Xml"],
|
|
14
|
+
get children() {
|
|
15
|
+
return _$createComponent(Namespace, {
|
|
16
|
+
name: "TypeSpec.Helpers.JsonConverters",
|
|
17
|
+
children: code`
|
|
18
|
+
/// <summary>
|
|
19
|
+
/// Converts between Json duration and .Net TimeSpan
|
|
20
|
+
/// </summary>
|
|
21
|
+
public class TimeSpanDurationConverter : JsonConverter<TimeSpan>
|
|
22
|
+
{
|
|
23
|
+
public override TimeSpan Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
|
24
|
+
{
|
|
25
|
+
if (typeToConvert != typeof(TimeSpan))
|
|
26
|
+
throw new ArgumentException($"Cannot apply converter {this.GetType().FullName} to type {typeToConvert.FullName}");
|
|
27
|
+
|
|
28
|
+
var value = reader.GetString();
|
|
29
|
+
if (string.IsNullOrWhiteSpace(value))
|
|
30
|
+
return TimeSpan.MinValue;
|
|
31
|
+
return XmlConvert.ToTimeSpan(value);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public override void Write(Utf8JsonWriter writer, TimeSpan value, JsonSerializerOptions options)
|
|
35
|
+
{
|
|
36
|
+
writer.WriteStringValue(XmlConvert.ToString(value));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
`
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=time-span-duration-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["code","Namespace","CSharpFile","TimeSpanDurationConverter","_$createComponent","path","using","children","name"],"sources":["../../../../src/components/serialization/time-span-duration-converter.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,IAAI,QAAuB,gBAAgB;AACpD,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,UAAU;;AAEnB;AACA;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CAAA,EAAa;EACpD,OAAAC,iBAAA,CACGF,UAAU;IACTG,IAAI;IACJC,KAAK,EAAE,CAAC,kBAAkB,EAAE,gCAAgC,EAAE,YAAY,CAAC;IAAA,IAAAC,SAAA;MAAA,OAAAH,iBAAA,CAE1EH,SAAS;QAACO,IAAI;QAAAD,QAAA,EACZP,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAAS;IAAA;EAAA;AAIT","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Children } from "@alloy-js/core";
|
|
2
|
+
/**
|
|
3
|
+
* Renders the UnixEpochDateTimeConverter (DateTime) and UnixEpochDateTimeOffsetConverter (DateTimeOffset).
|
|
4
|
+
* Converts between Unix epoch timestamps and DateTime/DateTimeOffset values.
|
|
5
|
+
*/
|
|
6
|
+
export declare function UnixEpochDateTimeConverter(): Children;
|
|
7
|
+
//# sourceMappingURL=unix-epoch-date-time-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unix-epoch-date-time-converter.d.ts","sourceRoot":"","sources":["../../../../src/components/serialization/unix-epoch-date-time-converter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAIrD;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,QAAQ,CA6DrD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { code } from "@alloy-js/core";
|
|
3
|
+
import { Namespace } from "@alloy-js/csharp";
|
|
4
|
+
import { CSharpFile } from "../csharp-file.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Renders the UnixEpochDateTimeConverter (DateTime) and UnixEpochDateTimeOffsetConverter (DateTimeOffset).
|
|
8
|
+
* Converts between Unix epoch timestamps and DateTime/DateTimeOffset values.
|
|
9
|
+
*/
|
|
10
|
+
export function UnixEpochDateTimeConverter() {
|
|
11
|
+
return [_$createComponent(CSharpFile, {
|
|
12
|
+
path: "UnixEpochDateTimeConverter.cs",
|
|
13
|
+
using: ["System.Text.Json", "System.Text.Json.Serialization"],
|
|
14
|
+
get children() {
|
|
15
|
+
return _$createComponent(Namespace, {
|
|
16
|
+
name: "TypeSpec.Helpers.JsonConverters",
|
|
17
|
+
children: code`
|
|
18
|
+
/// <summary>
|
|
19
|
+
/// Converts between an integer timestamp and a .Net DateTime
|
|
20
|
+
/// </summary>
|
|
21
|
+
public sealed class UnixEpochDateTimeConverter : JsonConverter<DateTime>
|
|
22
|
+
{
|
|
23
|
+
static readonly DateTime s_epoch = new DateTime(1970, 1, 1, 0, 0, 0);
|
|
24
|
+
|
|
25
|
+
public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
|
26
|
+
{
|
|
27
|
+
var formatted = reader.GetInt64()!;
|
|
28
|
+
return s_epoch.AddMilliseconds(formatted);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
|
|
32
|
+
{
|
|
33
|
+
long unixTime = Convert.ToInt64((value - s_epoch).TotalMilliseconds);
|
|
34
|
+
writer.WriteNumberValue(unixTime);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
`
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}), _$createComponent(CSharpFile, {
|
|
41
|
+
path: "UnixEpochDateTimeOffsetConverter.cs",
|
|
42
|
+
using: ["System.Text.Json", "System.Text.Json.Serialization"],
|
|
43
|
+
get children() {
|
|
44
|
+
return _$createComponent(Namespace, {
|
|
45
|
+
name: "TypeSpec.Helpers.JsonConverters",
|
|
46
|
+
children: code`
|
|
47
|
+
/// <summary>
|
|
48
|
+
/// Converts between a Unix TimeStamp and a .Net DateTimeOffset
|
|
49
|
+
/// </summary>
|
|
50
|
+
public sealed class UnixEpochDateTimeOffsetConverter : JsonConverter<DateTimeOffset>
|
|
51
|
+
{
|
|
52
|
+
static readonly DateTimeOffset s_epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
|
|
53
|
+
|
|
54
|
+
public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
|
55
|
+
{
|
|
56
|
+
var formatted = reader.GetInt64()!;
|
|
57
|
+
return s_epoch.AddMilliseconds(formatted);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonSerializerOptions options)
|
|
61
|
+
{
|
|
62
|
+
long unixTime = Convert.ToInt64((value - s_epoch).TotalMilliseconds);
|
|
63
|
+
writer.WriteNumberValue(unixTime);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
`
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
})];
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=unix-epoch-date-time-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["code","Namespace","CSharpFile","UnixEpochDateTimeConverter","_$createComponent","path","using","children","name"],"sources":["../../../../src/components/serialization/unix-epoch-date-time-converter.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,IAAI,QAAuB,gBAAgB;AACpD,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,UAAU;;AAEnB;AACA;AACA;AACA;AACA,OAAO,SAASC,0BAA0BA,CAAA,EAAa;EACrD,QAAAC,iBAAA,CAEKF,UAAU;IACTG,IAAI;IACJC,KAAK,EAAE,CAAC,kBAAkB,EAAE,gCAAgC,CAAC;IAAA,IAAAC,SAAA;MAAA,OAAAH,iBAAA,CAE5DH,SAAS;QAACO,IAAI;QAAAD,QAAA,EACZP,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAAW;IAAA;EAAA,IAAAI,iBAAA,CAGJF,UAAU;IACTG,IAAI;IACJC,KAAK,EAAE,CAAC,kBAAkB,EAAE,gCAAgC,CAAC;IAAA,IAAAC,SAAA;MAAA,OAAAH,iBAAA,CAE5DH,SAAS;QAACO,IAAI;QAAAD,QAAA,EACZP,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAAW;IAAA;EAAA;AAKX","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type Children } from "@alloy-js/core";
|
|
2
|
+
import type { Type } from "@typespec/compiler";
|
|
3
|
+
import type { Typekit } from "@typespec/compiler/typekit";
|
|
4
|
+
import { Experimental_ComponentOverridesConfig } from "@typespec/emitter-framework";
|
|
5
|
+
export interface TypeExpressionProps {
|
|
6
|
+
type: Type;
|
|
7
|
+
}
|
|
8
|
+
export { efRefkey } from "@typespec/emitter-framework/csharp";
|
|
9
|
+
/**
|
|
10
|
+
* Wrapper around emitter-framework's TypeExpression that handles
|
|
11
|
+
* additional type kinds the server emitter encounters.
|
|
12
|
+
*/
|
|
13
|
+
export declare function TypeExpression(props: TypeExpressionProps): Children;
|
|
14
|
+
/**
|
|
15
|
+
* Server-specific scalar overrides for TypeExpression.
|
|
16
|
+
* Differences from EF defaults:
|
|
17
|
+
* - `plainDate` → `DateTime` (not `DateOnly`)
|
|
18
|
+
* - `plainTime` → `DateTime` (not `TimeOnly`)
|
|
19
|
+
* - `url` → `string` (not `Uri`)
|
|
20
|
+
* - Use CLR type names (SByte, Byte, Int16, etc.) instead of C# keywords
|
|
21
|
+
* - `safeint` → `long` (not `int`)
|
|
22
|
+
*/
|
|
23
|
+
export declare function createServerScalarOverrides($: Typekit): Experimental_ComponentOverridesConfig;
|
|
24
|
+
//# sourceMappingURL=type-expression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-expression.d.ts","sourceRoot":"","sources":["../../../../src/components/type-expression/type-expression.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAU,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,qCAAqC,EAAU,MAAM,6BAA6B,CAAC;AAY5F,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC;CACZ;AAGD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAE9D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,QAAQ,CAoInE;AAoDD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,OAAO,GAAG,qCAAqC,CAyB7F"}
|