@azure-tools/typespec-azure-resource-manager 0.34.0-dev.2 → 0.34.0-dev.4

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.
Files changed (133) hide show
  1. package/dist/src/index.d.ts +1 -1
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +1 -1
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/lib.d.ts +89 -516
  6. package/dist/src/lib.d.ts.map +1 -1
  7. package/dist/src/lib.js +78 -171
  8. package/dist/src/lib.js.map +1 -1
  9. package/dist/src/namespace.d.ts.map +1 -1
  10. package/dist/src/namespace.js +15 -15
  11. package/dist/src/namespace.js.map +1 -1
  12. package/dist/src/operations.d.ts.map +1 -1
  13. package/dist/src/operations.js +6 -7
  14. package/dist/src/operations.js.map +1 -1
  15. package/dist/src/private.decorators.d.ts.map +1 -1
  16. package/dist/src/private.decorators.js +7 -8
  17. package/dist/src/private.decorators.js.map +1 -1
  18. package/dist/src/resource.d.ts.map +1 -1
  19. package/dist/src/resource.js +12 -12
  20. package/dist/src/resource.js.map +1 -1
  21. package/dist/src/rules/arm-resource-action-no-segment.d.ts +3 -1
  22. package/dist/src/rules/arm-resource-action-no-segment.d.ts.map +1 -1
  23. package/dist/src/rules/arm-resource-action-no-segment.js +9 -6
  24. package/dist/src/rules/arm-resource-action-no-segment.js.map +1 -1
  25. package/dist/src/rules/arm-resource-duplicate-property.d.ts +4 -0
  26. package/dist/src/rules/arm-resource-duplicate-property.d.ts.map +1 -0
  27. package/dist/src/rules/arm-resource-duplicate-property.js +43 -0
  28. package/dist/src/rules/arm-resource-duplicate-property.js.map +1 -0
  29. package/dist/src/rules/arm-resource-interfaces.d.ts +4 -0
  30. package/dist/src/rules/arm-resource-interfaces.d.ts.map +1 -0
  31. package/dist/src/rules/arm-resource-interfaces.js +26 -0
  32. package/dist/src/rules/arm-resource-interfaces.js.map +1 -0
  33. package/dist/src/rules/arm-resource-invalid-action-verb.d.ts +4 -0
  34. package/dist/src/rules/arm-resource-invalid-action-verb.d.ts.map +1 -0
  35. package/dist/src/rules/arm-resource-invalid-action-verb.js +28 -0
  36. package/dist/src/rules/arm-resource-invalid-action-verb.js.map +1 -0
  37. package/dist/src/rules/arm-resource-invalid-envelope-property.d.ts +4 -0
  38. package/dist/src/rules/arm-resource-invalid-envelope-property.d.ts.map +1 -0
  39. package/dist/src/rules/{arm-resource-properties.js → arm-resource-invalid-envelope-property.js} +13 -23
  40. package/dist/src/rules/arm-resource-invalid-envelope-property.js.map +1 -0
  41. package/dist/src/rules/arm-resource-invalid-version-format.d.ts +4 -1
  42. package/dist/src/rules/arm-resource-invalid-version-format.d.ts.map +1 -1
  43. package/dist/src/rules/arm-resource-invalid-version-format.js +12 -9
  44. package/dist/src/rules/arm-resource-invalid-version-format.js.map +1 -1
  45. package/dist/src/rules/arm-resource-key-invalid-chars.d.ts +4 -0
  46. package/dist/src/rules/arm-resource-key-invalid-chars.d.ts.map +1 -0
  47. package/dist/src/rules/arm-resource-key-invalid-chars.js +30 -0
  48. package/dist/src/rules/arm-resource-key-invalid-chars.js.map +1 -0
  49. package/dist/src/rules/arm-resource-operation-response.d.ts +4 -0
  50. package/dist/src/rules/arm-resource-operation-response.d.ts.map +1 -0
  51. package/dist/src/rules/{arm-resource-operations.js → arm-resource-operation-response.js} +24 -22
  52. package/dist/src/rules/arm-resource-operation-response.js.map +1 -0
  53. package/dist/src/rules/arm-resource-patch.d.ts +6 -0
  54. package/dist/src/rules/arm-resource-patch.d.ts.map +1 -0
  55. package/dist/src/rules/arm-resource-patch.js +108 -0
  56. package/dist/src/rules/arm-resource-patch.js.map +1 -0
  57. package/dist/src/rules/arm-resource-path-invalid-chars.d.ts +4 -0
  58. package/dist/src/rules/arm-resource-path-invalid-chars.d.ts.map +1 -0
  59. package/dist/src/rules/arm-resource-path-invalid-chars.js +37 -0
  60. package/dist/src/rules/arm-resource-path-invalid-chars.js.map +1 -0
  61. package/dist/src/rules/arm-resource-provisioning-state-rule.d.ts +4 -1
  62. package/dist/src/rules/arm-resource-provisioning-state-rule.d.ts.map +1 -1
  63. package/dist/src/rules/arm-resource-provisioning-state-rule.js +13 -11
  64. package/dist/src/rules/arm-resource-provisioning-state-rule.js.map +1 -1
  65. package/dist/src/rules/beyond-nesting-levels.d.ts +3 -1
  66. package/dist/src/rules/beyond-nesting-levels.d.ts.map +1 -1
  67. package/dist/src/rules/beyond-nesting-levels.js +10 -7
  68. package/dist/src/rules/beyond-nesting-levels.js.map +1 -1
  69. package/dist/src/rules/core-operations.d.ts +5 -1
  70. package/dist/src/rules/core-operations.d.ts.map +1 -1
  71. package/dist/src/rules/core-operations.js +19 -121
  72. package/dist/src/rules/core-operations.js.map +1 -1
  73. package/dist/src/rules/delete-operation.d.ts +3 -1
  74. package/dist/src/rules/delete-operation.d.ts.map +1 -1
  75. package/dist/src/rules/delete-operation.js +10 -7
  76. package/dist/src/rules/delete-operation.js.map +1 -1
  77. package/dist/src/rules/envelope-properties.d.ts +3 -1
  78. package/dist/src/rules/envelope-properties.d.ts.map +1 -1
  79. package/dist/src/rules/envelope-properties.js +12 -31
  80. package/dist/src/rules/envelope-properties.js.map +1 -1
  81. package/dist/src/rules/list-operation.d.ts +3 -1
  82. package/dist/src/rules/list-operation.d.ts.map +1 -1
  83. package/dist/src/rules/list-operation.js +9 -6
  84. package/dist/src/rules/list-operation.js.map +1 -1
  85. package/dist/src/rules/no-response-body.d.ts +3 -1
  86. package/dist/src/rules/no-response-body.d.ts.map +1 -1
  87. package/dist/src/rules/no-response-body.js +10 -7
  88. package/dist/src/rules/no-response-body.js.map +1 -1
  89. package/dist/src/rules/operations-interface-missing.d.ts +3 -1
  90. package/dist/src/rules/operations-interface-missing.d.ts.map +1 -1
  91. package/dist/src/rules/operations-interface-missing.js +12 -10
  92. package/dist/src/rules/operations-interface-missing.js.map +1 -1
  93. package/dist/src/rules/patch-envelope-properties.d.ts +4 -0
  94. package/dist/src/rules/patch-envelope-properties.d.ts.map +1 -0
  95. package/dist/src/rules/patch-envelope-properties.js +44 -0
  96. package/dist/src/rules/patch-envelope-properties.js.map +1 -0
  97. package/dist/src/rules/resource-name.d.ts +4 -1
  98. package/dist/src/rules/resource-name.d.ts.map +1 -1
  99. package/dist/src/rules/resource-name.js +14 -11
  100. package/dist/src/rules/resource-name.js.map +1 -1
  101. package/dist/src/rules/retry-after.d.ts +3 -1
  102. package/dist/src/rules/retry-after.d.ts.map +1 -1
  103. package/dist/src/rules/retry-after.js +10 -7
  104. package/dist/src/rules/retry-after.js.map +1 -1
  105. package/dist/src/rules/unsupported-types.d.ts +3 -1
  106. package/dist/src/rules/unsupported-types.d.ts.map +1 -1
  107. package/dist/src/rules/unsupported-types.js +9 -6
  108. package/dist/src/rules/unsupported-types.js.map +1 -1
  109. package/dist/src/rules/utils.d.ts +3 -1
  110. package/dist/src/rules/utils.d.ts.map +1 -1
  111. package/dist/src/rules/utils.js +18 -0
  112. package/dist/src/rules/utils.js.map +1 -1
  113. package/dist/src/state.d.ts +13 -0
  114. package/dist/src/state.d.ts.map +1 -0
  115. package/dist/src/state.js +20 -0
  116. package/dist/src/state.js.map +1 -0
  117. package/lib/arm.tsp +1 -0
  118. package/lib/private-links.tsp +137 -0
  119. package/package.json +2 -4
  120. package/dist/src/linter.d.ts +0 -3
  121. package/dist/src/linter.d.ts.map +0 -1
  122. package/dist/src/linter.js +0 -42
  123. package/dist/src/linter.js.map +0 -1
  124. package/dist/src/rules/arm-resource-invalid-chars.d.ts +0 -2
  125. package/dist/src/rules/arm-resource-invalid-chars.d.ts.map +0 -1
  126. package/dist/src/rules/arm-resource-invalid-chars.js +0 -61
  127. package/dist/src/rules/arm-resource-invalid-chars.js.map +0 -1
  128. package/dist/src/rules/arm-resource-operations.d.ts +0 -2
  129. package/dist/src/rules/arm-resource-operations.d.ts.map +0 -1
  130. package/dist/src/rules/arm-resource-operations.js.map +0 -1
  131. package/dist/src/rules/arm-resource-properties.d.ts +0 -2
  132. package/dist/src/rules/arm-resource-properties.d.ts.map +0 -1
  133. package/dist/src/rules/arm-resource-properties.js.map +0 -1
@@ -1,12 +1,16 @@
1
- import { createRule } from "@typespec/lint";
2
- import { reportDiagnostic } from "../lib.js";
1
+ import { createRule, paramMessage } from "@typespec/compiler";
3
2
  const UnsupportedIntrinsicModel = new Set(["int8", "int16", "uint8", "uint16", "uint32", "uint64"]);
4
3
  /**
5
4
  * Validation related to versioning.
6
5
  */
7
6
  export const unsupportedTypeRule = createRule({
8
- name: "unsupported-types",
9
- create({ program }) {
7
+ name: "unsupported-type",
8
+ severity: "warning",
9
+ description: "Check for unsupported ARM types.",
10
+ messages: {
11
+ default: paramMessage `Model type '${"typeName"}' is not supported in Azure resource manager APIs.`,
12
+ },
13
+ create(context) {
10
14
  return {
11
15
  modelProperty: (property) => {
12
16
  checkUnsupportedType(property.type, property);
@@ -21,8 +25,7 @@ export const unsupportedTypeRule = createRule({
21
25
  }
22
26
  if (type.kind === "Scalar") {
23
27
  if (UnsupportedIntrinsicModel.has(type.name)) {
24
- reportDiagnostic(program, {
25
- code: "unsupported-type",
28
+ context.reportDiagnostic({
26
29
  format: { typeName: type.name },
27
30
  target,
28
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"unsupported-types.js","sourceRoot":"","sources":["../../../src/rules/unsupported-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpG;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;IAC5C,IAAI,EAAE,mBAAmB;IACzB,MAAM,CAAC,EAAE,OAAO,EAAE;QAChB,OAAO;YACL,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC1B,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChD,CAAC;YACD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;gBAChB,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1C,CAAC;SACF,CAAC;QAEF,SAAS,oBAAoB,CAAC,IAAU,EAAE,MAAwB;YAChE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;gBACnD,OAAO;aACR;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC1B,IAAI,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC5C,gBAAgB,CAAC,OAAO,EAAE;wBACxB,IAAI,EAAE,kBAAkB;wBACxB,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE;wBAC/B,MAAM;qBACP,CAAC,CAAC;iBACJ;aACF;YACD,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;oBAClD,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;iBAC3C;aACF;QACH,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"unsupported-types.js","sourceRoot":"","sources":["../../../src/rules/unsupported-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEtF,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpG;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;IAC5C,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,kCAAkC;IAC/C,QAAQ,EAAE;QACR,OAAO,EAAE,YAAY,CAAA,eAAe,UAAU,oDAAoD;KACnG;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC1B,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChD,CAAC;YACD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;gBAChB,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1C,CAAC;SACF,CAAC;QAEF,SAAS,oBAAoB,CAAC,IAAU,EAAE,MAAwB;YAChE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;gBACnD,OAAO;aACR;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC1B,IAAI,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC5C,OAAO,CAAC,gBAAgB,CAAC;wBACvB,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE;wBAC/B,MAAM;qBACP,CAAC,CAAC;iBACJ;aACF;YACD,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;oBAClD,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;iBAC3C;aACF;QACH,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Interface, Model, ModelProperty, Namespace, Operation, Program } from "@typespec/compiler";
1
+ import { DecoratorArgument, Interface, Model, ModelProperty, Namespace, Operation, Program } from "@typespec/compiler";
2
2
  import { ArmResourceDetails } from "../resource.js";
3
3
  /**
4
4
  *
@@ -15,4 +15,6 @@ export declare function getSourceModel(property: ModelProperty): Model | undefin
15
15
  export declare function getSourceProperty(property: ModelProperty): ModelProperty;
16
16
  export declare function isInternalTypeSpec(program: Program, type: Model | Operation | ModelProperty | Interface | Namespace): boolean;
17
17
  export declare function getNamespaceName(program: Program, type: Model | Operation | ModelProperty | Interface | Namespace | undefined): string;
18
+ export declare function isValidKey(key: string): boolean;
19
+ export declare function getDecoratorParam(type: Model | ModelProperty, name: string): DecoratorArgument | undefined;
18
20
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,KAAK,EACL,aAAa,EACb,SAAS,EACT,SAAS,EACT,OAAO,EAER,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAsB,MAAM,gBAAgB,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,uBAM9D;AAED,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,KAAK,WAGpD;AAED,wBAAgB,UAAU,CAAC,YAAY,EAAE,KAAK,WAG7C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,WAElE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,mBAOzC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,kBAAkB,yBAUnD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,KAAK,GAAG,SAAS,CAOzE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAOxE;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAC9D,OAAO,CAOT;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAC1E,MAAM,CAMR"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAEjB,SAAS,EAET,KAAK,EACL,aAAa,EACb,SAAS,EACT,SAAS,EACT,OAAO,EAER,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAsB,MAAM,gBAAgB,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,uBAM9D;AAED,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,KAAK,WAGpD;AAED,wBAAgB,UAAU,CAAC,YAAY,EAAE,KAAK,WAG7C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,WAElE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,mBAOzC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,kBAAkB,yBAUnD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,KAAK,GAAG,SAAS,CAOzE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAOxE;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAC9D,OAAO,CAOT;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAC1E,MAAM,CAMR;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG/C;AAQD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,KAAK,GAAG,aAAa,EAC3B,IAAI,EAAE,MAAM,GACX,iBAAiB,GAAG,SAAS,CAK/B"}
@@ -73,4 +73,22 @@ export function getNamespaceName(program, type) {
73
73
  return "";
74
74
  return getNamespaceFullName(type);
75
75
  }
76
+ export function isValidKey(key) {
77
+ const match = key.match(/^[a-z][A-z0-9-]+$/);
78
+ return match !== undefined && match !== null && match.length === 1;
79
+ }
80
+ function getDecorator(type, name) {
81
+ const decorator = type.decorators.filter((d) => `$${"name"}` === d.decorator.name);
82
+ if (decorator && decorator.length === 1)
83
+ return decorator[0];
84
+ return undefined;
85
+ }
86
+ export function getDecoratorParam(type, name) {
87
+ const call = getDecorator(type, name);
88
+ if (call === undefined)
89
+ return undefined;
90
+ if (call.args && call.args.length > 2)
91
+ return call.args[2];
92
+ return undefined;
93
+ }
76
94
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/rules/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare const ArmStateKeys: {
2
+ armProviderNamespaces: symbol;
3
+ armResourceOperations: symbol;
4
+ armResourceCollectionAction: symbol;
5
+ armResourceCollection: symbol;
6
+ armResources: symbol;
7
+ armLibraryNamespaces: symbol;
8
+ usesArmLibraryNamespaces: symbol;
9
+ armResourcesCached: symbol;
10
+ armSingletonResources: symbol;
11
+ resourceBaseType: symbol;
12
+ };
13
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY;;;;;;;;;;;CAaxB,CAAC"}
@@ -0,0 +1,20 @@
1
+ // FIXME - This is a workaround for the circular dependency issue when loading
2
+ // createStateSymbol.
3
+ // Issue: https://github.com/microsoft/typespec/issues/2301
4
+ function azureResourceManagerCreateStateSymbol(name) {
5
+ return Symbol.for(`@azure-tools/typespec-azure-resource-manager.${name}`);
6
+ }
7
+ export const ArmStateKeys = {
8
+ armProviderNamespaces: azureResourceManagerCreateStateSymbol("armProviderNamespaces"),
9
+ armResourceOperations: azureResourceManagerCreateStateSymbol("armResourceOperations"),
10
+ armResourceCollectionAction: azureResourceManagerCreateStateSymbol("armResourceCollectionAction"),
11
+ armResourceCollection: azureResourceManagerCreateStateSymbol("parameterBaseTypes"),
12
+ armResources: azureResourceManagerCreateStateSymbol("armResources"),
13
+ armLibraryNamespaces: azureResourceManagerCreateStateSymbol("armLibraryNamespaces"),
14
+ usesArmLibraryNamespaces: azureResourceManagerCreateStateSymbol("usesArmLibraryNamespaces"),
15
+ // resource.ts
16
+ armResourcesCached: azureResourceManagerCreateStateSymbol("armResourcesCached"),
17
+ armSingletonResources: azureResourceManagerCreateStateSymbol("armSingletonResources"),
18
+ resourceBaseType: azureResourceManagerCreateStateSymbol("resourceBaseTypeKey"),
19
+ };
20
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qBAAqB;AACrB,2DAA2D;AAC3D,SAAS,qCAAqC,CAAC,IAAY;IACzD,OAAO,MAAM,CAAC,GAAG,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,qBAAqB,EAAE,qCAAqC,CAAC,uBAAuB,CAAC;IACrF,qBAAqB,EAAE,qCAAqC,CAAC,uBAAuB,CAAC;IACrF,2BAA2B,EAAE,qCAAqC,CAAC,6BAA6B,CAAC;IACjG,qBAAqB,EAAE,qCAAqC,CAAC,oBAAoB,CAAC;IAClF,YAAY,EAAE,qCAAqC,CAAC,cAAc,CAAC;IACnE,oBAAoB,EAAE,qCAAqC,CAAC,sBAAsB,CAAC;IACnF,wBAAwB,EAAE,qCAAqC,CAAC,0BAA0B,CAAC;IAE3F,cAAc;IACd,kBAAkB,EAAE,qCAAqC,CAAC,oBAAoB,CAAC;IAC/E,qBAAqB,EAAE,qCAAqC,CAAC,uBAAuB,CAAC;IACrF,gBAAgB,EAAE,qCAAqC,CAAC,qBAAqB,CAAC;CAC/E,CAAC"}
package/lib/arm.tsp CHANGED
@@ -14,6 +14,7 @@ import "./decorators.tsp";
14
14
  import "./interfaces.tsp";
15
15
  import "./responses.tsp";
16
16
  import "./parameters.tsp";
17
+ import "./private-links.tsp";
17
18
 
18
19
  using TypeSpec.Http;
19
20
  using TypeSpec.Rest;
@@ -0,0 +1,137 @@
1
+ import "@typespec/openapi";
2
+ import "@typespec/http";
3
+ import "@typespec/rest";
4
+ import "@typespec/versioning";
5
+ import "@azure-tools/typespec-autorest";
6
+ import "@azure-tools/typespec-azure-core";
7
+
8
+ using TypeSpec.Http;
9
+ using OpenAPI;
10
+ using TypeSpec.Versioning;
11
+ using Azure.ResourceManager.Private;
12
+
13
+ namespace Azure.ResourceManager;
14
+
15
+ /** The private endpoint resource */
16
+ @armCommonDefinition("PrivateEndpoint", "v4", "privatelinks.json")
17
+ model PrivateEndpoint {
18
+ /** The resource identifier for private endpoint */
19
+ id?: ResourceIdentifier<[
20
+ {
21
+ type: "Microsoft.Network/privateEndpoints";
22
+ }
23
+ ]>;
24
+ }
25
+
26
+ /** The private endpoint connection resource */
27
+ model PrivateEndpointConnection extends Azure.ResourceManager.Foundations.ProxyResourceBase {
28
+ /** The private endpoint connection properties */
29
+ properties?: PrivateEndpointConnectionProperties;
30
+ }
31
+
32
+ /** Properties of he private endpoint connection resource */
33
+ @armCommonDefinition("PrivateEndpointConnectionProperties", "v4", "privatelinks.json")
34
+ model PrivateEndpointConnectionProperties {
35
+ /** The group identifiers for the private endpoint resource */
36
+ @visibility("read")
37
+ groupIds?: string[];
38
+
39
+ /** The private endpoint resource */
40
+ privateEndpoint?: PrivateEndpoint;
41
+
42
+ /** A collection of information about the state of the connection between service consumer and provider. */
43
+ privateLinkServiceConnectionState: PrivateLinkServiceConnectionState;
44
+
45
+ /** The provisioning state of the private endpoint connection resource. */
46
+ provisioningState?: PrivateEndpointConnectionProvisioningState;
47
+ }
48
+
49
+ /** A collection of information about the state of the connection between service consumer and provider. */
50
+ @armCommonDefinition("PrivateLinkServiceConnectionState", "v4", "privatelinks.json")
51
+ model PrivateLinkServiceConnectionState {
52
+ /** Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service. */
53
+ status?: PrivateEndpointServiceConnectionStatus;
54
+
55
+ /** The reason for approval/rejection of the connection. */
56
+ description?: string;
57
+
58
+ /** A message indicating if changes on the service provider require any updates on the consumer. */
59
+ actionsRequired?: string;
60
+ }
61
+
62
+ /** The provisioning state of the connection */
63
+ enum PrivateEndpointConnectionProvisioningState {
64
+ ...ResourceProvisioningState,
65
+ /** Connection is being created */
66
+ Creating,
67
+ /** Connection is being deleted */
68
+ Deleting,
69
+ }
70
+
71
+ /** The private endpoint connection status */
72
+ enum PrivateEndpointServiceConnectionStatus {
73
+ /** Connectionaiting for approval or rejection */
74
+ Pending,
75
+ /** Connection approved */
76
+ Approved,
77
+ /** Connection Rejected */
78
+ Rejected,
79
+ }
80
+
81
+ model PrivateLinkResource extends Azure.ResourceManager.Foundations.ProxyResourceBase {
82
+ /** Properties of the private link resource. */
83
+ properties?: PrivateLinkResourceProperties;
84
+ }
85
+
86
+ /** Properties of a private link resource. */
87
+ #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "Matches current common code"
88
+ @armCommonDefinition("PrivateLinkResourceProperties", "v4", "privatelinks.json")
89
+ model PrivateLinkResourceProperties {
90
+ /** The private link resource group id. */
91
+ @visibility("read")
92
+ groupId?: string;
93
+
94
+ /** The private link resource required member names. */
95
+ @visibility("read")
96
+ requiredMembers?: string[];
97
+
98
+ /** The private link resource private link DNS zone name. */
99
+ requiredZoneNames?: string[];
100
+ }
101
+
102
+ /** List of private endpoint connections associated with the specified resource. */
103
+ model PrivateEndpointConnectionResourceListResult {
104
+ /** Array of private endpoint connections */
105
+ value?: PrivateEndpointConnection[];
106
+ }
107
+
108
+ /** A list of private link resources. */
109
+ model PrivateLinkResourceListResult {
110
+ /** Array of private link resources */
111
+ value?: PrivateLinkResource[];
112
+ }
113
+
114
+ /**
115
+ * The name of the private endpoint connection associated with the Azure resource.
116
+ * @template TSegment The resource type name for private endpoint connections (default is privateEndpointConnections)
117
+ */
118
+ model PrivateEndpointConnectionParameter<TSegment extends valueof string = "privateEndpointConnections"> {
119
+ /** The name of the private endpoint connection associated with the Azure resource. */
120
+ @path
121
+ @armCommonParameter("PrivateEndpointConnectionName", "v4", "privatelinks.json")
122
+ @TypeSpec.Rest.segment(TSegment)
123
+ @key("privateEndpointConnectionName")
124
+ name: string;
125
+ }
126
+
127
+ /**
128
+ * The name of the private link associated with the Azure resource.
129
+ * @template TSegment The resource type name for private links (default is privateLinkResources)
130
+ */
131
+ model PrivateLinkResourceParameter<TSegment extends valueof string = "privateLinkResources"> {
132
+ /** The name of the private link associated with the Azure resource. */
133
+ @path
134
+ @TypeSpec.Rest.segment(TSegment)
135
+ @key("privateLinkResourcenName")
136
+ name: string;
137
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure-tools/typespec-azure-resource-manager",
3
- "version": "0.34.0-dev.2",
3
+ "version": "0.34.0-dev.4",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec Azure Resource Manager library",
6
6
  "homepage": "https://azure.github.io/typespec-azure",
@@ -50,9 +50,6 @@
50
50
  "@typespec/http": "~0.47.0 || >=0.48.0-dev <0.48.0",
51
51
  "@typespec/versioning": "~0.47.0 || >=0.48.0-dev <0.48.0"
52
52
  },
53
- "dependencies": {
54
- "@typespec/lint": "~0.47.0 || >=0.48.0-dev <0.48.0"
55
- },
56
53
  "devDependencies": {
57
54
  "@typespec/compiler": "~0.47.1 || >=0.48.0-dev <0.48.0",
58
55
  "@typespec/openapi": "~0.47.0 || >=0.48.0-dev <0.48.0",
@@ -75,6 +72,7 @@
75
72
  "rimraf": "~5.0.1",
76
73
  "typescript": "~5.1.3"
77
74
  },
75
+ "dependencies": {},
78
76
  "scripts": {
79
77
  "clean": "rimraf ./dist ./temp",
80
78
  "build": "tsc -p . && npm run lint-typespec-library",
@@ -1,3 +0,0 @@
1
- import { Program } from "@typespec/compiler";
2
- export declare function $onValidate(program: Program): void;
3
- //# sourceMappingURL=linter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AA2C7C,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,QAG3C"}
@@ -1,42 +0,0 @@
1
- import { getLinter } from "@typespec/lint";
2
- import { $lib } from "./lib.js";
3
- import { armResourceActionNoSegmentRule } from "./rules/arm-resource-action-no-segment.js";
4
- import { armResourceInvalidCharsRule } from "./rules/arm-resource-invalid-chars.js";
5
- import { armResourceInvalidVersionFormatRule } from "./rules/arm-resource-invalid-version-format.js";
6
- import { armResourceOperationsRule } from "./rules/arm-resource-operations.js";
7
- import { armResourceProperties } from "./rules/arm-resource-properties.js";
8
- import { armResourceProvisioningStateRule } from "./rules/arm-resource-provisioning-state-rule.js";
9
- import { beyondNestingRule } from "./rules/beyond-nesting-levels.js";
10
- import { coreOperationsRule } from "./rules/core-operations.js";
11
- import { deleteOperationMissingRule } from "./rules/delete-operation.js";
12
- import { envelopPropertiesRules } from "./rules/envelope-properties.js";
13
- import { listBySubscriptionRule } from "./rules/list-operation.js";
14
- import { noResponseBody } from "./rules/no-response-body.js";
15
- import { operationsInterfaceMissingRule } from "./rules/operations-interface-missing.js";
16
- import { resourceNameRule } from "./rules/resource-name.js";
17
- import { retryAfterRule } from "./rules/retry-after.js";
18
- import { unsupportedTypeRule } from "./rules/unsupported-types.js";
19
- const linter = getLinter($lib);
20
- linter.registerRules([
21
- beyondNestingRule,
22
- armResourceActionNoSegmentRule,
23
- armResourceInvalidVersionFormatRule,
24
- armResourceInvalidCharsRule,
25
- armResourceProvisioningStateRule,
26
- armResourceProperties,
27
- armResourceOperationsRule,
28
- coreOperationsRule,
29
- deleteOperationMissingRule,
30
- envelopPropertiesRules,
31
- listBySubscriptionRule,
32
- noResponseBody,
33
- operationsInterfaceMissingRule,
34
- resourceNameRule,
35
- retryAfterRule,
36
- unsupportedTypeRule,
37
- ], { autoEnable: true });
38
- export function $onValidate(program) {
39
- linter.autoEnableRules();
40
- linter.lintOnValidate(program);
41
- }
42
- //# sourceMappingURL=linter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,mCAAmC,EAAE,MAAM,gDAAgD,CAAC;AACrG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,iDAAiD,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,MAAM,CAAC,aAAa,CAClB;IACE,iBAAiB;IACjB,8BAA8B;IAC9B,mCAAmC;IACnC,2BAA2B;IAC3B,gCAAgC;IAChC,qBAAqB;IACrB,yBAAyB;IACzB,kBAAkB;IAClB,0BAA0B;IAC1B,sBAAsB;IACtB,sBAAsB;IACtB,cAAc;IACd,8BAA8B;IAC9B,gBAAgB;IAChB,cAAc;IACd,mBAAmB;CACpB,EACD,EAAE,UAAU,EAAE,IAAI,EAAE,CACrB,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,MAAM,CAAC,eAAe,EAAE,CAAC;IACzB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare const armResourceInvalidCharsRule: import("@typespec/lint").LintRule;
2
- //# sourceMappingURL=arm-resource-invalid-chars.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arm-resource-invalid-chars.d.ts","sourceRoot":"","sources":["../../../src/rules/arm-resource-invalid-chars.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,2BAA2B,mCAkCtC,CAAC"}
@@ -1,61 +0,0 @@
1
- import { getKeyName, } from "@typespec/compiler";
2
- import { createRule } from "@typespec/lint";
3
- import { getSegment } from "@typespec/rest";
4
- import { reportDiagnostic } from "../lib.js";
5
- import { isInternalTypeSpec, isResource } from "./utils.js";
6
- export const armResourceInvalidCharsRule = createRule({
7
- name: "arm-resource-invalid-chars",
8
- create({ program }) {
9
- return {
10
- model: (model) => {
11
- var _a, _b, _c, _d;
12
- if (!isInternalTypeSpec(program, model) &&
13
- isResource(model) &&
14
- model.properties.has("name")) {
15
- const nameProperty = model.properties.get("name");
16
- const separator = "/";
17
- const segment = getSegment(program, nameProperty);
18
- const key = getKeyName(program, nameProperty);
19
- if (segment !== undefined && !isValidPathSegment(segment, separator)) {
20
- reportDiagnostic(program, {
21
- code: "arm-resource-path-segment-invalid-chars",
22
- format: { segment: segment },
23
- target: (_b = (_a = getDecoratorParam(nameProperty, "segment")) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : nameProperty,
24
- });
25
- }
26
- if (key !== undefined && !isValidKey(key)) {
27
- reportDiagnostic(program, {
28
- code: "arm-resource-key-invalid-chars",
29
- format: { key: key },
30
- target: (_d = (_c = getDecoratorParam(nameProperty, "key")) === null || _c === void 0 ? void 0 : _c.node) !== null && _d !== void 0 ? _d : nameProperty,
31
- });
32
- }
33
- }
34
- },
35
- };
36
- },
37
- });
38
- function isValidPathSegment(path, separator) {
39
- if (path.startsWith(separator))
40
- path = path.replace(separator, "");
41
- return isValidKey(path);
42
- }
43
- function isValidKey(key) {
44
- const match = key.match(/^[a-z][A-z0-9-]+$/);
45
- return match !== undefined && match !== null && match.length === 1;
46
- }
47
- function getDecorator(type, name) {
48
- const decorator = type.decorators.filter((d) => `$${"name"}` === d.decorator.name);
49
- if (decorator && decorator.length === 1)
50
- return decorator[0];
51
- return undefined;
52
- }
53
- function getDecoratorParam(type, name) {
54
- const call = getDecorator(type, name);
55
- if (call === undefined)
56
- return undefined;
57
- if (call.args && call.args.length > 2)
58
- return call.args[2];
59
- return undefined;
60
- }
61
- //# sourceMappingURL=arm-resource-invalid-chars.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arm-resource-invalid-chars.js","sourceRoot":"","sources":["../../../src/rules/arm-resource-invalid-chars.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare const armResourceOperationsRule: import("@typespec/lint").LintRule;
2
- //# sourceMappingURL=arm-resource-operations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arm-resource-operations.d.ts","sourceRoot":"","sources":["../../../src/rules/arm-resource-operations.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,yBAAyB,mCAwBpC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"arm-resource-operations.js","sourceRoot":"","sources":["../../../src/rules/arm-resource-operations.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare const armResourceProperties: import("@typespec/lint").LintRule;
2
- //# sourceMappingURL=arm-resource-properties.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arm-resource-properties.d.ts","sourceRoot":"","sources":["../../../src/rules/arm-resource-properties.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,qBAAqB,mCAkDhC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"arm-resource-properties.js","sourceRoot":"","sources":["../../../src/rules/arm-resource-properties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAwB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;IAC9C,IAAI,EAAE,yBAAyB;IAC/B,MAAM,CAAC,EAAE,OAAO,EAAE;QAChB,OAAO;YACL,KAAK,EAAE,CAAC,KAAY,EAAE,EAAE;;gBACtB,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACrD,IAAI,aAAa,KAAK,SAAS,EAAE;oBAC/B,MAAM,kBAAkB,GAAG,MAAA,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,0CAAE,IAAI,CAAC;oBAClE,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;wBAC3C,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;4BAC5B,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;4BAC7C,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;4BAC/D,IACE,WAAW,KAAK,SAAS;gCACzB,eAAe,KAAK,SAAS;gCAC7B,CAAC,eAAe,CAAC,UAAU,CAAC,uBAAuB,CAAC,EACpD;gCACA,gBAAgB,CAAC,OAAO,EAAE;oCACxB,IAAI,EAAE,wCAAwC;oCAC9C,MAAM,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE;oCACvC,MAAM,EAAE,QAAQ;iCACjB,CAAC,CAAC;6BACJ;yBACF;wBACD,IAAI,kBAAkB,KAAK,SAAS,IAAI,kBAAkB,CAAC,IAAI,KAAK,OAAO,EAAE;4BAC3E,MAAM,cAAc,GAAG,WAAW,CAAC,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;4BACtE,IAAI,cAAc,KAAK,SAAS,EAAE;gCAChC,gBAAgB,CAAC,OAAO,EAAE;oCACxB,IAAI,EAAE,iCAAiC;oCACvC,MAAM,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE;oCACvC,MAAM,EAAE,cAAc;iCACvB,CAAC,CAAC;6BACJ;yBACF;qBACF;iBACF;YACH,CAAC;SACF,CAAC;QAEF,SAAS,aAAa,CAAC,KAAY;YACjC,MAAM,MAAM,GAAoB,EAAE,CAAC;YACnC,IAAI,OAAO,GAAsB,KAAK,CAAC;YACvC,OAAO,OAAO,KAAK,SAAS,EAAE;gBAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7E,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;aAC7B;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}