@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,55 @@
|
|
|
1
|
+
import { isStdNamespace } from "@typespec/compiler";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Gets the sub-namespace path of a type's namespace relative to the service namespace.
|
|
5
|
+
* For example, if the service namespace is "Microsoft.Contoso" and the type is in
|
|
6
|
+
* "Microsoft.Contoso.Colors", returns ["Colors"].
|
|
7
|
+
* Returns an empty array if the type is in the service namespace itself.
|
|
8
|
+
*/
|
|
9
|
+
export function getSubNamespaceParts(typeNs, serviceNs) {
|
|
10
|
+
if (!typeNs || !serviceNs) return [];
|
|
11
|
+
|
|
12
|
+
// Build full namespace chain for the type
|
|
13
|
+
const typeParts = [];
|
|
14
|
+
let current = typeNs;
|
|
15
|
+
while (current && current.name) {
|
|
16
|
+
typeParts.unshift(current);
|
|
17
|
+
current = current.namespace;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Build full namespace chain for the service
|
|
21
|
+
const serviceParts = [];
|
|
22
|
+
current = serviceNs;
|
|
23
|
+
while (current && current.name) {
|
|
24
|
+
serviceParts.unshift(current);
|
|
25
|
+
current = current.namespace;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Find the sub-namespace parts after the service namespace
|
|
29
|
+
if (typeParts.length <= serviceParts.length) return [];
|
|
30
|
+
|
|
31
|
+
// Verify the service namespace is a prefix
|
|
32
|
+
for (let i = 0; i < serviceParts.length; i++) {
|
|
33
|
+
if (typeParts[i] !== serviceParts[i]) return [];
|
|
34
|
+
}
|
|
35
|
+
return typeParts.slice(serviceParts.length).map(ns => ns.name);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Finds the service namespace (the first namespace with content).
|
|
40
|
+
*/
|
|
41
|
+
export function findServiceNamespace(globalNs) {
|
|
42
|
+
function findServiceNs(ns) {
|
|
43
|
+
for (const child of ns.namespaces.values()) {
|
|
44
|
+
if (isStdNamespace(child)) continue;
|
|
45
|
+
const hasContent = child.models.size > 0 || child.interfaces.size > 0 || child.operations.size > 0 || child.enums.size > 0;
|
|
46
|
+
if (hasContent) return child;
|
|
47
|
+
const deeper = findServiceNs(child);
|
|
48
|
+
if (deeper) return deeper;
|
|
49
|
+
return child;
|
|
50
|
+
}
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
return findServiceNs(globalNs);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=namespace-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isStdNamespace","getSubNamespaceParts","typeNs","serviceNs","typeParts","current","name","unshift","namespace","serviceParts","length","i","slice","map","ns","findServiceNamespace","globalNs","findServiceNs","child","namespaces","values","hasContent","models","size","interfaces","operations","enums","deeper","undefined"],"sources":["../../../src/utils/namespace-utils.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,cAAc,QAAwC,oBAAoB;;AAEnF;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAClCC,MAAgC,EAChCC,SAAmC,EACzB;EACV,IAAI,CAACD,MAAM,IAAI,CAACC,SAAS,EAAE,OAAO,EAAE;;EAEpC;EACA,MAAMC,SAAyB,GAAG,EAAE;EACpC,IAAIC,OAAiC,GAAGH,MAAM;EAC9C,OAAOG,OAAO,IAAIA,OAAO,CAACC,IAAI,EAAE;IAC9BF,SAAS,CAACG,OAAO,CAACF,OAAO,CAAC;IAC1BA,OAAO,GAAGA,OAAO,CAACG,SAAS;EAC7B;;EAEA;EACA,MAAMC,YAA4B,GAAG,EAAE;EACvCJ,OAAO,GAAGF,SAAS;EACnB,OAAOE,OAAO,IAAIA,OAAO,CAACC,IAAI,EAAE;IAC9BG,YAAY,CAACF,OAAO,CAACF,OAAO,CAAC;IAC7BA,OAAO,GAAGA,OAAO,CAACG,SAAS;EAC7B;;EAEA;EACA,IAAIJ,SAAS,CAACM,MAAM,IAAID,YAAY,CAACC,MAAM,EAAE,OAAO,EAAE;;EAEtD;EACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,YAAY,CAACC,MAAM,EAAEC,CAAC,EAAE,EAAE;IAC5C,IAAIP,SAAS,CAACO,CAAC,CAAC,KAAKF,YAAY,CAACE,CAAC,CAAC,EAAE,OAAO,EAAE;EACjD;EAEA,OAAOP,SAAS,CAACQ,KAAK,CAACH,YAAY,CAACC,MAAM,CAAC,CAACG,GAAG,CAAEC,EAAE,IAAKA,EAAE,CAACR,IAAI,CAAC;AAClE;;AAEA;AACA;AACA;AACA,OAAO,SAASS,oBAAoBA,CAACC,QAAsB,EAA4B;EACrF,SAASC,aAAaA,CAACH,EAAgB,EAA4B;IACjE,KAAK,MAAMI,KAAK,IAAIJ,EAAE,CAACK,UAAU,CAACC,MAAM,CAAC,CAAC,EAAE;MAC1C,IAAIpB,cAAc,CAACkB,KAAK,CAAC,EAAE;MAC3B,MAAMG,UAAU,GACdH,KAAK,CAACI,MAAM,CAACC,IAAI,GAAG,CAAC,IACrBL,KAAK,CAACM,UAAU,CAACD,IAAI,GAAG,CAAC,IACzBL,KAAK,CAACO,UAAU,CAACF,IAAI,GAAG,CAAC,IACzBL,KAAK,CAACQ,KAAK,CAACH,IAAI,GAAG,CAAC;MACtB,IAAIF,UAAU,EAAE,OAAOH,KAAK;MAC5B,MAAMS,MAAM,GAAGV,aAAa,CAACC,KAAK,CAAC;MACnC,IAAIS,MAAM,EAAE,OAAOA,MAAM;MACzB,OAAOT,KAAK;IACd;IACA,OAAOU,SAAS;EAClB;EACA,OAAOX,aAAa,CAACD,QAAQ,CAAC;AAChC","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare enum NameCasingType {
|
|
2
|
+
Class = 0,
|
|
3
|
+
Constant = 1,
|
|
4
|
+
Method = 2,
|
|
5
|
+
Namespace = 3,
|
|
6
|
+
Parameter = 4,
|
|
7
|
+
Property = 5,
|
|
8
|
+
Variable = 6
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Checks if a string is a valid C# identifier.
|
|
12
|
+
* Optionally allows dots for namespace identifiers.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isValidCSharpIdentifier(identifier: string, isNamespace?: boolean): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Replaces C# reserved words with safe alternatives (e.g., "class" → "ClassName").
|
|
17
|
+
*/
|
|
18
|
+
export declare function replaceCSharpReservedWord(identifier: string, context?: NameCasingType): string;
|
|
19
|
+
/**
|
|
20
|
+
* Converts a name to a valid C# identifier with appropriate casing.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCSharpIdentifier(name: string, context?: NameCasingType, checkReserved?: boolean): string;
|
|
23
|
+
/**
|
|
24
|
+
* Replaces an invalid character at a given position with a safe alternative.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getValidChar(target: string, position: number): string;
|
|
27
|
+
/**
|
|
28
|
+
* Transforms an invalid identifier into a valid one by replacing bad characters.
|
|
29
|
+
*/
|
|
30
|
+
export declare function transformInvalidIdentifier(name: string): string;
|
|
31
|
+
//# sourceMappingURL=naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../../src/utils/naming.ts"],"names":[],"mappings":"AAyIA,oBAAY,cAAc;IACxB,KAAK,IAAA;IACL,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,SAAS,IAAA;IACT,SAAS,IAAA;IACT,QAAQ,IAAA;IACR,QAAQ,IAAA;CACT;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,OAAO,CAGjG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CAM9F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAqC,EAC9C,aAAa,GAAE,OAAc,GAC5B,MAAM,CAmBR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOrE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/D"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { camelCase, pascalCase } from "change-case";
|
|
2
|
+
|
|
3
|
+
/** C# reserved keywords that must be escaped in identifiers. */
|
|
4
|
+
const reservedWords = ["abstract", "as", "base", "bool", "boolean", "break", "byte", "case", "catch", "char", "checked", "class", "const", "continue", "decimal", "default", "do", "double", "else", "enum", "event", "explicit", "extern", "false", "finally", "fixed", "float", "for", "foreach", "goto", "if", "implicit", "in", "int", "interface", "internal", "is", "lock", "long", "namespace", "new", "null", "object", "operator", "out", "override", "params", "private", "protected", "public", "readonly", "ref", "return", "sbyte", "sealed", "short", "sizeof", "stackalloc", "static", "string", "struct", "switch", "this", "throw", "true", "try", "type", "typeof", "uint", "ulong", "unchecked", "unsafe", "ushort", "using", "virtual", "void", "volatile", "while"];
|
|
5
|
+
|
|
6
|
+
/** C# contextual keywords that are reserved in certain contexts. */
|
|
7
|
+
const contextualWords = ["add", "allows", "alias", "and", "ascending", "args", "async", "await", "by", "descending", "dynamic", "equals", "field", "file", "from", "get", "global", "group", "init", "into", "join", "let", "managed", "nameof", "nint", "not", "notnull", "nuint", "on", "or", "orderby", "partial", "record", "remove", "required", "scoped", "select", "set", "unmanaged", "value", "var", "when", "where", "with", "yield"];
|
|
8
|
+
const reservedMap = new Map([...reservedWords, ...contextualWords].map(w => [w, `${pascalCase(w)}Name`]));
|
|
9
|
+
export let NameCasingType = /*#__PURE__*/function (NameCasingType) {
|
|
10
|
+
NameCasingType[NameCasingType["Class"] = 0] = "Class";
|
|
11
|
+
NameCasingType[NameCasingType["Constant"] = 1] = "Constant";
|
|
12
|
+
NameCasingType[NameCasingType["Method"] = 2] = "Method";
|
|
13
|
+
NameCasingType[NameCasingType["Namespace"] = 3] = "Namespace";
|
|
14
|
+
NameCasingType[NameCasingType["Parameter"] = 4] = "Parameter";
|
|
15
|
+
NameCasingType[NameCasingType["Property"] = 5] = "Property";
|
|
16
|
+
NameCasingType[NameCasingType["Variable"] = 6] = "Variable";
|
|
17
|
+
return NameCasingType;
|
|
18
|
+
}({});
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Checks if a string is a valid C# identifier.
|
|
22
|
+
* Optionally allows dots for namespace identifiers.
|
|
23
|
+
*/
|
|
24
|
+
export function isValidCSharpIdentifier(identifier, isNamespace = false) {
|
|
25
|
+
if (!isNamespace) return identifier?.match(/^[A-Za-z_][\w]*$/) !== null;
|
|
26
|
+
return identifier?.match(/^[A-Za-z_][\w.]*$/) !== null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Replaces C# reserved words with safe alternatives (e.g., "class" → "ClassName").
|
|
31
|
+
*/
|
|
32
|
+
export function replaceCSharpReservedWord(identifier, context) {
|
|
33
|
+
const check = reservedMap.get(identifier.toLowerCase());
|
|
34
|
+
if (check !== undefined) {
|
|
35
|
+
return getCSharpIdentifier(check, context, false);
|
|
36
|
+
}
|
|
37
|
+
return identifier;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Converts a name to a valid C# identifier with appropriate casing.
|
|
42
|
+
*/
|
|
43
|
+
export function getCSharpIdentifier(name, context = NameCasingType.Class, checkReserved = true) {
|
|
44
|
+
if (name === undefined) return "Placeholder";
|
|
45
|
+
if (checkReserved) {
|
|
46
|
+
name = replaceCSharpReservedWord(name, context);
|
|
47
|
+
}
|
|
48
|
+
switch (context) {
|
|
49
|
+
case NameCasingType.Namespace:
|
|
50
|
+
{
|
|
51
|
+
const parts = [];
|
|
52
|
+
for (const part of name.split(".")) {
|
|
53
|
+
parts.push(getCSharpIdentifier(part, NameCasingType.Class));
|
|
54
|
+
}
|
|
55
|
+
return parts.join(".");
|
|
56
|
+
}
|
|
57
|
+
case NameCasingType.Parameter:
|
|
58
|
+
case NameCasingType.Variable:
|
|
59
|
+
return camelCase(name);
|
|
60
|
+
default:
|
|
61
|
+
return pascalCase(name);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Replaces an invalid character at a given position with a safe alternative.
|
|
67
|
+
*/
|
|
68
|
+
export function getValidChar(target, position) {
|
|
69
|
+
if (position === 0) {
|
|
70
|
+
if (target.match(/[A-Za-z_]/)) return target;
|
|
71
|
+
return `Generated_${target.match(/\w/) ? target : ""}`;
|
|
72
|
+
}
|
|
73
|
+
if (!target.match(/[\w]/)) return "_";
|
|
74
|
+
return target;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Transforms an invalid identifier into a valid one by replacing bad characters.
|
|
79
|
+
*/
|
|
80
|
+
export function transformInvalidIdentifier(name) {
|
|
81
|
+
const chars = [];
|
|
82
|
+
for (let i = 0; i < name.length; ++i) {
|
|
83
|
+
chars.push(getValidChar(name.charAt(i), i));
|
|
84
|
+
}
|
|
85
|
+
return chars.join("");
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["camelCase","pascalCase","reservedWords","contextualWords","reservedMap","Map","map","w","NameCasingType","isValidCSharpIdentifier","identifier","isNamespace","match","replaceCSharpReservedWord","context","check","get","toLowerCase","undefined","getCSharpIdentifier","name","Class","checkReserved","Namespace","parts","part","split","push","join","Parameter","Variable","getValidChar","target","position","transformInvalidIdentifier","chars","i","length","charAt"],"sources":["../../../src/utils/naming.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAS,EAAEC,UAAU,QAAQ,aAAa;;AAEnD;AACA,MAAMC,aAAuB,GAAG,CAC9B,UAAU,EACV,IAAI,EACJ,MAAM,EACN,MAAM,EACN,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,MAAM,EACN,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,IAAI,EACJ,MAAM,EACN,MAAM,EACN,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,KAAK,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,UAAU,EACV,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,OAAO,EACP,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,MAAM,EACN,UAAU,EACV,OAAO,CACR;;AAED;AACA,MAAMC,eAAyB,GAAG,CAChC,KAAK,EACL,QAAQ,EACR,OAAO,EACP,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,KAAK,EACL,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,EACL,SAAS,EACT,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,WAAW,EACX,OAAO,EACP,KAAK,EACL,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,CACR;AAED,MAAMC,WAAgC,GAAG,IAAIC,GAAG,CAC9C,CAAC,GAAGH,aAAa,EAAE,GAAGC,eAAe,CAAC,CAACG,GAAG,CAAEC,CAAC,IAAK,CAACA,CAAC,EAAE,GAAGN,UAAU,CAACM,CAAC,CAAC,MAAM,CAAC,CAC/E,CAAC;AAED,WAAYC,cAAc,0BAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;;AAU1B;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAACC,UAAkB,EAAEC,WAAoB,GAAG,KAAK,EAAW;EACjG,IAAI,CAACA,WAAW,EAAE,OAAOD,UAAU,EAAEE,KAAK,CAAC,kBAAkB,CAAC,KAAK,IAAI;EACvE,OAAOF,UAAU,EAAEE,KAAK,CAAC,mBAAmB,CAAC,KAAK,IAAI;AACxD;;AAEA;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CAACH,UAAkB,EAAEI,OAAwB,EAAU;EAC9F,MAAMC,KAAK,GAAGX,WAAW,CAACY,GAAG,CAACN,UAAU,CAACO,WAAW,CAAC,CAAC,CAAC;EACvD,IAAIF,KAAK,KAAKG,SAAS,EAAE;IACvB,OAAOC,mBAAmB,CAACJ,KAAK,EAAED,OAAO,EAAE,KAAK,CAAC;EACnD;EACA,OAAOJ,UAAU;AACnB;;AAEA;AACA;AACA;AACA,OAAO,SAASS,mBAAmBA,CACjCC,IAAY,EACZN,OAAuB,GAAGN,cAAc,CAACa,KAAK,EAC9CC,aAAsB,GAAG,IAAI,EACrB;EACR,IAAIF,IAAI,KAAKF,SAAS,EAAE,OAAO,aAAa;EAC5C,IAAII,aAAa,EAAE;IACjBF,IAAI,GAAGP,yBAAyB,CAACO,IAAI,EAAEN,OAAO,CAAC;EACjD;EACA,QAAQA,OAAO;IACb,KAAKN,cAAc,CAACe,SAAS;MAAE;QAC7B,MAAMC,KAAe,GAAG,EAAE;QAC1B,KAAK,MAAMC,IAAI,IAAIL,IAAI,CAACM,KAAK,CAAC,GAAG,CAAC,EAAE;UAClCF,KAAK,CAACG,IAAI,CAACR,mBAAmB,CAACM,IAAI,EAAEjB,cAAc,CAACa,KAAK,CAAC,CAAC;QAC7D;QACA,OAAOG,KAAK,CAACI,IAAI,CAAC,GAAG,CAAC;MACxB;IACA,KAAKpB,cAAc,CAACqB,SAAS;IAC7B,KAAKrB,cAAc,CAACsB,QAAQ;MAC1B,OAAO9B,SAAS,CAACoB,IAAI,CAAC;IACxB;MACE,OAAOnB,UAAU,CAACmB,IAAI,CAAC;EAC3B;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASW,YAAYA,CAACC,MAAc,EAAEC,QAAgB,EAAU;EACrE,IAAIA,QAAQ,KAAK,CAAC,EAAE;IAClB,IAAID,MAAM,CAACpB,KAAK,CAAC,WAAW,CAAC,EAAE,OAAOoB,MAAM;IAC5C,OAAO,aAAaA,MAAM,CAACpB,KAAK,CAAC,IAAI,CAAC,GAAGoB,MAAM,GAAG,EAAE,EAAE;EACxD;EACA,IAAI,CAACA,MAAM,CAACpB,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG;EACrC,OAAOoB,MAAM;AACf;;AAEA;AACA;AACA;AACA,OAAO,SAASE,0BAA0BA,CAACd,IAAY,EAAU;EAC/D,MAAMe,KAAe,GAAG,EAAE;EAC1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhB,IAAI,CAACiB,MAAM,EAAE,EAAED,CAAC,EAAE;IACpCD,KAAK,CAACR,IAAI,CAACI,YAAY,CAACX,IAAI,CAACkB,MAAM,CAACF,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC;EAC7C;EACA,OAAOD,KAAK,CAACP,IAAI,CAAC,EAAE,CAAC;AACvB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.test.d.ts","sourceRoot":"","sources":["../../../src/utils/naming.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { getCSharpIdentifier, getValidChar, isValidCSharpIdentifier, NameCasingType, replaceCSharpReservedWord, transformInvalidIdentifier } from "./naming.js";
|
|
3
|
+
describe("getCSharpIdentifier", () => {
|
|
4
|
+
it("converts to PascalCase for class context", () => {
|
|
5
|
+
expect(getCSharpIdentifier("my-model", NameCasingType.Class)).toBe("MyModel");
|
|
6
|
+
});
|
|
7
|
+
it("converts to PascalCase for property context", () => {
|
|
8
|
+
expect(getCSharpIdentifier("some-property", NameCasingType.Property)).toBe("SomeProperty");
|
|
9
|
+
});
|
|
10
|
+
it("converts to camelCase for parameter context", () => {
|
|
11
|
+
expect(getCSharpIdentifier("some-param", NameCasingType.Parameter)).toBe("someParam");
|
|
12
|
+
});
|
|
13
|
+
it("converts to camelCase for variable context", () => {
|
|
14
|
+
expect(getCSharpIdentifier("my-variable", NameCasingType.Variable)).toBe("myVariable");
|
|
15
|
+
});
|
|
16
|
+
it("handles namespace context with dots", () => {
|
|
17
|
+
expect(getCSharpIdentifier("my-service.models", NameCasingType.Namespace)).toBe("MyService.Models");
|
|
18
|
+
});
|
|
19
|
+
it("replaces reserved words", () => {
|
|
20
|
+
expect(getCSharpIdentifier("class", NameCasingType.Class)).toBe("ClassName");
|
|
21
|
+
expect(getCSharpIdentifier("interface", NameCasingType.Class)).toBe("InterfaceName");
|
|
22
|
+
expect(getCSharpIdentifier("namespace", NameCasingType.Class)).toBe("NamespaceName");
|
|
23
|
+
});
|
|
24
|
+
it("replaces contextual keywords", () => {
|
|
25
|
+
expect(getCSharpIdentifier("async", NameCasingType.Class)).toBe("AsyncName");
|
|
26
|
+
expect(getCSharpIdentifier("value", NameCasingType.Class)).toBe("ValueName");
|
|
27
|
+
expect(getCSharpIdentifier("record", NameCasingType.Class)).toBe("RecordName");
|
|
28
|
+
});
|
|
29
|
+
it("returns Placeholder for undefined", () => {
|
|
30
|
+
expect(getCSharpIdentifier(undefined)).toBe("Placeholder");
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("isValidCSharpIdentifier", () => {
|
|
34
|
+
it("accepts valid identifiers", () => {
|
|
35
|
+
expect(isValidCSharpIdentifier("MyClass")).toBe(true);
|
|
36
|
+
expect(isValidCSharpIdentifier("_private")).toBe(true);
|
|
37
|
+
expect(isValidCSharpIdentifier("name123")).toBe(true);
|
|
38
|
+
});
|
|
39
|
+
it("rejects invalid identifiers", () => {
|
|
40
|
+
expect(isValidCSharpIdentifier("123start")).toBe(false);
|
|
41
|
+
expect(isValidCSharpIdentifier("has-dash")).toBe(false);
|
|
42
|
+
expect(isValidCSharpIdentifier("has space")).toBe(false);
|
|
43
|
+
});
|
|
44
|
+
it("accepts dots in namespace mode", () => {
|
|
45
|
+
expect(isValidCSharpIdentifier("My.Namespace.Here", true)).toBe(true);
|
|
46
|
+
});
|
|
47
|
+
it("rejects dots in non-namespace mode", () => {
|
|
48
|
+
expect(isValidCSharpIdentifier("My.Class", false)).toBe(false);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe("replaceCSharpReservedWord", () => {
|
|
52
|
+
it("replaces reserved words case-insensitively", () => {
|
|
53
|
+
expect(replaceCSharpReservedWord("class")).toBe("ClassName");
|
|
54
|
+
expect(replaceCSharpReservedWord("CLASS")).toBe("ClassName");
|
|
55
|
+
});
|
|
56
|
+
it("does not replace non-reserved words", () => {
|
|
57
|
+
expect(replaceCSharpReservedWord("myModel")).toBe("myModel");
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe("getValidChar", () => {
|
|
61
|
+
it("keeps valid starting characters", () => {
|
|
62
|
+
expect(getValidChar("A", 0)).toBe("A");
|
|
63
|
+
expect(getValidChar("_", 0)).toBe("_");
|
|
64
|
+
});
|
|
65
|
+
it("replaces invalid starting characters", () => {
|
|
66
|
+
expect(getValidChar("1", 0)).toBe("Generated_1");
|
|
67
|
+
expect(getValidChar("-", 0)).toBe("Generated_");
|
|
68
|
+
});
|
|
69
|
+
it("replaces non-word characters at other positions", () => {
|
|
70
|
+
expect(getValidChar("-", 1)).toBe("_");
|
|
71
|
+
expect(getValidChar(" ", 2)).toBe("_");
|
|
72
|
+
});
|
|
73
|
+
it("keeps valid characters at other positions", () => {
|
|
74
|
+
expect(getValidChar("a", 1)).toBe("a");
|
|
75
|
+
expect(getValidChar("3", 2)).toBe("3");
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe("transformInvalidIdentifier", () => {
|
|
79
|
+
it("transforms invalid identifier to valid one", () => {
|
|
80
|
+
expect(transformInvalidIdentifier("1foo-bar")).toBe("Generated_1foo_bar");
|
|
81
|
+
});
|
|
82
|
+
it("keeps already valid identifiers", () => {
|
|
83
|
+
expect(transformInvalidIdentifier("ValidName")).toBe("ValidName");
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=naming.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","getCSharpIdentifier","getValidChar","isValidCSharpIdentifier","NameCasingType","replaceCSharpReservedWord","transformInvalidIdentifier","Class","toBe","Property","Parameter","Variable","Namespace","undefined"],"sources":["../../../src/utils/naming.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../../src/utils/port.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAY,GAClB,OAAO,CAAC,MAAM,CAAC,CAWjB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createServer } from "net";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Find a free port in the given range by randomly probing.
|
|
5
|
+
*/
|
|
6
|
+
export async function getFreePort(minPort, maxPort, tries = 100) {
|
|
7
|
+
const min = Math.floor(minPort);
|
|
8
|
+
const max = Math.floor(maxPort);
|
|
9
|
+
if (tries <= 0) return min;
|
|
10
|
+
const diff = Math.abs(max - min);
|
|
11
|
+
const port = min + Math.floor(Math.random() * diff);
|
|
12
|
+
const free = await checkPort(port);
|
|
13
|
+
if (free) {
|
|
14
|
+
return port;
|
|
15
|
+
}
|
|
16
|
+
return await getFreePort(min, max, tries - 1);
|
|
17
|
+
}
|
|
18
|
+
function checkPort(port, timeout = 100) {
|
|
19
|
+
return new Promise(resolve => {
|
|
20
|
+
const server = createServer();
|
|
21
|
+
server.on("error", () => {
|
|
22
|
+
server.close();
|
|
23
|
+
resolve(false);
|
|
24
|
+
});
|
|
25
|
+
server.listen(port, () => {
|
|
26
|
+
setTimeout(() => {
|
|
27
|
+
server.close();
|
|
28
|
+
resolve(true);
|
|
29
|
+
}, timeout);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=port.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createServer","getFreePort","minPort","maxPort","tries","min","Math","floor","max","diff","abs","port","random","free","checkPort","timeout","Promise","resolve","server","on","close","listen","setTimeout"],"sources":["../../../src/utils/port.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAY,QAAQ,KAAK;;AAElC;AACA;AACA;AACA,OAAO,eAAeC,WAAWA,CAC/BC,OAAe,EACfC,OAAe,EACfC,KAAa,GAAG,GAAG,EACF;EACjB,MAAMC,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACL,OAAO,CAAC;EAC/B,MAAMM,GAAG,GAAGF,IAAI,CAACC,KAAK,CAACJ,OAAO,CAAC;EAC/B,IAAIC,KAAK,IAAI,CAAC,EAAE,OAAOC,GAAG;EAC1B,MAAMI,IAAI,GAAGH,IAAI,CAACI,GAAG,CAACF,GAAG,GAAGH,GAAG,CAAC;EAChC,MAAMM,IAAI,GAAGN,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACM,MAAM,CAAC,CAAC,GAAGH,IAAI,CAAC;EACnD,MAAMI,IAAI,GAAG,MAAMC,SAAS,CAACH,IAAI,CAAC;EAClC,IAAIE,IAAI,EAAE;IACR,OAAOF,IAAI;EACb;EACA,OAAO,MAAMV,WAAW,CAACI,GAAG,EAAEG,GAAG,EAAEJ,KAAK,GAAG,CAAC,CAAC;AAC/C;AAEA,SAASU,SAASA,CAACH,IAAY,EAAEI,OAAe,GAAG,GAAG,EAAoB;EACxE,OAAO,IAAIC,OAAO,CAAWC,OAAO,IAAK;IACvC,MAAMC,MAAM,GAAGlB,YAAY,CAAC,CAAC;IAC7BkB,MAAM,CAACC,EAAE,CAAC,OAAO,EAAE,MAAM;MACvBD,MAAM,CAACE,KAAK,CAAC,CAAC;MACdH,OAAO,CAAC,KAAK,CAAC;IAChB,CAAC,CAAC;IACFC,MAAM,CAACG,MAAM,CAACV,IAAI,EAAE,MAAM;MACxBW,UAAU,CAAC,MAAM;QACfJ,MAAM,CAACE,KAAK,CAAC,CAAC;QACdH,OAAO,CAAC,IAAI,CAAC;MACf,CAAC,EAAEF,OAAO,CAAC;IACb,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Program, Type } from "@typespec/compiler";
|
|
2
|
+
/**
|
|
3
|
+
* Extracts the "success" type from a return type.
|
|
4
|
+
* If the return type is a Union, returns the first non-error variant.
|
|
5
|
+
* If the return type is void, returns undefined.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getSuccessReturnType(program: Program, returnType: Type): Type | undefined;
|
|
8
|
+
//# sourceMappingURL=return-type-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"return-type-helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/return-type-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAG/D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAgCzF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { isErrorModel, isVoidType } from "@typespec/compiler";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Extracts the "success" type from a return type.
|
|
5
|
+
* If the return type is a Union, returns the first non-error variant.
|
|
6
|
+
* If the return type is void, returns undefined.
|
|
7
|
+
*/
|
|
8
|
+
export function getSuccessReturnType(program, returnType) {
|
|
9
|
+
if (isVoidType(returnType)) return undefined;
|
|
10
|
+
if (returnType.kind === "Union") {
|
|
11
|
+
for (const variant of returnType.variants.values()) {
|
|
12
|
+
const variantType = variant.type;
|
|
13
|
+
if (isVoidType(variantType)) continue;
|
|
14
|
+
// Skip error models by checking the @error decorator or name convention
|
|
15
|
+
if (variantType.kind === "Model") {
|
|
16
|
+
try {
|
|
17
|
+
if (isErrorModel(program, variantType)) continue;
|
|
18
|
+
} catch {
|
|
19
|
+
// isErrorModel may fail on certain types
|
|
20
|
+
}
|
|
21
|
+
if (variantType.name && variantType.name.toLowerCase() === "error") {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
// Skip response-only models (only @statusCode, no body props)
|
|
25
|
+
if (isStatusCodeOnlyModel(variantType)) continue;
|
|
26
|
+
}
|
|
27
|
+
return variantType;
|
|
28
|
+
}
|
|
29
|
+
// All variants are errors or void
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Check if it's a status-code-only model (e.g., OkResponse, NoContentResponse)
|
|
34
|
+
if (returnType.kind === "Model" && isStatusCodeOnlyModel(returnType)) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
return returnType;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Returns true if the model only has statusCode-related properties (no body). Walks inherited properties too. */
|
|
41
|
+
function isStatusCodeOnlyModel(model) {
|
|
42
|
+
let count = 0;
|
|
43
|
+
for (const prop of walkPropertiesInherited(model)) {
|
|
44
|
+
if (prop.name !== "statusCode") return false;
|
|
45
|
+
count++;
|
|
46
|
+
}
|
|
47
|
+
return count > 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Yields all properties from a model and its base models. */
|
|
51
|
+
function* walkPropertiesInherited(model) {
|
|
52
|
+
for (const prop of model.properties.values()) {
|
|
53
|
+
yield prop;
|
|
54
|
+
}
|
|
55
|
+
if (model.baseModel) {
|
|
56
|
+
yield* walkPropertiesInherited(model.baseModel);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=return-type-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isErrorModel","isVoidType","getSuccessReturnType","program","returnType","undefined","kind","variant","variants","values","variantType","type","name","toLowerCase","isStatusCodeOnlyModel","model","count","prop","walkPropertiesInherited","properties","baseModel"],"sources":["../../../src/utils/return-type-helpers.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,YAAY,EAAEC,UAAU,QAAQ,oBAAoB;;AAE7D;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAACC,OAAgB,EAAEC,UAAgB,EAAoB;EACzF,IAAIH,UAAU,CAACG,UAAU,CAAC,EAAE,OAAOC,SAAS;EAE5C,IAAID,UAAU,CAACE,IAAI,KAAK,OAAO,EAAE;IAC/B,KAAK,MAAMC,OAAO,IAAIH,UAAU,CAACI,QAAQ,CAACC,MAAM,CAAC,CAAC,EAAE;MAClD,MAAMC,WAAW,GAAGH,OAAO,CAACI,IAAI;MAChC,IAAIV,UAAU,CAACS,WAAW,CAAC,EAAE;MAC7B;MACA,IAAIA,WAAW,CAACJ,IAAI,KAAK,OAAO,EAAE;QAChC,IAAI;UACF,IAAIN,YAAY,CAACG,OAAO,EAAEO,WAAW,CAAC,EAAE;QAC1C,CAAC,CAAC,MAAM;UACN;QAAA;QAEF,IAAIA,WAAW,CAACE,IAAI,IAAIF,WAAW,CAACE,IAAI,CAACC,WAAW,CAAC,CAAC,KAAK,OAAO,EAAE;UAClE;QACF;QACA;QACA,IAAIC,qBAAqB,CAACJ,WAAW,CAAC,EAAE;MAC1C;MACA,OAAOA,WAAW;IACpB;IACA;IACA,OAAOL,SAAS;EAClB;;EAEA;EACA,IAAID,UAAU,CAACE,IAAI,KAAK,OAAO,IAAIQ,qBAAqB,CAACV,UAAU,CAAC,EAAE;IACpE,OAAOC,SAAS;EAClB;EAEA,OAAOD,UAAU;AACnB;;AAEA;AACA,SAASU,qBAAqBA,CAACC,KAAY,EAAW;EACpD,IAAIC,KAAK,GAAG,CAAC;EACb,KAAK,MAAMC,IAAI,IAAIC,uBAAuB,CAACH,KAAK,CAAC,EAAE;IACjD,IAAIE,IAAI,CAACL,IAAI,KAAK,YAAY,EAAE,OAAO,KAAK;IAC5CI,KAAK,EAAE;EACT;EACA,OAAOA,KAAK,GAAG,CAAC;AAClB;;AAEA;AACA,UAAUE,uBAAuBA,CAC/BH,KAAY,EAC0C;EACtD,KAAK,MAAME,IAAI,IAAIF,KAAK,CAACI,UAAU,CAACV,MAAM,CAAC,CAAC,EAAE;IAC5C,MAAMQ,IAAI;EACZ;EACA,IAAIF,KAAK,CAACK,SAAS,EAAE;IACnB,OAAOF,uBAAuB,CAACH,KAAK,CAACK,SAAS,CAAC;EACjD;AACF","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typespec/http-server-csharp",
|
|
3
|
-
"version": "0.58.0-alpha.
|
|
3
|
+
"version": "0.58.0-alpha.29-dev.3",
|
|
4
4
|
"author": "Microsoft Corporation",
|
|
5
5
|
"description": "TypeSpec service code generator for c-sharp",
|
|
6
6
|
"homepage": "https://typespec.io",
|
|
@@ -22,44 +22,63 @@
|
|
|
22
22
|
"bin": {
|
|
23
23
|
"hscs-scaffold": "./cmd/hscs.js"
|
|
24
24
|
},
|
|
25
|
-
"main": "dist/src/
|
|
25
|
+
"main": "dist/src/index.js",
|
|
26
26
|
"exports": {
|
|
27
27
|
".": {
|
|
28
|
-
"
|
|
29
|
-
"default": "./dist/src/lib/index.js"
|
|
28
|
+
"import": "./dist/src/index.js"
|
|
30
29
|
},
|
|
31
30
|
"./testing": {
|
|
32
|
-
"
|
|
33
|
-
"default": "./dist/src/lib/testing/index.js"
|
|
31
|
+
"import": "./dist/src/testing/index.js"
|
|
34
32
|
}
|
|
35
33
|
},
|
|
34
|
+
"imports": {
|
|
35
|
+
"#test/*": "./test/*"
|
|
36
|
+
},
|
|
36
37
|
"engines": {
|
|
37
38
|
"node": ">=22.0.0"
|
|
38
39
|
},
|
|
39
40
|
"files": [
|
|
40
41
|
"lib/**/*.tsp",
|
|
41
42
|
"dist/**",
|
|
42
|
-
"!dist/test/**"
|
|
43
|
+
"!dist/test/**",
|
|
44
|
+
"!dist/**/*.test.*"
|
|
43
45
|
],
|
|
44
46
|
"peerDependencies": {
|
|
45
|
-
"@typespec/compiler": "^1.12.0",
|
|
46
|
-
"@typespec/http": "^1.12.0",
|
|
47
|
-
"@typespec/json-schema": "^1.12.0",
|
|
48
|
-
"@typespec/rest": "^0.82.0",
|
|
49
|
-
"@typespec/versioning": "^0.82.0"
|
|
47
|
+
"@typespec/compiler": "^1.12.0 || >= 1.13.0-dev.6",
|
|
48
|
+
"@typespec/http": "^1.12.0 || >= 1.13.0-dev.0",
|
|
49
|
+
"@typespec/json-schema": "^1.12.0 || >= 1.13.0-dev.1",
|
|
50
|
+
"@typespec/rest": "^0.82.0 || >= 0.83.0-dev.0",
|
|
51
|
+
"@typespec/versioning": "^0.82.0 || >= 0.83.0-dev.0"
|
|
50
52
|
},
|
|
51
53
|
"dependencies": {
|
|
54
|
+
"@alloy-js/core": "^0.23.0",
|
|
55
|
+
"@alloy-js/csharp": "^0.23.0",
|
|
56
|
+
"@alloy-js/msbuild": "^0.23.0",
|
|
57
|
+
"@typespec/emitter-framework": "^0.17.0 || >= 0.17.1-dev.1",
|
|
58
|
+
"@typespec/http-canonicalization": "^0.16.1 || >= 0.16.2-dev.2",
|
|
52
59
|
"change-case": "^5.4.4",
|
|
53
60
|
"cross-spawn": "^7.0.6",
|
|
54
61
|
"picocolors": "^1.1.1",
|
|
55
62
|
"yaml": "^2.8.3",
|
|
56
|
-
"yargs": "^18.0.0"
|
|
57
|
-
"@typespec/asset-emitter": "^0.79.1"
|
|
63
|
+
"yargs": "^18.0.0"
|
|
58
64
|
},
|
|
59
65
|
"devDependencies": {
|
|
66
|
+
"@alloy-js/cli": "^0.23.0",
|
|
67
|
+
"@alloy-js/rollup-plugin": "^0.1.1",
|
|
60
68
|
"@types/cross-spawn": "^6.0.6",
|
|
61
69
|
"@types/node": "^25.5.2",
|
|
62
70
|
"@types/yargs": "^17.0.35",
|
|
71
|
+
"@typespec/compiler": "^1.12.0 || >= 1.13.0-dev.6",
|
|
72
|
+
"@typespec/http": "^1.12.0 || >= 1.13.0-dev.0",
|
|
73
|
+
"@typespec/http-specs": "^0.1.0-alpha.37 || >= 0.1.0-dev.0",
|
|
74
|
+
"@typespec/internal-build-utils": "^0.82.0 || >= 0.83.0-dev.0",
|
|
75
|
+
"@typespec/json-schema": "^1.12.0 || >= 1.13.0-dev.1",
|
|
76
|
+
"@typespec/library-linter": "^0.82.0 || >= 0.83.0-dev.0",
|
|
77
|
+
"@typespec/openapi": "^1.12.0 || >= 1.13.0-dev.0",
|
|
78
|
+
"@typespec/rest": "^0.82.0 || >= 0.83.0-dev.0",
|
|
79
|
+
"@typespec/spector": "^0.1.0-alpha.25 || >= 0.1.0-dev.0",
|
|
80
|
+
"@typespec/tspd": "^0.74.2 || >= 0.74.3-dev.3",
|
|
81
|
+
"@typespec/versioning": "^0.82.0 || >= 0.83.0-dev.0",
|
|
63
82
|
"@vitest/coverage-v8": "^4.1.3",
|
|
64
83
|
"@vitest/ui": "^4.1.3",
|
|
65
84
|
"@inquirer/prompts": "^8.4.1",
|
|
@@ -67,23 +86,12 @@
|
|
|
67
86
|
"p-limit": "^7.3.0",
|
|
68
87
|
"pathe": "^2.0.3",
|
|
69
88
|
"typescript": "~6.0.2",
|
|
70
|
-
"vitest": "^4.1.3"
|
|
71
|
-
"@typespec/compiler": "^1.12.0",
|
|
72
|
-
"@typespec/internal-build-utils": "^0.82.0",
|
|
73
|
-
"@typespec/http": "^1.12.0",
|
|
74
|
-
"@typespec/json-schema": "^1.12.0",
|
|
75
|
-
"@typespec/http-specs": "^0.1.0-alpha.37",
|
|
76
|
-
"@typespec/openapi": "^1.12.0",
|
|
77
|
-
"@typespec/library-linter": "^0.82.0",
|
|
78
|
-
"@typespec/rest": "^0.82.0",
|
|
79
|
-
"@typespec/spector": "^0.1.0-alpha.25",
|
|
80
|
-
"@typespec/tspd": "^0.74.2",
|
|
81
|
-
"@typespec/versioning": "^0.82.0"
|
|
89
|
+
"vitest": "^4.1.3"
|
|
82
90
|
},
|
|
83
91
|
"scripts": {
|
|
84
92
|
"clean": "rimraf ./dist ./temp",
|
|
85
|
-
"build": "
|
|
86
|
-
"watch": "
|
|
93
|
+
"build": "alloy build",
|
|
94
|
+
"watch": "alloy build --watch",
|
|
87
95
|
"test": "vitest run",
|
|
88
96
|
"test:watch": "vitest -w",
|
|
89
97
|
"test:ui": "vitest --ui",
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { ModelProperty, Program, Scalar, Type } from "@typespec/compiler";
|
|
2
|
-
import { Attribute } from "./interfaces.js";
|
|
3
|
-
export declare const JsonNamespace: string;
|
|
4
|
-
export declare function getEncodingValue(program: Program, type: Scalar | ModelProperty): string | undefined;
|
|
5
|
-
export declare function getFormatValue(program: Program, type: Scalar | ModelProperty): string | undefined;
|
|
6
|
-
/**
|
|
7
|
-
* Return name encoding attributes
|
|
8
|
-
* @param program The program being processed
|
|
9
|
-
* @param type The type to check
|
|
10
|
-
* @returns The attributes associated with the type, or none
|
|
11
|
-
*/
|
|
12
|
-
export declare function getEncodedNameAttribute(program: Program, type: ModelProperty, cSharpName?: string): Attribute | undefined;
|
|
13
|
-
/**
|
|
14
|
-
* Return the encoding attributes for model properties
|
|
15
|
-
* @param program The program being processed
|
|
16
|
-
* @param type The type to check
|
|
17
|
-
* @returns The appropriate serialization attributes for the type, or none
|
|
18
|
-
*/
|
|
19
|
-
export declare function getEncodingAttributes(program: Program, type: ModelProperty): Attribute[];
|
|
20
|
-
/**
|
|
21
|
-
* Return min and max length attributes for string
|
|
22
|
-
* @param program The program being processed
|
|
23
|
-
* @param type The type to check
|
|
24
|
-
* @returns The attributes associated with the type, or none
|
|
25
|
-
*/
|
|
26
|
-
export declare function getStringConstraintAttribute(program: Program, type: ModelProperty | Scalar): Attribute | undefined;
|
|
27
|
-
/**
|
|
28
|
-
* Return min and max length attributes for string
|
|
29
|
-
* @param program The program being processed
|
|
30
|
-
* @param type The type to check
|
|
31
|
-
* @returns The attributes associated with the type, or none
|
|
32
|
-
*/
|
|
33
|
-
export declare function getArrayConstraintAttribute(program: Program, type: ModelProperty | Scalar): Attribute | undefined;
|
|
34
|
-
/**
|
|
35
|
-
* Return min and max length attributes for string
|
|
36
|
-
* @param program The program being processed
|
|
37
|
-
* @param type The type to check
|
|
38
|
-
* @returns The attributes associated with the type, or none
|
|
39
|
-
*/
|
|
40
|
-
export declare function getNumericConstraintAttribute(program: Program, type: ModelProperty | Scalar): Attribute | undefined;
|
|
41
|
-
export declare function getSafeIntAttribute(type: Scalar): Attribute | undefined;
|
|
42
|
-
export declare function getAttributes(program: Program, type: Type, cSharpName?: string): Attribute[];
|
|
43
|
-
//# sourceMappingURL=attributes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/lib/attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,aAAa,EACb,OAAO,EAEP,MAAM,EACN,IAAI,EAEL,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EASV,MAAM,iBAAiB,CAAC;AAKzB,eAAO,MAAM,aAAa,EAAE,MAA2B,CAAC;AAExD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,GAAG,aAAa,GAC3B,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAEjG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,aAAa,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,SAAS,GAAG,SAAS,CAuDvB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,CAgCxF;AAmED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,aAAa,GAAG,MAAM,GAC3B,SAAS,GAAG,SAAS,CAgEvB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,aAAa,GAAG,MAAM,GAC3B,SAAS,GAAG,SAAS,CAqDvB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,aAAa,GAAG,MAAM,GAC3B,SAAS,GAAG,SAAS,CAgFvB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAyCvE;AAYD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CA0C5F"}
|