@azure-typespec/http-client-csharp-mgmt 1.0.0-alpha.20250508.2 → 1.0.0-alpha.20250509.2
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/emitter/emitter.d.ts.map +1 -1
- package/dist/emitter/emitter.js +2 -60
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/resource-detection.d.ts +3 -0
- package/dist/emitter/resource-detection.d.ts.map +1 -0
- package/dist/emitter/resource-detection.js +99 -0
- package/dist/emitter/resource-detection.js.map +1 -0
- package/dist/emitter/resource-metadata.d.ts +9 -0
- package/dist/emitter/resource-metadata.d.ts.map +1 -0
- package/dist/emitter/{resource-type.js → resource-metadata.js} +1 -1
- package/dist/emitter/resource-metadata.js.map +1 -0
- package/dist/emitter/sdk-context-options.d.ts +6 -0
- package/dist/emitter/sdk-context-options.d.ts.map +1 -1
- package/dist/emitter/sdk-context-options.js +33 -16
- package/dist/emitter/sdk-context-options.js.map +1 -1
- package/dist/generator/Azure.Generator.Mgmt.deps.json +6 -6
- package/dist/generator/Azure.Generator.Mgmt.dll +0 -0
- package/dist/generator/Azure.Generator.Mgmt.pdb +0 -0
- package/dist/generator/Azure.Generator.dll +0 -0
- package/dist/generator/net8.0/Azure.Generator.Mgmt.deps.json +6 -6
- package/dist/generator/net8.0/Azure.Generator.Mgmt.dll +0 -0
- package/dist/generator/net8.0/Azure.Generator.Mgmt.pdb +0 -0
- package/dist/generator/net8.0/Azure.Generator.dll +0 -0
- package/package.json +13 -19
- package/dist/emitter/resource-type.d.ts +0 -2
- package/dist/emitter/resource-type.d.ts.map +0 -1
- package/dist/emitter/resource-type.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../emitter/src/emitter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../emitter/src/emitter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,OAAO,EAEL,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AAI5C,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,mBAAmB,CAAC,iBAOtE"}
|
package/dist/emitter/emitter.js
CHANGED
|
@@ -2,12 +2,7 @@
|
|
|
2
2
|
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
3
3
|
import { $onEmit as $onAzureEmit } from "@azure-typespec/http-client-csharp";
|
|
4
4
|
import { azureSDKContextOptions } from "./sdk-context-options.js";
|
|
5
|
-
import {
|
|
6
|
-
const armResourceOperations = "Azure.ResourceManager.@armResourceOperations";
|
|
7
|
-
const armResourceRead = "Azure.ResourceManager.@armResourceRead";
|
|
8
|
-
const armResourceCreateOrUpdate = "Azure.ResourceManager.@armResourceCreateOrUpdate";
|
|
9
|
-
const singleton = "Azure.ResourceManager.@singleton";
|
|
10
|
-
const resourceMetadata = "Azure.ClientGenerator.Core.@resourceSchema";
|
|
5
|
+
import { updateClients } from "./resource-detection.js";
|
|
11
6
|
export async function $onEmit(context) {
|
|
12
7
|
context.options["generator-name"] ??= "ManagementClientGenerator";
|
|
13
8
|
context.options["update-code-model"] = updateCodeModel;
|
|
@@ -17,60 +12,7 @@ export async function $onEmit(context) {
|
|
|
17
12
|
await $onAzureEmit(context);
|
|
18
13
|
}
|
|
19
14
|
function updateCodeModel(codeModel) {
|
|
20
|
-
|
|
21
|
-
updateClient(client);
|
|
22
|
-
}
|
|
23
|
-
function updateClient(client) {
|
|
24
|
-
// TODO: we can implement this decorator in TCGC until we meet the corner case
|
|
25
|
-
// if the client has resourceMetadata decorator, it is a resource client and we don't need to add it again
|
|
26
|
-
if (client.decorators?.some((d) => d.name == resourceMetadata)) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
// TODO: Once we have the ability to get resource hierarchy from TCGC directly, we can remove this implementation
|
|
30
|
-
// A resource client should have decorator armResourceOperations and contains either a get operation(containing armResourceRead deocrator) or a put operation(containing armResourceCreateOrUpdate decorator)
|
|
31
|
-
if (client.decorators?.some((d) => d.name == armResourceOperations) &&
|
|
32
|
-
client.methods.some((m) => m.operation.decorators?.some((d) => d.name == armResourceRead || armResourceCreateOrUpdate))) {
|
|
33
|
-
let resourceModel = undefined;
|
|
34
|
-
let isSingleton = false;
|
|
35
|
-
let resourceType = undefined;
|
|
36
|
-
// We will try to get resource metadata from put operation firstly, if not found, we will try to get it from get operation
|
|
37
|
-
const putOperation = client.methods.find((m) => m.operation.decorators?.some((d) => d.name == armResourceCreateOrUpdate))?.operation;
|
|
38
|
-
if (putOperation) {
|
|
39
|
-
const path = putOperation.path;
|
|
40
|
-
resourceType = calculateResourceTypeFromPath(path);
|
|
41
|
-
resourceModel = putOperation.responses.filter((r) => r.bodyType)[0]
|
|
42
|
-
.bodyType;
|
|
43
|
-
isSingleton =
|
|
44
|
-
resourceModel.decorators?.some((d) => d.name == singleton) ?? false;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
const getOperation = client.methods.find((m) => m.operation.decorators?.some((d) => d.name == armResourceRead))?.operation;
|
|
48
|
-
if (getOperation) {
|
|
49
|
-
const path = getOperation.path;
|
|
50
|
-
resourceType = calculateResourceTypeFromPath(path);
|
|
51
|
-
resourceModel = getOperation.responses.filter((r) => r.bodyType)[0]
|
|
52
|
-
.bodyType;
|
|
53
|
-
isSingleton =
|
|
54
|
-
resourceModel.decorators?.some((d) => d.name == singleton) ?? false;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const resourceMetadataDecorator = {
|
|
58
|
-
name: resourceMetadata,
|
|
59
|
-
arguments: {}
|
|
60
|
-
};
|
|
61
|
-
resourceMetadataDecorator.arguments["resourceModel"] =
|
|
62
|
-
resourceModel?.crossLanguageDefinitionId;
|
|
63
|
-
resourceMetadataDecorator.arguments["isSingleton"] =
|
|
64
|
-
isSingleton.toString();
|
|
65
|
-
resourceMetadataDecorator.arguments["resourceType"] = resourceType;
|
|
66
|
-
client.decorators.push(resourceMetadataDecorator);
|
|
67
|
-
}
|
|
68
|
-
if (client.children) {
|
|
69
|
-
for (const child of client.children) {
|
|
70
|
-
updateClient(child);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
15
|
+
updateClients(codeModel);
|
|
74
16
|
return codeModel;
|
|
75
17
|
}
|
|
76
18
|
//# sourceMappingURL=emitter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../emitter/src/emitter.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../emitter/src/emitter.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAM/F,OAAO,EACL,OAAO,IAAI,YAAY,EAExB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAyC;IACrE,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,2BAA2B,CAAC;IAClE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,eAAe,CAAC;IACvD,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9D,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,sBAAsB,CAAC;IAClE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC5C,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,eAAe,CAAC,SAAoB;IAC3C,aAAa,CAAC,SAAS,CAAC,CAAC;IAEzB,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-detection.d.ts","sourceRoot":"","sources":["../../emitter/src/resource-detection.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EAGV,MAAM,8BAA8B,CAAC;AActC,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,QAsBjD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
3
|
+
import { calculateResourceTypeFromPath } from "./resource-metadata.js";
|
|
4
|
+
import { armResourceCreateOrUpdate, armResourceOperations, armResourceRead, resourceMetadata, singleton } from "./sdk-context-options.js";
|
|
5
|
+
export function updateClients(codeModel) {
|
|
6
|
+
// first we flatten all possible clients in the code model
|
|
7
|
+
const clients = getAllClients(codeModel);
|
|
8
|
+
// to fully calculation the resource metadata, we have to go with 2 passes
|
|
9
|
+
// in which the first pass we gather everything we could for each client
|
|
10
|
+
// the second pass we figure out there cross references between the clients (such as parent resource)
|
|
11
|
+
// then pass to update all the clients with their own information
|
|
12
|
+
const metadata = new Map();
|
|
13
|
+
for (const client of clients) {
|
|
14
|
+
gatherResourceMetadata(client, metadata);
|
|
15
|
+
}
|
|
16
|
+
// populate the parent resource information
|
|
17
|
+
// the last step, add the decorator to the client
|
|
18
|
+
for (const client of clients) {
|
|
19
|
+
const resourceMetadata = metadata.get(client);
|
|
20
|
+
if (resourceMetadata) {
|
|
21
|
+
addResourceMetadata(client, resourceMetadata);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function getAllClients(codeModel) {
|
|
26
|
+
const clients = [];
|
|
27
|
+
for (const client of codeModel.clients) {
|
|
28
|
+
traverseClient(client);
|
|
29
|
+
}
|
|
30
|
+
return clients;
|
|
31
|
+
function traverseClient(client) {
|
|
32
|
+
clients.push(client);
|
|
33
|
+
if (client.children) {
|
|
34
|
+
for (const child of client.children) {
|
|
35
|
+
traverseClient(child);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function gatherResourceMetadata(client, metadataMap) {
|
|
41
|
+
// TODO: we can implement this decorator in TCGC until we meet the corner case
|
|
42
|
+
// if the client has resourceMetadata decorator, it is a resource client and we don't need to add it again
|
|
43
|
+
if (client.decorators?.some((d) => d.name == resourceMetadata)) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// TODO: Once we have the ability to get resource hierarchy from TCGC directly, we can remove this implementation
|
|
47
|
+
// A resource client should have decorator armResourceOperations and contains either a get operation(containing armResourceRead deocrator) or a put operation(containing armResourceCreateOrUpdate decorator)
|
|
48
|
+
if (client.decorators?.some((d) => d.name == armResourceOperations) &&
|
|
49
|
+
client.methods.some((m) => m.operation.decorators?.some((d) => d.name == armResourceRead || armResourceCreateOrUpdate))) {
|
|
50
|
+
let resourceModel = undefined;
|
|
51
|
+
let isSingleton = false;
|
|
52
|
+
let resourceType = undefined;
|
|
53
|
+
// We will try to get resource metadata from put operation firstly, if not found, we will try to get it from get operation
|
|
54
|
+
const putOperation = client.methods.find((m) => m.operation.decorators?.some((d) => d.name == armResourceCreateOrUpdate))?.operation;
|
|
55
|
+
if (putOperation) {
|
|
56
|
+
const path = putOperation.path;
|
|
57
|
+
resourceType = calculateResourceTypeFromPath(path);
|
|
58
|
+
resourceModel = putOperation.responses.filter((r) => r.bodyType)[0]
|
|
59
|
+
.bodyType;
|
|
60
|
+
isSingleton =
|
|
61
|
+
resourceModel.decorators?.some((d) => d.name == singleton) ?? false;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const getOperation = client.methods.find((m) => m.operation.decorators?.some((d) => d.name == armResourceRead))?.operation;
|
|
65
|
+
if (getOperation) {
|
|
66
|
+
const path = getOperation.path;
|
|
67
|
+
resourceType = calculateResourceTypeFromPath(path);
|
|
68
|
+
resourceModel = getOperation.responses.filter((r) => r.bodyType)[0]
|
|
69
|
+
.bodyType;
|
|
70
|
+
isSingleton =
|
|
71
|
+
resourceModel.decorators?.some((d) => d.name == singleton) ?? false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (resourceModel && resourceType) {
|
|
75
|
+
const metadata = {
|
|
76
|
+
resourceModel: resourceModel,
|
|
77
|
+
resourceClient: client,
|
|
78
|
+
resourceType: resourceType,
|
|
79
|
+
isSingleton: isSingleton
|
|
80
|
+
};
|
|
81
|
+
metadataMap.set(client, metadata);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function addResourceMetadata(client, metadata) {
|
|
86
|
+
const resourceMetadataDecorator = {
|
|
87
|
+
name: resourceMetadata,
|
|
88
|
+
arguments: {
|
|
89
|
+
resourceModel: metadata.resourceModel.crossLanguageDefinitionId,
|
|
90
|
+
isSingleton: metadata.isSingleton,
|
|
91
|
+
resourceType: metadata.resourceType
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
if (!client.decorators) {
|
|
95
|
+
client.decorators = [];
|
|
96
|
+
}
|
|
97
|
+
client.decorators.push(resourceMetadataDecorator);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=resource-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-detection.js","sourceRoot":"","sources":["../../emitter/src/resource-detection.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAO/F,OAAO,EACL,6BAA6B,EAE9B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACV,MAAM,0BAA0B,CAAC;AAElC,MAAM,UAAU,aAAa,CAAC,SAAoB;IAChD,0DAA0D;IAC1D,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAEzC,0EAA0E;IAC1E,wEAAwE;IACxE,qGAAqG;IACrG,iEAAiE;IACjE,MAAM,QAAQ,GAAuC,IAAI,GAAG,EAAE,CAAC;IAC/D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,2CAA2C;IAE3C,iDAAiD;IACjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,gBAAgB,EAAE,CAAC;YACrB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,SAAoB;IACzC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACvC,cAAc,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,OAAO,CAAC;IAEf,SAAS,cAAc,CAAC,MAAmB;QACzC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpC,cAAc,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAmB,EACnB,WAA+C;IAE/C,8EAA8E;IAC9E,0GAA0G;IAC1G,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,gBAAgB,CAAC,EAAE,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,iHAAiH;IACjH,6MAA6M;IAC7M,IACE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,qBAAqB,CAAC;QAC/D,MAAM,CAAC,OAAO,CAAC,IAAI,CACjB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,IAAI,yBAAyB,CAC9D,CACJ,EACD,CAAC;QACD,IAAI,aAAa,GAA+B,SAAS,CAAC;QAC1D,IAAI,WAAW,GAAY,KAAK,CAAC;QACjC,IAAI,YAAY,GAAuB,SAAS,CAAC;QACjD,0HAA0H;QAC1H,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,yBAAyB,CAAC,CAC3E,EAAE,SAAS,CAAC;QACb,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;YAC/B,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;YACnD,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBAChE,QAA0B,CAAC;YAC9B,WAAW;gBACT,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,CACtE,EAAE,SAAS,CAAC;YACb,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;gBAC/B,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;gBACnD,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;qBAChE,QAA0B,CAAC;gBAC9B,WAAW;oBACT,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;YACxE,CAAC;QACH,CAAC;QAED,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG;gBACf,aAAa,EAAE,aAAa;gBAC5B,cAAc,EAAE,MAAM;gBACtB,YAAY,EAAE,YAAY;gBAC1B,WAAW,EAAE,WAAW;aACzB,CAAC;YACF,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAmB,EAAE,QAA0B;IAC1E,MAAM,yBAAyB,GAAkB;QAC/C,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE;YACT,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,yBAAyB;YAC/D,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;SACpC;KACF,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InputClient, InputModelType } from "@typespec/http-client-csharp";
|
|
2
|
+
export declare function calculateResourceTypeFromPath(path: string): string;
|
|
3
|
+
export interface ResourceMetadata {
|
|
4
|
+
resourceType: string;
|
|
5
|
+
resourceModel: InputModelType;
|
|
6
|
+
resourceClient: InputClient;
|
|
7
|
+
isSingleton: boolean;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=resource-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-metadata.d.ts","sourceRoot":"","sources":["../../emitter/src/resource-metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAQ3E,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqBlE;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,cAAc,CAAC;IAC9B,cAAc,EAAE,WAAW,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-metadata.js","sourceRoot":"","sources":["../../emitter/src/resource-metadata.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAI/F,MAAM,wBAAwB,GAC5B,gDAAgD,CAAC;AACnD,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AACjD,MAAM,iBAAiB,GAAG,UAAU,CAAC;AACrC,MAAM,SAAS,GAAG,YAAY,CAAC;AAE/B,MAAM,UAAU,6BAA6B,CAAC,IAAY;IACxD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC9C,OAAO,oCAAoC,CAAC;QAC9C,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACpD,OAAO,mCAAmC,CAAC;QAC7C,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC9C,OAAO,6BAA6B,CAAC;QACvC,CAAC;QACD,MAAM,QAAQ,IAAI,6BAA6B,CAAC;IAClD,CAAC;IAED,OAAO,IAAI;SACR,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC;SAC3C,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACjC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;YAChC,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;;YACrD,OAAO,MAAM,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import { CreateSdkContextOptions } from "@azure-tools/typespec-client-generator-core";
|
|
2
|
+
export declare const parentResource = "TypeSpec.Rest.@parentResource";
|
|
3
|
+
export declare const armResourceOperations = "Azure.ResourceManager.@armResourceOperations";
|
|
4
|
+
export declare const armResourceRead = "Azure.ResourceManager.@armResourceRead";
|
|
5
|
+
export declare const armResourceCreateOrUpdate = "Azure.ResourceManager.@armResourceCreateOrUpdate";
|
|
6
|
+
export declare const singleton = "Azure.ResourceManager.@singleton";
|
|
7
|
+
export declare const resourceMetadata = "Azure.ClientGenerator.Core.@resourceSchema";
|
|
2
8
|
export declare const azureSDKContextOptions: CreateSdkContextOptions;
|
|
3
9
|
//# sourceMappingURL=sdk-context-options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-context-options.d.ts","sourceRoot":"","sources":["../../emitter/src/sdk-context-options.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-context-options.d.ts","sourceRoot":"","sources":["../../emitter/src/sdk-context-options.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAWtF,eAAO,MAAM,cAAc,kCAAkC,CAAC;AAI9D,eAAO,MAAM,qBAAqB,iDACc,CAAC;AAKjD,eAAO,MAAM,eAAe,2CAA2C,CAAC;AAIxE,eAAO,MAAM,yBAAyB,qDACc,CAAC;AAIrD,eAAO,MAAM,SAAS,qCAAqC,CAAC;AAM5D,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAI7E,eAAO,MAAM,sBAAsB,EAAE,uBAepC,CAAC"}
|
|
@@ -1,25 +1,42 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
2
|
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
3
|
+
// https://github.com/Azure/typespec-azure/blob/main/packages/typespec-client-generator-core/README.md#usesystemtextjsonconverter
|
|
4
|
+
const useSystemTextJsonConverterRegex = "Azure\\.ClientGenerator\\.Core\\.@useSystemTextJsonConverter";
|
|
5
|
+
// https://github.com/Azure/typespec-azure/blob/main/packages/typespec-azure-resource-manager/README.md#armprovidernamespace
|
|
6
|
+
const armProviderNamespaceRegex = "Azure\\.ResourceManager\\.@armProviderNamespace";
|
|
7
|
+
// https://github.com/microsoft/typespec/blob/main/packages/rest/README.md#parentresource
|
|
8
|
+
export const parentResource = "TypeSpec.Rest.@parentResource";
|
|
9
|
+
const parentResourceRegex = "TypeSpec\\.Rest\\.@parentResource";
|
|
10
|
+
// https://github.com/Azure/typespec-azure/blob/main/packages/typespec-azure-resource-manager/README.md#armresourceoperations
|
|
11
|
+
export const armResourceOperations = "Azure.ResourceManager.@armResourceOperations";
|
|
12
|
+
const armResourceOperationsRegex = "Azure\\.ResourceManager\\.@armResourceOperations";
|
|
13
|
+
// https://github.com/Azure/typespec-azure/blob/main/packages/typespec-azure-resource-manager/README.md#armResourceRead
|
|
14
|
+
export const armResourceRead = "Azure.ResourceManager.@armResourceRead";
|
|
15
|
+
const armResourceReadRegex = "Azure\\.ResourceManager\\.@armResourceRead";
|
|
16
|
+
// https://github.com/Azure/typespec-azure/blob/main/packages/typespec-azure-resource-manager/README.md#armresourcecreateorupdate
|
|
17
|
+
export const armResourceCreateOrUpdate = "Azure.ResourceManager.@armResourceCreateOrUpdate";
|
|
18
|
+
const armResourceCreateOrUpdateRegex = "Azure\\.ResourceManager\\.@armResourceCreateOrUpdate";
|
|
19
|
+
// https://github.com/Azure/typespec-azure/blob/main/packages/typespec-azure-resource-manager/README.md#singleton
|
|
20
|
+
export const singleton = "Azure.ResourceManager.@singleton";
|
|
21
|
+
const singletonRegex = "Azure\\.ResourceManager\\.@singleton";
|
|
22
|
+
const armResourceInternalRegex = "Azure\\.ResourceManager\\.Private\\.@armResourceInternal";
|
|
23
|
+
// TODO: add this decorator to TCGC
|
|
24
|
+
export const resourceMetadata = "Azure.ClientGenerator.Core.@resourceSchema";
|
|
25
|
+
const resourceMetadataRegex = "Azure\\.ClientGenerator\\.Core\\.@resourceSchema";
|
|
3
26
|
export const azureSDKContextOptions = {
|
|
4
27
|
versioning: {
|
|
5
|
-
previewStringRegex: /-preview
|
|
28
|
+
previewStringRegex: /-preview$/
|
|
6
29
|
},
|
|
7
30
|
additionalDecorators: [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"Azure\\.ResourceManager\\.@armResourceRead",
|
|
18
|
-
// https://github.com/microsoft/typespec/blob/main/packages/rest/README.md#parentresource
|
|
19
|
-
"TypeSpec\\.Rest\\.parentResource",
|
|
20
|
-
// https://github.com/Azure/typespec-azure/blob/main/packages/typespec-azure-resource-manager/README.md#singleton
|
|
21
|
-
"Azure\\.ResourceManager\\.@singleton",
|
|
22
|
-
"Azure\\.ResourceManager\\.Private\\.@armResourceInternal"
|
|
31
|
+
useSystemTextJsonConverterRegex,
|
|
32
|
+
resourceMetadataRegex,
|
|
33
|
+
armProviderNamespaceRegex,
|
|
34
|
+
armResourceOperationsRegex,
|
|
35
|
+
armResourceCreateOrUpdateRegex,
|
|
36
|
+
armResourceReadRegex,
|
|
37
|
+
parentResourceRegex,
|
|
38
|
+
singletonRegex,
|
|
39
|
+
armResourceInternalRegex,
|
|
23
40
|
]
|
|
24
41
|
};
|
|
25
42
|
//# sourceMappingURL=sdk-context-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-context-options.js","sourceRoot":"","sources":["../../emitter/src/sdk-context-options.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAI/F,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"sdk-context-options.js","sourceRoot":"","sources":["../../emitter/src/sdk-context-options.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAI/F,iIAAiI;AACjI,MAAM,+BAA+B,GACnC,8DAA8D,CAAC;AAEjE,4HAA4H;AAC5H,MAAM,yBAAyB,GAC7B,iDAAiD,CAAC;AAEpD,yFAAyF;AACzF,MAAM,CAAC,MAAM,cAAc,GAAG,+BAA+B,CAAC;AAC9D,MAAM,mBAAmB,GAAG,mCAAmC,CAAC;AAEhE,6HAA6H;AAC7H,MAAM,CAAC,MAAM,qBAAqB,GAChC,8CAA8C,CAAC;AACjD,MAAM,0BAA0B,GAC9B,kDAAkD,CAAC;AAErD,uHAAuH;AACvH,MAAM,CAAC,MAAM,eAAe,GAAG,wCAAwC,CAAC;AACxE,MAAM,oBAAoB,GAAG,4CAA4C,CAAC;AAE1E,iIAAiI;AACjI,MAAM,CAAC,MAAM,yBAAyB,GACpC,kDAAkD,CAAC;AACrD,MAAM,8BAA8B,GAClC,sDAAsD,CAAC;AACzD,iHAAiH;AACjH,MAAM,CAAC,MAAM,SAAS,GAAG,kCAAkC,CAAC;AAC5D,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAE9D,MAAM,wBAAwB,GAAG,0DAA0D,CAAC;AAE5F,mCAAmC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;AAC7E,MAAM,qBAAqB,GACzB,kDAAkD,CAAC;AAErD,MAAM,CAAC,MAAM,sBAAsB,GAA4B;IAC7D,UAAU,EAAE;QACV,kBAAkB,EAAE,WAAW;KAChC;IACD,oBAAoB,EAAE;QACpB,+BAA+B;QAC/B,qBAAqB;QACrB,yBAAyB;QACzB,0BAA0B;QAC1B,8BAA8B;QAC9B,oBAAoB;QACpB,mBAAmB;QACnB,cAAc;QACd,wBAAwB;KACzB;CACF,CAAC"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"Azure.Generator.Mgmt/1.0.0-alpha.20250509.1": {
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"Azure.Core": "1.46.0",
|
|
12
|
-
"Azure.Generator": "1.0.0-alpha.
|
|
12
|
+
"Azure.Generator": "1.0.0-alpha.20250508.1",
|
|
13
13
|
"Azure.ResourceManager": "1.13.0",
|
|
14
14
|
"Microsoft.Azure.AutoRest.CSharp": "3.0.0-beta.20250508.1",
|
|
15
15
|
"Microsoft.SourceLink.GitHub": "8.0.0",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
|
-
"Azure.Generator/1.0.0-alpha.
|
|
37
|
+
"Azure.Generator/1.0.0-alpha.20250508.1": {
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"Azure.Core": "1.46.0",
|
|
40
40
|
"Azure.ResourceManager": "1.13.0",
|
|
@@ -631,12 +631,12 @@
|
|
|
631
631
|
"path": "azure.core/1.46.0",
|
|
632
632
|
"hashPath": "azure.core.1.46.0.nupkg.sha512"
|
|
633
633
|
},
|
|
634
|
-
"Azure.Generator/1.0.0-alpha.
|
|
634
|
+
"Azure.Generator/1.0.0-alpha.20250508.1": {
|
|
635
635
|
"type": "package",
|
|
636
636
|
"serviceable": true,
|
|
637
|
-
"sha512": "sha512-
|
|
638
|
-
"path": "azure.generator/1.0.0-alpha.
|
|
639
|
-
"hashPath": "azure.generator.1.0.0-alpha.
|
|
637
|
+
"sha512": "sha512-LuAZrp5JpPKmshfAD6FTko5SD40sxjLg8oqi//6gXc7h9ZN5yJw8UjiyS8TZRvH14cj6kX5eY2cy3IFWrWAAFQ==",
|
|
638
|
+
"path": "azure.generator/1.0.0-alpha.20250508.1",
|
|
639
|
+
"hashPath": "azure.generator.1.0.0-alpha.20250508.1.nupkg.sha512"
|
|
640
640
|
},
|
|
641
641
|
"Azure.ResourceManager/1.13.0": {
|
|
642
642
|
"type": "package",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"Azure.Generator.Mgmt/1.0.0-alpha.20250509.1": {
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"Azure.Core": "1.46.0",
|
|
12
|
-
"Azure.Generator": "1.0.0-alpha.
|
|
12
|
+
"Azure.Generator": "1.0.0-alpha.20250508.1",
|
|
13
13
|
"Azure.ResourceManager": "1.13.0",
|
|
14
14
|
"Microsoft.Azure.AutoRest.CSharp": "3.0.0-beta.20250508.1",
|
|
15
15
|
"Microsoft.SourceLink.GitHub": "8.0.0",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
|
-
"Azure.Generator/1.0.0-alpha.
|
|
37
|
+
"Azure.Generator/1.0.0-alpha.20250508.1": {
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"Azure.Core": "1.46.0",
|
|
40
40
|
"Azure.ResourceManager": "1.13.0",
|
|
@@ -631,12 +631,12 @@
|
|
|
631
631
|
"path": "azure.core/1.46.0",
|
|
632
632
|
"hashPath": "azure.core.1.46.0.nupkg.sha512"
|
|
633
633
|
},
|
|
634
|
-
"Azure.Generator/1.0.0-alpha.
|
|
634
|
+
"Azure.Generator/1.0.0-alpha.20250508.1": {
|
|
635
635
|
"type": "package",
|
|
636
636
|
"serviceable": true,
|
|
637
|
-
"sha512": "sha512-
|
|
638
|
-
"path": "azure.generator/1.0.0-alpha.
|
|
639
|
-
"hashPath": "azure.generator.1.0.0-alpha.
|
|
637
|
+
"sha512": "sha512-LuAZrp5JpPKmshfAD6FTko5SD40sxjLg8oqi//6gXc7h9ZN5yJw8UjiyS8TZRvH14cj6kX5eY2cy3IFWrWAAFQ==",
|
|
638
|
+
"path": "azure.generator/1.0.0-alpha.20250508.1",
|
|
639
|
+
"hashPath": "azure.generator.1.0.0-alpha.20250508.1.nupkg.sha512"
|
|
640
640
|
},
|
|
641
641
|
"Azure.ResourceManager/1.13.0": {
|
|
642
642
|
"type": "package",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azure-typespec/http-client-csharp-mgmt",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.20250509.2",
|
|
4
4
|
"author": "Microsoft Corporation",
|
|
5
5
|
"description": "TypeSpec library for emitting Azure management libraries for C#.",
|
|
6
6
|
"readme": "https://github.com/Azure/azure-sdk-for-net/blob/main/eng/packages/http-client-csharp-mgmt/README.md",
|
|
@@ -37,29 +37,23 @@
|
|
|
37
37
|
"dist/**"
|
|
38
38
|
],
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@azure-typespec/http-client-csharp": "1.0.0-alpha.
|
|
40
|
+
"@azure-typespec/http-client-csharp": "1.0.0-alpha.20250508.1"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@azure-tools/azure-http-specs": "0.1.0-alpha.
|
|
44
|
-
"@azure-tools/typespec-
|
|
45
|
-
"@azure-tools/typespec-azure-
|
|
46
|
-
"@azure-tools/typespec-
|
|
47
|
-
"@azure-tools/typespec-azure-rulesets": "0.54.0",
|
|
48
|
-
"@azure-tools/typespec-client-generator-core": "0.54.0",
|
|
43
|
+
"@azure-tools/azure-http-specs": "0.1.0-alpha.17",
|
|
44
|
+
"@azure-tools/typespec-azure-core": "0.56.0",
|
|
45
|
+
"@azure-tools/typespec-azure-resource-manager": "0.56.0",
|
|
46
|
+
"@azure-tools/typespec-client-generator-core": "0.56.0",
|
|
49
47
|
"@eslint/js": "^9.2.0",
|
|
50
48
|
"@types/node": "~22.7.5",
|
|
51
49
|
"@types/prettier": "^2.6.3",
|
|
52
|
-
"@typespec/compiler": "1.0.0
|
|
53
|
-
"@typespec/http": "1.0.
|
|
54
|
-
"@typespec/http-
|
|
55
|
-
"@typespec/
|
|
56
|
-
"@typespec/
|
|
57
|
-
"@typespec/
|
|
58
|
-
"@typespec/
|
|
59
|
-
"@typespec/rest": "0.68.0",
|
|
60
|
-
"@typespec/tspd": "0.68.0",
|
|
61
|
-
"@typespec/versioning": "0.68.0",
|
|
62
|
-
"@typespec/xml": "0.68.0",
|
|
50
|
+
"@typespec/compiler": "1.0.0",
|
|
51
|
+
"@typespec/http": "1.0.1",
|
|
52
|
+
"@typespec/http-specs": "0.1.0-alpha.22",
|
|
53
|
+
"@typespec/openapi": "1.0.0",
|
|
54
|
+
"@typespec/rest": "0.70.0",
|
|
55
|
+
"@typespec/tspd": "0.70.0",
|
|
56
|
+
"@typespec/versioning": "0.70.0",
|
|
63
57
|
"@vitest/coverage-v8": "^3.0.5",
|
|
64
58
|
"@vitest/ui": "^3.0.5",
|
|
65
59
|
"c8": "^10.1.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resource-type.d.ts","sourceRoot":"","sources":["../../emitter/src/resource-type.ts"],"names":[],"mappings":"AASA,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqBlE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resource-type.js","sourceRoot":"","sources":["../../emitter/src/resource-type.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAE/F,MAAM,wBAAwB,GAC5B,gDAAgD,CAAC;AACnD,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AACjD,MAAM,iBAAiB,GAAG,UAAU,CAAC;AACrC,MAAM,SAAS,GAAG,YAAY,CAAC;AAE/B,MAAM,UAAU,6BAA6B,CAAC,IAAY;IACxD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC9C,OAAO,oCAAoC,CAAC;QAC9C,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACpD,OAAO,mCAAmC,CAAC;QAC7C,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC9C,OAAO,6BAA6B,CAAC;QACvC,CAAC;QACD,MAAM,QAAQ,IAAI,6BAA6B,CAAC;IAClD,CAAC;IAED,OAAO,IAAI;SACR,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC;SAC3C,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACjC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;YAChC,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;;YACrD,OAAO,MAAM,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC"}
|